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).
|Java||Used heavily, but not taught extensively||syntax (reason: expected to self-learn)|
|OOP||Used in a non-trivial project,
||those specific to start-ups|
||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|
|Applications domains||Cross-platform desktop applications||Web programming, Mobile programming, Database programming|