Fall 2019 COMP 313-001/413-001

Some Key Dates

10 Sep (week 3): project 1 due Tuesday night
17 Sep (week 4): quiz 1
20 Sep (week 4): project 2 due Friday night
24 Sep (week 5): test 1
08 Oct (week 7): no class this week (Mid-Semester Break)
18 Oct (week 8): project 3 due Friday night
22 Oct (week 9): quiz 2
29 Oct (week 10): test 2
01 Nov (Friday): withdrawal deadline
26 Nov (week 14): test 3
05 Dec (week 15): last class + quiz 3
07 Dec (week 15): project 4 due
13 Dec (Friday 1-3pm): test 4 (final)

 

Preliminary Schedule (Based on Dr. Yacobellis' Spring 2018 COMP 313 Schedule – Subject to Change)

    

Previous version (Spring 2019)


Week 1: 27 August

Sessions

  • 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: 3 September

Sessions

  • 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: 10 September

Sessions

  • announcements
    • project 1/software installation check-up
    • Quiz 1 next week
  • 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 Tuesday, September 10

 

Week 4: 17 September

Sessions

  • 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, September 20

 

Week 5: 24 September

Sessions

  • 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: 1 October

Sessions

  • announcements
    • team members posted on Sakai and Piazza
    • team repositories: cs313f17teamNp3
  • 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: 8 October - no class, mid-semester break


Week 8: 15 October

Sessions

Reading/Podcasts

Homework

Project 3 due Friday, October 18


Week 9: 22 October

Sessions

  • Quiz 2: short quiz on second 2 SE Radio episodes, unit testing (167) and refactoring (46)
    • Note that this Quiz will be at the end of the class session, and the class will start at 5:15pm rather than 4:15pm
  • announcements
    • test 2 in Week 10
  • more design patterns (continued from Week 8)
    • Adapter
    • Facade
    • Observer
    • State - including a review
    • Command
  • modeling and introduction to Project 4
  • Android framework overview

Reading/Podcasts

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


Week 10: 29 October
Sessions
Reading/Podcasts
  • APPP chapters 21, 23, 32, 36
    • Command and Active Object: Versatility
    • Façade and Mediator
    • Observer: Evolving into a Pattern
    • State
SE Radio episode 65 on embedded systems (covered in quiz 3)


Week 11: 5 November

Sessions

  • announcements
    • reminder: you should have listened to SE Radio episode 65 last week on embedded systems!
  • test 2 discussion
  • UML Extended State Machines (with guards)
    • the implicit clickcounter state machine
  • in-class group exercise: create a dynamic UML extended state machine model for Project 4
    • capture these to submit as part of each Group's Project 4 submission
  • possibly time to work on Project 4 in your groups

Reading/Podcasts

Homework

  • Project 4 extra credit extended state machine assignment due Saturday by 11:55pm


Week 12: 12 November

  • 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 Group's Project 4 submission
  • event-driven programming - Test 3 roadmap items
    • textual versions of UML (extended) state diagrams
    • saving and restoring Activity state
    • event-driven programming
  • Model-View-Adapter in clickcounter and stopwatch (also Test 3-related)
  • possibly time to work on Project 4 in your Groups

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 (covered in quiz 3)

Homework

  • Project 4 extra credit tests (and extended state machine) assignment due Saturday November 16 by 11:55pm

Week 13: 19 November

Reading/Podcasts

  • APPP chapters 10-12
    • The Liskov Substitution Principle (LSP)
    • The Dependency-Inversion Principle (DIP)
    • The Interface Segregation Principle (ISP)

SE Radio episode 12 on concurrency (covered in quiz 3)


Week 14: 26 November

Reading/Podcasts

  • same as week 13

SE Radio episode 23 on software architecture (covered in quiz 3)


Week 15: 3 December

  • Quiz 3: short quiz on next 3 SE Radio episodes, embedded systems (65), concurrency (12), and software architecture (23)
    • Replaced with time to fill in the IDEA survey
  • announcements
    • IDEA survey reminder - IDEA survey closes 12/8 at 11:59pm
    • test 4 (final exam) next week - practice exam in Week 15 folder
  • final topics from Week 14, if needed
  • Cloud Computing - XaaS (X as a Service)
  • possible Java 8 overview
  • possible in-class time to finish Project 4

Homework

  • Project 4 due Saturday night, December 7, by 11:55pm

Reading/Podcasts


Final Sessions (Week 16): Friday, 13 December - final exam

  • announcements, if any
  • test 4 (final)

Reading/Podcasts

 

Dr. Läufer’s Course Outline

Overall Outline of Topics (subject to revision)

  • organization, motivation, introduction (1 week: 1 total)
    • what makes software good?
    • requirements: functional vs. nonfunctional
    • the importance of testing
  • basics of object-oriented programming (2 weeks: 3 total)
    • semantics: reference vs. value, equality vs. identity
    • types and classes: relationships, polymorphism
    • code organization: member access, packages/namespaces
  • agile development process (1 week: 4 total)
    • overview
    • testing
    • refactoring
    • continuous integration and delivery
  • object-oriented design principles (2 weeks: 6 total)
    • overview
    • SOLID
    • designing with interfaces
  • agile object-oriented modeling (2 weeks: 8 total)
    • main UML diagrams: class, state machine, sequence
    • archetypes and colors
  • software design patterns (2 weeks: 10 total)
    • key patterns from APPP and HFDP
  • concurrent programming (3 weeks: 13 total)
    • events
    • threads
    • sharing
  • distributed programming (1 week: 14 total)
    • overview and principles
    • connecting to web services

Typical structure of a weekly session

  • OOPUJ or APPP or PA topics
  • project discussion and related topics
  • pair/group presentation or other activity

Typical assignments over a two-to-three-week period

  • reading
  • listening to SE (Software Engineering) Radio episodes
  • programming project
Subpages (2): Project 1 Project 2
Comments