Course Schedule

Date Book Sections Lecture Topics Due
Mon 8/27
Welcome and Announcements  
Wed 8/29
1.1, 1.2 The Software Life Cycle, Using Abstraction to Manage Complexity Lab 0
Fri 8/31
1.2, 1.3 Using Abstraction to Manage Complexity, Defining C++ Classes  
Wed 9/5
1.4, 1.5, 1.6 Abstract Data Types, Interfaces, Pre- and Postconditions, Requirement Analysis, Use Cases, Sequence Diagrams, Design of an Array-Based Phone Directory  
Fri 9/7
1.6, 1.7, 1.8, 2.1 Design of an Array-Based Phone Directory, Implementing and Testing the Array-Based Phone Directory, Completing the Phone Directory Application, Program Defects and Bugs  
Mon 9/10
2.1, 2.2, 2.3 Program Defects and Bugs, Exceptions, Testing Programs Lab 1
Wed 9/12
2.3, 2.4, 2.5 Testing Programs, Debugging a Program, Reasoning about Programs: Assertions and Loop Invariants  
Fri 9/14
2.6 Efficiency of Algorithms  
Mon 9/17
3.1, 3.2 Introduction to Inheritance and Class Hierarchies, Member Function Overriding, Member Function Overloading, Polymorphism  
Wed 9/19
3.2, 3.3 Member Function Overriding, Member Function Overloading, Polymorphism, Abstract Classes, Assignment Lab 2
Fri 9/21
3.3, 3.4, 3.5 Abstract Classes, Assignment, Casting in a Hierarchy, Multiple Inheritance, Namespaces and Visibility  
Mon 9/24
3.6, 4.1 A Shape Class Hierarchy, Template Classes and the Vector  
Wed 9/26
4.1, 4.2, 4.3 Template Classes and the Vector, Applications of vector, Implementation of a vector Class  
Fri 9/28
4.3, 4.4, 4.5 Implementation of a vector Class, The Copy Constructor, Assignment Operator, Destructor, Single-Linked List, Double-Linked List  
Mon 10/1
4.5, 4.6, 4.7 Single-Linked List, Double-Linked List, The List Class and the Iterator, Implementation of a Double-Linked List Class  
Wed 10/3
4.7, 4.8 Implementation of a Double-Linked List Class, Application of the List Class Lab 3
Fri 10/5
4.9, 4.10 Standard Library Containers, Standard Library Algorithms and Function Objects  
Mon 10/8
5.1, 5.2 The Stack Abstract Data Type, Stack Applications  
Wed 10/10
5.3, 5.4 Implementing a Stack, Additional Stack Applications  
Fri 10/12
5.4 Additional Stack Applications Lab 4
Mon 10/15
6.1, 6.2, 6.3 The Queue Abstract Data Type, Maintaining a Queue of Customers, Implementing the Queue Abstract Data Type  
Wed 10/17
6.3, 6.4 Implementing the Queue Abstract Data Type, The Deque  
Fri 10/19
6.4, 6.5, 7.1 The Deque, Simulating Waiting Lines Using Queues, Recursive Thinking  
Mon 10/22
7.1, 7.2 Recursive Thinking, Recursive Definitions of Mathematical Formulas Exam 1 Due
Wed 10/24
7.2, 7.3 Recursive Definitions of Mathematical Formulas, Recursive Search Lab 5
Fri 10/26
7.3, 7.4, 7.5 Recursive Search, Problem Solving with Recursion, Backtracking  
Mon 10/29
7.5, 8.1 Backtracking, Tree Terminology and Applications Lab 6
Wed 10/31
8.1, 8.2, 8.3 Tree Terminology and Applications, Tree Traversals, Implementing a Binary Tree Class  
Fri 11/2
8.3, 8.4 Implementing a Binary Tree Class, Binary Search Trees (BST)  
Mon 11/5
8.5 Heaps, Priority Queues  
Wed 11/7
8.5, 8.6 Heaps, Priority Queues, Huffman Trees  
Fri 11/9
9.1, 9.2, 9.3 Associative Container Requirements, Maps, Multimaps, Hash Tables Lab 7
Mon 11/12
9.3 Hash Tables  
Wed 11/14
9.3, 9.4 Hash Tables, Implementing the Hash Table  
Fri 11/16
9.5, 9.6, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6 Implementation Considerations for the hash_map, Additional Applications of Maps, Using C++ Sorting Functions, Selection Sort, Bubble Sort, Insertion Sort, Comparison of Quadratic Sorts, Shell Sort: A Better Insertion Sort  
Mon 11/19
10.6 Shell Sort: A Better Insertion Sort  
Tue 11/20
10.7, 10.8, 10.9, 10.10 Merge Sort, Heapsort, Quicksort, Testing the Sort Algorithm Lab 8
Mon 11/26
11.1, 11.2 Tree Balance and Rotation, AVL Trees  
Wed 11/28
11.2, 11.3 AVL Trees, Red-Black Trees Lab 9
Fri 11/30
11.3, 11.4, 11.5 Red-Black Trees, 2-3 Trees, 2-3-4 Trees and B-Trees  
Mon 12/3
12.0 Review  
Wed 12/5
12.0 Review  
Thu 12/6  Lab 10
Fri 12/14  Exam 3 Due