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
- Android Application development (continued in Week 5)
- examples
- project 3 introduction (only if time)
- basics of object-oriented programming
- up to relationships among classes and interfaces
- UML class diagrams
- Coad: modeling with UML and color: overview, book 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
- S - Single Responsibility Principle
- O - Open Closed Principle
- L - Liskov Substitution Principle
- I - Interface Segregation Principle
- D - Dependency Inversion Principle
- References
- 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 - Quiz 2: short quiz on second 2 SE Radio episodes, unit testing (167) and refactoring (46)
- announcements
- more design patterns (all covered in Week 8)
- Adapter
- Facade
- Observer
- State - including a review
- Command
- modeling and introduction to Project 4
- Android framework (as time permits)
- Android examples
Reading/Podcasts Week 10: 28 October Session - Science Week career fair for first hour of class
- test 2
- Android
- UML Extended State Machines (with guards)
- the implicit clickcounter state machine
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 - same as week 10
- relevant architectural/design patterns
- State pattern (APPP chapter 36)
- event listener/callback
- UI architectural patterns
Week 12: 11 November - detailed discussion of stopwatch example
- project 4 discussion
- brief JUnit presentation
- detailed discussion of testing in clickcounter and stopwatch examples - possible carry-over from Week 11
- 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
- possible group activity: dynamic model for project 4
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 - announcements
- Project 4 and state machine/testing extra credit assignments due tonight
- test 3 next week - practice test is in Week 13 on Sakai
- event-driven programming
- project 5 introduction
- agile development principles and process/practices
- refactoring
- 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
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 - test 3
- announcements
- SOLID and other basic object-oriented design principles ("SOLID + 2"): presentation
- concurrency
- project 5 discussion
Reading/Podcasts Week 15: 2 December - 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
- concurrency (continued)
- example: prime number checker
- direct execution
- asynchronous (background) execution
- cloud-based execution
- Cloud Computing - XaaS (X as a Service)
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
|