E4: Progress in Programming Report

27 Nov 2023

My programming skills have greatly improved in the following ways..

I went from not knowing what HTML, Javascript, and CSS were to confidently using them to create a functional e-commerce website. This experience, ITM 352 course, has been transformative. Also, my debugging skills, in particular, has been noticably improved, and I now feel more equipped to tackle coding challenges efficiently. Previously, I would spend an entire day figuring out why my code wasn’t working, only to discover later that it was due to a simple typo. Thanks to Sal, during his lecture, I could witness real-time debugging when the code wasn’t functioning correctly. This allowed me to quickly identify mistakes and resolve them on the spot. The process of completing Assignment 1 was quite challenging, as I encountered sad situations where the code didn’t work. Each time this happened, I opened the browser’s console to identify the cause of the error. I then proceeded to troubleshoot by experimenting with various corrections until the problem was fixed.

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

Since my first language is Korean, and I learned ITM 352 course in English, it seems that my grasp of foundational concepts is lacking. I still don’t have a clear understanding of what node.js is. Additionally, it appears that I need to repetitively perform tasks like Assignment 1 to build a more comprehensive coding experience.

I have learned a lot from doing WODs and I can do them without copying the screencast..

My skills in creating functions, such as quantity validation, have noticeably improved. Additionally, implementing events to trigger actions when the mouse is hovered over or a button is clicked was initially challenging, but over time, it has become more familiar.

The labs have help me learn and I am able to complete them with confidence..

While all the labs have been helpful, Lab 12, in particular, was the most beneficial for me. Lab 12 has been beneficial in enhancing my understanding and utilization of app.get and app.post. Reading alone might have posed challenges in grasping the differences between get and post requests accurately. The hands-on experience provided by Lab 12 allowed me to delve deeper into the functionalities of these methods, offering a practical perspective that went beyond theoretical comprehension. Specifically, I gained insights into how app.get is employed for handling HTTP GET requests, typically used for retrieving data, while app.post is utilized for handling HTTP POST requests, commonly employed for submitting data to be processed. The exercises in Lab 12 not only clarified the distinctions but also underscored the practical scenarios where each method is most effective. This hands-on understanding has proven invaluable, enabling me to confidently implement these concepts during the process of Assignment 1 and contributing significantly to my proficiency in web development.

I learned a lot from my experience doing Assignment 1 and feel ready to work on Assignment 2..

While completing Assignment 1, I was able to have a valuable experience creating a very rudimentary form of a website. I also had the opportunity to try using Bootstrap for the first time. Bootstrap, in particular, was helpful in making the design of elements like the nav bar, quantity input fields, and the purchase button look fancy. Without Bootstrap, my website would have looked like crap.

The most time-consuming part was the coding work in the app.post to ensure that the user’s entered desired quantity information was sent correctly to the invoice file. Even though I used let qty = Number(request.body[quantity_textbox_${i}]), the problem persisted, and the desired quantity information entered by the user wasn’t consistently making its way to the invoice file. I first attempted to use a method similar to Lab 12, sending the desired quantity information in the URL after ‘?’. However, since my e-commerce website had 9 products, I kept failed using this method. Rather than using URL, I finally found a perfect solution which was simply using the ‘name’ attribute in the form. While I had only set the id=”quantity_textbox_${i}” for the input where the user enters the desired quantity, as soon as I added the name=”quantity_textbox_${i}”, the information entered into this input was correctly passed to the invoice file.

When working on the Additional Requirement to have a small popup window appear with the product description when hovering over the product icon in the invoice, I expected it to take a lot of time. However, with the help of my dear friend Chat GPT, I was able to perform the Additional Requirement relatively easily.

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

While doing the WODs, I had to record my screen, and I used mmhmm for that purpose. However, I encountered recording errors approximately one out of three times. Even after completing the assignment, there were instances where the recording did not happen correctly due to these intermittent errors. As a result, I often found myself having to redo the entire assignment unnecessarily. I personally think it would have been better if the recording aspect of the assignment was not required.

What helps me the most in class are..

The most helpful resources were Sal’s screencast videos and Q&A chats through Discord. As an exchange student from South Korea, reading materials often contained challenging computer-related terms, requiring frequent dictionary look-ups. It took a long time to fully comprehend the readings required in class. However, even when I didn’t know the exact meanings of terms, the screencast videos allowed me to infer or understand their meanings naturally by observing what was happening on the screen. Additionally, I could understand the content more efficiently in less time compared to reading. Moreover, without ITM 352 Discord, my fall semester would have been even more dreadful. For example, after completing all the codes for Assignment 1, I encountered errors during the process of deploying the Digital Ocean app. Despite trying various methods, I failed and asked Sal for help. Thanks to Sal, I realized that the absence of the package.json and package-lock.json files was causing the problem. I could quickly resolve the issue and finally create my e-commerce website. There is no doubt that ITM 352 Discord made my life less miserable.