Taken in AY18/19 Sem 1 under Prof Damith Chatura Rajapakse.
This module is the first group software project for computer science students. For most computer science students, this module is twinned with CS2101. Some students that are enrolled in special programmes (such as the University Scholars Programme, or a double degree programme where SoC is not their home faculty) often do not need to take CS2101. CS2103T is the twinned version of this module, while CS2103 is the non-twinned version. Lectures and exams are combined and they are identical for CS2103 and CS2103T students. However, CS2103T students form project groups with other CS2103T students only, because the same project group is required for CS2101. Project groups are typically formed during the first CS2101 class.
The main reference material for this module is on this website (https://nus-cs2103-ay1819s1.github.io/cs2103-website/index.html). There are two parts to this module — the lectures (which closely follow the reference website) and the group project.
For most students, the group project takes up the bulk of time spent on this module. Students were required to either enhance an existing address book application (https://github.com/nus-cs2103-AY1819S1/addressbook-level4) or morph (i.e. convert) it for a different use case. The “morph” route is considered the high-risk-high-reward option, because a failure to complete morphing the product is likely to result in an unusable application. The address book application is written in Java, and students will only be graded on the Java code that they have written. This project is graded on a number of aspects, including: product testing by peers and tutors, review of code and coding style, difficulty of your contributions (listed in your project portfolio page), and quality of documentation.
The project group must consist of students from the same tutorial group; when I took the module, each group was required to contain at least one male, one female, one Singaporean, and one non-Singaporean student. I recommend that you find a group of 3-5 people whom you are comfortable working with before the semester starts, and ballot for the same tutorial group. This helps to alleviate much of the uncertainty with group work. Despite what CS2101 tutors might suggest regarding group formation, having more groupmates who are experienced in writing medium-scale software is beneficial to the amount of polish you can give to the product (which results in better project grades).
The lectures are about programming practices and design patterns (with a focus on OOP in Java), as well as working in a software development team. They are geared towards working with medium- to large-scale software projects, and those intending to work in software engineering in the future. The content for the final exam comes from the lectures and reference materials. Being sufficiently acquainted with the main reference material (the CS2103/T website) will allow you to do well for finals.
There are no midterms. Finals are closed-book (with help sheet). The finals come in two parts — the first part is 100 True/False questions to be answered within an hour, and the second part is four open-ended questions to be answered within another hour.