A balanced, iterative, and brown-field introduction to Software Engineering...
CS2103/T is an introductory Software Engineering module. It has a 50-50 balance of basic SE theory knowledge and practical skills that you need to gain before industry internships or e.g., CS3203, CS3216/7, CS3281&2, etc.higher-level project modules. The module follows an going through SE topics several times while increasing depth, as opposed to going through topics sequentiallyiterative approach to covering topics. It is also one of the rare SE modules that includes a i.e., working in an existing projectbrown-field project, in addition to a i.e., a project that is started from scratchgreen-field project.
On the theory side, this module is supported by a customized online textbook Software Engineering for Self-Directed Learners, integrated into this module website.
The practice side, you will first ramp up your technical skills by doing a small individual project (green-field) in which you will develop a personal assistant chatbot called Duke. Then, you will move to a team project (brown-field) in which you will take over an existing project AddressBook-Level3 (AB3) -- a relatively small yet non-trivial (6 KLoC) generic product -- and enhance it into a better product or evolve it into a different product.
Given below is a summary of what the module covers and does not cover.
Topic | Covered | Not covered |
---|---|---|
Java | Used heavily, but not taught | syntax (reason: expected prerequisite knowledge) |
OOP | Used in a non-trivial project, e.g., Single Responsibility Principle, Open-Closed Principleintermediate OOP principles | basics (reason: expected prerequisite knowledge) |
SE tools/practices | e.g., revision control, continuous integration, practices, test automation, code reviews, pull requeststhose typically used in a mature, high-rigor SE project | those specific to start-ups |
Modeling | e.g., class diagrams, sequence diagrams, activity diagramsSome UML notations (sufficient to be able to describe SE artifacts using models, such as seen in this Developer Guide of AB3) | intensive creating detailed UML models before strating to codeupfront design modeling |
Requirements | e.g., user stories, use casesSome lightweight techniques to gather and document project requirements | rapid prototyping, heavy UI design, designing a product from scratch |
Documentation | Documentation targeting end users (example) as well as those targeting developers (example) | Marketing materials |
Project Management | Iterative delivery of a product, working collaboratively with team members, on-site as well as remotely | Setting up project infrastructure from scratch |
Testing | e.g., automated unit/integration/system testingbasic developer testing and e.g., acceptance testinguser testing | e.g., security testing, performance testing, usability testingtesting for non-functional aspects |
Applications domains | Cross-platform desktop applications | Web programming, Mobile programming, Database programming |
Admin FAQ: What are the differences between CS2103 and CS2103T?