This site is from a past semester! The current version is here.
CS2113/T Aug '19
  • Week 1 [Aug 12]
  • Week 2 [Aug 19]
  • Week 3 [Aug 26]
  • Week 4 [Sep 2]
  • Week 5 [Sep 9]
  • Week 6 [Sep 16]
  • Week 7 [Sep 30]
  • Week 8 [Oct 7]
  • Week 9 [Oct 14]
  • Week 10 [Oct 21]
  • Week 11 [Oct 28]
  • Week 12 [Nov 4]
  • Week 13 [Nov 11]
  • Textbook
  • Admin Info
  • Report Bugs
  • Slack
  • Forum
  • Project Info
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Duke
  • Project Phase1 Dashboard
  • Java Coding Standard
  • samplerepo-things
  • Projects List
  • config.json templates for Reposense
  • PersonalAssistant-Duke
  • Project Phase2 Dashboard
  • Reference project - Addressbook
  • Repl.it classroom
  • Using this Website


    CS2113/T Software Engineering and Object-oriented Programming

    A balanced and iterative introduction to Software Engineering...

    CS2113/T is an introductory Software Engineering module. The module covers the essentials of Object-oriented programming in addition to SE. 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 higher-level project modules. The module follows an iterative approach of going increasingly deeper into SE by exposing students to a series of increasingly bigger software projects.

    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 that runs in two phases. The first phase provides opportunities to familiarize with Java programming and OOP. In the second phase, students are expected to enhance the codebase of the first phase to either build a command line based personal assistant or evolve it into a different project.

    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, intermediate OOP principles advanced OOP
    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 sample Developer Guide) 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


    Using this Website