This site is from a past semester! The current version will be here when the new semester starts.
CS2103/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [Jan 13]
  • Week 2 [Jan 20]
  • Week 3 [Jan 27]
  • Week 4 [Feb 3]
  • Week 5 [Feb 10]
  • Week 6 [Feb 17]
  • Week 7 [Mar 2]
  • Week 8 [Mar 9]
  • Week 9 [Mar 16]
  • Week 10 [Mar 23]
  • Week 11 [Mar 30]
  • Week 12 [Apr 6]
  • Week 13 [Apr 13]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Java Coding Standard
  • Participation Marks List

  •  Individual Project (iP):
  • Individual Project Info
  • Duke Upstream Repo
  • iP Code Dashboard
  • iP Showcase

  •  Team Project (tP):
  • Team Project Info
  • Team IDs
  • Addressbook-level3
  • Addressbook-level 1,2,4
  • tP Code Dashboard
  • tP Showcase
  • Summary of the Module Timeline

    • Please try to follow instructions closely. If you deviate, our grading scripts will not be able to detect your work.
    • 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 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).
    • You may have to go through the weekly topics before attempting weekly project tasks as the knowledge from those topics may be needed to complete the iP tasks.

    Week 1 - Jan 13

    • [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 by week 2 Monday 2359
    2. Set up the tools before the lecture
    3. Submit the pre-module survey by Friday 2359
    4. Learn about the module
    5. Attend the first lecture

    Week 2 - Jan 20

    • [W2.2] IDEs: Basic Features

    • [W2.3] Automated Testing of Text UIs

    • [W2.4] RCS: Revision History

    • [W2.5] RCS: Remote Repos

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

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

    • [W2.2b] Tools → Intellij IDEA → Project Setup

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

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

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

    • [W2.3d] Quality Assurance → Testing → Test Automation → Automated Testing of CLI Apps

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

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

    • [W2.4c] Tools → Git and GitHub → Init

    • [W2.4d] Project Management → Revision Control → Saving History

    • [W2.4e] Tools → Git and GitHub → Commit

    • [W2.4f] Tools → Git and GitHub → Ignore

    • [W2.4g] Project Management → Revision Control → Using History

    • [W2.4h] Tools → Git and GitHub → Tag

    • [W2.4i] Tools → Git and GitHub → Checkout

    • [W2.4j] Tools → Git and GitHub → Stash : OPTIONAL

    • [W2.5] RCS: Remote Repos
    • [W2.5a] Project Management → Revision Control → Remote Repositories

    • [W2.5b] Tools → Git and GitHub → Clone

    • [W2.5c] Tools → Git and GitHub → Pull

    • [W2.5d] Tools → Git and GitHub → Push

    Admin:

    1. Submit post-lecture quiz Thursday 2359
    2. Subscribe to the module forum

    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 by Thursday 2359

    Week 3 - Jan 27

    • [W3.3] Developer Testing

    • [W3.4] Unit Testing

    • [W3.5] RCS: Branching

    • [W3.6] RCS: Creating Pull Requests

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

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

    • [W3.1c] C++ to Java → Miscellaneous Topics → File Access :

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

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

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

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

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

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

    • [W3.4] Unit Testing
    • [W3.4a] Quality Assurance → Testing → Test Automation → Test Automation Using Test Drivers

    • [W3.4b] Quality Assurance → Testing → Test Automation → Test Automation Tools

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

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

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

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

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

    • [W3.5b] Tools → Git and GitHub → Branch

    • [W3.5c] Tools → Git and GitHub → Merge Conflicts

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

    Admin:

    1. Submit post-lecture quiz
    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 - Feb 3

    • [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] RCS: Managing Pull Requests

    • [W4.7] Code reviews

    • [W4.8] Static Analysis

    • [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 (Basics)

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

    • [W4.2d] Tools → UML → Object vs 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] RCS: Managing Pull Requests
    • [W4.6a] Tools → Git and GitHub → Manage PRs

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

    Admin:

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

    iP:

    1. Review some peer PRs
    2. Add Increments as parallel branches: A-Gradle, A-CheckStyle, Level-10, A-Varargs

    tP:

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

    Week 5 - Feb 10

    • [W5.1] Requirements: Intro

    • [W5.2] Requirements: Gathering

    • [W5.3] Requirements: Specifying

    • [W5.8] Continuous Integration/Deployment

    • [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

       Naming

    • [W5.4m] Implementation → Code Quality → Naming → Introduction

    • [W5.4n] Implementation → Code Quality → Naming → Basic → Use Nouns for Things and Verbs for Actions

    • [W5.4o] Implementation → Code Quality → Naming → Basic → Use Standard Words

    • [W5.4p] Implementation → Code Quality → Naming → Intermediate → Use Name to Explain

    • [W5.4q] Implementation → Code Quality → Naming → Intermediate → Not Too Long, Not Too Short

    • [W5.4r] Implementation → Code Quality → Naming → Intermediate → Avoid Misleading Names

       Unsafe Practices

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

    • [W5.4t] Implementation → Code Quality → Error-Prone Practices → Basic → Use the Default Branch

    • [W5.4u] Implementation → Code Quality → Error-Prone Practices → Basic → Don't Recycle Variables or Parameters

    • [W5.4v] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid Empty Catch Blocks

    • [W5.4w] Implementation → Code Quality → Error-Prone Practices → Basic → Delete Dead Code

    • [W5.4x] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize Scope of Variables

    • [W5.4y] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize Code Duplication

       Code Comments

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

    • [W5.4A] Implementation → Code Quality → Comments → Basic → Do Not Repeat the Obvious

    • [W5.4B] Implementation → Code Quality → Comments → Basic → Write to the Reader

    • [W5.4C] 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] Continuous Integration/Deployment
    • [W5.8a] Implementation → Integration → Introduction → What

    • [W5.8b] Implementation → Integration → Build Automation → What

    • [W5.8c] Implementation → Integration → Build Automation → Continuous Integration and Continuous Deployment

    Admin:

    iP:

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

    tP:

    1. Brainstorm user stories before the tutorial
    2. Prioritize the user stories before/during the tutorial

    Week 6 - Feb 17

    • [W6.1] Modeling: Sequence Diagrams

    • [W6.2] Architecture Diagrams

    • [W6.3] IDEs: Basic Features

    • [W6.4] Logging

    • [W6.5] Documentation Tools

    • [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: Basic 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

    • [W6.5] Documentation Tools

       Markdown

    • [W6.5a] Implementation → Documentation → Tools → Markdown → What : OPTIONAL

    • [W6.5b] Implementation → Documentation → Tools → Markdown → How : OPTIONAL

       AsciiDoc

    • [W6.5c] Implementation → Documentation → Tools → AsciiDoc → What

    Admin:

    1. Submit post-lecture quiz
    2. [optional] Submit mid-term feedback for the module by Sunday

    iP:

    1. Finalize the features
    2. Set up a product website
    3. Release the product

    tP:

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

    Week 7 - Mar 2

    • [W7.1] Requirements: Use Cases

    • [W7.2] Design Principles: Basics

    • [W7.3] Basic Design Approaches

    • [W7.4] IDEs: Intermediate 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 Principles: Basics
    • [W7.2a] Design → Introduction → What

       Abstraction

    • [W7.2b] Design → Design Fundamentals → Abstraction → What

       Coupling

    • [W7.2c] Design → Design Fundamentals → Coupling → What

    • [W7.2d] Design → Design Fundamentals → Coupling → How

    • [W7.2e] Design → Design Fundamentals → Coupling → Types of Coupling : OPTIONAL

       Cohesion

    • [W7.2f] Design → Design Fundamentals → Cohesion → What

    • [W7.2g] Design → Design Fundamentals → Cohesion → How

    • [W7.3] Basic Design Approaches
    • [W7.3a] Design → Design Approaches → Top-Down and Bottom-Up Design

    • [W7.3b] Design Approaches → Agile Design → Agile Design

    • [W7.4] IDEs: Intermediate Features : OPTIONAL
    • [W7.4a] Tools → Intellij IDEA → Productivity Shortcuts : OPTIONAL
    • [W7.5] Integration Approaches
    • [W7.5a] Implementation → Integration → Approaches → Late-and-One-Time vs Early-and-Frequent

    • [W7.5b] Implementation → Integration → Approaches → Big-Bang vs Incremental Integration

    • [W7.5c] Implementation → Integration → Approaches → Top-Down vs 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 : OPTIONAL

    • [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

    iP:

    1. Do any final clean-ups
    2. Submit the final version by Monday 2359

    tP: v1.1

    1. Update project website: AboutUs, ContactUs, README
    2. Update the UG
    3. Update the DG: user stories, glossary, NFRs, use cases
    4. Wrap up v1.1
    5. Draft a rough project plan
    6. start implementing a minimal version of your enhancement

    Week 8 - Mar 9

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

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

    • [W8.3] Testing: Types

    • [W8.4] Testing: Intermediate Concepts

    • [W8.1] [Revisiting] Drawing Class/Object Diagrams
    • [W8.1a] Design → Modelling → Modelling Structure → Class Diagrams (Basics)

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

    • [W8.1c] Tools → UML → Object vs Class Diagrams

    • [W8.1d] Tools → UML → Notes

    • [W8.1e] Tools → UML → Constraints : OPTIONAL

    • [W8.1f] Tools → UML → Class Diagrams → Associations as Attributes

    • [W8.1g] Design → Modelling → Modelling Structure → Class Diagrams - Intermediate

    • [W8.1h] Paradigms → OOP → Associations → Association Classes

    • [W8.2] [Revisiting] Drawing Sequence Diagrams
    • [W8.2a] Design → Modelling → Modelling Behaviors Sequence Diagrams - Basic

    • [W8.2b] Design → Modelling → Modelling Behaviors Sequence Diagrams - Intermediate

    • [W8.2c] Tools → UML → Sequence Diagrams → Reference Frames

    • [W8.2d] Tools → UML → Sequence Diagrams → Parallel Paths

    • [W8.3] Testing: Types

       Integration Testing

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

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

       System Testing

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

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

       Acceptance Testing

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

    • [W8.3f] Quality Assurance → Testing → Acceptance Testing → Acceptance vs System Testing

       Alpha/Beta Testing

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

       Exploratory vs Scripted Testing

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

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

    • [W8.4] Testing: Intermediate Concepts

       Dependency Injection

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

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

       Testability

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

       Test Coverage

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

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

       TDD

    • [W8.4f] Quality Assurance → Testing → Test-Driven Development → What : OPTIONAL

    Admin:

    1. Submit post-lecture quiz
    2. Submit Midterm Peer Evaluations on TEAMMATES by Sunday

    iP:

    1. Evaluate two peer iPs by Saturday 2359

    tP:

    1. Ensure you know tP expectations
    2. Adjust process rigor if necessary
    3. Start proper milestone management
    4. Add another increment to your feature

    Week 9 - Mar 16

    • [W9.1] OO Domain Models

    • [W9.2] Activity Diagrams

    • [W9.3] Design principles

    • [W9.4] Conceptualizing a Design

    • [W9.5] SDLC Process Models

    • [W9.6] 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] Design principles
    • [W9.3a] Principles → Single Responsibility Principle :

    • [W9.3b] Principles → Open-Closed Principle :

    • [W9.3c] Principles → Separation of Concerns Principle

    • [W9.3d] Principles → Liskov Substitution Principle :

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

    • [W9.3f] Principles → Interface Segregation Principle : OPTIONAL

    • [W9.3g] Principles → Dependency Inversion Principle : OPTIONAL

    • [W9.3h] Principles → SOLID Principles

    • [W9.3i] Principles → YAGNI Principle : OPTIONAL

    • [W9.3j] Principles → DRY Principle : OPTIONAL

    • [W9.3k] Principles → Brooks' Law : OPTIONAL

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

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

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

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

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

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

    • [W9.5d] Project Management → SDLC Process Models → Introduction → Agile Models

    • [W9.5e] Project Management → SDLC Process Models → Scrum

    • [W9.5f] Project Management → SDLC Process Models → XP

    • [W9.5g] Project Management → SDLC Process Models → Unified Process : OPTIONAL

    • [W9.5h] Project Management → SDLC Process Models → CMMI : OPTIONAL

    • [W9.5i] Project Management → SDLC Process Models → Recap

    • [W9.6] Writing Developer Documents

       Type of Developer Docs

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

       Guideline: Aim for Comprehensibility

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

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

       Guideline: Describe Top-Down

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

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

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

       Guideline: Minimal but Sufficient

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

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

    Admin:

    1. Submit post-lecture quiz

    tP: v1.2

    1. Deliver an intermediate version of the new features
    2. Wrap up milestone
    3. Do an informal demo

    Week 10 - Mar 23

    • [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 vs Negative Test Cases

    • [W10.3c] Quality Assurance → Test Case Design → Introduction → Black Box vs 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

    tP:

    1. Start on the full version of the new features
    2. Update DG with design details IMPORTANT
    3. Do a release
    4. Make the code RepoSense-compatible

    Week 11 - Mar 30

    • [W11.1] More Design Patterns

    • [W11.2] Architectural Styles

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

    • [W11.4] Other QA Techniques

    • [W11.5] Reuse

    • [W11.6] Cloud Computing : OPTIONAL

    • [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 vs 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 → More Styles : OPTIONAL

    • [W11.2h] Design → Architecture → Styles → Using Styles

    • [W11.2i] Design → Architecture → Architecture Diagrams → Drawing

    • [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 vs 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 vs 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 Structure → Deployment Diagrams : OPTIONAL

    • [W11.7b] Design → Modelling → Modelling Structure → Component Diagrams : OPTIONAL

    • [W11.7c] Design → Modelling → Modelling Structure → Package Diagrams : OPTIONAL

    • [W11.7d] Design → Modelling → Modelling Structure → Composite Structure Diagrams : OPTIONAL

    • [W11.7e] Design → Modelling → Modelling Behaviors Timing Diagrams : OPTIONAL

    • [W11.7f] Design → Modelling → Modelling Behaviors Interaction Overview Diagrams : OPTIONAL

    • [W11.7g] Design → Modelling → Modelling Behaviors Communication Diagrams : OPTIONAL

    • [W11.7h] Design → Modelling → Modelling Behaviors State Machine Diagrams : OPTIONAL

    Admin:

    1. Submit post-lecture quiz

    tP: v1.3

    1. Deliver the feature
    2. Update user docs
    3. Release as a jar file
    4. Wrap up v1.3
    5. Attend the practical exam dry run During the lecture

    Week 12 - Apr 6

    Admin:

    tP:

    1. Tweak the product as per peer-testing results
    2. Draft the PPP
    3. Prepare for the demo rehearsal
    4. Double-check RepoSense compatibility

    Week 13 - Apr 13

    Admin:

    1. Submit Final Peer Evaluation on TEAMMATES by Reading week Tuesday 2359

    tP: v1.4

    1. Do final tweaks to the feature
    2. Submit deliverables by Monday 2359
    3. Wrap up the milestone by Wednesday 2359
    4. Demo the product during the tutorial
    5. Prepare for the practical exam before the lecture
    6. Attend the practical exam during the lecture