Data Structures and
Algorithms
Spring 2009
Class # 0203-245-01
Time: MWF 3:30 p.m. -- 4:35 p.m.
Location: HR 235
Professor: David Galles
Office: HR 542
Office Hours: M 1:30 - 3:00
R 10-11:30 or by appointment
Though these
are my stated office hours, I am in my office most of the day.
If my door is
open (and it usually is), I am happy to talk with students.
Phone: 422-5951
Email: galles@usfca.edu
Text:
There is no text for this class, but extensive class notes will be
provided.
Prerequisite:
Computer Science 112, Introduction to Computer Science II
Math 201, Discrete Math
Finals and Midterms:
Both midterms and the final will be closed notes. NOTE – I cannot
allow you to take the final at any time other than 8:00 a.m. on the
18th.
Please make plane reservations accordingly.
Test Dates:
| Assignment | Weight | Date |
| Project 1 |
8% |
2/27/2009 |
| Project 2 |
8% |
3/20/2009 |
| Project 3 |
8% |
4/17/2009 |
| Project 4 |
8% |
5/13/2009 |
| Homework |
10% |
Every 1-2 Weeks |
| Midterm #1 | 15% | 3/16/2009 (Monday) |
| Midterm #2 | 15% | 4/24/2009 (Friday) |
| Final: | 28% | 5/18/2009 (Monday) 8:00 a.m. |
Projects:
You must turn in hardcopy printouts of the source files and all
required test runs, at the beginning of class
on the due date.
In addition, you must submit your code to the proper subversion
repository. Details on electronic submission will be given with
the first
assignment.
Late Policy:
Late projects will be accepted on the next class meeting after the due
date for up to 75% credit. Projects will not be accepted later than one
class meeting after the deadline. After 2:45 p.m. is considered late
(In other words, do not skip class to finish an assignment.)
Grading:
Grades will be assigned on a straight scale, with Approximately
90-100% A
80-89% B
70-79% C
60-69% D
0-59% F
Attendance:
Students are expected to attend class. Topics that are discussed in
class but are not in the course notes and do not appear online are
fair game for the midterms and final.
Topics to be covered (partial list):
Analysis of Algorithms
Rate of growth: O(n), o(n), Omega(n), omega(n), Theta(n)
Time vs. Space
Stacks & Queues
Arrays vs. Linked Lists
Binary Trees
Binary Tree Manipulation
Ordered Binary Trees / Binary Search Trees
Heaps
Priority Queues
Sorting
Insertion Sort / Selection Sort
Merge Sort / Quicksort
Heapsort
Bucket Sort
Radix Sort
Hash Tables
Hash Functions
Open Hashing
Closed Hashing
AVL Trees
B Trees
Graph Algorithms
Dijkstra’s Algorithm
Prim’s Algorithm
Kruskal’s Algorithm
Depth First Search
Connected Components
Maximum Flow
Dynamic Programming
NP-Completeness (Time permitting)
Binomial Heaps (Time permitting)