A balanced, iterative, and brownfield introduction to Software Engineering...
CS2103/T is an introductory Software Engineering course. It has a 50-50 balance of basic SE theory knowledge and practical skills that you need to gain before industry internships or . The course follows an to covering topics. It is also one of the rare SE courses that includes a , in addition to a .
On the theory side, this course is supported by a customized online textbook Software Engineering for Self-Directed Learners, integrated into this course website.
The practice side, you will first ramp up your technical skills by doing a small individual project (greenfield) in which you will develop a personal assistant chatbot called Duke. Then, you will move to a team project (brownfield) in which you will take over an existing project AddressBook-Level3 (AB3) -- a relatively small yet non-trivial (6 ) generic product -- and enhance it into a better product or evolve it in a direction that you choose.
What does mean to 'follow an iterative approach in covering topics'?
It means, we cover a little bit of at first and then iteratively go deeper into them later, revisiting each aspect many times over the course of the semester. In contrast, a sequential approach would have covered one SE aspect before moving to the next (e.g., teach the requirements aspect completely before moving to the design aspect).
In each week, we cover topics that are most relevant to the project tasks that you are expected to do around that time.
This way of 'jumping around' topics feels chaotic but consider the benefits:
To help you cope with the non-sequential progression of topics, this course website contains two versions of the topics.
Given below is a summary of what the course 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 | (sufficient to be able to describe SE artifacts using models, such as seen in this Developer Guide of AB3) | intensive |
Requirements | 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 | and | |
Applications domains | Cross-platform desktop applications | Web programming, Mobile programming, Database programming |