On the surface, Javascript seems to be easier to implement than other programming languages I have prior experience using. This course is my first contact with Javascript, but with my background of Java it has made my transition into Javascript relatively smooth. I can see many similarities between both languages such as expression syntax and the basic flow constructs. However, after more exposure of Javascript, I noticed even more disparities between the two. In Javascript, data types are not required when declaring a variable or for a function’s return value. Also, properties and methods can be dynamically added to an object, opposed to Java where new fields cannot be added to classes and instances. The accessibility of variables in Javascript something I am struggling to understand and how instances inherit properties from their ancestor class.
While completing the exercises in the ES6 section, I found the segment on destructuring objects to access their properties to be very useful. Instead of creating a new variable and using dot notation for every field to be copied, a new notation can be used to condense code into fewer lines. String templates will also be a helpful tool to simplify code and save time. By using this documentation, it will be easier to create strings without having to worry about double quotes, spacing and addition symbols. Another advantage of this style is being able to add values dynamically to the string. Similar to Java, Javascript has a try catch feature that will prevent the program from crashing. I feel this will be essential later in the course when trying to ensure your program will not fail from invalid user input and other factors. These techniques will be beneficial to creating code that is secure, efficient and visually easier to read. I do not have much experience combining HTML and Javascript so this section in ES6 was difficult for me to complete. However, this gave me a better understanding of the areas I need to review and improve on.
Javascript is a great language for software engineering because of its versatility and shortcuts. There are some characteristics that need to be accounted for such as being able to redeclare variables and how the declaration of variables determine the scope of which it is in. The fact that Javascript is easily integrated into HTML and CSS code creates endless possibilities of what can be created. I am still at an introductory stage, but from what I have encountered I believe it is a very powerful language and is capable of constructing dynamic programs and applications.
WODs put pressure on students to learn the course material by essentially having a race between peers. Here’s the problem, who can create an algorithm to satisfy it the fastest? Also, being graded on one’s ability to satisfy the problem in the allotted time or fail the assignment. This adds levels of comradery and competitiveness, usually found in sports, to the classroom. It is a clear representation of who is prepared and who still needs more time with the material. As a student participating, it is a huge motivation to really get familiar with the curriculum because in a race, no one wants to finish last. I played basketball and surfed religiously in highschool and before going to University, I have not had much experience in programming. Naturally, I have a competitive spirit, so WODs are a very refreshing addition to the course by adding the incentive of “winning” in an activity. I can see myself benefiting from this teaching style and being a large influence on my work ethic.
After completing the first WOD, I am eager to soak up as much information as I can and not to become complacent. Even though I did fairly well, I am positive this will be a challenging semester and will require a lot of work to be put in. Staying on pace will be my largest obstacle, but I am confident I will be able to use my time efficiently and do well in this course.