Progress in Programming Report

01 Apr 2021

My programming skills have greatly improved in the following ways:

I can confidently say that my programming skills have markedly improved from when I first started class (my skillset was about negligible when I first started). Compared to when I first started, I understand the syntax of different languages such as HTML, JavaScript, JSON, and CSS, as well as the application of conditional statements, loops, arrays, and algorithms (I do not know all of them, but I recognize the patterns and usage of such statements). I initially relied on step-by-step instructions for early WODs like BrowserHistory1-3. As I progressed to more advanced WODs such as the later Invoice and SmartPhoneProducts WODs, I could figure out how to do them independently (though sometimes it would take a while, so I would redo my recording with the knowledge I gained from trying out the WOD for the first time).

I need to work on the following to improve my programming skills:

I need to continue practicing my skills so that I become more efficient in my programming. On the WODs one of the main problems had was time management because, at the time I was doing the WODs, I was not aware of all of the shortcuts VSCode offers (e.g. find and replace, emmet abbreviation, etc). I think that programming will come more naturally to me as I expose myself to new projects and learn more advanced functions and new languages.

Can I do the WODs without looking at the screencast solutions first?

As alluded to earlier, when I first started working on WODs, I relied heavily on the screencast solutions to complete the WODs. As I learned more concepts and put them into practice, however, I could figure it out. The last 3 or so WODs had no screencast solution at all (at least when did them) and so I had to try my best. These took a fair amount of tries, and I spent the longest trying to get the programming right (sometimes upwards of 1-2 hours for the aforementioned later WODs) and tried to fix any errors I encountered instead of starting from the beginning again.

Have the labs helped me to learn and I am able to complete them with confidence?

In all truthfulness, I learned a lot just from reading the material provided before class and trying out little exercises on w3 schools. The labs acted moreso as supplementary materials that reinforced the knowledge that I had just acquired from reading. The labs primarily helped me understand WHY things worked, beyond just knowing how to do something.

Do I feel ready that I am ready to work on the next stage of complexity in programming (building small web applications like Assignment 1)?

Assignment1 was very difficult for me. It certainly helped that many of our Labs were leading up to concepts we would use in Assignment1, but because we ran out of time for Lab13, we did not have time to go over server-side processing, and so I was not able to incorporate that for Assignment1 (we were given a basic server code for express). As we go through Lab13, the dynamics of sending and receiving data are somewhat confusing. I found that the “phone” analogy really helped. Assignment1 is mostly a framework, and cannot be used as an actual online storefront as I am writing this. All of the parts of the store that I made so far work, but I have no system in place to enable people to pay for the products (it just takes you to an invoice). As we complete Lab13 and move on to future Assignments, I will have to see what can be done. With the knowledge I have now however, I cannot create a complete web application.

I think the class can be improved to help my learning in the following ways:

The explanation of programming concepts is great, but sometimes it takes up a large portion of class time. I think that we should prioritize finishing Labs first and then going back and explaining concepts more in-depth after the fact, especially if the intent is to complete Labs during class time.

These are things that work really well for my learning in this class:

Creating analogies to real-world applications and personifying devices (the computer is “stupid”, over a million lines of code for the Roomba, phone analogy for server-side processing, etc.) works well to help me better understand the concepts being taught in class, and gives me a better appreciation of many products that we use in our everyday lives.