CS2030 Programming Methodology II

Module: CS2030 Programming Methodology II

Semester taken: AY 2018/19 Semester 2

Lecturer: Dr Shengdong Zhao, Dr Wai Kit, Henry Chia

Tutor: Mr Fang How, Gabriel Chao (Laboratory), Mr Gan Chin Yao (Tutorial)

Textbook: None

What it is about

This module is a follow-up to the introductory programming module (the CS1010 series) and focuses mainly on object-oriented programming (OOP) and functional programming (using streams). The language taught in this module is Java and those who took CS1010J like I did would have some advantage.

Assessment components

  • Weekly labs (10%)

  • Individual project (10%)

  • Practical assessment #1 in week 7 (15%)

  • Practical assessment #2 in week 12 (20%)

  • Tutorials (5%)

  • Final exam (40%)


Although I had some prior experience in programming, this module mostly taught concepts that you would not have picked up if you are a self-taught programmer. This module focuses a lot on using good design practices to write your programs, mainly the SOLID principles.


The first half of the module was taught by Dr Shengdong Zhao whereas the second part was taught by Dr Henry Chia. I apologise, but the first half of the module was a complete joke. The way the prof taught was not really using lecture slides, but coding on the spot, which may or may not work. It was extremely confusing and difficult to follow the lectures. There were quite a bit of complaints about the way the lecturer taught the module, but nothing changed and most of us were lost by the time it was recess week.

The second half of the module was taken over by Dr Henry Chia, who was supposed to be teaching the module but was on hospitalisation leave. I would say he did an extremely good job in teaching and was a very good lecturer who taught us all well. He is the type that can break down a difficult concept into something that is digestible by us students, and had a good mix of live coding and slides teaching, using both tools to reinforce learning.

It was sad to hear that he broke down during the last lecture due to stress from the job. I do hope he continues teaching because he indeed is a very good tutor. It is a pity that students are unable to appreciate the privilege that we live in.


Tutorials were 1 hour per week and not only gets you to apply what you have learnt from the lectures, there were also some additional concepts taught, training you to make use of a certain function of Java on the spot. My tutor was very good in the way he explained concepts to us, which was also rather helpful given the fact that the first half of the semester we were all lost.

The duration of the tutorial was rather short and it is likely that the tutor is not able to go through all the concepts in time.


Labs were a rather fun component of this module, as you get to write code demonstrating the concepts that you learnt in the lectures. Also, the labs are structured into levels, so you are building the final program in terms of incremental steps. This is extremely helpful because sometimes, the question do not specify very clearly what is required of the final program, and also helps to guide you in writing good code. The lab TA might give some pointers on how to do the assignments, but if you are strong enough, you only need to log in to the system and then immediately leave without staying for the whole duration.

The 2 practical assessments during the semester were also conducted during the labs. Hence, it is possible that your friend took the assessment earlier than you did because of the timing of the labs. It is based on trust that students do not share the questions with one another.

This semester also saw an additional project component and we were mostly graded on our code design for this project. If you did your work diligently, there should be more than enough time for you to finish the project well before the deadline.


The finals was a 2-hour long paper exam that tested programming concepts via MCQs and writing of actual code using pen and paper. The MCQs had rather good questions, but the idea of writing code on paper was extremely bad. Apparently, we were graded based on the idea of the code, not the actual code, so it is quite possible to submit pseudocode as your answer instead of actual Java code. However, be careful as some questions may be Java specific (mainly streams).

Overall, finals was rather difficult for me and I left the streams question blank.

Other information

Assignment workload: Every week, there is a lab assignment to complete. The assignment is given out during the lab sessions and has to be submitted at the end of the week (usually Sunday).

Project workload: One semester-long project to complete. The project is broken down to smaller parts which build upon one another, and the deadlines are spaced out so that you finish the final project by the end of the semester.

Readings: None

Recommended if: A compulsory module for some computing majors and is a very good module for learning the advanced tools required of becoming a good software developer.

Rating: 3.5/5. I did not like the way the first half of the semester was conducted.

Expected grade: A (finals was bad for me)

Actual grade: A

Last updated