CS2103/T-AY1718S2
  • Schedule
  • Table of Contents
  • Printer-Friendly(ish)
  • Admin
  • Instructors
  • Announcements
  • Submissions
  • Slack
  • Forum
  • Report Bugs
  • Forum
  • Tutorial Schedule
  • Team IDs
  • Java Coding Standard
  • samplerepo-things
  • Addressbook-level1
  • Addressbook-level2
  • Addressbook-level3
  • Addressbook-level4
  • Projects List
  • Learning Outcomes


    CS2103/T at a Glance

    CS2103/T is an introductory Software Engineering module. It covers basic SE theory and practices that a student needs to know before doing SE internships in the industry or taking higher-level project modules.

    On the theory side, this module is supported by a customized online text book 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 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
    • syntax (reason: expected prerequisite knowledge)

    OOP:

    • Used in a non-trivial project, intermediate OOP principles
    • basics (reason: expected prerequisite knowledge)

    SE tools/practices:

    • those typically used in a mature, high-rigor SE project
    • those specific to start-ups

    Modeling:

    • Some UML notations (sufficient to be able to describe SE artifacts using models, such as seen in this Developer Guide of AB4)
    • intensive upfront design modeling

    Requirements:

    • Some lightweight techniques 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

    • basic developer testing and user testing
    • testing for non-functional aspects

    Applications domains:

    • Cross-platform desktop applications
    • Web programming, Mobile programming, Database programming


    Learning Outcomes