Module Information

This course 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 courses 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 modularization criteria, program correctness, and software quality will also be covered.

~ NUSMods

Schedule

Module Breakdown

  • Individual Project 20%
  • Group Project 45%
  • Exam 30%
  • Tutorial Participation 5%

The have a helpful diagram for the full breakdown of the module

        
mindmap
    root((100%))
        Participation 5%
        Individual Project 20%
            Implementation 10%
            Documentation 5%
            Project Management 5%
        Team Project 45%
            Design 5%
            Implementation 10%
            Documentation 10%
            QA 10%
            Project Management 10%
        Exam 30%
            Part I MCQ: 30%

    

The breakdown for the module can be found on their website: CS2103 AY2021 Semester 1

Pre-requisites

  • CS2030 Programming Methodology II (and its variants)
  • CS2040 Data Structures and Algorithms (and its variants)

Module Details

  • Java
  • Object-Oriented Programming
  • Software Engineering Tools
  • Modeling
  • Requirements
  • Documentation
  • Project Management
  • Testing
  • Applications domains

Tutorial

The tutorials are conducted online via Zoom. It is handled by 2 TAs and each tutor works with 2 teams. It is usually conducted in a flipped classroom format. He asks all of us to answer the tutorial questions through PM to him before he goes through some of the common misconceptions that some of us might have answered.

We are not expected to ask Tech help / admin information during the tutorial from the TAs but get the information through the use of forum/from the Professor directly.

Lectures

The lectures were also done using zoom and some topics have pre-recorded lectures. Attendance for the 1st lecture is compulsory and the rest are optional. Lecture slides will be uploaded to the module website after the lecture.

Individual Project

The individual project is a simple project that is done individually. The goals of the project is to learn:

  1. Java
  2. Object Oriented Programming
  3. Java IDEs
  4. Git/Github
  5. Project Automation Tools
  6. Code Quality Tools

The project is to build a personal assistant chatbot that helps us keep track of different tasks. Each week, there are different features that we have to implement. At the end of the project, we will have a UI and a chat box that we can interact with the bot.

If you want to see what I have implemented, take a look here

Group Project

The group project is a more complicated project that is done in groups of 6. The goals of the project is to learn:

  1. Working as a team
  2. Process/Workflow
  3. Documentation
  4. Project Management
  5. Quality Assurance

This is a brownfield project based on Address book Level 3.

There are 2 stages of peer evaluation for the group project.

To take a look at what my team has implemented for the module, take a look here

Ratings

Workload (8/10) High workload

The module has a relatively high workload for a 4 MC module (Similar to other 2k CS modules). I spent most of my time coding for the individual and group project for the whole semester.

Organization (8/10)

The module is very well organized. Each of the topic kind of fits into the flow for the next topic that we are going through. As our project evolves, the new components that we have to implement fits into what they are going through in the lecture.

Learning (8/10)

I learnt the importance of documentation and testing during this module. It is also very important to have a certain workflow to ensure cooperation is smooth during the project. It is definitely useful for anyone who aims to be a software engineer.

Enjoyment (8/10)

As someone who loves programming. This mod is definitely for me. I enjoyed it a lot as it gives the instant gratification of project parts working and the satisfaction of completing a project.

Usefulness (9/10)

The project is very useful for anyone who aims to be a software engineer. Similar comments to the learning section.

Overall (8/10)

Overall, I feel that this module is very useful and I have been applying these techniques to my other modules. I enjoyed working together with my teammates and learning from them. If you are interested in software engineering, I would recommend this module.

  • Expected Grade: A
  • Actual Grade: A

Textbook/Learning Notes

Other Reviews