| Date | Topics | Reading | Assignment |
| 9/30 | Welcome; from Java to C++; C++ software development workflow | Weiss, Ch. 1, App. A–D |
|
| 10/5 | Introduction to a second language: managed vs. non-managed languages, virtual machines, interpreters and compilers, pointers and dynamic memory management; Laboratory 1: Linux C++ software development workflow | Weiss, Ch. 1, App. A–D | Program 0 assigned |
| 10/7 | Memory management, cont’d; C++ objects | Weiss, Ch. 1 & 2 |
|
| 10/12 | Implementing classes and containers: interface vs. implementation, members and access control; polymorphism and operator overloading; Laboratory 2: C++ classes and operator overloading | Weiss, Ch. 2 | Program 0 design review |
| 10/14 | Pointers, dynamic memory allocation and deallocation, constructors and destructors, and linked list intro. | Weiss, Ch. 16 & 17 |
|
| 10/19 | Implementing lists, stacks, and queues | Weiss, Ch. 16 & 17; Laboratory 3: linked lists | Program 0 due; Program 1 assigned |
| 10/21 | Implementing lists, stacks, and queues | Weiss, Ch. 16 & 17 |
|
| 10/26 | Mathematical problem-solving techniques: predicate calculus and inference; Laboratory 4: the answer is… | Rosen, Ch. 1 (§ 1.3–1.7) | Program 1 design review |
| 10/28 | Mathematical problem-solving techniques: predicate calculus, cont’d; proofs (direct and by construction) |
| Written HW 1 assigned |
| 11/2 | Mathematical problem-solving techniques: predicate calculus, cont’d |
| Program 1 due; Program 2 assigned |
| 11/4 | Mathematical problem-solving techniques: predicate calculus, cont’d; sequences and summation | Rosen, Ch. 2 (§ 2.4) | Written HW 1 due |
| 11/9 | Midterm |
| Program 2 design review in lab |
| 11/11 | Veteran’s Day Holiday |
|
|
| 11/16 | Mathematical problem-solving techniques: Mathematical basis of recursive algorithms; recursion and proof by induction; Computational complexity review; Laboratory 6: instrumenting code | Weiss, Ch. 6, 8; Rosen, Ch. 4 (§ 4.1–4.4), 7 (§ 7.1–7.2) | Written HW 2 assigned; Program 2 due; Program 3 assigned |
| 11/18 | N log N sorting: shellsort and mergesort | Weiss, Ch. 9 |
|
| 11/23 | N log N sorting: quicksort and offline sorting; Laboratory 7: sort this! | Weiss, Ch. 9 | Program 3 design review |
| 11/25 | Algorithmic strategies: brute force, divide and conquer | Rosen, Ch. 7 (§ 7.3) | Written HW 2 due |
| 11/30 | Algorithmic strategies: greedy algorithms; Laboratory 8: greed is good | TBA | Program 3 due; Mini program 4 assigned |
| 12/2 | Algorithmic strategies: backtracking, heuristics, and intelligent systems | TBA |
|
| 12/7 | Generic algorithms; Laboratory 9: generic code | Weiss, Ch. 3 |
|
| 12/9 | The C++ Standard Template Library | Weiss, Ch. 7 | Mini program 4 due |
| 12/14 | Final |
|
|
Last modified: November 17, 2009