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-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 to 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 (i.e., unticked items).
| 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 | 
          
