Admin Weekly schedule → The CS2103/T week vs normal academic week
Each CS2103/T week starts with the lecture and ends just before the following week's lecture. The only exception is week 1, which starts on the Monday of the first week of the semester.
Admin Weekly schedule → Deadline for weekly tasks
The deadline to complete tasks allocated to the week is the e.g., if your tutorial is on Thursday, the deadline is Wednesday 23.59midnight before your tutorial day, unless stated otherwise. Our grading scripts that detect your work run at midnight and only the work that's done by midnight will be eligible for marks (for cases where the task is graded).
Topics:
Full ToC
[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 :
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.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:
Topics:
Full ToC
[W2.3a] Project Management → Revision Control → What
[W2.3b] Project Management → Revision Control → Repositories
[W2.3c] Tools → Git and GitHub →
init
: Getting started
[W2.3d] Project Management → Revision Control → Saving history
[W2.3e] Tools → Git and GitHub →
commit
: Saving changes to history
[W2.3f] Tools → Git and GitHub → Omitting files from revision control
[W2.3g] Project Management → Revision Control → Using history
[W2.3h] Tools → Git and GitHub →
tag
: Naming commits
[W2.3i] Tools → Git and GitHub →
diff
: Comparing revisions
[W2.3j] Tools → Git and GitHub →
checkout
: Retrieving a specific revision
[W2.3k] Tools → Git and GitHub →
stash
: Shelving changes temporarily : OPTIONAL
[W2.4a] Project Management → Revision Control → Remote repositories
[W2.4b] Tools → Git and GitHub →
clone
: Copying a repo
[W2.4c] Tools → Git and GitHub →
pull
, fetch
: Downloading data from other repos
[W2.4d] Tools → Git and GitHub → Fork: Creating a remote copy
[W2.4e] Tools → Git and GitHub →
push
: Uploading data to other repos
Admin:
iP:
Level-1
, Level-2
, Level-3
, Level-4
, A-TextUiTesting
, Level-5
, Level-6
, A-Enums
Thu, Aug 20th 2359Topics:
Full ToC
[W3.3a] Implementation → Documentation → Tools → JavaDoc → What
[W3.3b] Implementation → Documentation → Tools → JavaDoc → How
[W3.3c] C++ to Java → Miscellaneous Topics → File access :
[W3.3d] C++ to Java → Miscellaneous Topics → Packages :
[W3.3e] C++ to Java → Miscellaneous Topics → Using JAR files :
[W3.6a] Quality Assurance → Testing → Test Automation → Test automation using test drivers
[W3.6b] Quality Assurance → Testing → Test Automation → Test automation tools
[W3.6c] Quality Assurance → Testing → Unit Testing → What
[W3.6d] C++ to Java → JUnit → JUnit: Basic
[W3.6e] Quality Assurance → Testing → Unit Testing → Stubs
[W3.6f] C++ to Java → JUnit → JUnit: Intermediate
Admin:
iP:
Level-7
, Level-8
A-MoreOOP
, A-Packages
, A-JUnit
, A-Jar
A-JavaDoc
, A-CodingStandard
, Level-9
tP:
Topics:
[W4.1] Design: Models
[W4.2] Class/Object Diagrams: Basics
[W4.3] Class Diagrams: Intermediate-Level
Full ToC
[W4.6a] Implementation → Code Quality → Naming → Introduction
[W4.6b] Implementation → Code Quality → Naming → Basic → Use nouns for things and verbs for actions
[W4.6c] Implementation → Code Quality → Naming → Basic → Use standard words
[W4.6d] Implementation → Code Quality → Naming → Intermediate → Use name to explain
[W4.6e] Implementation → Code Quality → Naming → Intermediate → Not too long, not too short
[W4.6f] Implementation → Code Quality → Naming → Intermediate → Avoid misleading names
Admin:
iP:
A-Gradle
, A-CheckStyle
, Level-10
, A-Varargs
tP:
Topics:
Full ToC
[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
Prose
Feature Lists
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
Supplementary Requirements
Readability
[W5.4a] Implementation → Code Quality → Readability → Introduction
[W5.4b] Implementation → Code Quality → Readability → Basic → Avoid long methods
[W5.4c] Implementation → Code Quality → Readability → Basic → Avoid deep nesting
[W5.4d] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions
[W5.4e] Implementation → Code Quality → Readability → Basic → Avoid magic numbers
[W5.4f] Implementation → Code Quality → Readability → Basic → Make the code obvious
[W5.4g] Implementation → Code Quality → Readability → Intermediate → Structure code logically
[W5.4h] Implementation → Code Quality → Readability → Intermediate → Do not 'Trip Up' reader
[W5.4i] Implementation → Code Quality → Readability → Intermediate → Practice KISSing
[W5.4j] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations
[W5.4k] Implementation → Code Quality → Readability → Intermediate → SLAP hard
[W5.4l] Implementation → Code Quality → Readability → Advanced → Make the happy path prominent
Unsafe Practices
[W5.4m] Implementation → Code Quality → Error-Prone Practices → Introduction
[W5.4n] Implementation → Code Quality → Error-Prone Practices → Basic → Use the default branch
[W5.4o] Implementation → Code Quality → Error-Prone Practices → Basic → Don't recycle variables or parameters
[W5.4p] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid empty catch blocks
[W5.4q] Implementation → Code Quality → Error-Prone Practices → Basic → Delete dead code
[W5.4r] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize scope of variables
[W5.4s] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize code duplication
Code Comments
[W5.4t] Implementation → Code Quality → Comments → Introduction
[W5.4u] Implementation → Code Quality → Comments → Basic → Do not repeat the obvious
[W5.4v] Implementation → Code Quality → Comments → Basic → Write to the reader
[W5.4w] Implementation → Code Quality → Comments → Intermediate → Explain WHAT and WHY, not HOW
Admin:
iP:
A-Assertions
, A-CodeQuality
, A-Lambdas
, A-Streams
A-CI
tP:
Topics:
Full ToC
Admin:
iP:
A-BetterGui
tP:
Topics:
Full ToC
Abstraction
Coupling
[W7.3b] Design → Design Fundamentals → Coupling → What
[W7.3c] Design → Design Fundamentals → Coupling → How
[W7.3d] Design → Design Fundamentals → Coupling → Types of coupling : OPTIONAL
Cohesion
[W7.6a] Project Management → Project Planning → Milestones
[W7.6b] Project Management → Project Planning → Buffers
[W7.6c] Project Management → Project Planning → Issue trackers
[W7.6d] Project Management → Project Planning → Work breakdown structure
[W7.6e] Project Management → Project Planning → Gantt charts
[W7.6f] Project Management → Project Planning → PERT charts : OPTIONAL
[W7.6g] Project Management → Teamwork → Team structures
[W7.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:
iP:
tP: v1.1
AboutUs
, README
Topics:
[W8.1] [Revisiting] Drawing Class/Object Diagrams - Basics
[W8.2] [Revisiting] Drawing Class/Object Diagrams - Intermediate
[W8.3] [Revisiting] Drawing Sequence Diagrams
Full ToC
Integration Testing
[W8.4a] Quality Assurance → Testing → Integration Testing → What
[W8.4b] Quality Assurance → Testing → Integration Testing → How
System Testing
[W8.4c] Quality Assurance → Testing → System Testing → What
[W8.4d] Quality Assurance → Testing → Test Automation → Automated testing of GUIs
Acceptance Testing
[W8.4e] Quality Assurance → Testing → Acceptance Testing → What
[W8.4f] Quality Assurance → Testing → Acceptance Testing → Acceptance versus system testing
Alpha/Beta Testing
Exploratory vs Scripted Testing
Dependency Injection
[W8.5a] Quality Assurance → Testing → Dependency Injection → What
[W8.5b] Quality Assurance → Testing → Dependency Injection → How : OPTIONAL
Testability
Test Coverage
[W8.5d] Quality Assurance → Testing → Test Coverage → What
[W8.5e] Quality Assurance → Testing → Test Coverage → How
TDD
Admin:
iP:
tP:
Topics:
[W9.1] OO Domain Models
[W9.2] Activity Diagrams
[W9.3] Conceptualizing a Design
[W9.4] Architecture Diagrams: Drawing
Full ToC
[W9.5a] Principles → Separation of concerns principle
[W9.5b] Principles → Single responsibility principle :
[W9.5c] Principles → Liskov substitution principle :
[W9.5d] Principles → Open-closed principle :
[W9.5e] Principles → Law of Demeter
[W9.5f] Principles → Interface segregation principle : OPTIONAL
[W9.5g] Principles → Dependency inversion principle : OPTIONAL
[W9.5h] Principles → SOLID principles
[W9.5i] Principles → YAGNI principle : OPTIONAL
[W9.5j] Principles → DRY principle : OPTIONAL
[W9.5k] Principles → Brooks' law : OPTIONAL
[W9.7a] Project Management → SDLC Process Models → Introduction → Agile models
[W9.7b] Project Management → SDLC Process Models → Scrum
[W9.7c] Project Management → SDLC Process Models → XP
[W9.7d] Project Management → SDLC Process Models → Unified process : OPTIONAL
[W9.7e] Project Management → SDLC Process Models → CMMI : OPTIONAL
[W9.7f] Project Management → SDLC Process Models → Recap
Type of Developer Docs
Guideline: Aim for Comprehensibility
[W9.8b] Implementation → Documentation → Guidelines → Aim for Comprehensibility → What
[W9.8c] Implementation → Documentation → Guidelines → Aim for Comprehensibility → How
Guideline: Describe Top-Down
[W9.8d] Implementation → Documentation → Guidelines → Describe Top-Down → What
[W9.8e] Implementation → Documentation → Guidelines → Describe Top-Down → Why
[W9.8f] Implementation → Documentation → Guidelines → Describe Top-Down → How
Guideline: Minimal but Sufficient
Admin:
tP: v1.2
Topics:
[W10.3] Test Cases: Intro
[W10.4] Test Cases: Equivalence Partitioning
[W10.5] Test Cases: Boundary Value Analysis
Full ToC
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
Command pattern
Abstraction Occurrence pattern
[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.3a] Quality Assurance → Test Case Design → Introduction → What
[W10.3b] Quality Assurance → Test Case Design → Introduction → Positive versus negative test cases
[W10.3c] Quality Assurance → Test Case Design → Introduction → Black box versus glass box
[W10.3d] Quality Assurance → Test Case Design → Testing based on use cases
Admin:
tP:
Topics:
Full ToC
[W11.1a] Design → Design Patterns → MVC Pattern → What
[W11.1b] Design → Design Patterns → Observer Pattern → What
[W11.1c] Design → Design Patterns → Other design patterns : OPTIONAL
[W11.1d] Design → Design Patterns → Combining design patterns : OPTIONAL
[W11.1e] Design → Design Patterns → Using design patterns : OPTIONAL
[W11.1f] Design → Design Patterns → Design patterns versus design principles : OPTIONAL
[W11.1g] Design → Design Patterns → Other types of patterns : OPTIONAL
[W11.2a] Design → Architecture → Styles → What
[W11.2b] Design → Architecture → Styles → n-Tier Style → What
[W11.2c] Design → Architecture → Styles → Client-Server Style → What
[W11.2d] Design → Architecture → Styles → Event-Driven Style → What
[W11.2e] Design → Architecture → Styles → Transaction Processing Style → What
[W11.2f] Design → Architecture → Styles → Service-Oriented Style → What
[W11.2g] Design → Architecture → Styles → Using styles
[W11.2h] Design → Architecture → Styles → More styles : OPTIONAL
[W11.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
APIs
[W11.5a] Implementation → Reuse → Introduction → What
[W11.5b] Implementation → Reuse → Introduction → When
Libraries
[W11.5c] Implementation → Reuse → Libraries → What
[W11.5d] Implementation → Reuse → Libraries → How
[W11.5e] Implementation → Reuse → APIs → What
Frameworks
[W11.5f] Implementation → Reuse → Frameworks → What
[W11.5g] Implementation → Reuse → Frameworks → Frameworks versus libraries
Platforms
[W11.7a] Design → Modelling → Modelling Behaviors Communication diagrams : OPTIONAL
[W11.7b] Design → Modelling → Modelling Behaviors State machine diagrams : OPTIONAL
[W11.7c] Design → Modelling → Modelling Structure → Deployment diagrams : OPTIONAL
[W11.7d] Design → Modelling → Modelling Structure → Component diagrams : OPTIONAL
[W11.7e] Design → Modelling → Modelling Structure → Package diagrams : OPTIONAL
[W11.7f] Design → Modelling → Modelling Structure → Composite structure diagrams : OPTIONAL
[W11.7g] Design → Modelling → Modelling Behaviors Timing diagrams : OPTIONAL
[W11.7h] Design → Modelling → Modelling Behaviors Interaction overview diagrams : OPTIONAL
Admin:
tP: v1.3
Topics:
No topic allocated to this week.
Admin:
tP:
Topics:
No topic allocated to this week.
Admin:
tP: v1.4