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
  • Week 5 [Feb 10] - Summary

    • The UML Reference Sheet is available on LumiNUS -> Files -> Handouts. It will be useful when we discuss things related to UML!
    • [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