Some Key Dates 08 Sep (week 3): project 1 due Tuesday night 15 Sep (week 4): quiz 1 18 Sep (week 4): project 2 due Friday night 22 Sep (week 5): test 1 16 Oct (week 8): project 3 due Friday night 20 Oct (week 9): quiz 2 27 Oct (week 10): test 2 30 Oct (Friday): withdrawal deadline 19 Nov (week 13 Thursday): test 3 03 Dec (week 15): last class + quiz 3 05 Dec (week 15): project 4 due 11 Dec (Friday 1-3pm): test 4 (final) Preliminary Schedule (Based on Dr. Yacobellis' Spring 2020 COMP 313 Schedule – Subject to Change) Previous version (Spring 2020)
Week 1: 25 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: 1 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: 8 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 8
Week 4: 15 September Sessions - Quiz 1: short quiz on first 2 SE Radio episodes, patterns and dependencies
- announcements
- 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: overview, book 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 18
Week 5: 22 September Sessions - test 1
- announcements
- 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: 29 September
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: 6 October
Sessions
- announcements
- any remaining
questions about project 3
- 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
- SOLID and
other basic object-oriented design principles ("SOLID +
2"): presentation
- Android example
programs
- Kotlin as a
potential Android language
- Java 8-12 overview (may delay until Week 8)
Reading/Podcasts
Week 8: 13
October
Sessions
- announcements
- any remaining
questions about project 3
- reminders: Quiz 2
next week (2 SE Radio podcasts), test 2 the following week
- Java 8-12 overview if not done in Week 7
- Agile development overview
- more design
patterns
- Adapter
- Facade
- Observer
- State - including
a review
- Command
- modeling and
introduction to Project 4
Reading/Podcasts
- APPP
chapters 33, 23, 32, 15, 21
- Adapter - 33
- Facade - 23
- Observer - 32
- State - 15
- Command – 21
Homework
Project 3 due Friday, October
16
Week 9: 20
October
Sessions
- Quiz 2: short quiz on second 2 SE
Radio episodes, unit testing (167) and refactoring (46)
- announcements
- Android
- Details
of stopwatch and clickcounter source code
internals
- UML extended state
diagrams
- In-class exercise
to create an extended state machine for Project 4
- 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
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 10: 27 October
Sessions
- test 2
- 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
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 (possibly
covered in quiz 3)
Week 11: 3
November
Sessions
- test 2 discussion,
as needed
- time to finish the
Project 4 UML Extended State Diagram and comprehensive list of unit tests
- time to work on
Project 4 in your groups
Reading/Podcasts
- same as week 10
- relevant
architectural/design patterns
- State pattern (APPP
chapter 36)
- event
listener/callback
- UI architectural
patterns
Homework
- Project 4 extra credit tests
(and extended state machine) assignment due Saturday November 7 by 11:55pm
Week 12: 10
November
- announcements
- test 3 is Thursday of Week 13
(November 19) - practice test is in Week 12 on Sakai
- 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)
Week
13: 17 November - Code smells and refactoring
- maybe time to work on
Project 4 in your Groups
- Thursday: test 3
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 (possibly covered
in quiz 3)
Week
14: Thanksgiving Break - merge with Week 15
- announcements
- course feedback surveys close TBD
Quiz 3 next week -> replaced
with time for feedback surveys, if needed
- concurrency
- example: prime number checker
- direct execution
- asynchronous
(background) execution
- cloud-based
execution
- possibly time to
work on Project 4
Reading/Podcasts
SE Radio episode 23 on software architecture (covered
in quiz 3)
Week 15: 1
December
- announcements
- test 4 (final
exam) Friday next week 1-3pm - practice exam in Week 15 folder
- No SE Radio
podcasts on the final exam!
- Cloud
Computing - XaaS (X as a Service)
- in-class time to
finish Project 4
Homework
- Project 4 due Saturday night,
December 5, by 11:55pm
Reading/Podcasts
Final Sessions (Week 16): Friday, 11 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)
- 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
|
|