This site is from a past semester! The current version will be here when the new semester starts.
CS2113/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [from Mon Jan 13]
  • Week 2 [from Wed Jan 15 noon]
  • Week 3 [from Wed Jan 22 noon]
  • Week 4 [from Wed Jan 29 noon]
  • Week 5 [from Wed Feb 5 noon]
  • Week 6 [from Wed Feb 12 noon]
  • Week 7 [from Wed Feb 19 noon]
  • Week 8 [from Wed Mar 4 noon]
  • Week 9 [from Wed Mar 11 noon]
  • Week 10 [from Wed Mar 18 noon]
  • Week 11 [from Wed Mar 25 noon]
  • Week 12 [from Wed Apr 1 noon]
  • Week 13 [from Wed Apr 8 noon]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • repl.it link
  • Java Coding Standard
  • Forum Activities Dashboard
  • Participation Dashboard

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

  •  Team Project (tP):
  • Team Project Info
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • 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 (and do the weekly programming exercises) before attempting weekly project tasks as the knowledge from those topics may be needed to complete the iP tasks.

    Week 1 - from Mon Jan 13

    Admin:

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

    Week 2 - from Wed Jan 15 noon

    • [W2.2] Java: Intro

    • [W2.3] Java: HelloWorld

    • [W2.4] Java: Data Types

    • [W2.5] Java: Control Flow

    • [W2.6] RCS: Init, Commit

    • [W2.7] RCS: Fork, Clone

    • [W2.8] IDEs: Basic Features

    • [W2.9] Code Quality: Coding Standards

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

    • [W2.2] Java: Intro
    • [W2.2a] C++ to Java → About this chapter

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • [W2.8b] Tools → Intellij IDEA → Project setup

    • [W2.8c] Tools → Intellij IDEA → Code navigation

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

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

    Admin:

    1. Submit coding exercises on repl.it Tuesday midnight
    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 Increment: Level-0

    Week 3 - from Wed Jan 22 noon

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

    • [W3.7c] Tools → Git and GitHub → Tag

    • [W3.7d] Tools → Git and GitHub → Stash

    • [W3.8] RCS: Pull, Push
    • [W3.8a] Tools → Git and GitHub → Pull

    • [W3.8b] Tools → Git and GitHub → Push

    Admin:

    1. Submit coding exercises on repl.it midnight before tutorial
    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 - from Wed Jan 29 noon

    • [W4.1] OOP + Java: Inheritance

    • [W4.2] OOP + Java: Polymorphism

    • [W4.3] Java: Constants

    • [W4.4] OOP + Java: Enumerations

    • [W4.5] Code Quality: Readability

    • [W4.6] Code Quality: Refactoring

    • [W4.7] Automated Testing of Text UIs

    • [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] Code Quality: Readability
    • [W4.5a] Implementation → Code Quality → Readability → Introduction

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

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

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

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

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

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

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

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

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

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

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

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

    • [W4.6b] Tools → Intellij IDEA → Refactoring : OPTIONAL

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

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

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

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

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

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

    Admin:

    1. Accept GitHub invitation from the module organization
    2. Submit coding exercises on repl.it

    iP:

    1. Create a PR to the upstream repo by Friday before the tutorial
    2. Add Increments: Level-4, A-TextUiTesting, A-CodeQuality
    3. Get ready to review PRs before the tutorial

    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 - from Wed Feb 5 noon

    • [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, Pull Requests

    • [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, Pull Requests
    • [W5.8a] Project Management → Revision Control → Branching

    • [W5.8b] Tools → Git and GitHub → Branch

    • [W5.8c] Tools → Git and GitHub → Create PRs

    Admin:

    1. Submit coding exercises on repl.it
    2. Practice peer evaluation on TEAMMATES by Sunday (Feb 16th)

    iP:

    1. Add Increment as a branch: Level-5
    2. Add Increment: A-Packages

    tP:

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

    Week 6 - from Wed Feb 12 noon

    • [W6.1] Java: Generics

    • [W6.2] Java: Collections

    • [W6.3] Java: File Access

    • [W6.4] Java: JAR Files

    • [W6.5] Java: Varargs : OPTIONAL

    • [W6.6] Java: streams : OPTIONAL

    • [W6.7] Requirements: Intro

    • [W6.8] Requirements: Gathering

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

    • [W6.10] IDEs: Intermediate Features

    • [W6.11] RCS: Doing more with Branches and PRs

    • [W6.12] 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] Java: Varargs : OPTIONAL
    • [W6.5a] C++ to Java → Miscellaneous Topics → Varargs : OPTIONAL
    • [W6.6] Java: streams : OPTIONAL
    • [W6.6a] C++ to Java → Miscellaneous Topics → Streams: Basic : OPTIONAL

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

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

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

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

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

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

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

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

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

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

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

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

       Prose

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

       User Stories [Repeated from last week]

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

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

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

       Feature Lists [Repeated from last week]

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

       Use Cases

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

       Glossary

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

       Supplementary Requirements

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

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

    • [W6.10b] Tools → Intellij IDEA → Debugging: Basic : OPTIONAL

    • [W6.10c] Tools → Intellij IDEA → Productivity shortcuts : OPTIONAL

    • [W6.11] RCS: Doing more with Branches and PRs
    • [W6.11a] Tools → Git and GitHub → Merge conflicts

    • [W6.11b] Tools → Git and GitHub → Manage PRs

    • [W6.12] Code Quality: Unsafe Practices
    • [W6.12a] Implementation → Code Quality → Error-Prone Practices → Introduction

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

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

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

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

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

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

    Admin:

    1. Submit coding exercises on repl.it
    2. Submit post-lecture quiz before the lecture
    3. [optional] Submit mid-term feedback to tutors by Sunday (Feb 23rd)

    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 - from Wed Feb 19 noon

    • [W7.1] Java: JavaFX : OPTIONAL

    • [W7.2] Documentation Tools

    • [W7.3] Code Quality: Code Comments

    • [W7.4] SDLC Process Models: Basics

    • [W7.5] Continuous Integration/Deployment

    • [W7.6] RCS: Workflows

    • [W7.1] Java: JavaFX : OPTIONAL
    • [W7.1a] C++ to Java → Miscellaneous Topics → JavaFX : OPTIONAL

    • [W7.2] Documentation Tools

       Javadoc

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

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

       Markdown

    • [W7.2c] Implementation → Documentation → Tools → Markdown → What

    • [W7.2d] Implementation → Documentation → Tools → Markdown → How

       AsciiDoc

    • [W7.2e] Implementation → Documentation → Tools → AsciiDoc → What : OPTIONAL

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

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

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

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

    • [W7.4] SDLC Process Models: Basics
    • [W7.4a] Project Management → SDLC Process Models → Introduction → What

    • [W7.4b] Project Management → SDLC Process Models → Introduction → Sequential models

    • [W7.4c] Project Management → SDLC Process Models → Introduction → Iterative models

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

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

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

    • [W7.6] RCS: Workflows
    • [W7.6a] Project Management → Revision Control → Forking flow

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

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

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

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

    Admin:

    1. Submit post-lecture quiz

    iP:

    1. Add Increment: A-MoreOOP
    2. Add Increments as PRs: Level-8, Level-9, A-JavaDoc
    3. Add a brief user guide
    4. Release the product by Monday (March 2) 1200

    tP:

    1. Set up the project repo during the tutorial
    2. Plan v1.0

    Week 8 - from Wed Mar 4 noon

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

    iP:

    1. Evaluate two peer iPs before next week lecture

    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 - from Wed Mar 11 noon

    • [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 other 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 tutorial
    2. Submit Midterm Peer Evaluations on TEAMMATES by Sunday 15th March

    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 during the tutorial

    Week 10 - from Wed Mar 18 noon

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

    tP:

    1. Start implementing v2.0
    2. Update DG with design details IMPORTANT
    3. Make the code RepoSense-compatible

    Week 11 - from Wed Mar 25 noon

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

    tP: v2.0

    1. Update user docs
    2. Add sequence diagrams to the developer guide
    3. Deliver v2.0 midnight before the tutorial
    4. Attend the practical exam dry run During the lecture

    Week 12 - from Wed Apr 1 noon

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

    tP:

    1. Tweak the product as per peer-testing results
    2. Draft the PPP
    3. Double-check RepoSense compatibility

    Week 13 - from Wed Apr 8 noon

    Admin:

    1. Submit Final Peer Evaluation on TEAMMATES by Tuesday 14th 2359

    tP: v2.1

    1. Submit deliverables by Saturday 11th Apr 23.59
    2. Submit demo video by Monday 13th Apr 23.59
    3. Prepare for the practical exam before the lecture
    4. Attend the practical exam during the lecture