Programming Methodology I

Academic Year 2021 - 2022
Semester 1

NUSMods Description

This module introduces the concepts of programming and computational problem solving, and is the first and foremost introductory module to computing. Starting from a small core of fundamental abstractions, the module introduces programming as a method for communicating computational processes. The module begins with purely functional programming based on a simple substitution-based execution model, and ends with a powerful modern imperative language based on a realistic environment-based execution model. Topics covered include functional abstraction, recursion, higher-order functions, data abstraction, algorithmic strategies, state mutation, loops and arrays, evaluation strategies, sorting and searching, debugging and testing.

Review

This module was taught in Source which is a sublanguage of Javascript built by the professors themselves. I do not have any experience with Javascript so everything was new to me. I had programming experience prior to university and thus I had no issue in learning the overall syntax. In this module, learning how to think computationally matters more.

There were missions and optional quests that were done on a game platform the professors built called Source Academy and there were 2 missions and maybe 2 optional quests released weekly which amounted to the huge workload. I personally think this module is a bit overkill in the logistics. Tutorials were fun and I made many friends during the sessions.

Assessment-wise, there was a lot of CAs. These include Reading Assessments(RA) (2 of them), a midterm, a practical exam and a final. I struggled with RA1 as I was really nervous, but I did well for RA2 as I managed to keep my nerves in check. Midterm was atrocious (for me personally, others will disagree) as I panicked and could not think straight. Practical Exam was quite easy for me. I did panic which resulted me in skipping the first 5 parts of the 1st question which was supposed to be easy. Luckily, I was able to regain my composure and scored close to full marks. Finals was ok, not hard.

Overall, I do not regret not dropping this module for CS2030S because I learnt to appreciate functional programming and communicate thought processes computationally by building mental models. It forms the basis of writing good code in the future. I would highly recommend all students who have to take CS1010 variants as a core requirement to take this instead. I also encouraged others to take this module as an elective as well. A fun module, but with an unnecessarily heavy workload.