CS302 -- Fundamental Algorithms

Spring 2004


Instructor

Professor: Jian Huang


Textbooks

Required : Data Structures & Algorithm Analysis in C++, Mark Weiss

Optional (Strongly Recommended): Teach Yourself C++, 3rd Ed., Herbert Schildt


What's My Grade?

Grades will be calculated as a weighted average of the following three items:

 
        Labs                           35%
        Midterm                        30%
        Final                          35%
Class Participation            5%

Overview

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:

  1. To gain an initial understanding that a computer is a system resulting from interactions between software and hardware.
  2. Acquire a mastery of a variety of algorithms fundamental to computer programming by building on the data structures and algorithms learned in CS140.

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.


What Topics Does The Course Cover?

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)