This site is from a past semester! The current version will be here when the new semester starts.
TIC4002 2021 Jan-May
  • Full Timeline
  • Week 1 [Mon, Jan 11th]
  • Week 2 [Fri, Jan 15th]
  • Week 3 [Fri, Jan 22nd]
  • Week 4 [Fri, Jan 29th]
  • Week 5 [Fri, Feb 5th]
  • Week 6 [Fri, Feb 12th]
  • Week 7 [Fri, Feb 19th]
  • Week 8 [Fri, Mar 5th]
  • Week 9 [Fri, Mar 12th]
  • Week 10 [Fri, Mar 19th]
  • Week 11 [Fri, Mar 26th]
  • Week 12 [Fri, Apr 2nd]
  • Week 13 [Fri, Apr 9th]
  • Textbook
  • Admin Info
  • Dashboards
  •  Individual Project (iP):
  • Individual Project Info
  • iP Upstream Repo
  • iP Showcase
  • iP Code Dashboard
  • iP Progress Dashboard

  •  Team Project (tP):
  • Team Project Info
  • tP Upstream Repo (AB3)
  • Team List
  • tP Code Dashboard
  • tP Progress Dashboard
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • Files (handouts, submissions etc.)
  • MS Teams link
  • Java Coding Standard
  • Git Conventions
  • Participation Dashboard
  • Week 5 [Fri, Feb 5th] - Summary

    Topics:

    • [W5.1] Code Quality

    • [W5.2] Refactoring

    • [W5.3] IDEs: Intermediate Features

    • [W5.4] Design: High-Level View

    • [W5.5] Design: Fundamentals

    • [W5.6] Architecture

    • [W5.7] Architectural Styles

    • [W5.8] Design Approaches

    • [W5.1] Code Quality

       Coding Standards

    • [W5.1a] Implementation → Code Quality → Introduction → What :

    • [W5.1b] Implementation → Code Quality → Style → Introduction :

       Code Quality: Naming

    • [W5.1c] Implementation → Code Quality → Naming → Introduction :

    • [W5.1d] Implementation → Code Quality → Naming → Basic → Use nouns for things and verbs for actions :

    • [W5.1e] Implementation → Code Quality → Naming → Basic → Use standard words :

    • [W5.1f] Implementation → Code Quality → Naming → Intermediate → Use name to explain :

    • [W5.1g] Implementation → Code Quality → Naming → Intermediate → Not too long, not too short :

    • [W5.1h] Implementation → Code Quality → Naming → Intermediate → Avoid misleading names :

       Readability

    • [W5.1i] Implementation → Code Quality → Readability → Introduction :

    • [W5.1j] Implementation → Code Quality → Readability → Basic → Avoid long methods :

    • [W5.1k] Implementation → Code Quality → Readability → Basic → Avoid deep nesting :

    • [W5.1l] Implementation → Code Quality → Readability → Basic → Avoid complicated expressions :

    • [W5.1m] Implementation → Code Quality → Readability → Basic → Avoid magic numbers :

    • [W5.1n] Implementation → Code Quality → Readability → Basic → Make the code obvious :

    • [W5.1o] Implementation → Code Quality → Readability → Intermediate → Structure code logically :

    • [W5.1p] Implementation → Code Quality → Readability → Intermediate → Do not 'Trip Up' reader :

    • [W5.1q] Implementation → Code Quality → Readability → Intermediate → Practice KISSing :

    • [W5.1r] Implementation → Code Quality → Readability → Intermediate → Avoid premature optimizations :

    • [W5.1s] Implementation → Code Quality → Readability → Intermediate → SLAP hard :

    • [W5.1t] Implementation → Code Quality → Readability → Advanced → Make the happy path prominent :

       Unsafe Practices

    • [W5.1u] Implementation → Code Quality → Error-Prone Practices → Introduction :

    • [W5.1v] Implementation → Code Quality → Error-Prone Practices → Basic → Use the default branch :

    • [W5.1w] Implementation → Code Quality → Error-Prone Practices → Basic → Don't recycle variables or parameters :

    • [W5.1x] Implementation → Code Quality → Error-Prone Practices → Basic → Avoid empty catch blocks :

    • [W5.1y] Implementation → Code Quality → Error-Prone Practices → Basic → Delete dead code :

    • [W5.1z] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize scope of variables :

    • [W5.1A] Implementation → Code Quality → Error-Prone Practices → Intermediate → Minimize code duplication :

       Code Comments

    • [W5.1B] Implementation → Code Quality → Comments → Introduction :

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

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

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

    • [W5.2] Refactoring
    • [W5.2a] Implementation → Refactoring → What :

    • [W5.2b] Tools → IntelliJ IDEA → Refactoring :

    • [W5.2c] Implementation → Refactoring → How :

    • [W5.2d] Implementation → Refactoring → When :

    • [W5.3] IDEs: Intermediate Features
    • [W5.3a] Implementation → IDEs → Debugging → What :

    • [W5.3b] Tools → IntelliJ IDEA → Debugging: Basic :

    • [W5.3c] Tools → IntelliJ IDEA → Code navigation :

    • [W5.4] Design: High-Level View

       Introduction

    • [W5.4a] Design → Introduction → What :
    • [W5.5] Design: Fundamentals

       Abstraction

    • [W5.5a] Design → Design Fundamentals → Abstraction → What :

       Coupling

    • [W5.5b] Design → Design Fundamentals → Coupling → What :

    • [W5.5c] Design → Design Fundamentals → Coupling → How :

    • [W5.5d] Design → Design Fundamentals → Coupling → Types of coupling :

       Cohesion

    • [W5.5e] Design → Design Fundamentals → Cohesion → What :

    • [W5.5f] Design → Design Fundamentals → Cohesion → How :

    • [W5.6] Architecture
    • [W5.6a] Design → Architecture → Introduction → What

    • [W5.6b] Design → Architecture → Architecture Diagrams → Reading

    • [W5.6c] Design → Architecture → Architecture Diagrams → Drawing

    • [W5.6d] Design → Introduction → Multi-level design

    • [W5.7] Architectural Styles
    • [W5.7a] Design → Architecture → Styles → What

    • [W5.7b] Design → Architecture → Styles → n-Tier Style → What

    • [W5.7c] Design → Architecture → Styles → Client-Server Style → What

    • [W5.7d] Design → Architecture → Styles → Event-Driven Style → What

    • [W5.7e] Design → Architecture → Styles → Transaction Processing Style → What

    • [W5.7f] Design → Architecture → Styles → Service-Oriented Style → What : OPTIONAL

    • [W5.7g] Design → Architecture → Styles → Using styles : OPTIONAL

    • [W5.7h] Design → Architecture → Styles → More styles : OPTIONAL

    • [W5.8] Design Approaches
    • [W5.8a] Design → Design Approaches → Top-down and bottom-up design

    • [W5.8b] Design Approaches → Agile Design → Agile design

    Admin:

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

    iP:

    1. Increase code quality even further
    2. Start next week's tasks

    tP:

    1. Conceptualize v1.2
    2. Draft the UG
    3. Refine the product design
    4. Set up the project repo
    5. Get familiar with the code base