CS2030S

Course Title

Programming Methodology II

Grade

A+

Semester

AY21/22 S2

Review

Ah welcome to the world of Java. This course teaches the two programming paradigms: Object-Oriented and Functional. We start off the first 2 weeks learning about types and declarations. The next 4 weeks sees OOP concepts like inheritance, polymorphism, and encapsulation. Out of the earlier concepts, the stack and heap model really tears my tofu like paper. It basically represents where different things are stored in memory. Your variables, your functions, all captured in stack frames or dumped on the heap. Drawing the arrows to connect the different components was absolute pain, and I got 1/8 for that question in the Midterms. With no feedback loop to practice, this was expected. My midterms were in the bottom 25 percentile.

Obviously the second half of the semester was where I did my best. Functional Programming, and the beauty of Monads. What is a monad? Well, a monad is a monoid in the category of endofunctors, which states a few basic rules that it needs to follow. With those basic guarantees, we can compose different functions together to achieve the result we want. Pretty abstract, but also where I excel at.

In terms of workload, I'd say CS2030S has a much higher workload than CS2040S. The weekly labs are done on SoC servers, which means you need to be comfortable with working in the Vim code editing software. Using the mouse is not recommended in Vim, and you need to learn basic navigation skills like how to quit Vim. The lab content was fine. You have to implement some functionality in Java, like Optional or Try types. Basically what you've learnt in the lectures, but in a more practical setting. Boring as heck, but still manageable. You will have all these test cases that determine your score for the lab. The thing is, you are not given all the test cases, only the public ones. This means that you have to make sure you cover all edge cases so that you can pass all the private test cases as well. Furthermore, you need to use the concepts that they taught ie there is an intended way to do it, and you are marked based on your compliance to that way. This is essential for nailing the Practical Exam, which I got full marks for.