This site is from a past semester! The current version will be here when the new semester starts.
CS2103/T 2020 Aug-Dec
  • Full Timeline
  • Week 1 [Mon, Aug 10th]
  • Week 2 [Fri, Aug 14th]
  • Week 3 [Fri, Aug 21st]
  • Week 4 [Fri, Aug 28th]
  • Week 5 [Fri, Sep 4th]
  • Week 6 [Fri, Sep 11th]
  • Week 7 [Fri, Sep 18th]
  • Week 8 [Fri, Oct 2nd]
  • Week 9 [Fri, Oct 9th]
  • Week 10 [Fri, Oct 16th]
  • Week 11 [Fri, Oct 23rd]
  • Week 12 [Fri, Oct 30th]
  • Week 13 [Fri, Nov 6th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Showcase
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • Addressbook-level3
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files
  • Tutorial Schedule
  • Java Coding Standard
  • Git Conventions
  • Forum Activities Dashboard
  • Participation Dashboard
  • Summary of the Module Timeline

    CS2103/T week vs normal academic week

    Each CS2103/T week starts with the lecture and ends just before the following week's lecture. The only exception is week 1, which starts on the Monday of the first week of the semester.

    As our lecture is on Friday, CS2103/T week starts a few days earlier than the normal NUS academic week. For example, CS2103/T week 2 starts on the Friday of NUS week 1. See the full timeline for exact dates.

    Deadline for weekly tasks

    The deadline to complete tasks allocated to the week is the e.g., if your tutorial is on Thursday, the deadline is Wednesday 23.59midnight before your tutorial day, unless stated otherwise. Our grading scripts that detect your work run at midnight and only the work that's done by midnight will be eligible for marks (for cases where the task is graded).


    Week 1 - Mon, Aug 10th

    Topics:

    • [W1.1] OOP: Classes & Objects

    • [W1.2] OOP Inheritance

    • [W1.3] OOP: Polymorphism

    • [W1.4] Java: Collections

    • [W1.5] Exception Handling

    • [W1.1] OOP: Classes & Objects
    • [W1.1a] Paradigms → OOP → Introduction → What :

    • [W1.1b] Paradigms → OOP → Objects → What :

    • [W1.1c] Paradigms → OOP → Objects → Objects as abstractions :

    • [W1.1d] Paradigms → OOP → Objects → Encapsulation of objects :

    • [W1.1e] Paradigms → OOP → Classes → What :

    • [W1.1f] C++ to Java → Classes → Defining classes :

    • [W1.1g] C++ to Java → Classes → Getters and setters :

    • [W1.1h] Paradigms → OOP → Classes → Class-level members :

    • [W1.1i] C++ to Java → Classes → Class-level members :

    • [W1.1j] Paradigms → OOP → Classes → Enumerations :

    • [W1.1k] C++ to Java → Miscellaneous Topics → Enumerations :

    • [W1.2] OOP Inheritance
    • [W1.2a] Paradigms → OOP → Inheritance → What :

    • [W1.2b] Paradigms → OOP → Inheritance → Overloading :

    • [W1.2c] Paradigms → OOP → Inheritance → Overriding :

    • [W1.2d] C++ to Java → Inheritance → Inheritance (Basics) :

    • [W1.3] OOP: Polymorphism

       Polymorphism

    • [W1.3a] Paradigms → OOP → Polymorphism → What :

    • [W1.3b] C++ to Java → Inheritance → Polymorphism :

       Abstract Classes

    • [W1.3c] Paradigms → OOP → Inheritance → Abstract classes and methods :

    • [W1.3d] C++ to Java → Inheritance → Abstract classes and methods :

       Interfaces

    • [W1.3e] Paradigms → OOP → Inheritance → Interfaces :

    • [W1.3f] C++ to Java → Inheritance → Interfaces :

       How Polymorphism Works

    • [W1.3g] Paradigms → OOP → Inheritance → Substitutability :

    • [W1.3h] Paradigms → OOP → Inheritance → Dynamic and static binding :

    • [W1.3i] Paradigms → OOP → Polymorphism → How :

    • [W1.4] Java: Collections
    • [W1.4a] C++ to Java → Collections → The collections framework :

    • [W1.4b] C++ to Java → Collections → The ArrayList class :

    • [W1.4c] C++ to Java → Collections → The HashMap class :

    • [W1.5] Exception Handling
    • [W1.5a] Implementation → Error Handling → Introduction → What :

    • [W1.5b] Implementation → Error Handling → Exceptions → What :

    • [W1.5c] C++ to Java → Exceptions → What are Exceptions? :

    • [W1.5d] Implementation → Error Handling → Exceptions → How :

    • [W1.5e] C++ to Java → Exceptions → How to use Exceptions :

    • [W1.5f] Implementation → Error Handling → Exceptions → When :

    Admin:

    1. Submit pre-lecture quiz Mon, Aug 17th 2359 counted for participation
    2. Set up the tools before the lecture
    3. Submit the pre-module survey Fri, Aug 14th 2359 counted for participation
    4. Learn about the module
    5. Attend the first lecture

    Week 2 - Fri, Aug 14th

    Topics:

    • [W2.2] SDLC Process Models: Basics

    • [W2.3] RCS: Revision History

    • [W2.4] RCS: Remote Repos

    • [W2.5] IDEs: Basic Features

    • [W2.6] Automated Testing of Text UIs

    • [W2.1a] Software Engineering → Introduction → Pros and cons

    • [W2.2] SDLC Process Models: Basics
    • [W2.2a] Project Management → SDLC Process Models → Introduction → What

    • [W2.2b] Project Management → SDLC Process Models → Introduction → Sequential models

    • [W2.2c] Project Management → SDLC Process Models → Introduction → Iterative models

    • [W2.3] RCS: Revision History
    • [W2.3a] Project Management → Revision Control → What

    • [W2.3b] Project Management → Revision Control → Repositories

    • [W2.3c] Tools → Git and GitHub → init: Getting started

    • [W2.3d] Project Management → Revision Control → Saving history

    • [W2.3e] Tools → Git and GitHub → commit: Saving changes to history

    • [W2.3f] Tools → Git and GitHub → Omitting files from revision control

    • [W2.3g] Project Management → Revision Control → Using history

    • [W2.3h] Tools → Git and GitHub → tag: Naming commits

    • [W2.3i] Tools → Git and GitHub → diff: Comparing revisions

    • [W2.3j] Tools → Git and GitHub → checkout: Retrieving a specific revision

    • [W2.3k] Tools → Git and GitHub → stash: Shelving changes temporarily : OPTIONAL

    • [W2.4] RCS: Remote Repos
    • [W2.4a] Project Management → Revision Control → Remote repositories

    • [W2.4b] Tools → Git and GitHub → clone: Copying a repo

    • [W2.4c] Tools → Git and GitHub → pull, fetch: Downloading data from other repos

    • [W2.4d] Tools → Git and GitHub → Fork: Creating a remote copy

    • [W2.4e] Tools → Git and GitHub → push: Uploading data to other repos

    • [W2.5] IDEs: Basic Features
    • [W2.5a] Implementation → IDEs → What

    • [W2.5b] Tools → IntelliJ IDEA → Project setup

    • [W2.6] Automated Testing of Text UIs
    • [W2.6a] Quality Assurance → Testing → Introduction → What

    • [W2.6b] Quality Assurance → Testing → Regression Testing → What

    • [W2.6c] Quality Assurance → Testing → Test Automation → What

    • [W2.6d] Quality Assurance → Testing → Test Automation → Automated testing of CLI applications

    Admin:

    1. Submit post-lecture quiz Thu, Aug 20th 2359 counted for participation
    2. Get connected to our communication channels

    iP:

    1. Learn about the project
    2. Set up prerequisites
    3. Set up the project in your computer
    4. Add Increments while committing frequently: Level-1, Level-2, Level-3, Level-4, A-TextUiTesting, Level-5, Level-6, A-Enums Thu, Aug 20th 2359

    Week 3 - Fri, Aug 21st

    Topics:

    • [W3.1] RCS: Branching

    • [W3.2] RCS: Creating Pull Requests

    • [W3.3] Java

    • [W3.4] Code Quality: Coding Standards

    • [W3.5] Developer Testing

    • [W3.6] Unit Testing

    • [W3.1] RCS: Branching
    • [W3.1a] Project Management → Revision Control → Branching

    • [W3.1b] Tools → Git and GitHub → branch: Doing multiple parallel changes

    • [W3.1c] Tools → Git and GitHub → Dealing with merge conflicts

    • [W3.2] RCS: Creating Pull Requests
    • [W3.2a] Tools → Git and GitHub → Creating PRs

    • [W3.3a] Implementation → Documentation → Tools → JavaDoc → What

    • [W3.3b] Implementation → Documentation → Tools → JavaDoc → How

    • [W3.3c] C++ to Java → Miscellaneous Topics → File access :

    • [W3.3d] C++ to Java → Miscellaneous Topics → Packages :

    • [W3.3e] C++ to Java → Miscellaneous Topics → Using JAR files :

    • [W3.4] Code Quality: Coding Standards
    • [W3.4a] Implementation → Code Quality → Introduction → What

    • [W3.4b] Implementation → Code Quality → Style → Introduction

    • [W3.5] Developer Testing
    • [W3.5a] Quality Assurance → Testing → Developer Testing → What

    • [W3.5b] Quality Assurance → Testing → Developer Testing → Why

    • [W3.6] Unit Testing
    • [W3.6a] Quality Assurance → Testing → Test Automation → Test automation using test drivers

    • [W3.6b] Quality Assurance → Testing → Test Automation → Test automation tools

    • [W3.6c] Quality Assurance → Testing → Unit Testing → What

    • [W3.6d] C++ to Java → JUnit → JUnit: Basic

    • [W3.6e] Quality Assurance → Testing → Unit Testing → Stubs

    • [W3.6f] C++ to Java → JUnit → JUnit: Intermediate

    Admin:

    1. Submit post-lecture quiz counted for participation
    2. [CS2103 students only] Form teams during the tutorial

    iP:

    1. Do any leftover iP tasks from the previous week
    2. Create a PR to the upstream repo
    3. Add Increments as parallel branches: Level-7, Level-8
    4. Add Increments: A-MoreOOP, A-Packages, A-JUnit, A-Jar
    5. Add Increments as parallel branches: A-JavaDoc, A-CodingStandard, Level-9

    tP:

    1. Get familiar with AB3 features
    2. Set up a project meeting time by the end of the tutorial

    Week 4 - Fri, Aug 28th

    Topics:

    • [W4.1] Design: Models

    • [W4.2] Class/Object Diagrams: Basics

    • [W4.3] Class Diagrams: Intermediate-Level

    • [W4.4] Java: JavaFX

    • [W4.5] Java: varargs

    • [W4.6] Code Quality: Naming

    • [W4.7] Static Analysis

    • [W4.8] Code reviews

    • [W4.9] RCS: Managing Pull Requests

    • [W4.10] Automating the Build Process

    • [W4.1] Design: Models
    • [W4.1a] Design → Modelling → Introduction → What

    • [W4.1b] Design → Modelling → Introduction → How

    • [W4.1c] Design → Modelling → Introduction → UML models

    • [W4.2] Class/Object Diagrams: Basics
    • [W4.2a] Design → Modelling → Modelling Structure → OO structures

    • [W4.2b] Design → Modelling → Modelling Structure → Class diagrams - basic

    • [W4.2c] Design → Modelling → Modelling Structure → Object diagrams

    • [W4.2d] Tools → UML → Object versus class diagrams

    • [W4.3] Class Diagrams: Intermediate-Level
    • [W4.3a] Tools → UML → Notes

    • [W4.3b] Tools → UML → Constraints : OPTIONAL

    • [W4.3c] Tools → UML → Class Diagrams → Associations as attributes

    • [W4.3d] Design → Modelling → Modelling Structure → Class diagrams - intermediate

    • [W4.3e] Paradigms → OOP → Associations → Association classes

    • [W4.4] Java: JavaFX
    • [W4.4a] C++ to Java → Miscellaneous Topics → JavaFX
    • [W4.5] Java: varargs
    • [W4.5a] C++ to Java → Miscellaneous Topics → Varargs :
    • [W4.6] Code Quality: Naming
    • [W4.6a] Implementation → Code Quality → Naming → Introduction

    • [W4.6b] Implementation → Code Quality → Naming → Basic → Use nouns for things and verbs for actions

    • [W4.6c] Implementation → Code Quality → Naming → Basic → Use standard words

    • [W4.6d] Implementation → Code Quality → Naming → Intermediate → Use name to explain

    • [W4.6e] Implementation → Code Quality → Naming → Intermediate → Not too long, not too short

    • [W4.6f] Implementation → Code Quality → Naming → Intermediate → Avoid misleading names

    • [W4.7] Static Analysis
    • [W4.7a] Quality Assurance → Quality Assurance → Static Analysis → What
    • [W4.8] Code reviews
    • [W4.8a] Quality Assurance → Quality Assurance → Code Reviews → What

    • [W4.9] RCS: Managing Pull Requests
    • [W4.9a] Tools → Git and GitHub → Reviewing PRs
    • [W4.10] Automating the Build Process
    • [W4.10a] Implementation → Integration → Introduction → What

    • [W4.10b] Implementation → Integration → Build Automation → What

    • [W4.10c] Implementation → Integration → Build Automation → Continuous integration and continuous deployment

    Admin:

    1. Accept GitHub invitation from the module organization counted for participation
    2. Submit post-lecture quiz counted for participation

    iP:

    1. Review some peer PRs counted for participation
    2. Learn from others (optional)
    3. Add Increments as branches: A-Gradle, A-CheckStyle, Level-10, A-Varargs

    tP:

    1. Start weekly project meetings
    2. Start a collaborative doc to take project notes before the tutorial
    3. Decide on an overall project direction (user profile, problem addressed) before the tutorial

    Week 5 - Fri, Sep 4th

    Topics:

    • [W5.1] Requirements: Intro

    • [W5.2] Requirements: Gathering

    • [W5.3] Requirements: Specifying

    • [W5.8] RCS: Managing Pull Requests

    • [W5.1] Requirements: Intro
    • [W5.1a] Requirements → Requirements → Introduction

    • [W5.1b] Requirements → Requirements → Non-functional requirements

    • [W5.1c] Requirements → Requirements → Quality of requirements

    • [W5.1d] Requirements → Requirements → Prioritizing requirements

    • [W5.2] Requirements: Gathering
    • [W5.2a] Requirements → Gathering Requirements → Brainstorming

    • [W5.2b] Requirements → Gathering Requirements → Product surveys

    • [W5.2c] Requirements → Gathering Requirements → Observation

    • [W5.2d] Requirements → Gathering Requirements → User surveys

    • [W5.2e] Requirements → Gathering Requirements → Interviews

    • [W5.2f] Requirements → Gathering Requirements → Focus groups

    • [W5.2g] Requirements → Gathering Requirements → Prototyping

    • [W5.3] Requirements: Specifying

       Prose

    • [W5.3a] Requirements → Specifying Requirements → Prose → What

       Feature Lists

    • [W5.3b] Requirements → Specifying Requirements → Feature Lists → What

       User Stories

    • [W5.3c] Requirements → Specifying Requirements → User Stories → Introduction

    • [W5.3d] Requirements → Specifying Requirements → User Stories → Details

    • [W5.3e] Requirements → Specifying Requirements → User Stories → Usage

       Glossary

    • [W5.3f] Requirements → Specifying Requirements → Glossary → What

       Supplementary Requirements

    • [W5.3g] Requirements → Specifying Requirements → Supplementary Requirements → What

    • [W5.4] Code Quality

       Readability

    • [W5.4a] Implementation → Code Quality → Readability → Introduction

    • [W5.4b] Implementation → Code Quality → Readability → Basic → Avoid long methods

    • [W5.4c] Implementation → Code Quality → Readability → Basic → Avoid deep nesting

    • [W5.4d] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions

    • [W5.4e] Implementation → Code Quality → Readability → Basic → Avoid magic numbers

    • [W5.4f] Implementation → Code Quality → Readability → Basic → Make the code obvious

    • [W5.4g] Implementation → Code Quality → Readability → Intermediate → Structure code logically

    • [W5.4h] Implementation → Code Quality → Readability → Intermediate → Do not 'Trip Up' reader

    • [W5.4i] Implementation → Code Quality → Readability → Intermediate → Practice KISSing

    • [W5.4j] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations

    • [W5.4k] Implementation → Code Quality → Readability → Intermediate → SLAP hard

    • [W5.4l] Implementation → Code Quality → Readability → Advanced → Make the happy path prominent

       Unsafe Practices

    • [W5.4m] Implementation → Code Quality → Error-Prone Practices → Introduction

    • [W5.4n] Implementation → Code Quality → Error-Prone Practices → Basic → Use the default branch

    • [W5.4o] Implementation → Code Quality → Error-Prone Practices → Basic → Don't recycle variables or parameters

    • [W5.4p] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid empty catch blocks

    • [W5.4q] Implementation → Code Quality → Error-Prone Practices → Basic → Delete dead code

    • [W5.4r] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize scope of variables

    • [W5.4s] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize code duplication

       Code Comments

    • [W5.4t] Implementation → Code Quality → Comments → Introduction

    • [W5.4u] Implementation → Code Quality → Comments → Basic → Do not repeat the obvious

    • [W5.4v] Implementation → Code Quality → Comments → Basic → Write to the reader

    • [W5.4w] Implementation → Code Quality → Comments → Intermediate → Explain WHAT and WHY, not HOW

    • [W5.5] Refactoring
    • [W5.5a] Implementation → Refactoring → What

    • [W5.5b] Tools → IntelliJ IDEA → Refactoring

    • [W5.5c] Implementation → Refactoring → How

    • [W5.5d] Implementation → Refactoring → When : OPTIONAL

    • [W5.6a] Implementation → Error Handling → Assertions → What :

    • [W5.6b] Implementation → Error Handling → Assertions → How :

    • [W5.6c] Implementation → Error Handling → Assertions → When :

    • [W5.7] Java: streams
    • [W5.7a] C++ to Java → Miscellaneous Topics → Streams: Basic :

    • [W5.8] RCS: Managing Pull Requests
    • [W5.8a] Tools → Git and GitHub → Merging PRs

    Admin:

    1. Submit post-lecture quiz counted for participation
    2. Practice peer evaluation on TEAMMATES Thu, Sep 10th 2359 counted for participation

    iP:

    1. Generate a new jar file
    2. Add Increments as PRs: A-Assertions, A-CodeQuality, A-Lambdas, A-Streams
    3. Add Increment: A-CI
    4. Add an extension

    tP:

    1. Brainstorm user stories before the tutorial
    2. Choose user stories for v1.2 before/during the tutorial

    Week 6 - Fri, Sep 11th

    Topics:

    • [W6.1] Modeling: Sequence Diagrams

    • [W6.2] Architecture Diagrams

    • [W6.3] IDEs: Intermediate Features

    • [W6.4] Logging

    • [W6.1] Modeling: Sequence Diagrams
    • [W6.1a] Design → Modelling → Modelling Behaviors Sequence diagrams - basic

    • [W6.1b] Design → Modelling → Modelling Behaviors Sequence diagrams - intermediate

    • [W6.1c] Tools → UML → Sequence Diagrams → Reference frames

    • [W6.1d] Tools → UML → Sequence Diagrams → Parallel paths

    • [W6.2] Architecture Diagrams
    • [W6.2a] Design → Architecture → Introduction → What

    • [W6.2b] Design → Architecture → Architecture Diagrams → Reading

    • [W6.2c] Design → Introduction → Multi-level design

    • [W6.3] IDEs: Intermediate Features
    • [W6.3a] Implementation → IDEs → Debugging → What

    • [W6.3b] Tools → IntelliJ IDEA → Debugging: Basic

    • [W6.3c] Tools → IntelliJ IDEA → Code navigation

    • [W6.4a] Implementation → Error Handling → Logging → What

    • [W6.4b] Implementation → Error Handling → Logging → How

    Admin:

    1. Submit post-lecture quiz counted for participation
    2. [optional] Submit mid-term feedback for the module Thu, Sep 17th 2359

    iP:

    1. Add Increment: A-BetterGui
    2. Finalize the features
    3. Set up a product website
    4. Submit the final version Fri, Sep 18th 2359

    tP:

    1. Conceptualize v1.2
    2. Draft the UG
    3. Refine the product design
    4. Set up the project repo
    5. Get familiar with the code base

    Week 7 - Fri, Sep 18th

    Topics:

    • [W7.1] Requirements: Use Cases

    • [W7.2] Design: High-Level View

    • [W7.3] Design: Fundamentals

    • [W7.4] IDEs: Advanced Features : OPTIONAL

    • [W7.5] Integration Approaches

    • [W7.6] Project Mgt: Scheduling and Tracking

    • [W7.7] Project Mgt: Workflows

    • [W7.1] Requirements: Use Cases
    • [W7.1a] Requirements → Specifying Requirements → Use Cases → Introduction

    • [W7.1b] Requirements → Specifying Requirements → Use Cases → Identifying

    • [W7.1c] Requirements → Specifying Requirements → Use Cases → Details

    • [W7.1d] Requirements → Specifying Requirements → Use Cases → Usage

    • [W7.2] Design: High-Level View

       Introduction

    • [W7.2a] Design → Introduction → What

       Design Approaches

    • [W7.2b] Design → Design Approaches → Top-down and bottom-up design

    • [W7.2c] Design Approaches → Agile Design → Agile design

    • [W7.3] Design: Fundamentals

       Abstraction

    • [W7.3a] Design → Design Fundamentals → Abstraction → What

       Coupling

    • [W7.3b] Design → Design Fundamentals → Coupling → What

    • [W7.3c] Design → Design Fundamentals → Coupling → How

    • [W7.3d] Design → Design Fundamentals → Coupling → Types of coupling : OPTIONAL

       Cohesion

    • [W7.3e] Design → Design Fundamentals → Cohesion → What

    • [W7.3f] Design → Design Fundamentals → Cohesion → How

    • [W7.4] IDEs: Advanced Features : OPTIONAL
    • [W7.4a] Tools → IntelliJ IDEA → Productivity shortcuts : OPTIONAL
    • [W7.5] Integration Approaches
    • [W7.5a] Implementation → Integration → Approaches → Late and one time versus early and frequent

    • [W7.5b] Implementation → Integration → Approaches → Big-bang versus incremental integration

    • [W7.5c] Implementation → Integration → Approaches → Top-down versus bottom-up integration : OPTIONAL

    • [W7.6] Project Mgt: Scheduling and Tracking
    • [W7.6a] Project Management → Project Planning → Milestones

    • [W7.6b] Project Management → Project Planning → Buffers

    • [W7.6c] Project Management → Project Planning → Issue trackers

    • [W7.6d] Project Management → Project Planning → Work breakdown structure

    • [W7.6e] Project Management → Project Planning → Gantt charts

    • [W7.6f] Project Management → Project Planning → PERT charts : OPTIONAL

    • [W7.6g] Project Management → Teamwork → Team structures

    • [W7.7] Project Mgt: Workflows
    • [W7.7a] Project Management → Revision Control → Forking flow

    • [W7.7b] Tools → Git and GitHub → Forking workflow

    • [W7.7c] Project Management → Revision Control → DRCS vs CRCS

    • [W7.7d] Project Management → Revision Control → Feature branch flow : OPTIONAL

    • [W7.7e] Project Management → Revision Control → Centralized flow : OPTIONAL

    Admin:

    1. Submit post-lecture quiz counted for participation

    iP:

    1. [Optional] Get more out of the iP

    tP: v1.1

    1. Do a practice iteration midnight before the tutorial
    2. Update project website: AboutUs, README
    3. Update the UG
    4. Update the DG: user stories, glossary, NFRs, use cases
    5. Plan the next iteration
    6. Start implementing the next version

    Week 8 - Fri, Oct 2nd

    Topics:

    • [W8.1] [Revisiting] Drawing Class/Object Diagrams - Basics

    • [W8.2] [Revisiting] Drawing Class/Object Diagrams - Intermediate

    • [W8.3] [Revisiting] Drawing Sequence Diagrams

    • [W8.4] Testing: Types

    • [W8.5] Testing: Intermediate Concepts

    • [W8.1] [Revisiting] Drawing Class/Object Diagrams - Basics
    • [W8.1a] Design → Modelling → Modelling Structure → Class diagrams - basic

    • [W8.1b] Design → Modelling → Modelling Structure → Object diagrams

    • [W8.1c] Tools → UML → Object versus class diagrams

    • [W8.2] [Revisiting] Drawing Class/Object Diagrams - Intermediate
    • [W8.2a] Tools → UML → Notes

    • [W8.2b] Tools → UML → Constraints : OPTIONAL

    • [W8.2c] Tools → UML → Class Diagrams → Associations as attributes

    • [W8.2d] Design → Modelling → Modelling Structure → Class diagrams - intermediate

    • [W8.2e] Paradigms → OOP → Associations → Association classes

    • [W8.3] [Revisiting] Drawing Sequence Diagrams
    • [W8.3a] Design → Modelling → Modelling Behaviors Sequence diagrams - basic

    • [W8.3b] Design → Modelling → Modelling Behaviors Sequence diagrams - intermediate

    • [W8.3c] Tools → UML → Sequence Diagrams → Reference frames

    • [W8.3d] Tools → UML → Sequence Diagrams → Parallel paths

    • [W8.4] Testing: Types

       Integration Testing

    • [W8.4a] Quality Assurance → Testing → Integration Testing → What

    • [W8.4b] Quality Assurance → Testing → Integration Testing → How

       System Testing

    • [W8.4c] Quality Assurance → Testing → System Testing → What

    • [W8.4d] Quality Assurance → Testing → Test Automation → Automated testing of GUIs

       Acceptance Testing

    • [W8.4e] Quality Assurance → Testing → Acceptance Testing → What

    • [W8.4f] Quality Assurance → Testing → Acceptance Testing → Acceptance versus system testing

       Alpha/Beta Testing

    • [W8.4g] Quality Assurance → Testing → Alpha/Beta Testing → What

       Exploratory vs Scripted Testing

    • [W8.4h] Quality Assurance → Testing → Exploratory and Scripted Testing → What

    • [W8.4i] Quality Assurance → Testing → Exploratory and Scripted Testing → When

    • [W8.5] Testing: Intermediate Concepts

       Dependency Injection

    • [W8.5a] Quality Assurance → Testing → Dependency Injection → What

    • [W8.5b] Quality Assurance → Testing → Dependency Injection → How : OPTIONAL

       Testability

    • [W8.5c] Quality Assurance → Testing → Introduction → Testability

       Test Coverage

    • [W8.5d] Quality Assurance → Testing → Test Coverage → What

    • [W8.5e] Quality Assurance → Testing → Test Coverage → How

       TDD

    • [W8.5f] Quality Assurance → Testing → Test-Driven Development → What

    Admin:

    1. Submit post-lecture quiz counted for participation
    2. Submit Midterm Peer Evaluations on TEAMMATES Sun, Oct 11th 2359 counted for participation

    iP:

    1. Evaluate two peer iPs Sat, Oct 10th 2359 counted for participation

    tP:

    1. Ensure you know tP expectations
    2. Start proper milestone management
    3. Add the first functionality increment

    Week 9 - Fri, Oct 9th

    Topics:

    • [W9.1] OO Domain Models

    • [W9.2] Activity Diagrams

    • [W9.3] Conceptualizing a Design

    • [W9.4] Architecture Diagrams: Drawing

    • [W9.5] Design Principles

    • [W9.6] [Revisiting] SDLC Process Models

    • [W9.7] SDLC Process Models (continued)

    • [W9.8] Writing Developer Documents

    • [W9.1] OO Domain Models
    • [W9.1a] Design → Modelling → Modelling Structure → Object oriented domain models
    • [W9.2] Activity Diagrams
    • [W9.2a] Design → Modelling → Modelling Behaviors Activity diagrams - basic

    • [W9.2b] Design → Modelling → Modelling Behaviors Activity diagrams - intermediate

    • [W9.3] Conceptualizing a Design
    • [W9.3a] Design → Modeling → Modeling a Solution → Introduction

    • [W9.3b] Design → Modeling → Modeling a Solution → Basic

    • [W9.3c] Design → Modeling → Modeling a Solution → Intermediate : OPTIONAL

    • [W9.4] Architecture Diagrams: Drawing
    • [W9.4a] Design → Architecture → Architecture Diagrams → Drawing

    • [W9.5] Design Principles
    • [W9.5a] Principles → Separation of concerns principle

    • [W9.5b] Principles → Single responsibility principle :

    • [W9.5c] Principles → Liskov substitution principle :

    • [W9.5d] Principles → Open-closed principle :

    • [W9.5e] Principles → Law of Demeter

    • [W9.5f] Principles → Interface segregation principle : OPTIONAL

    • [W9.5g] Principles → Dependency inversion principle : OPTIONAL

    • [W9.5h] Principles → SOLID principles

    • [W9.5i] Principles → YAGNI principle : OPTIONAL

    • [W9.5j] Principles → DRY principle : OPTIONAL

    • [W9.5k] Principles → Brooks' law : OPTIONAL

    • [W9.6] [Revisiting] SDLC Process Models
    • [W9.6a] Project Management → SDLC Process Models → Introduction → What

    • [W9.6b] Project Management → SDLC Process Models → Introduction → Sequential models

    • [W9.6c] Project Management → SDLC Process Models → Introduction → Iterative models

    • [W9.7] SDLC Process Models (continued)
    • [W9.7a] Project Management → SDLC Process Models → Introduction → Agile models

    • [W9.7b] Project Management → SDLC Process Models → Scrum

    • [W9.7c] Project Management → SDLC Process Models → XP

    • [W9.7d] Project Management → SDLC Process Models → Unified process : OPTIONAL

    • [W9.7e] Project Management → SDLC Process Models → CMMI : OPTIONAL

    • [W9.7f] Project Management → SDLC Process Models → Recap

    • [W9.8] Writing Developer Documents

       Type of Developer Docs

    • [W9.8a] Implementation → Documentation → Introduction → What

       Guideline: Aim for Comprehensibility

    • [W9.8b] Implementation → Documentation → Guidelines → Aim for Comprehensibility → What

    • [W9.8c] Implementation → Documentation → Guidelines → Aim for Comprehensibility → How

       Guideline: Describe Top-Down

    • [W9.8d] Implementation → Documentation → Guidelines → Describe Top-Down → What

    • [W9.8e] Implementation → Documentation → Guidelines → Describe Top-Down → Why

    • [W9.8f] Implementation → Documentation → Guidelines → Describe Top-Down → How

       Guideline: Minimal but Sufficient

    • [W9.8g] Implementation → Documentation → Guidelines → Minimal but Sufficient → What

    • [W9.8h] Implementation → Documentation → Guidelines → Minimal but Sufficient → How

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP: v1.2

    1. Deliver v1.2
    2. Wrap up v1.2
    3. Do an informal demo of v1.2 before the tutorial

    Week 10 - Fri, Oct 16th

    Topics:

    • [W10.1] Design Patterns

    • [W10.2] Defensive Programming

    • [W10.3] Test Cases: Intro

    • [W10.4] Test Cases: Equivalence Partitioning

    • [W10.5] Test Cases: Boundary Value Analysis

    • [W10.1] Design Patterns

       Introduction

    • [W10.1a] Design → Design Patterns → Introduction → What

    • [W10.1b] Design → Design Patterns → Introduction → Format

       Singleton pattern

    • [W10.1c] Design → Design Patterns → Singleton → What

    • [W10.1d] Design → Design Patterns → Singleton → Implementation

    • [W10.1e] Design → Design Patterns → Singleton → Evaluation

       Facade pattern

    • [W10.1f] Design → Design Patterns → Facade Pattern → What

       Command pattern

    • [W10.1g] Design → Design Patterns → Command Pattern → What

       Abstraction Occurrence pattern

    • [W10.1h] Design → Design Patterns → Abstraction Occurrence Pattern → What : OPTIONAL

    • [W10.2] Defensive Programming
    • [W10.2a] Implementation → Error Handling → Defensive Programming → What

    • [W10.2b] Implementation → Error Handling → Defensive Programming → Enforcing compulsory associations

    • [W10.2c] Implementation → Error Handling → Defensive Programming → Enforcing 1-to-1 associations : OPTIONAL

    • [W10.2d] Implementation → Error Handling → Defensive Programming → Enforcing referential integrity : OPTIONAL

    • [W10.2e] Implementation → Error Handling → Defensive Programming → When

    • [W10.2f] Implementation → Error Handling → Design by Contract → Design by contract : OPTIONAL

    • [W10.3] Test Cases: Intro
    • [W10.3a] Quality Assurance → Test Case Design → Introduction → What

    • [W10.3b] Quality Assurance → Test Case Design → Introduction → Positive versus negative test cases

    • [W10.3c] Quality Assurance → Test Case Design → Introduction → Black box versus glass box

    • [W10.3d] Quality Assurance → Test Case Design → Testing based on use cases

    • [W10.4] Test Cases: Equivalence Partitioning
    • [W10.4a] Quality Assurance → Test Case Design → Equivalence Partitions → What

    • [W10.4b] Quality Assurance → Test Case Design → Equivalence Partitions → Basic

    • [W10.4c] Quality Assurance → Test Case Design → Equivalence Partitions → Intermediate

    • [W10.5] Test Cases: Boundary Value Analysis
    • [W10.5a] Quality Assurance → Test Case Design → Boundary Value Analysis → What

    • [W10.5b] Quality Assurance → Test Case Design → Boundary Value Analysis → How

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP:

    1. Do a postmortem of the previous iteration
    2. Adjust process rigor if necessary
    3. Start the next iteration
    4. Update the DG with design details
    5. Smoke-test CATcher COMPULSORY counted for participation
    6. Do a trial JAR release

    Week 11 - Fri, Oct 23rd

    Topics:

    • [W11.1] More Design Patterns

    • [W11.2] Architectural Styles

    • [W11.3] Test Cases: Combining Multiple Inputs

    • [W11.4] Other QA Techniques

    • [W11.7] Other UML Models : OPTIONAL

    • [W11.1] More Design Patterns
    • [W11.1a] Design → Design Patterns → MVC Pattern → What

    • [W11.1b] Design → Design Patterns → Observer Pattern → What

    • [W11.1c] Design → Design Patterns → Other design patterns : OPTIONAL

    • [W11.1d] Design → Design Patterns → Combining design patterns : OPTIONAL

    • [W11.1e] Design → Design Patterns → Using design patterns : OPTIONAL

    • [W11.1f] Design → Design Patterns → Design patterns versus design principles : OPTIONAL

    • [W11.1g] Design → Design Patterns → Other types of patterns : OPTIONAL

    • [W11.2] Architectural Styles
    • [W11.2a] Design → Architecture → Styles → What

    • [W11.2b] Design → Architecture → Styles → n-Tier Style → What

    • [W11.2c] Design → Architecture → Styles → Client-Server Style → What

    • [W11.2d] Design → Architecture → Styles → Event-Driven Style → What

    • [W11.2e] Design → Architecture → Styles → Transaction Processing Style → What

    • [W11.2f] Design → Architecture → Styles → Service-Oriented Style → What

    • [W11.2g] Design → Architecture → Styles → Using styles

    • [W11.2h] Design → Architecture → Styles → More styles : OPTIONAL

    • [W11.3] Test Cases: Combining Multiple Inputs
    • [W11.3a] Quality Assurance → Test Case Design → Combining Test Inputs → Why

    • [W11.3b] Quality Assurance → Test Case Design → Combining Test Inputs → Test input combination strategies

    • [W11.3c] Quality Assurance → Test Case Design → Combining Test Inputs → Heuristic: Each valid input at least once in a positive test case

    • [W11.3d] Quality Assurance → Test Case Design → Combining Test Inputs → Heuristic: No more than one invalid input in a test case

    • [W11.3e] Quality Assurance → Test Case Design → Combining Test Inputs → Mix

    • [W11.4] Other QA Techniques
    • [W11.4a] Quality Assurance → Quality Assurance → Introduction → What

    • [W11.4b] Quality Assurance → Quality Assurance → Introduction → Validation versus verification

    • [W11.4c] Quality Assurance → Quality Assurance → Formal Verification → What

       APIs

    • [W11.5a] Implementation → Reuse → Introduction → What

    • [W11.5b] Implementation → Reuse → Introduction → When

       Libraries

    • [W11.5c] Implementation → Reuse → Libraries → What

    • [W11.5d] Implementation → Reuse → Libraries → How

    • [W11.5e] Implementation → Reuse → APIs → What

       Frameworks

    • [W11.5f] Implementation → Reuse → Frameworks → What

    • [W11.5g] Implementation → Reuse → Frameworks → Frameworks versus libraries

       Platforms

    • [W11.5h] Implementation → Reuse → Platforms → What
    • [W11.6] Cloud Computing : OPTIONAL
    • [W11.6a] Implementation → Reuse → Cloud Computing → What : OPTIONAL

    • [W11.6b] Implementation → Reuse → Cloud Computing → Iaas, PaaS, and SaaS : OPTIONAL

    • [W11.7] Other UML Models : OPTIONAL
    • [W11.7a] Design → Modelling → Modelling Behaviors Communication diagrams : OPTIONAL

    • [W11.7b] Design → Modelling → Modelling Behaviors State machine diagrams : OPTIONAL

    • [W11.7c] Design → Modelling → Modelling Structure → Deployment diagrams : OPTIONAL

    • [W11.7d] Design → Modelling → Modelling Structure → Component diagrams : OPTIONAL

    • [W11.7e] Design → Modelling → Modelling Structure → Package diagrams : OPTIONAL

    • [W11.7f] Design → Modelling → Modelling Structure → Composite structure diagrams : OPTIONAL

    • [W11.7g] Design → Modelling → Modelling Behaviors Timing diagrams : OPTIONAL

    • [W11.7h] Design → Modelling → Modelling Behaviors Interaction overview diagrams : OPTIONAL

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP: v1.3

    1. Deliver v1.3
    2. Update user docs
    3. Release as a jar file
    4. Ensure the code RepoSense-compatible
    5. Wrap up v1.3
    6. Demo v1.3 before the tutorial

    Week 12 - Fri, Oct 30th

    Topics:

    • No topic allocated to this week.

    Admin:

    tP:

    1. Attend the practical exam dry run During the lecture counted for participation
    2. Tweak the product as per peer-testing results
    3. Draft the PPP
    4. Prepare for the demo rehearsal
    5. Double-check RepoSense compatibility

    Week 13 - Fri, Nov 6th

    Topics:

    • No topic allocated to this week.

    Admin:

    1. Submit Final Peer Evaluation on TEAMMATES Thu, Nov 12th 2359 counted for participation

    tP: v1.4

    1. Do final tweaks to the feature
    2. Submit deliverables Mon, Nov 9th 2359
    3. Wrap up the milestone Wed, Nov 11th 2359
    4. Submit the demo video Wed, Nov 11th 2359
    5. Prepare for the practical exam
    6. Attend the practical exam during lecture on Fri, Nov 13th 2359