This site is from a past semester! The current version will be here when the new semester starts.
TIC4001 2020
  • Full Timeline
  • Week 1 [Mon, Aug 10th]
  • Week 2 [Fri, Aug 14th]
  • Week 3 [Fri, Aug 21st]
  • Week 4 [Fri, Aug 28th]
  • Week 5 [Fri, Sep 4th]
  • Week 6 [Fri, Sep 11th]
  • Week 7 [Fri, Sep 18th]
  • Week 8 [Fri, Oct 2nd]
  • Week 9 [Fri, Oct 9th]
  • Week 10 [Fri, Oct 16th]
  • Week 11 [Fri, Oct 23rd]
  • Week 12 [Fri, Oct 30th]
  • Week 13 [Fri, Nov 6th]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Gitter (Chat)
  • Instructors
  • Announcements
  • Files
  • Java Coding Standard
  • Git Conventions
  • Participation Dashboard

  •  Individual Project (iP):
  • Individual Project Info
  • iP List
  • iP 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

    TIC4001 week vs normal academic week

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

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

    Deadline for weekly tasks

    The deadline to complete tasks allocated to the week is the midnight before the following lecture.


    Week 1 - Mon, Aug 10th

    Topics:

    • No topic allocated to this week.

    Admin:

    1. Set up the tools before the lecture
    2. Submit the pre-module survey Thu, Aug 13th 2359 counted for participation
    3. Learn about the module
    4. Attend the first lecture

    Week 2 - Fri, Aug 14th

    Topics:

    • [W2.1] Java: Intro

    • [W2.2] Java: HelloWorld

    • [W2.3] Java: Data Types

    • [W2.4] Java: Control Flow

    • [W2.5] OOP: Classes and Objects

    • [W2.6] Java: Objects

    • [W2.7] Java: Classes

    • [W2.8] RCS: Init, Commit

    • [W2.9] RCS: Remote Repos

    • [W2.10] RCS: Using History

    • [W2.11] IDEs: Basic Features

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • [W2.5] OOP: Classes and Objects
    • [W2.5a] Paradigms → OOP → Introduction → What :

    • [W2.5b] Paradigms → OOP → Objects → What :

    • [W2.5c] Paradigms → OOP → Objects → Objects as abstractions :

    • [W2.5d] Paradigms → OOP → Objects → Encapsulation of objects :

    • [W2.5e] Paradigms → OOP → Classes → What :

    • [W2.6] Java: Objects
    • [W2.6a] C++ to Java → Objects → Using Java objects :

    • [W2.6b] C++ to Java → Objects → Instance members :

    • [W2.6c] C++ to Java → Objects → Passing objects around :

    • [W2.6d] C++ to Java → Objects → Garbage collection :

    • [W2.7] Java: Classes
    • [W2.7a] C++ to Java → Classes → Defining classes :

    • [W2.7b] C++ to Java → Classes → Getters and setters :

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

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

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

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

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

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

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

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

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

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

    • [W2.10] RCS: Using History
    • [W2.10a] Project Management → Revision Control → Using history :

    • [W2.10b] Tools → Git and GitHub → tag: Naming commits :

    • [W2.10c] Tools → Git and GitHub → diff: Comparing revisions :

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

    • [W2.10e] Tools → Git and GitHub → stash: Shelving changes temporarily

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

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

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

    Admin:

    1. Submit post-lecture quiz before the next lecture counted for participation
    2. Get connected to our communication channels

    iP:

    1. Learn about the project
    2. Set up prerequisites
    3. Set up the project in your computer
    4. Add Increments (+ commit, tag, push): Level-0, Level-1, Level-2, Level-3 before next lecture

    Week 3 - Fri, Aug 21st

    Topics:

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

    • [W3.2] Java: Useful Classes

    • [W3.3] OOP + Java: Inheritance

    • [W3.4] OOP + Java: Polymorphism

    • [W3.5] Java: Constants

    • [W3.6] OOP + Java: Enumerations

    • [W3.7] Code Quality: Coding Standards

    • [W3.8] RCS: Pull, Push

    • [W3.9] Automated Testing of Text UIs

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

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

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

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

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

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

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

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

    • [W3.3] OOP + Java: Inheritance
    • [W3.3a] Paradigms → OOP → Inheritance → What :

    • [W3.3b] Paradigms → OOP → Inheritance → Overloading :

    • [W3.3c] Paradigms → OOP → Inheritance → Overriding :

    • [W3.3d] C++ to Java → Inheritance → Inheritance (Basics) :

    • [W3.3e] C++ to Java → Inheritance → The Object class :

    • [W3.4] OOP + Java: Polymorphism
    • [W3.4a] Paradigms → OOP → Polymorphism → What :

    • [W3.4b] Paradigms → OOP → Inheritance → Substitutability :

    • [W3.4c] Paradigms → OOP → Inheritance → Dynamic and static binding

    • [W3.4d] Paradigms → OOP → Polymorphism → How

    • [W3.4e] C++ to Java → Inheritance → Polymorphism :

    • [W3.5] Java: Constants
    • [W3.5a] C++ to Java → Miscellaneous Topics → Constants :
    • [W3.6] OOP + Java: Enumerations
    • [W3.6a] Paradigms → OOP → Classes → Enumerations :

    • [W3.6b] C++ to Java → Miscellaneous Topics → Enumerations :

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

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

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

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

    • [W3.9] Automated Testing of Text UIs
    • [W3.9a] Quality Assurance → Testing → Introduction → What :

    • [W3.9b] Quality Assurance → Testing → Regression Testing → What :

    • [W3.9c] Quality Assurance → Testing → Test Automation → What :

    • [W3.9d] Quality Assurance → Testing → Test Automation → Automated testing of CLI applications :

    Admin:

    1. Submit post-lecture quiz before the next lecture counted for participation
    2. Form teams during the tutorial

    iP:

    1. Do any leftover iP tasks from the previous week
    2. Create a PR to the upstream repo by the end of the lecture
    3. Add Increments: Level-4, A-TextUiTesting, A-CodingStandard

    tP:

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

    Week 4 - Fri, Aug 28th

    Topics:

    • [W4.1] Java: Casting

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

    • [W4.3] OOP + Java: Interfaces

    • [W4.4] Java: Packages

    • [W4.5] Java: Access Modifiers

    • [W4.6] Error Handling: Exceptions

    • [W4.7] Code Quality: Naming

    • [W4.8] Code Quality: Readability

    • [W4.9] Refactoring

    • [W4.10] RCS: Reviewing pull requests

    • [W4.11] RCS: Branching

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

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

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

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

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

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

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

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

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

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

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

    • [W4.7] Code Quality: Naming
    • [W4.7a] Implementation → Code Quality → Naming → Introduction :

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

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

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

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

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

    • [W4.8] Code Quality: Readability

       Readability

    • [W4.8a] Implementation → Code Quality → Readability → Basic → Avoid long methods :

    • [W4.8b] Implementation → Code Quality → Readability → Basic → Avoid deep nesting :

    • [W4.8c] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions :

    • [W4.8d] Implementation → Code Quality → Readability → Basic → Avoid magic numbers :

    • [W4.8e] Implementation → Code Quality → Readability → Basic → Make the code obvious :

    • [W4.8f] Implementation → Code Quality → Readability → Intermediate → Structure code logically :

    • [W4.8g] Implementation → Code Quality → Readability → Intermediate → Do not 'Trip Up' reader :

    • [W4.8h] Implementation → Code Quality → Readability → Intermediate → Practice KISSing :

    • [W4.8i] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations :

    • [W4.8j] Implementation → Code Quality → Readability → Intermediate → SLAP hard :

    • [W4.8k] Implementation → Code Quality → Readability → Advanced → Make the happy path prominent :

    • [W4.9] Refactoring
    • [W4.9a] Implementation → Refactoring → What :

    • [W4.9b] Tools → IntelliJ IDEA → Refactoring

    • [W4.9c] Implementation → Refactoring → How :

    • [W4.9d] Implementation → Refactoring → When :

    • [W4.10] RCS: Reviewing pull requests
    • [W4.10a] Tools → Git and GitHub → Reviewing PRs
    • [W4.11a] Project Management → Revision Control → Branching :

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

    • [W4.11c] Tools → Git and GitHub → Dealing with merge conflicts

    Admin:

    1. Submit post-lecture quiz counted for participation

    iP:

    1. Add Increments as branches: Level-5, A-CodeQuality, A-AbstractClasses, A-Packages
    2. Review some peer PRs counted for participation

    tP:

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

    Week 5 - Fri, Sep 4th

    Topics:

    • [W5.1] Java: Generics

    • [W5.2] Java: Collections

    • [W5.3] Java: File Access

    • [W5.4] Java: JAR Files

    • [W5.5] Java: Varargs

    • [W5.6] Java: streams

    • [W5.7] Documentation Tools

    • [W5.8] Code Quality: Code Comments

    • [W5.9] Requirements: Intro

    • [W5.10] Requirements: Gathering

    • [W5.11] Requirements: Specifying

    • [W5.12] RCS: Merging PRs

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

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

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

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

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

    • [W5.3] Java: File Access
    • [W5.3a] C++ to Java → Miscellaneous Topics → File access :
    • [W5.4] Java: JAR Files
    • [W5.4a] C++ to Java → Miscellaneous Topics → Using JAR files :
    • [W5.5] Java: Varargs
    • [W5.5a] C++ to Java → Miscellaneous Topics → Varargs :
    • [W5.6] Java: streams
    • [W5.6a] C++ to Java → Miscellaneous Topics → Streams: Basic :

    • [W5.7] Documentation Tools

       Javadoc

    • [W5.7a] Implementation → Documentation → Tools → JavaDoc → What :

    • [W5.7b] Implementation → Documentation → Tools → JavaDoc → How :

    • [W5.8] Code Quality: Code Comments
    • [W5.8a] Implementation → Code Quality → Comments → Introduction :

    • [W5.8b] Implementation → Code Quality → Comments → Basic → Do not repeat the obvious :

    • [W5.8c] Implementation → Code Quality → Comments → Basic → Write to the reader :

    • [W5.8d] Implementation → Code Quality → Comments → Intermediate → Explain WHAT and WHY, not HOW :

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

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

    • [W5.9c] Requirements → Requirements → Prioritizing requirements

    • [W5.9d] Requirements → Requirements → Quality of requirements

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

    • [W5.10b] Requirements → Gathering Requirements → Product surveys :

    • [W5.10c] Requirements → Gathering Requirements → Observation :

    • [W5.10d] Requirements → Gathering Requirements → User surveys :

    • [W5.10e] Requirements → Gathering Requirements → Interviews :

    • [W5.10f] Requirements → Gathering Requirements → Focus groups :

    • [W5.10g] Requirements → Gathering Requirements → Prototyping :

    • [W5.11] Requirements: Specifying

       Prose

    • [W5.11a] Requirements → Specifying Requirements → Prose → What :

       User Stories

    • [W5.11b] Requirements → Specifying Requirements → User Stories → Introduction :

    • [W5.11c] Requirements → Specifying Requirements → User Stories → Details :

    • [W5.11d] Requirements → Specifying Requirements → User Stories → Usage :

       Feature Lists

    • [W5.11e] Requirements → Specifying Requirements → Feature Lists → What :

       Use Cases

    • [W5.11f] Requirements → Specifying Requirements → Use Cases → Introduction :

       Glossary

    • [W5.11g] Requirements → Specifying Requirements → Glossary → What :

       Supplementary Requirements

    • [W5.11h] Requirements → Specifying Requirements → Supplementary Requirements → What :

    • [W5.12] RCS: Merging PRs
    • [W5.12a] Tools → Git and GitHub → Merging PRs

    Admin:

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

    iP:

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

    tP:

    1. Brainstorm user stories before next lecture

    Week 6 - Fri, Sep 11th

    Topics:

    • [W6.1] IDEs: Intermediate Features

    • [W6.2] Code Quality: Unsafe Practices

    • [W6.3] Developer Testing

    • [W6.4] Unit Testing

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

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

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

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

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

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

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

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

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

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

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

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

    • [W6.4] Unit Testing
    • [W6.4a] Quality Assurance → Testing → Test Automation → Test automation using test drivers :

    • [W6.4b] Quality Assurance → Testing → Test Automation → Test automation tools :

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

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

    Admin:

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

    iP:

    1. Add Increment: A-MoreOOP
    2. Add Increments as PRs: Level-8, Level-9, A-JUnit

    tP:

    1. Choose user stories for v1.0 during the lecture
    2. Conceptualize v1.0
    3. Draft the UG before next lecture
    4. Refine the product design

    Week 7 - Fri, Sep 18th

    Topics:

    • [W7.1] SDLC Process Models: Basics

    • [W7.2] Continuous Integration/Deployment

    • [W7.3] Project Mgt: Workflows

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

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

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

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

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

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

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

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

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

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

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

    Admin:

    1. Submit post-lecture quiz counted for participation

    iP:

    1. Set up a product website
    2. Submit the final version Mon, Sep 28th 2359

    tP:

    1. Set up the project repo during the lecture
    2. Practice the workflow with a sample repo
    3. Plan the next iteration

    Week 8 - Fri, Oct 2nd

    Topics:

    • [W8.1] Design: Fundamentals

    • [W8.2] Design Principles: SoC, SRP

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

    • [W8.4] Other QA Techniques

    • [W8.5] Testing: Intermediate Concepts : OPTIONAL

    • [W8.1] Design: Fundamentals

       Abstraction

    • [W8.1a] Design → Design Fundamentals → Abstraction → What :

       Coupling

    • [W8.1b] Design → Design Fundamentals → Coupling → What :

    • [W8.1c] Design → Design Fundamentals → Coupling → How :

    • [W8.1d] Design → Design Fundamentals → Coupling → Types of coupling :

       Cohesion

    • [W8.1e] Design → Design Fundamentals → Cohesion → What :

    • [W8.1f] Design → Design Fundamentals → Cohesion → How :

    • [W8.2] Design Principles: SoC, SRP
    • [W8.2a] Principles → Separation of concerns principle :

    • [W8.2b] Principles → Single responsibility principle

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

    • [W8.3b] Project Management → Project Planning → Buffers :

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

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

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

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

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

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

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

    • [W8.4c] Quality Assurance → Quality Assurance → Code Reviews → What :

    • [W8.4d] Quality Assurance → Quality Assurance → Static Analysis → What :

    • [W8.4e] Quality Assurance → Quality Assurance → Formal Verification → What :

    • [W8.5] Testing: Intermediate Concepts : OPTIONAL
    • [W8.5a] Quality Assurance → Testing → Introduction → Testability :

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

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

    Admin:

    1. Submit post-lecture quiz 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 - Fri, Oct 9th

    Topics:

    • [W9.1] Design Patterns

    • [W9.4] Testing: Test Coverage

    • [W9.1] Design Patterns

       Introduction

    • [W9.1a] Design → Design Patterns → Introduction → What :

    • [W9.1b] Design → Design Patterns → Introduction → Format :

       Singleton pattern

    • [W9.1c] Design → Design Patterns → Singleton → What :

    • [W9.1d] Design → Design Patterns → Singleton → Implementation :

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

       Facade pattern

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

    • [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] Testing: Test Coverage
    • [W9.4a] Quality Assurance → Testing → Test Coverage → What

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

    Admin:

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

    tP: v1.0

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

    Week 10 - Fri, Oct 16th

    Topics:

    • [W10.1] Types of Testing

    • [W10.2] Test Cases: Intro

    • [W10.3] Equivalence Partitioning

    • [W10.4] Boundary Value Analysis

    • [W10.1] Types of Testing

       Unit Testing: continued

    • [W10.1a] Quality Assurance → Testing → Unit Testing → Stubs

    • [W10.1b] Quality Assurance → Testing → Dependency Injection → What : OPTIONAL

    • [W10.1c] Quality Assurance → Testing → Dependency Injection → How : OPTIONAL

       Integration Testing

    • [W10.1d] Quality Assurance → Testing → Integration Testing → What :

    • [W10.1e] Quality Assurance → Testing → Integration Testing → How

       System Testing

    • [W10.1f] Quality Assurance → Testing → System Testing → What :

    • [W10.1g] Quality Assurance → Testing → Test Automation → Automated testing of GUIs : OPTIONAL

       Acceptance Testing

    • [W10.1h] Quality Assurance → Testing → Acceptance Testing → What :

    • [W10.1i] Quality Assurance → Testing → Acceptance Testing → Acceptance versus system testing :

       Alpha/Beta Testing

    • [W10.1j] Quality Assurance → Testing → Alpha/Beta Testing → What :
    • [W10.2] Test Cases: Intro
    • [W10.2a] Quality Assurance → Test Case Design → Introduction → What

    • [W10.2b] Quality Assurance → Testing → Exploratory and Scripted Testing → What :

    • [W10.2c] Quality Assurance → Testing → Exploratory and Scripted Testing → When :

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

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

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

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

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

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

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

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP:

    1. Start the next iteration
    2. Update the DG: user stories, glossary, NFRs
    3. Ensure the code RepoSense-compatible

    Week 11 - Fri, Oct 23rd

    Topics:

    • [W11.1] Writing Developer Documents

    • [W11.2] Design: Models

    • [W11.3] Class/Object Diagrams: Basics

    • [W11.4] Class/Object Diagrams: Intermediate

    • [W11.1] Writing Developer Documents
    • [W11.1a] Implementation → Documentation → Introduction → What

    • [W11.2a] Design → Introduction → What :

    • [W11.2b] Design → Modelling → Introduction → What :

    • [W11.2c] Design → Modelling → Introduction → How :

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

    • [W11.3b] Design → Modelling → Modelling Structure → Class diagrams - basic :

    • [W11.3c] Design → Modelling → Modelling Structure → Object diagrams :

    • [W11.3d] Tools → UML → Object versus class diagrams :

    • [W11.3e] Tools → UML → Class Diagrams → Associations as attributes :

    • [W11.3f] Tools → UML → Notes :

    • [W11.4] Class/Object Diagrams: Intermediate
    • [W11.4a] Design → Modelling → Modelling Structure → Class diagrams - intermediate :

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP: v2.0

    1. Update the UG
    2. Deliver v2.0 midnight before next lecture

    Week 12 - Fri, Oct 30th

    Topics:

    • [W12.1] Sequence Diagrams: Basics

    • [W12.2] Sequence Diagrams: Intermediate

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

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

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

    Admin:

    1. Submit post-lecture quiz counted for participation

    tP:

    1. Update the DG with design details IMPORTANT
    2. Draft the PPP
    3. Double-check RepoSense compatibility

    Week 13 - Fri, Nov 6th

    Topics:

    • No topic allocated to this week.

    Admin:

    1. Submit Final Peer Evaluation on TEAMMATES Sat, Nov 21st 2359 counted for participation

    tP: v3.0

    1. Submit deliverables Sat, Nov 14th 2359
    2. Submit the demo video Mon, Nov 16th 2359