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
- Venue: Online (Zoom)
- Lectures: 4pm to 6pm on Fridays
- Tutorial: 5pm to 6pm on Wednesdays
- Professor: Taken Under Prof Damith Chatura Rajapakse
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:
- Java
- Object Oriented Programming
- Java IDEs
- Git/Github
- Project Automation Tools
- 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:
- Working as a team
- Process/Workflow
- Documentation
- Project Management
- 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