Admin Weekly schedule → The CS2113/T week vs normal academic week
Each CS2113/T week starts with the lecture and ends just before the following week's lecture. The only exception is week 1, which starts on the Monday of the first week of the semester.
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:
No topics allocated to this week.
Admin:
Topics:
Full ToC
[W2.7a] Project Management → Revision Control → What
[W2.7b] Project Management → Revision Control → Repositories
[W2.7c] Tools → Git and GitHub →
init
: Getting started
[W2.7d] Project Management → Revision Control → Saving history
[W2.7e] Tools → Git and GitHub →
commit
: Saving changes to history
[W2.7f] Tools → Git and GitHub → Omitting files from revision control
Admin:
iP:
Level-0
Topics:
[W3.2] Java: Objects
[W3.3] Java: Classes
[W3.4] OOP, Java: Class-Level Members
[W3.5] Java: Useful Classes
Full ToC
[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.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.7a] Project Management → Revision Control → Using history
[W3.7b] Tools → Git and GitHub →
diff
: Comparing revisions
[W3.7c] Tools → Git and GitHub →
checkout
: Retrieving a specific revision
[W3.7d] Tools → Git and GitHub →
tag
: Naming commits
[W3.7e] Tools → Git and GitHub →
stash
: Shelving changes temporarily
Admin:
iP:
Level-1
, Level-2
, Level-3
, A-CodingStandard
tP:
Topics:
[W4.1] OOP + Java: Inheritance
[W4.2] OOP + Java: Polymorphism
[W4.3] Java: Constants
[W4.4] OOP + Java: Enumerations
Full ToC
[W4.6a] Implementation → Code Quality → Readability → Introduction
[W4.6b] Implementation → Code Quality → Readability → Basic → Avoid long methods
[W4.6c] Implementation → Code Quality → Readability → Basic → Avoid deep nesting
[W4.6d] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions
[W4.6e] Implementation → Code Quality → Readability → Basic → Avoid magic numbers
[W4.6f] Implementation → Code Quality → Readability → Basic → Make the code obvious
[W4.6g] Implementation → Code Quality → Readability → Intermediate → Structure code logically
[W4.6h] Implementation → Code Quality → Readability → Intermediate → Do not 'Trip Up' reader
[W4.6i] Implementation → Code Quality → Readability → Intermediate → Practice KISSing
[W4.6j] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations
[W4.6k] Implementation → Code Quality → Readability → Intermediate → SLAP hard
[W4.6l] Implementation → Code Quality → Readability → Advanced → Make the happy path prominent
Admin:
iP:
Level-4
, A-TextUiTesting
, A-CodeQuality
tP:
Topics:
[W5.1] Java: Casting
[W5.2] OOP + Java: Abstract Classes
[W5.3] OOP + Java: Interfaces
[W5.4] Java: Packages
[W5.5] Java: Access Modifiers
Full ToC
[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
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
Admin:
iP:
Level-5
A-Packages
tP:
Topics:
[W6.5] Requirements: Intro
[W6.6] Requirements: Gathering
[W6.7] Requirements: Specifying [continued from last week]
Full ToC
[W6.6a] Requirements → Gathering Requirements → Brainstorming
[W6.6b] Requirements → Gathering Requirements → Product surveys
[W6.6c] Requirements → Gathering Requirements → Observation
[W6.6d] Requirements → Gathering Requirements → User surveys
[W6.6e] Requirements → Gathering Requirements → Interviews
[W6.6f] Requirements → Gathering Requirements → Focus groups
[W6.6g] Requirements → Gathering Requirements → Prototyping
Prose
User Stories [Repeated from last week]
[W6.7b] Requirements → Specifying Requirements → User Stories → Introduction
[W6.7c] Requirements → Specifying Requirements → User Stories → Details
[W6.7d] Requirements → Specifying Requirements → User Stories → Usage
Feature Lists [Repeated from last week]
Use Cases
Glossary
Supplementary Requirements
[W6.10a] Implementation → Code Quality → Error-Prone Practices → Introduction
[W6.10b] Implementation → Code Quality → Error-Prone Practices → Basic → Use the default branch
[W6.10c] Implementation → Code Quality → Error-Prone Practices → Basic → Don't recycle variables or parameters
[W6.10d] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid empty catch blocks
[W6.10e] Implementation → Code Quality → Error-Prone Practices → Basic → Delete dead code
[W6.10f] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize scope of variables
[W6.10g] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize code duplication
Admin:
iP:
Level-6
, Level-7
A-Jar
tP:
Topics:
Full ToC
Javadoc
[W7.5a] Implementation → Code Quality → Comments → Introduction
[W7.5b] Implementation → Code Quality → Comments → Basic → Do not repeat the obvious
[W7.5c] Implementation → Code Quality → Comments → Basic → Write to the reader
[W7.5d] Implementation → Code Quality → Comments → Intermediate → Explain WHAT and WHY, not HOW
[W7.8a] Project Management → Revision Control → Forking flow
[W7.8b] Tools → Git and GitHub → Forking workflow
[W7.8c] Project Management → Revision Control → DRCS vs CRCS
[W7.8d] Project Management → Revision Control → Feature branch flow : OPTIONAL
[W7.8e] Project Management → Revision Control → Centralized flow : OPTIONAL
Admin:
iP:
A-MoreOOP
Level-8
, Level-9
, A-JavaDoc
tP:
Topics:
Full ToC
[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.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.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:
iP:
tP:
Topics:
Full ToC
Abstraction
Coupling
[W9.4b] Design → Design Fundamentals → Coupling → What
[W9.4c] Design → Design Fundamentals → Coupling → How
[W9.4d] Design → Design Fundamentals → Coupling → Types of coupling : OPTIONAL
Cohesion
[W9.4e] Design → Design Fundamentals → Cohesion → What
[W9.4f] Design → Design Fundamentals → Cohesion → How
Some Principles
Admin:
tP: v1.0
Topics:
Full ToC
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
Admin:
tP:
Topics:
Full ToC
Introduction
[W11.1a] Design → Introduction → Multi-level design
[W11.1b] Design → Architecture → Introduction → What
[W11.1c] Design → Architecture → Architecture Diagrams → Reading
Architectural Styles
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.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
Admin:
tP: v2.0
Topics:
Full ToC
[W12.2a] Quality Assurance → Test Case Design → Combining Test Inputs → Why
[W12.2b] Quality Assurance → Test Case Design → Combining Test Inputs → Test input combination strategies
[W12.2c] Quality Assurance → Test Case Design → Combining Test Inputs → Heuristic: Each valid input at least once in a positive test case : OPTIONAL
[W12.2d] Quality Assurance → Test Case Design → Combining Test Inputs → Heuristic: No more than one invalid input in a test case : OPTIONAL
[W12.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
Admin:
tP:
Topics:
No topics allocated to this week.
Admin:
tP: v2.1