Module Information

This course provides students with hands-on experience in working in project groups through a complete SDLC to develop a well-designed, well-tested, large-scaled software system. The students will apply the current best software engineering practices on the analysis, design, implementation, and testing of software system. Through the project, students will practice analysis of user’s needs, formulation of computing requirements to meet the user’s needs, modelling and design of the computer systems according to the requirements, evaluation of the design, efficient implementation of software components, system integration, software version control, and rigorous testing.

~ From CS3203 NUSMods

For anyone who has a background in programming languages / compilers will have an easier time in this module. Many of the concepts taught here are similar to those taught in the Programming Languages Specialization.

Schedule

I took this module during AY21/22 Semester 1.

  • Lecture Schedule: Tuesdays, 12pm-2pm & 2pm-4pm
  • Tutorial: It is conducted together with the lecture time slot.
  • Project Consultation: 1 hour per week (Planned between the group and the tutor)

There are only 7 weeks of lectures/tutorials for this module from week 1 to week 7. The rest of the time is mainly spent on the project itself.

Module Breakdown

  1. Lecture (Weekly Quizzes + Participation): 7%
  2. Consultations (Participation) 10%
  3. Test 1 (Take Home): 3%
  4. Test 2: 10%
    • Individual Component
    • Group Component
  5. Project (Group work): 70%
    • Iteration 1: Code + Report (15%)
    • Iteration 2: Report + Demo + Oral Presentation (10%)
    • Iteration 3: Code + Report + Final Presentation (45%)

Please note that there are bonuses/penalty based on peer reviews and tutor observations.

Prerequisites

  1. CS2103/CS2113 and its variants
  2. Have NOT taken CS3201/CS3202 with grade of D or better

Module details

  • Modular Credits: 8 MCs

This module involves:

  1. Basic Static Program Analyzer (SPA)
  2. Software Development Lifecycle
  3. Project Management
  4. API Design
  5. Advance SPA Requirements
  6. Testing
  7. Design Decisions
  8. Design Principles
  9. Optimization

Lectures & Tutorials

As the lectures and tutorials happen within the same time slot, I will be evaluating them together.

  1. Before each lectures, we have to watch the Pre-Lecture videos.
  2. We will be allocated questions to complete.
  3. During the lectures
    • Group work and Presentation
  4. After each lecture, we have to complete the Post-Lecture quiz
    • Opens on Thursday of the same week
    • Closes on Monday 2pm of the following week

Project

The project takes up the bulk of the workload for this module. For the grouping, we are allowed to form groups of 2-3. The professors will then match the groups together to form a group of 5-6. There is some form of heuristic to the matching process but we are not told what it is.

The project is divided into 3 iterations.

  1. Iteration 1
    • Code + Report
    • 15% of the project grade
  2. Iteration 2
    • Report + Demo + Oral Presentation
    • 10% of the project grade
  3. Iteration 3
    • Code + Report + Final Presentation
    • 45% of the project grade

In this project, we are required to build a Static Program Analyzer (SPA) for a simple programming language called SIMPLE.

If you are interested in checking out the details of the language, you can check out my CS3203 Notes

Ratings

Workload (10/10)

This mod has the highest workload I have taken in NUS so far. The workload is dependent on the group you are in. Even with a group where everyone is hardworking, the workload is still very high.

Organization (7/10)

Personally, I felt that the module was a little bit messy due to the large cohort size.

Enjoyment (5/10)

I feel that I did not enjoy the module as much as I would have liked to given the workload.

Usefulness (4/10)

While some of the concepts are useful, it is relatively harder to apply in the real world with respect to software engineering.

Overall (6/10)

I feel that the module is not as useful as I would have liked it to be. I would have enjoyed the module more if the workload was lower.

  • Expected Grade: B
  • Actual Grade: B+

Conclusion

As it was a compulsory module with a high workload, I will recommend that you take the alternatives instead.

Resources