Software Engineering

Academic Year 2022 - 2023
Semester 2

NUSMods Description

This module introduces the necessary conceptual and analytical tools for systematic and rigorous development of software systems. It covers four main areas of software development, namely object-oriented system analysis, object-oriented system modelling and design, implementation, and testing, with emphasis on system modelling and design and implementation of software modules that work cooperatively to fulfill the requirements of the system. Tools and techniques for software development, such as Unified Modelling Language (UML), program specification, and testing methods, will be taught. Major software engineering issues such as modularisation criteria, program correctness, and software quality will also be covered.

Review

This module is taught by Prof Damith and Prof Ganesh. It has one of the most convoluted grading scheme ever. Long story short, you have an individual project, a team project, a Practical Bug Bounty style exam, a Final.

My individual project was to build a chatbot called Duke and we just need to fulfil certain milestones each week for our project. It is not hard if you had used Git or are good at Java. Just make sure to follow all the requirements very carefully. Adding extra things will not earn you extra marks at all. I scored full marks for this.

The team project’s purpose was to teach us how to work in a software team. Our project was to extend or remodel an existing project. I think my team has very good mix of strengths. 4 people of our team of 5 already knew each other from VJC, the final girl came into our group as a total stranger to us. However, we realised that we clicked very well and managed to get things done very efficiently. We developed pretty good bonds amongst ourselves. Our team also logged the highest count in terms of lines of code. (around 30k), but there is a significant bulk that went to features and also equal amount went to testing.

This leads me to the bug bounty squid game style practical exam. We had to break other team’s product for bugs and we earn marks for every bug report we submit. We also lose marks for every bug that the team finds on our product. Hence, we spent a lot of time writing test code to make sure our product doesn’t bug out. Being overkill in our product, we had 52 bugs but we realised most of them were just nitpicking and hence rejected them. Moreover, I realised our testers kept giving us the wrong severity bug labels. Seems like just a desperate attempt to pull people down.

Our final was split into 3 parts. Part I and III are just 16 MCQs each with 32 minutes allocated for each part on Examplify. Part II was essentially a drawing exercise and it will be sued for answering questions in Part III. I think I did ok in this final. Nothing particularly was hard as I familiarised myself with the textbook weeks in advance.

I find this module very interesting because I am very new to Software Engineering. I am mostly interested in algorithms, research etc. I am also grateful for this module because I made a new friend as well. HAHA. I did not expect A- for this module as the people around (like my seniors who are more experienced in this field of expertise than me) has gotten a B+. I am very lucky that my group lifted everyone up and hence despite having the highest code count (usually teams with large code base will get B+ or B for this module), no one got a B+ or below.