This site is from a past semester! The current version will be here when the new semester starts.
CS2113/T 2021 Jan-May
  • Full Timeline
  • Week 1 [Mon, Jan 11th]
  • Week 2 [Mon, Jun 21st]
  • Week 3 [Mon, Jun 28th]
  • Week 4 [Mon, Jul 5th]
  • Week 5 [Mon, Jul 12th]
  • Week 6 [Mon, Jul 19th]
  • Week 7 [Mon, Jul 26th]
  • Week 8 [Mon, Aug 9th]
  • Week 9 [Mon, Aug 16th]
  • Week 10 [Mon, Aug 23rd]
  • Week 11 [Mon, Aug 30th]
  • Week 12 [Mon, Sep 6th]
  • Week 13 [Mon, Sep 13th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • Reference AB3
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Java exercises
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files (handouts, submissions etc.)
  • Tutorial Schedule
  • Java Coding Standard
  • Git Conventions
  • Forum Activities Dashboard
  • Participation Dashboard
  • Summary of the Module Timeline

    CS2113/T week vs normal academic week

    Each CS2113/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 Monday, CS2113/T week starts a few days earlier than the normal NUS academic week. For example, CS2113/T week 2 starts on the Monday 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, Jan 11th

    Topics:

    • No topics allocated to this week.

    Admin:

    1. Set up the tools before the lecture
    2. Submit the pre-module survey by Friday 2359
    3. Learn about the module
    4. Attend the first lecture

    Week 2 - Mon, Jun 21st

    Topics:

    • [W2.2] SDLC Process Models: Basics

    • [W2.3] Java: Intro

    • [W2.4] Java: HelloWorld

    • [W2.5] Java: Data Types

    • [W2.6] Java: Control Flow

    • [W2.7] RCS: Init, Commit

    • [W2.8] RCS: Fork, Clone

    • [W2.9] IDEs: Basic Features

    • [W2.10] Code Quality: Coding Standards

    • [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] Java: Intro
    • [W2.3a] C++ to Java → About this chapter

    • [W2.3b] C++ to Java → The Java World → What is Java?

    • [W2.3c] C++ to Java → The Java World → How Java works

    • [W2.3d] C++ to Java → The Java World → Java editions

    • [W2.4] Java: HelloWorld
    • [W2.4a] C++ to Java → Getting Started → Installation

    • [W2.4b] C++ to Java → Getting Started → HelloWorld

    • [W2.4c] C++ to Java → Getting Started → Compiling a program

    • [W2.4d] C++ to Java → Getting Started → Running a program

    • [W2.5] Java: Data Types
    • [W2.5a] C++ to Java → Data Types → Primitive data types

    • [W2.5b] C++ to Java → Data Types → Variables

    • [W2.5c] C++ to Java → Data Types → Operators

    • [W2.5d] C++ to Java → Data Types → Arrays

    • [W2.6] Java: Control Flow
    • [W2.6a] C++ to Java → Control Flow → Branching

    • [W2.6b] C++ to Java → Control Flow → Methods

    • [W2.6c] C++ to Java → Control Flow → Loops

    • [W2.7] RCS: Init, Commit
    • [W2.7a] Project Management → Revision Control → What

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

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

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

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

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

    • [W2.8] RCS: Fork, Clone
    • [W2.8a] Project Management → Revision Control → Remote repositories

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

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

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

    • [W2.9c] Tools → IntelliJ IDEA → Code navigation

    • [W2.10] Code Quality: Coding Standards
    • [W2.10a] Implementation → Code Quality → Introduction → What

    • [W2.10b] Implementation → Code Quality → Style → Introduction

    Admin:

    1. Submit coding exercises via Github Classroom Thu, Jan 21st 2359
    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 Increment: Level-0

    Week 3 - Mon, Jun 28th

    Topics:

    • [W3.1] OOP: Classes and Objects

    • [W3.2] Java: Objects

    • [W3.3] Java: Classes

    • [W3.4] OOP, Java: Class-Level Members

    • [W3.5] Java: Useful Classes

    • [W3.6] Code Quality: Naming

    • [W3.7] RCS: Using History

    • [W3.8] RCS: Pull, Push

    • [W3.1] OOP: Classes and Objects
    • [W3.1a] Paradigms → OOP → Introduction → What

    • [W3.1b] Paradigms → OOP → Objects → What

    • [W3.1c] Paradigms → OOP → Classes → What

    • [W3.1d] Paradigms → OOP → Objects → Objects as abstractions

    • [W3.1e] Paradigms → OOP → Objects → Encapsulation of objects

    • [W3.2] Java: Objects
    • [W3.2a] C++ to Java → Objects → Using Java objects

    • [W3.2b] C++ to Java → Objects → Instance members

    • [W3.2c] C++ to Java → Objects → Passing objects around

    • [W3.2d] C++ to Java → Objects → Garbage collection

    • [W3.3] Java: Classes
    • [W3.3a] C++ to Java → Classes → Defining classes

    • [W3.3b] C++ to Java → Classes → Getters and setters

    • [W3.4] OOP, Java: Class-Level Members
    • [W3.4a] Paradigms → OOP → Classes → Class-level members

    • [W3.4b] C++ to Java → Classes → Class-level members

    • [W3.5] Java: Useful Classes
    • [W3.5a] Implementation → Reuse → APIs → What

    • [W3.5b] C++ to Java → Some Useful Classes → Java API

    • [W3.5c] C++ to Java → Some Useful Classes → The String class

    • [W3.5d] C++ to Java → Some Useful Classes → Wrapper Classes for primitive types

    • [W3.5e] C++ to Java → Some Useful Classes → The Arrays class

    • [W3.5f] C++ to Java → Some Useful Classes → The Scanner class

    • [W3.6] Code Quality: Naming
    • [W3.6a] Implementation → Code Quality → Naming → Introduction

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

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

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

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

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

    • [W3.7] RCS: Using History
    • [W3.7a] Project Management → Revision Control → Using history

    • [W3.7b] Tools → Git and GitHub → diff: Comparing revisions

    • [W3.7c] Tools → Git and GitHub → checkout: Retrieving a specific revision

    • [W3.7d] Tools → Git and GitHub → tag: Naming commits

    • [W3.7e] Tools → Git and GitHub → stash: Shelving changes temporarily

    • [W3.8] RCS: Pull, Push
    • [W3.8a] Tools → Git and GitHub → pull, fetch: Downloading data from other repos

    • [W3.8b] Tools → Git and GitHub → push: Uploading data to other repos

    Admin:

    1. Submit coding exercises via Github Classroom midnight before tutorial counted for participation
    2. [CS2113 students only] Form teams during the tutorial

    iP:

    1. Do any leftover iP tasks from the previous week
    2. Add Increments (+ commit, tag, push): Level-1, Level-2, Level-3, A-CodingStandard

    tP:

    1. Set up a project meeting time by the end of the tutorial

    Week 4 - Mon, Jul 5th

    Topics:

    • [W4.1] OOP + Java: Inheritance

    • [W4.2] OOP + Java: Polymorphism

    • [W4.3] Java: Constants

    • [W4.4] OOP + Java: Enumerations

    • [W4.5] Automated Testing of Text UIs

    • [W4.6] Code Quality: Readability

    • [W4.7] Code Quality: Refactoring

    • [W4.8] RCS: Creating Pull Requests

    • [W4.1] OOP + Java: Inheritance
    • [W4.1a] Paradigms → OOP → Inheritance → What

    • [W4.1b] Paradigms → OOP → Inheritance → Overloading

    • [W4.1c] Paradigms → OOP → Inheritance → Overriding

    • [W4.1d] C++ to Java → Inheritance → Inheritance (Basics)

    • [W4.1e] C++ to Java → Inheritance → The Object class

    • [W4.2] OOP + Java: Polymorphism
    • [W4.2a] Paradigms → OOP → Polymorphism → What

    • [W4.2b] Paradigms → OOP → Inheritance → Substitutability

    • [W4.2c] Paradigms → OOP → Inheritance → Dynamic and static binding

    • [W4.2d] Paradigms → OOP → Polymorphism → How

    • [W4.2e] C++ to Java → Inheritance → Polymorphism

    • [W4.3] Java: Constants
    • [W4.3a] C++ to Java → Miscellaneous Topics → Constants
    • [W4.4] OOP + Java: Enumerations
    • [W4.4a] Paradigms → OOP → Classes → Enumerations

    • [W4.4b] C++ to Java → Miscellaneous Topics → Enumerations

    • [W4.5] Automated Testing of Text UIs
    • [W4.5a] Quality Assurance → Testing → Introduction → What

    • [W4.5b] Quality Assurance → Testing → Regression Testing → What

    • [W4.5c] Quality Assurance → Testing → Test Automation → What

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

    • [W4.6] Code Quality: Readability
    • [W4.6a] Implementation → Code Quality → Readability → Introduction

    • [W4.6b] Implementation → Code Quality → Readability → Basic → Avoid long methods

    • [W4.6c] Implementation → Code Quality → Readability → Basic → Avoid deep nesting

    • [W4.6d] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions

    • [W4.6e] Implementation → Code Quality → Readability → Basic → Avoid magic numbers

    • [W4.6f] Implementation → Code Quality → Readability → Basic → Make the code obvious

    • [W4.6g] Implementation → Code Quality → Readability → Intermediate → Structure code logically

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

    • [W4.6i] Implementation → Code Quality → Readability → Intermediate → Practice KISSing

    • [W4.6j] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations

    • [W4.6k] Implementation → Code Quality → Readability → Intermediate → SLAP hard

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

    • [W4.7] Code Quality: Refactoring
    • [W4.7a] Implementation → Refactoring → What

    • [W4.7b] Tools → IntelliJ IDEA → Refactoring : OPTIONAL

    • [W4.7c] Implementation → Refactoring → How

    • [W4.7d] Implementation → Refactoring → When : OPTIONAL

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

    • [W4.8b] Tools → Git and GitHub → Reviewing PRs

    Admin:

    1. Accept GitHub invitation from the module organization counted for participation
    2. Submit coding exercises via Github Classroom counted for participation

    iP:

    1. Create a PR to the upstream repo Mon, Feb 1st 2359
    2. Add Increments: Level-4, A-TextUiTesting, A-CodeQuality
    3. Get ready to review PRs before the tutorial
    4. Review some peer PRs during the tutorial counted for participation

    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 - Mon, Jul 12th

    Topics:

    • [W5.1] Java: Casting

    • [W5.2] OOP + Java: Abstract Classes

    • [W5.3] OOP + Java: Interfaces

    • [W5.4] Java: Packages

    • [W5.5] Java: Access Modifiers

    • [W5.6] Error Handling: Exceptions

    • [W5.7] Specifying Requirements [quick peek ahead]

    • [W5.8] RCS: Branching

    • [W5.1] Java: Casting
    • [W5.1a] C++ to Java → Miscellaneous Topics → Casting
    • [W5.2] OOP + Java: Abstract Classes
    • [W5.2a] Paradigms → OOP → Inheritance → Abstract classes and methods

    • [W5.2b] C++ to Java → Inheritance → Abstract classes and methods

    • [W5.3] OOP + Java: Interfaces
    • [W5.3a] Paradigms → OOP → Inheritance → Interfaces

    • [W5.3b] C++ to Java → Inheritance → Interfaces

    • [W5.4] Java: Packages
    • [W5.4a] C++ to Java → Miscellaneous Topics → Packages
    • [W5.5] Java: Access Modifiers
    • [W5.5a] C++ to Java → Miscellaneous Topics → Access modifiers

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

    • [W5.6b] Implementation → Error Handling → Exceptions → What

    • [W5.6c] Implementation → Error Handling → Exceptions → How

    • [W5.6d] C++ to Java → Exceptions → What are Exceptions?

    • [W5.6e] C++ to Java → Exceptions → How to use Exceptions

    • [W5.6f] Implementation → Error Handling → Exceptions → When

    • [W5.7] Specifying Requirements [quick peek ahead]

       User Stories

    • [W5.7a] Requirements → Specifying Requirements → User Stories → Introduction

    • [W5.7b] Requirements → Specifying Requirements → User Stories → Details

    • [W5.7c] Requirements → Specifying Requirements → User Stories → Usage

       Feature Lists

    • [W5.7d] Requirements → Specifying Requirements → Feature Lists → What

    • [W5.8] RCS: Branching
    • [W5.8a] Project Management → Revision Control → Branching

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

    Admin:

    1. Submit coding exercises via Github Classroom counted for participation
    2. Practice peer evaluation on TEAMMATES Wed, Feb 10th 2359

    iP:

    1. Learn from others (optional)
    2. Add Increment as a branch: Level-5
    3. Add Increment: A-Packages

    tP:

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

    Week 6 - Mon, Jul 19th

    Topics:

    • [W6.1] Java: Generics

    • [W6.2] Java: Collections

    • [W6.3] Java: File Access

    • [W6.4] Java: JAR Files

    • [W6.5] Requirements: Intro

    • [W6.6] Requirements: Gathering

    • [W6.7] Requirements: Specifying [continued from last week]

    • [W6.8] IDEs: Intermediate Features

    • [W6.9] RCS: Merge Conflicts

    • [W6.10] Code Quality: Unsafe Practices

    • [W6.1] Java: Generics
    • [W6.1a] C++ to Java → Generics → What are Generics?

    • [W6.1b] C++ to Java → Generics → How to use Generics

    • [W6.2] Java: Collections
    • [W6.2a] C++ to Java → Collections → The collections framework

    • [W6.2b] C++ to Java → Collections → The ArrayList class

    • [W6.2c] C++ to Java → Collections → The HashMap class

    • [W6.3] Java: File Access
    • [W6.3a] C++ to Java → Miscellaneous Topics → File access
    • [W6.4] Java: JAR Files
    • [W6.4a] C++ to Java → Miscellaneous Topics → Using JAR files

    • [W6.5] Requirements: Intro
    • [W6.5a] Requirements → Requirements → Introduction

    • [W6.5b] Requirements → Requirements → Non-functional requirements

    • [W6.5c] Requirements → Requirements → Prioritizing requirements

    • [W6.5d] Requirements → Requirements → Quality of requirements

    • [W6.6] Requirements: Gathering
    • [W6.6a] Requirements → Gathering Requirements → Brainstorming

    • [W6.6b] Requirements → Gathering Requirements → Product surveys

    • [W6.6c] Requirements → Gathering Requirements → Observation

    • [W6.6d] Requirements → Gathering Requirements → User surveys

    • [W6.6e] Requirements → Gathering Requirements → Interviews

    • [W6.6f] Requirements → Gathering Requirements → Focus groups

    • [W6.6g] Requirements → Gathering Requirements → Prototyping

    • [W6.7] Requirements: Specifying [continued from last week]

       Prose

    • [W6.7a] Requirements → Specifying Requirements → Prose → What

       User Stories [Repeated from last week]

    • [W6.7b] Requirements → Specifying Requirements → User Stories → Introduction

    • [W6.7c] Requirements → Specifying Requirements → User Stories → Details

    • [W6.7d] Requirements → Specifying Requirements → User Stories → Usage

       Feature Lists [Repeated from last week]

    • [W6.7e] Requirements → Specifying Requirements → Feature Lists → What

       Use Cases

    • [W6.7f] Requirements → Specifying Requirements → Use Cases → Introduction

       Glossary

    • [W6.7g] Requirements → Specifying Requirements → Glossary → What

       Supplementary Requirements

    • [W6.7h] Requirements → Specifying Requirements → Supplementary Requirements → What

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

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

    • [W6.8c] Tools → IntelliJ IDEA → Productivity shortcuts : OPTIONAL

    • [W6.9] RCS: Merge Conflicts
    • [W6.9a] Tools → Git and GitHub → Dealing with merge conflicts
    • [W6.10] Code Quality: Unsafe Practices
    • [W6.10a] Implementation → Code Quality → Error-Prone Practices → Introduction

    • [W6.10b] Implementation → Code Quality → Error-Prone Practices → Basic → Use the default branch

    • [W6.10c] Implementation → Code Quality → Error-Prone Practices → Basic → Don't recycle variables or parameters

    • [W6.10d] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid empty catch blocks

    • [W6.10e] Implementation → Code Quality → Error-Prone Practices → Basic → Delete dead code

    • [W6.10f] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize scope of variables

    • [W6.10g] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize code duplication

    Admin:

    1. Submit coding exercises via Github Classroom counted for participation
    2. Submit post-lecture quiz before the lecture counted for participation
    3. [optional] Submit mid-term feedback for the module Sat, Feb 20th 2359

    iP:

    1. Add Increments as parallel branches: Level-6, Level-7
    2. Add Increment: A-Jar

    tP:

    1. Conceptualize v1.0
    2. Draft the UG midnight before the tutorial
    3. Refine the product design

    Week 7 - Mon, Jul 26th

    Topics:

    • [W7.1] Java: Varargs : OPTIONAL

    • [W7.2] Java: streams : OPTIONAL

    • [W7.3] Java: JavaFX : OPTIONAL

    • [W7.4] Documentation Tools

    • [W7.5] Code Quality: Code Comments

    • [W7.6] Continuous Integration/Deployment

    • [W7.7] RCS: Merging PRs

    • [W7.8] RCS: Workflows

    • [W7.1] Java: Varargs : OPTIONAL
    • [W7.1a] C++ to Java → Miscellaneous Topics → Varargs : OPTIONAL
    • [W7.2] Java: streams : OPTIONAL
    • [W7.2a] C++ to Java → Miscellaneous Topics → Streams: Basic : OPTIONAL
    • [W7.3] Java: JavaFX : OPTIONAL
    • [W7.3a] C++ to Java → Miscellaneous Topics → JavaFX : OPTIONAL

    • [W7.4] Documentation Tools

       Javadoc

    • [W7.4a] Implementation → Documentation → Tools → JavaDoc → What

    • [W7.4b] Implementation → Documentation → Tools → JavaDoc → How

    • [W7.5] Code Quality: Code Comments
    • [W7.5a] Implementation → Code Quality → Comments → Introduction

    • [W7.5b] Implementation → Code Quality → Comments → Basic → Do not repeat the obvious

    • [W7.5c] Implementation → Code Quality → Comments → Basic → Write to the reader

    • [W7.5d] Implementation → Code Quality → Comments → Intermediate → Explain WHAT and WHY, not HOW

    • [W7.6] Continuous Integration/Deployment
    • [W7.6a] Implementation → Integration → Introduction → What

    • [W7.6b] Implementation → Integration → Build Automation → What

    • [W7.6c] Implementation → Integration → Build Automation → Continuous integration and continuous deployment

    • [W7.7] RCS: Merging PRs
    • [W7.7a] Tools → Git and GitHub → Merging PRs
    • [W7.8] RCS: Workflows
    • [W7.8a] Project Management → Revision Control → Forking flow

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

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

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

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

    Admin:

    1. Submit post-lecture quiz counted for participation

    iP:

    1. Add Increment: A-MoreOOP
    2. Add Increments as PRs: Level-8, Level-9, A-JavaDoc
    3. Set up a product website
    4. Submit the final version Fri, Mar 5th 2359

    tP:

    1. Set up the project repo during the tutorial
    2. Plan the next iteration

    Week 8 - Mon, Aug 9th

    Topics:

    • [W8.1] Developer Testing

    • [W8.2] Writing Developer Documents

    • [W8.3] Design: Models

    • [W8.4] Class/Object Diagrams: Basics

    • [W8.5] Project Mgt: Scheduling and Tracking

    • [W8.1] Developer Testing
    • [W8.1a] Quality Assurance → Testing → Developer Testing → What

    • [W8.1b] Quality Assurance → Testing → Developer Testing → Why

    • [W8.1c] Quality Assurance → Testing → Test Automation → Test automation using test drivers

    • [W8.1d] Quality Assurance → Testing → Test Automation → Test automation tools

    • [W8.1e] C++ to Java → JUnit → JUnit: Basic

    • [W8.2] Writing Developer Documents
    • [W8.2a] Implementation → Documentation → Introduction → What

    • [W8.3] Design: Models
    • [W8.3a] Design → Introduction → What

    • [W8.3b] Design → Modelling → Introduction → What

    • [W8.3c] Design → Modelling → Introduction → How

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

    • [W8.4b] Design → Modelling → Modelling Structure → Class diagrams - basic

    • [W8.4c] Design → Modelling → Modelling Structure → Object diagrams

    • [W8.4d] Tools → UML → Object versus class diagrams

    • [W8.4e] Tools → UML → Class Diagrams → Associations as attributes

    • [W8.4f] Tools → UML → Notes

    • [W8.5] Project Mgt: Scheduling and Tracking
    • [W8.5a] Project Management → Project Planning → Milestones

    • [W8.5b] Project Management → Project Planning → Buffers

    • [W8.5c] Project Management → Project Planning → Issue trackers

    • [W8.5d] Project Management → Project Planning → Work breakdown structure

    • [W8.5e] Project Management → Project Planning → Gantt charts : OPTIONAL

    • [W8.5f] Project Management → Project Planning → PERT charts : OPTIONAL

    • [W8.5g] Project Management → Teamwork → Team structures

    Admin:

    1. Submit post-lecture quiz before the lecture counted for participation

    iP:

    1. Evaluate two peer iPs before next week lecture counted for participation

    tP:

    1. Ensure you know tP expectations
    2. Start implementing v1.0
    3. Use GitHub to manage milestones
    4. Add some JUnit Tests

    Week 9 - Mon, Aug 16th

    Topics:

    • [W9.1] Class Diagrams: Intermediate-Level

    • [W9.4] Design Principles

    • [W9.5] Testing: Intermediate Techniques

    • [W9.1] Class Diagrams: Intermediate-Level
    • [W9.1a] Design → Modelling → Modelling Structure → Class diagrams - intermediate

    • [W9.2a] Implementation → Error Handling → Logging → What

    • [W9.2b] Implementation → Error Handling → Logging → How

    • [W9.3a] Implementation → Error Handling → Assertions → What

    • [W9.3b] Implementation → Error Handling → Assertions → How

    • [W9.3c] Implementation → Error Handling → Assertions → When

    • [W9.4] Design Principles

       Abstraction

    • [W9.4a] Design → Design Fundamentals → Abstraction → What

       Coupling

    • [W9.4b] Design → Design Fundamentals → Coupling → What

    • [W9.4c] Design → Design Fundamentals → Coupling → How

    • [W9.4d] Design → Design Fundamentals → Coupling → Types of coupling : OPTIONAL

       Cohesion

    • [W9.4e] Design → Design Fundamentals → Cohesion → What

    • [W9.4f] Design → Design Fundamentals → Cohesion → How

       Some Principles

    • [W9.4g] Principles → Single responsibility principle

    • [W9.4h] Principles → Separation of concerns principle

    • [W9.5] Testing: Intermediate Techniques
    • [W9.5a] Quality Assurance → Testing → Introduction → Testability

    • [W9.5b] C++ to Java → JUnit → JUnit: Intermediate

    • [W9.5c] Quality Assurance → Testing → Test-Driven Development → What : OPTIONAL

    Admin:

    1. Submit post-lecture quiz before the lecture counted for participation
    2. Submit midterm peer evaluations on TEAMMATES Fri, Mar 19th 2359 counted for participation

    tP: v1.0

    1. Make the code more defensive
    2. Deliver v1.0 midnight before the tutorial
    3. Do an informal demo of v1.0 before the tutorial

    Week 10 - Mon, Aug 23rd

    Topics:

    • [W10.1] Sequence Diagrams: Basics

    • [W10.2] Sequence Diagrams: Intermediate-Level

    • [W10.3] Design Patterns

    • [W10.4] Testing: Test Coverage

    • [W10.1] Sequence Diagrams: Basics
    • [W10.1a] Design → Modelling → Modelling Behaviors Sequence diagrams - basic
    • [W10.2] Sequence Diagrams: Intermediate-Level
    • [W10.2a] Design → Modelling → Modelling Behaviors Sequence diagrams - intermediate

    • [W10.2b] Tools → UML → Sequence Diagrams → Parallel paths

    • [W10.2c] Tools → UML → Sequence Diagrams → Reference frames : OPTIONAL

    • [W10.3] Design Patterns

       Introduction

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

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

       Singleton pattern

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

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

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

       Facade pattern

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

    • [W10.4] Testing: Test Coverage
    • [W10.4a] Quality Assurance → Testing → Test Coverage → What

    • [W10.4b] Quality Assurance → Testing → Test Coverage → How

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP:

    1. Start the next iteration
    2. Update the DG with design details IMPORTANT
    3. Smoke-test CATcher IMPORTANT counted for participation
    4. Ensure the code RepoSense-compatible

    Week 11 - Mon, Aug 30th

    Topics:

    • [W11.2] Types of Testing

    • [W11.3] Test Case Design

    • [W11.4] Equivalence Partitioning

       Introduction

    • [W11.1a] Design → Introduction → Multi-level design

    • [W11.1b] Design → Architecture → Introduction → What

    • [W11.1c] Design → Architecture → Architecture Diagrams → Reading

       Architectural Styles

    • [W11.1d] Design → Architecture → Styles → What

    • [W11.1e] Design → Architecture → Styles → n-Tier Style → What

    • [W11.1f] Design → Architecture → Styles → Client-Server Style → What

    • [W11.2] Types of Testing

       Unit Testing

    • [W11.2a] Quality Assurance → Testing → Unit Testing → What

    • [W11.2b] Quality Assurance → Testing → Unit Testing → Stubs

    • [W11.2c] Quality Assurance → Testing → Dependency Injection → What : OPTIONAL

    • [W11.2d] Quality Assurance → Testing → Dependency Injection → How : OPTIONAL

       Integration Testing

    • [W11.2e] Quality Assurance → Testing → Integration Testing → What

    • [W11.2f] Quality Assurance → Testing → Integration Testing → How

       System Testing

    • [W11.2g] Quality Assurance → Testing → System Testing → What

    • [W11.2h] Quality Assurance → Testing → Test Automation → Automated testing of GUIs

       Acceptance Testing

    • [W11.2i] Quality Assurance → Testing → Acceptance Testing → What

    • [W11.2j] Quality Assurance → Testing → Acceptance Testing → Acceptance versus system testing

       Alpha/Beta Testing

    • [W11.2k] Quality Assurance → Testing → Alpha/Beta Testing → What
    • [W11.3] Test Case Design
    • [W11.3a] Quality Assurance → Test Case Design → Introduction → What

    • [W11.3b] Quality Assurance → Testing → Exploratory and Scripted Testing → What

    • [W11.3c] Quality Assurance → Testing → Exploratory and Scripted Testing → When

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

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

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

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

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

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

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP: v2.0

    1. Update user docs
    2. Add sequence diagrams to the developer guide recommended: before Wednesday
    3. Deliver v2.0 midnight before the tutorial
    4. Review others' DG during the tutorial counted for participation

    Week 12 - Mon, Sep 6th

    Topics:

    • [W12.1] Boundary Value Analysis

    • [W12.2] Combining Multiple Test Inputs

    • [W12.3] Other QA Techniques

    • [W12.4] SDLC Process Models: XP/Scrum

    • [W12.1] Boundary Value Analysis
    • [W12.1a] Quality Assurance → Test Case Design → Boundary Value Analysis → What

    • [W12.1b] Quality Assurance → Test Case Design → Boundary Value Analysis → How

    • [W12.2] Combining Multiple Test Inputs
    • [W12.2a] Quality Assurance → Test Case Design → Combining Test Inputs → Why

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

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

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

    • [W12.3] Other QA Techniques
    • [W12.3a] Quality Assurance → Quality Assurance → Introduction → What

    • [W12.3b] Quality Assurance → Quality Assurance → Introduction → Validation versus verification

    • [W12.3c] Quality Assurance → Quality Assurance → Code Reviews → What

    • [W12.3d] Quality Assurance → Quality Assurance → Static Analysis → What

    • [W12.3e] Quality Assurance → Quality Assurance → Formal Verification → What

    • [W12.4] SDLC Process Models: XP/Scrum
    • [W12.4a] Project Management → SDLC Process Models → Introduction → Agile models

    • [W12.4b] Project Management → SDLC Process Models → Scrum

    • [W12.4c] Project Management → SDLC Process Models → XP

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP:

    1. Attend the practical exam dry run During the lecture on Fri, Apr 2nd
    2. Tweak the product as per peer-testing results
    3. Draft the PPP
    4. Double-check RepoSense compatibility

    Week 13 - Mon, Sep 13th

    Topics:

    • No topics allocated to this week.

    Admin:

    1. Submit final peer evaluation on TEAMMATES Thu, Apr 15th 2359 counted for participation

    tP: v2.1

    1. Submit deliverables Mon, Apr 12th 2359
    2. Submit the demo video Wed, Apr 14th 2359
    3. Prepare for the practical exam
    4. Attend the practical exam during the lecture on Fri, Apr 16th