| Moon's day | Woden's day | Thor's day | Frigga's day | 
|---|
| 
| Jan 14 |  | Algorithms and analysis. Introduction, review of algorithms, sorting |  |  
 |  | 
| Jan 16 |  | Review of linked lists, sorting on lists |  |  
 |  | 
| Jan 17 |  | Counting comparisons
 |  |  lab 1
 |  | 
| Jan 18 |  | Recursive sort |  |  proj 1, due 1/30
 |  | 
|  |  | 
| Jan 24 |  | Instrumentation |  |  lab 2
 |  |  | 
| 
| Jan 28 |  | Software development. Revision control; API generation  |  |  
 |  | 
| Jan 30 |  | Object-oriented programming. Object-oriented review |  |  
 |  | 
| Jan 31 |  | Object-oriented review |  |  lab 3
 |  | 
| Feb 1 |  | (Software Development) Good programming practices |  |  proj 2, due 1/15
 |  | 
| 
| Feb 4 |  | Technical difficulties |  |  
 |  | 
| Feb 6 |  | Abstract classes and inheritance |  |  
 |  |  |  | 
| 
| Feb 11 |  | Static initializers; final |  |  
 |  | 
| Feb 13 |  | Pred/prey simulation |  |  
 |  | 
| Feb 14 |  | Object-oriented design |  |  lab 5
 |  |  | 
|  | 
| Feb 20 |  | UML, aggregation. Reuse and refactoring |  |  
 |  |  | 
| Feb 22 |  | Responsibility, coupling, cohesionSlides
 |  |  
 |  | 
|  |  |  | 
| Feb 29 |  | Private and inner classes |  |  
 |  | 
|  | 
| Mar 5 |  | Data structures. Concrete vs abstract data types; linked vs. array-based |  |  
 |  |  |  | 
|  |  |  |  | 
|  |  | 
| Mar 20 |  | Stacks and queues |  |  lab 9
 |  |  | 
|  | 
| Mar 26 |  | Traversing binary trees |  |  proj 5, due 4/4
 |  | 
| Mar 27 |  | Heaps and priority queues |  |  lab 10
 |  |  | 
| 
| Mar 31 |  | Design patterns. Review patterns so far |  |  
 |  | 
| Apr 2 |  | The Strategy pattern |  |  
 |  |  | 
| Apr 4 |  | The State pattern |  |  proj 6, due 4/16
 |  | 
| 
| Apr 7 |  | The Adaptor and Decorator patterns |  |  
 |  |  | 
| Apr 10 |  | Adaptor and Decorator |  |  lab 12
 |  |  | 
| 
| Apr 14 |  | Systems. Introduction to C; types, basic I/O, functions, linking |  |  proj 7, due 4/30
 |  | 
| Apr 16 |  | C: Pointers, dynamic allocation, arrays, structs |  |  
 |  | 
| Apr 17 |  | Data structures in C |  |  lab 13
 |  |  | 
| 
| Apr 21 |  | Representation of information; C: bit operations |  |  
 |  |  | 
| Apr 24 |  | Using C bit operations |  |  lab 14
 |  | 
| Apr 25 |  | More architecture and systems |  |  
 |  | 
| 
| Apr 28 |  | Hardware support for function calls |  |  lab 14.5
 |  | 
| Apr 30 |  | C: Function pointers |  |  
 |  | 
| Apr 1 |  | Object-oriented programming in C |  |  lab 15
 |  |  |