CS2103T

Course Title

Software Engineering

Grade

A+

Semester

AY22/23 S2

Review

This module teaches proper software engineering techniques and processes. The primary language is in Java, but you'll also learn Git for version control and Markdown for documentation.

Lots of diagrams like sequence, class, object and activity diagrams. These help to explain how your code works to someone new to the codebase. Lots of notation and conventions you have to follow and memorise. You will always see these types of questions in the finals. All the small details, all the minor nuances in the notation that you have to pick up and determine whether they are right.

Lots of Git theory was taught as well, how to branch, how to pull request, how to merge conflict, how to do CI/CD, how to use the Issue Tracker. All very basic skills that all of us need to know in the industry.

All this leads to the projects. There are two main projects that you'll be doing during the semester.

The first is the Individual Project (IP), which tasks to make a to-do list with specific functionality. The requirements are given to you week-after-week, and your progress is tracked through GitHub and shown on a leaderboard. The objective of this IP is to get you familiarised with Java and the Git workflow, which is helpful as we don't want people messing up the Team Project (TP).

The TP is where you'll spend a good 7 weeks on. You are given the code for an Address Book written in Java, and you're supposed to revamp it to add more functionality. Add more features, beautify the application. Those kinds of things. The requirements are quite open-ended, so you can do whatever you want. Just make sure that you sufficiently test your code, as it is very important for the Practical Exam (PE).

Basically, in the PE, you will have to test the code of other teams, and find bugs in their code. The more bugs you find, the higher the score you'll get. At the same, if the code that your team wrote has many bugs, then you'll lose the points. So, don't develop a massive codebase that you can't fully test.

But then again, this goes in conflict with CS2101, which requires you to 'sell' your product to the class. So, you have to balance between making your product look good, and making sure it works well. It's a tough balance, but it's a good experience to have.

Overall, I think this module is a good introduction to software engineering. A good baseline for the number of lines of code to contribute is 2k, leading to a 10k line codebase for the group. These figures are tracked on the dashboard, so you can easily see what others are up to. In the end, I contributed over 18k lines of code, so I was quite happy with my performance.