The
schedule is subject to change.
|
Date |
Topic |
Reading |
Notes |
Programming |
Homework |
|
8/30 |
Course Info Introduction |
|
|
|
|
|
9/2 9/6 9/9 9/13 |
The Java
Language and Tools 9/2: Java vs
C++: References vs. Pointers, Garbage collection, Type Safety 9/6: Eclipse IDE 9/9: Test-first principle and JUnit 9/13: Version control and
Mercurial |
9/2 Assignment1 - individual:
an easy Java programming assignment. Requires use of
Eclipse, JUnit and Mercurial.
Student becomes familiar with the tools which they
will be using throughout the semester. |
|
||
|
9/16 |
UML Class
Diagrams |
|
|
9/16: Assignment1
due. |
|
|
9/20 9/23 9/27 9/30 |
Basic
Software Design 9/20: Design by Contract 9/23: Subtype polymorphism 9/27: The open-closed
principle, other principles, LSP 9/30: LSP continues |
|
9/20: Assigment2
– team: a programming assignment, covers Design-by-contract. Requires
use of JML in addition to all else. 9/27: Assignment2
due. 9/27: Assignment3
– team: a programming assignment, covers the
LSP. Requires use of JML. |
|
|
|
10/4 10/7 10/14 |
Design
Patterns, most important ones 10/4: Factory, Singleton 10/7: Adapter, Bridge,
Composite, Proxy 10/14: Observer, State,
Template Method, Visitor |
|
10/4: Assignment3 due. 10/4: Assignment4
– team: a larger assignment that covers at least 3-4 frequently used
design patterns. Will have two phases: Phase1
(design), due after 10 days, where they receive feedback, and Phase2, code,
tests, and all documentation due on due date. |
|
|
|
10/18 |
Midterm
Exam |
|
|
|
|
|
10/21 10/25 10/28 |
Design
Patterns continue 10/21: Prototype, Decorator,
Facade 10/25: Command, Interpreter,
Iterator 10/28: Design patterns and
Subtype Polymorphism, Open-closed principle, and the LSP |
10/21: Assignment4
due. 10/21: Assignment
5 – team: Reverse engineering assignment. Students are given
non-trivial Java code, and asked to identify all patterns and describe in 1-2
sentences their purpose. Will count towards communication requirement! |
|
||
|
11/1 11/4 11/8 11/11 |
Software
Testing 11/1: Fundamentals of Software
Testing 11/4: Black-box testing
Techniques 11/8: White-box testing
Techniques 11/11: Random testing and tools |
11/1: Assignment
5 due 11/1: Assignment
6 – team: Given code with spec, design comprehensive tests and
measure coverage. 11/11: Assignment
6 due |
|
||
|
11/15 11/18 11/22 |
Refactoring 11/15: Fundamentals of
Refactoring 11/18: Refactorings
11/22: Refactorings
continue |
11/15: Assignment
7 – team: Students are given “smelly” but working code. They
need to refactor it into better code. 11/22: Assignment
7 due |
|
||
|
11/29 12/2 12/6 |
Student Presentations??? |
|
|
||
|
12/9 |
Review |
|
|
||
|
12/14 |
Final
Exam |
|
|
|
|
Some notes:
·
Team assignments. Will be done in teams of 2 or 3 students (I am not sure which).
Teams will change after each assignment, except after Assignment 2.
After completion of each team
assignment, students will submit an evaluation of their teammates ---
consistently bad evaluations should somehow be taken into
account when calculating a students’ final grade on assignments.
·
Textbooks. David,
Chuck, do you have in mind a good book that covers this material? The material
is not excessively deep, so we can do without a required
book, but it will be good to have a book.
·
Many issues
remain. Designing assignments, grading assignments, communication
intensiveness, student presentations, etc.