Schedule

Preliminary Schedule 

(Based on Dr. Yacobellis' Fall, 2014, COMP 313/413 Schedule – Subject to Change)

    

Previous version (Fall 2014)

Week 1: 13 Jan

Session

  • organizational matters
    • introduction: instructor, TA
    • course objectives
    • course texts
    • course roadmap (see the last page of this document)
    • Piazza discussion forum (mandatory subscription – link through Sakai)
    • how to get help
    • prerequisites and review topics: 271 313 overview 
  • motivation, including embedded systems
    • brief overview of batch versus event-based programming
  • requirements
    • functional: y = f(x)
    • nonfunctional: additional properties of f, e.g.
      • testability
        • most important nonfunctional requirement
        • allows testing whether functional requirements are met
        • good architecture often happens as a side-effect (APPP pp. 36-38)
      • performance
      • scalability
        • e.g. performance for large data sets: asymptotic order of complexity 
          (big-Oh) in terms of input size n
      • reliability
      • maintainability
      • static versus dynamic NFRs
  • discussion of projects 1 and 2
  • course software with demo
  • prerequisite assessment

Reading/Podcasts

    Week 2: 20 Jan

    Session

    • announcements
    • data structures
      • linear vs. nonlinear
      • position-based vs. policy-based (see also here)
      • performance
      • tying data structure choices to requirements
    • data abstraction
      • addressing: pointers, references
      • aggregation (product types): structs, records
        • example: node in a linked list
      • variation (sum types): tagged unions, multiple implementations of an interface
      • example: mutable set abstraction
        • add element
        • remove element
        • check whether an element is present
        • check if empty
        • how many elements
      • several possible implementations
        • reasonable: binary search tree, hash table, bit vector (for small underlying domains)
        • less reasonable: array, linked list
        • see also here
    • group activity: problem 4 on prerequisite assessment

    Reading/Podcasts

    • OOPUJ chapters 4, 5
      • Object Roles and Polymorphism; Method Overloading

    Week 3: 27 Jan

    Session

    • announcements
      • project 1/software installation check-up
    • discussion of project 2
    • basics of object-oriented programming up to genericity (Generics)
      • Inheritance and Composition
      • Interfaces
      • Abstract Classes
    • More on Test-Driven Development
      • JUnit Annotations, test methods, and examples

    Reading/Podcasts

    Homework

    • Project 1 due tonight

    Week 4: 03 Feb

    Session

    • Quiz 1: short quiz on first 2 SE Radio episodes, patterns and dependencies
    • announcements
      • test 1 roadmap on Sakai
    • basics of object-oriented programming - through the rest of the online document
      • Generic types
      • Supplemental material: Java Collections, data structures, and Object-inherited methods (see course slides)
      • Optional topic - Coad: modeling with UML and color: overviewbook chapter
    • reverse engineering JUnit tests (test 1 topic)
    • introduction to Design Patterns
      • Overview
      • Factory method, Strategy, Visitor
      • Resources
        • tutorialspoint website
        • Bob Tarr pdf slides on Sakai
        • APPP Design Pattern references
          • Factory: Chapter 29
          • Strategy: Chapter 22
          • Visitor: Chapter 35
    • project 3 introduction (only if time)

    Reading/Podcasts

    • Bob Tarr pdf slide sets on Factory, Strategy, and Visitor Design Patterns
    • Agile Principles, Patterns, and Practices in C# (APPP) chapters 1-3 and Design Patterns chapters as above
      • Agile Practices; Extreme Programming Overview; Planning
      • Factory, Strategy, and Visitor Design Patterns

    Homework

    • Project 2 due Friday night

    Week 5: 10 Feb

    Session

    • test 1
    • announcements
      • project 3 team formation
    • more Design Patterns
      • Decorator and Composite
      • Visitor revisited
      • Resources
        • tutorialspoint website
        • Bob Tarr pdf slides on Sakai
        • APPP Design Pattern references
          • Decorator: part of Chapter 35
          • Composite: Chapter 31
          • Visitor: Chapter 35
    • project 3
      • Shapes interface and Visitor<Result> generic interface
        • concrete Shapes: Circle, Rectangle, ...
        • concrete Visitors: Draw, Size, and Bounding Box
      • project 3 TODOs (Android Studio: Tools => View => TODO)
      • project 3 Decorators: Outline, Stroke, Location, ...
      • Android Canvas and Paint classes and online documentation
      • Unit tests using Gradle and Mockito; the Fixtures class

    Reading/Podcasts

    • Bob Tarr pdf slide sets on Decorator, Composite, and Visitor Design Patterns
    • APPP chapters 4-6 and Design Patterns chapters as above
      • Testing; Refactoring; A Programming Episode
      • Decorator, Composite, and Visitor Design Patterns
    • SE Radio episode 167 on unit testing

    Week 6: 17 Feb

    Session

    • announcements
      • team members posted on Sakai and Piazza
      • team repositories: cs313sp15teamNp3
    • discussion of test 1
    • continued project 3 detailed discussion
      • more classes, including Fixtures
      • Mokito "white box" unit tests (esp. for the Bounding Box Visitor)
        • how to run the unit tests
      • expressions and vexpressions Java examples - using a Visitor<Result> interface to visit arithmetic expressions
      • coding guidelines
    • UML diagrams and 30-minute in-class group activity
      • create a UML class diagram for project 3 (hand-drawn is best)
      • Submit (a picture of) the diagram plus a brief write up about how you did it on Sakai - one per group
    • Agile development (if time)

    Reading/Podcasts

    Week 7: 24 Feb

    Session

    Reading/Podcasts

    Homework

    • Project 3 due Friday night

    Week 8: 3 Mar (Spring Break)

    Week 9: 10 Mar

    Session

    Reading/Podcasts

    • APPP chapters 33, 23, 32, 15, 21
      • Adapter - 33
      • Facade - 23
      • Observer - 32
      • State - 15
      • Command - 21

    Week 10: 17 Mar

    Session

    Reading/Podcasts

    Week 11: 24 Mar

    Session

    • announcements
      • reminder: you should have listened to SE Radio episode 65 last week on embedded systems!
    • test 2 discussion - as needed
    • detailed discussion of testing in clickcounter and stopwatch examples
    • in-class group exercise: create a comprehensive set of unit tests for Project 4
      • also capture these to submit as part of each 2-person team's Project 4 submission
    • more Android examples - only if time
    • possibly time to work on Project 4 in your teams

    Reading/Podcasts

    Week 12: 31 Mar

    Reading/Podcasts
    • APPP chapters 7-9, 18, 19
      • What is Agile Design; The Single-Responsibility Principle; The Open/Closed Principle
      • Sequence Diagrams
      • Class Diagrams
    • SE Radio episode 12 on concurrency
    Week 13: 07 Apr
    • announcements
      • test 3 next week - practice test is in Week 13 on Sakai
    • project 5 introduction
    • agile design: process, not event: presentation
      • design smells: usually subjective, sometimes objective
        • rigidity: difficult to change
        • fragility: easy to break
        • immobility: difficult to reuse
        • viscosity (of software, of environment): it is difficult to do the right thing
        • accidental complexity: e.g., overdesign
        • needless repetition (DRY)
        • opacity
      • overview of SOLID design principles
      • design perfume
    • refactoring
    • immutability
    Other topics

    Homework

    • Project 4 due Tuesday night, April 7, by 11:55pm

    Reading/Podcasts

    • PA chapters 6 and 8
      • Building a View
      • Drawing 2D and 3D Graphics
    • APPP chapter 10-12
      • The Liskov Substitution Principle (LSP); The Dependency-Inversion Principle (DIP); 
        The Interface Segregation Principle (ISP)

    Week 14: 14 Apr

    Reading/Podcasts

    Week 15: 21 Apr

    • Quiz 3: short quiz on next 3 SE Radio episodes, embedded systems (65), concurrency (12), and software architecture (23)
    • announcements
      • IDEA survey reminder
      • test 4 (final exam) next week
      • Project 5/6 presentation and submission next week
    • test 3 discussion, if needed
    • final topics from Week 14, if needed
    • possible Java 8 overview
    • possible in-class time to work on Project 5/6

    Reading/Podcasts

    Final Session (Week 16): Tuesday April 28 from 7-9pm

    • announcements, if any
    • test 4 (final)
    • review of Project 5/6 team implementations

    Reading/Podcasts

    Homework

    • Project 5/6 due Tuesday, April 28, at 5pm
    Comments