Schedule

Preliminary Schedule (Based on Dr. Läufer’s Fall, 2013, COMP 313/413 Schedule – Subject to Change)

    

Previous version (Spring 2014)

Week 1: 26 August

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: 2 September

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: 9 September

Session

Reading/Podcasts

Homework

  • Project 1 due Tuesday, September 9

Week 4: 16 September

Session

  • Quiz 1: short quiz on first 2 SE Radio episodes, patterns and dependencies
  • announcements
  • Java Generics and more about Unit Tests
  • Introduction to Design Patterns - Bob Tarr slides for background
    • Factory
    • Stratey
    • Visitor
  • Android Application development (continued in Week 5)
  • basics of object-oriented programming
    • up to relationships among classes and interfaces
    • UML class diagrams
    • Coad: modeling with UML and color: overviewbook chapter

Reading/Podcasts

  • same as weeks 2 and 3
  • Agile Principles, Patterns, and Practices in C# (APPP) chapters 1-3
    • Agile Practices; Extreme Programming Overview; Planning

Homework

  • Project 2 due Friday, September 19

Week 5: 23 September

Session

Reading/Podcasts

Week 6: 30 September

Session

  • announcements
    • team members posted on Sakai and Piazza
    • team repositories: cs313sp14teamNp3
    • project 3 expectations
  • discussion of test 1
  • dependency analysis
  • project 3 detailed discussion
  • group activity: requirements analysis and static model (UML class diagram) for project 3

Reading/Podcasts

Week 7: 7 October (Mid-Semester Break)

Week 8: 14 October

Session

  • announcements
    • any remaining questions about project 3
    • reminders: Quiz 2 next week (2 SE Radio podcasts), test 2 the following week
  • principles of object-oriented programming: SOLID
  • Agile development 
  • more design patterns (as time permits)
    • Adapter
    • Facade
    • Observer
    • State
    • Command
  • Android overview (only if time)

Reading/Podcasts

  • Android 4 App Development Essentials, Chapters 5-8
  • APPP chapters 13-15, 31, 35
    • Overview of UML for C# Programmers; Working with Diagrams; State Diagrams
    • Composite
    • Visitor
  • SE Radio episode 46 on refactoring

Homework

  • Project 3 due Friday, October 17

Week 9: 21 October

Session

Reading/Podcasts

  • same as week 8

Week 10: 28 October

Session

Reading/Podcasts

Week 11: 4 November

Session

  • announcements
    • reminder: you should have listened to SE Radio episode 65 last week on embedded systems!
  • test 2 discussion - as needed
  • in-class group exercise: create a dynamic UML extended state machine model for Project 4
    • capture these to submit as part of each 2-person team's Project 4 submission
  • brief JUnit presentation
  • 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

Reading/Podcasts

Week 12: 11 November

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

Homework

  • Project 4 due Friday, November 14 => updated to Tuesday, November 18

Week 13: 18 November

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: 25 November

Reading/Podcasts

Week 15: 2 December

Reading/Podcasts

Final Session (Week 16): 9 December

  • test 4 (final)
  • announcements, if any
  • in-class review of Project 5 implementations

Reading/Podcasts

Homework

  • Project 5/6 due Tuesday, December 9 at 5pm
Comments