Some Key Dates 12 Sep (week 3):
project 1 due Tuesday night 21 Sep (week 4): quiz
1 22 Sep (week 4):
project 2 due Friday night 28 Sep (week 5): test
1 19 Oct (week 8): quiz
2 20 Oct (week 8):
project 3 due Friday night 26 Oct (week 9): test
2 03 Nov (Friday):
withdrawal deadline 18 Nov (week 12): project 4 due Saturday night 21 Nov (week 13): no
class Thursday (Thanksgiving Holiday) 30 Nov (week 14): test
3
07 Dec (week 15): last
class + quiz 3
12 Dec (week 16): project 5/6 due
Tuesday night
14 Dec (week 16): project 5/6 presentation and test 4 (final)
Preliminary Schedule (Based on Dr. Yacobellis' Spring 2017
COMP 313 Schedule – Subject to Change)
Previous
version (Spring 2017)
Week 1: 31 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 413 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: 7 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: 14 September
Session
- 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 12
Week 4: 21 September
Session
- Quiz
1: short quiz on first 2 SE Radio episodes, patterns and dependencies
- announcements
- test 1 next week;
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: 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 22
Week
5: 28 September
Session
- 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: 5 October
Session
- announcements
- team members
posted on Sakai and Piazza
- team
repositories: cs313sp16teamNp3
- 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: 12 October
Session
- announcements
- any remaining
questions about project 3
- reminders: Quiz 2 on October 19 (2 SE Radio podcasts), test
2 on October 26
- 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
Reading/Podcasts
Week 8: 19 October
Session
- Quiz
2: short quiz on second 2 SE Radio episodes, unit testing
(167) and refactoring (46)
- announcements
- more design
patterns
- Adapter
- Facade
- Observer
- State - including
a review
- Command
- modeling and
introduction to Project 4
- Android framework
(if needed)
Reading/Podcasts
- APPP chapters 33,
23, 32, 15, 21
- Adapter - 33
- Facade - 23
- Observer - 32
- State - 15
- Command - 21
Homework - Project 3 due Friday night October 20
Week 9: 26 October
Session
- test
2
- Android
- UML Extended State
Machines (with guards)
- 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
Week 10: 2 November
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 Group's Project 4 submission
- more Android
examples - only if time
- possibly time to
work on Project 4 in your teams
Reading/Podcasts
- same as week 10
- relevant
architectural/design patterns
- State pattern (APPP chapter
36)
- event
listener/callback
- UI architectural
patterns
Week 11: 9 November
- brief review of
extended state diagrams
- Project 4: saving
and restoring Activity state
- event-driven
programming - Test 3 roadmap items
- Model-View-Adapter
in ClickCounter and Stopwatch
- possibly time to
work on Project 4 in your teams
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 extra credit extended state machine assignment due Saturday by 11:55pm
Week 12: 16 November
- announcements
- test 3 November 30 (no class next week!) - practice test is in Week 12 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
- time to work on Project 4 in your Groups, if needed
Other
topics
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)
Homework - Project 4 due Saturday night, November 18, by 11:55pm
Week 13: 23 November
Thanksgiving Holiday, no class!!
Week
14: 30 November
Reading/Podcasts
Week 15: 7 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
- 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
- likely in-class
time to work on Project 5/6
Reading/Podcasts
Final
Session (Week 16): Thursday December 14 4:15-6:15pm
- announcements, if
any
- test
4 (final)
- review of Project 5/6
team implementations
Reading/Podcasts
Homework - Project 5/6 due Tuesday, December 12, at 11:55pm
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
|
|