This site is not ready yet! The updated version will be available soon.
CS2103/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [Aug 12]
  • Week 2 [Aug 19]
  • Week 3 [Aug 26]
  • Week 4 [Sep 2]
  • Week 5 [Sep 9]
  • Week 6 [Sep 16]
  • Week 7 [Sep 30]
  • Week 8 [Oct 7]
  • Week 9 [Oct 14]
  • Week 10 [Oct 21]
  • Week 11 [Oct 28]
  • Week 12 [Nov 4]
  • Week 13 [Nov 11]
  • 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 [Sep 9] - Summary

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

    • [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] Tools → Java → 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:

    1. Submit post-lecture quiz
    2. Practice peer evaluation on TEAMMATES by Saturday

    iP:

    1. Add increments as PRs: A-Assertions, A-CodeQuality, A-Lambdas, A-Streams
    2. Set up CI
    3. Add an extension

    tP:

    1. Brainstorm user stories before the tutorial
    2. Prioritize user stories before or during the tutorial

    • One part of this week's lecture is not covered in the textbook and is relevant for your team project. You are encouraged to attend this week's lecture even if you don't normally come to lectures.
    • The UML Reference Sheet will be useful during this week's lecture. If you don't have the hard copy, you can use the softcopy in the LumiNUS/files.