A balanced, iterative, and brown-field introduction to Software Engineering...
CS2113/T is an introductory Software Engineering module. It covers roughly a 50-50 balance of basic SE theory and practice that a student needs to know before going for SE internships in the industry or taking
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 of this module is mainly covered by a team project. Students are expected to take over an existing project AddressBook-Level3 (AB3) or AddressBook-Level4 (AB4) -- a relatively small yet non-trivial (10 KLoC) generic product -- and enhance it into a better product or evolve it into a different product. To help students tackle the learning curve of working with 10 KLoC of code, the module takes them through a series of projects of increasing size, from AddressBook-Level1(1 KLoC) to AddressBook-Level3(4 KLoC).
Given below is a summary of what the module covers and does not cover.
Topic | Covered | Not covered |
---|---|---|
Java | Used heavily, but not taught extensively | syntax (reason: expected to self-learn) |
OOP | Used in a non-trivial project, |
advanced OOP |
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 |