JavaScript - the language that is deceiving at first

06 Sep 2019

My first encounter with JavaScript

My journey as a computer scientist began in junior year of high school, where I was introduced to Java. As with most other courses, Google was a lifesaver, especially when it came to programming assignments in my Computer Science class. When searching for tutorials on the web, I would often forget to include the programming language (e.g. Java), and typed only the issue as the search term (something like “for loop”). Among the top results were ‘JavaScript for Loop’ as well as the expected ‘Java For Loop’. Being a curious student, I clicked on the first result. At first glance, JavaScript seemed identical to Java. JavaScript felt like an implementation of Java for the web. When examining the examples, however, there were some notable syntactic differences. For instance, there was no initialization of the looping variable (something like ‘int i = 0’).
Sooner than later, I discovered that JavaScript has very unique and powerful features that help make our lives as developers easier.

The day where I would actually start using JavaScript arrived during my first semester at college. Being a front-end assistant developer for the University of Hawaii’s registration system, STAR, has taught me a lot about JavaScript. Yet, the first module from my Software Engineering course has proved to me that there’s still a lot to learn from the language. Though the core concepts were already familiar, the exercises in FreeCodeCamp, along with the WODs, have helped reinforce my knowledge of the new ES6 syntax, along with some handy features such as the “class” keyword.

Workouts of the day - a fun approach to learning

The Software Engineering I course at UH Manoa utilizes a pedagogy called ‘Athletic Software Engineering’. We are given a problem (“workout of the day”) to solve at the beginning of class, and are timed until we are satisfied with our solution. Once we are done, the instructor records the time and results are discussed later in class. If the solution is incorrect or we do not finish the problem within a reasonable amount of time, then we receive a ‘0’ for the workout of the day. Otherwise, you get a perfect ‘100’ score. Yes, you’ve read that right – there’s no “in-between score”. This can be a bad thing for many students since there could be just one tricky test case that they miss and they end up submitting their solution with complacency, just to find out that they get a 0. On the other hand, this pedagogy can be very motivating and useful. While it does create a lot of pressure for any student who is concerned with their grade, it can also help them over-prepare for the WOD, where the learning happens. They can also learn through their mistakes from a WOD should they fail one, so that it will never happen again.

In all honesty, I consider this method of learning very enjoyable. Despite the pressure it creates for students, I think having fun while learning is the most important aspect to a successful learner. After completing this first WOD, I fell in love with the course even more and look forward to going to every class. The competition that comes with the WODs are a great way to pique students’ curiosity about hackathons, which have a similar concept to athletic software engineering, as well as job interviews at certain tech companies. I really wish the instructor could teach more courses like Discrete Math, with concepts that are difficult to grasp, in a similar fashion to his Software Engineering course.