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
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,
|
basics (reason: expected prerequisite knowledge) |
SE tools/practices |
|
those specific to start-ups |
Modeling |
|
intensive
|
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 |
|
|
Applications domains | Cross-platform desktop applications | Web programming, Mobile programming, Database programming |