Professor: Jian Huang
Required : Data Structures & Algorithm Analysis in C++, Mark Weiss
Optional (Strongly Recommended): Teach Yourself C++, 3rd Ed., Herbert Schildt
Grades will be calculated as a weighted average of the following three items:
Labs 35%
Midterm 30%
Final 35%
Class Participation 5%
CS302 is a bridge course between CS140 and CS360 that is supposed to give you both 1) a more in-depth knowledge of many of the data structures and algorithms presented in CS140, and 2) additional programming experience that will be valuable in CS360. Specifically, the goals of this course are to:
3. Acquire a familiarity with object-oriented programming by writing and debugging programs in C++.
4. Acquire a familiarity with a variety of Unix tools that aid in writing and debugging programs.
In sum, you are to become a proficient problem solver creating software solutions using development tools.
1. C Review and Useful Libraries for CS302 and CS360 (2 weeks)
2. Introduction to Object-Oriented Programming (4 weeks)
o Basics of Object-Oriented Programming (Weiss 1.4-1.7)
o Review of data structures from CS140 (Chs 3-5)
3. Analysis of Algorithms (1 week)
4. Sorting (3 weeks)
o Priority Queues (Weiss, Ch. 6.1 - 6.4)
o External Sorting (Weiss, Ch. 7)
5. Searching (2 weeks)
o Balanced Trees (Weiss, Ch. 4.4-4.6)
o Hashing (Ch. 5)
o External Searching (Weiss, Ch 4.7)
6. Graph Algorithms (3 weeks)
o Basic Terminology (Weiss, Ch. 9.1)
o Traversals (Weiss, Ch. 9.6, handouts)
o Topological Sort (Weiss, Ch 9.2)
o Shortest-Path Algorithms (Weiss, Ch 9.3)