Homework: Homework due dates are on Friday. Late homework will not be graded. You will be allowed to drop your lowest three homework grades.
Class attendance: Class attendance is expected, and may be recorded from time to time. Absences for legitimate professional activities and illnesses are acceptable only if prior notice is given to the instructor by e-mail or phone. Scheduling conflicts with your work, extra-curricular activities, or any other such activities is not a valid excuse. Although attendance is not a specific part of the course evaluation it has a direct effect on class participation. If you are not in class you cannot participate. Class participation means that you attend class regularly and have completed your assigned readings. It means that you ask relevant questions and make informed comments in class.
Quizzes: Each week there will be one 25 - 30 minute quiz based on the homework assignment for the previous week. There will be no make up quizzes; however, you will be allowed to drop your lowest three quiz grades. Each quiz will be worth 30pts. You may bring one letter size page filled with your own notes to each quiz.
Exam: If you miss the final and do not make alternative arrangements before grades are turned in you will be graded F.
Homework and Quiz Schedule:
Homework that is due on Friday (beginning of the lecture) is based on
lectures of the previous week.
Graded homework will be returned and discussed a week later.
I encourage students with disabilities, including "invisible" disabilities such as chronic diseases and learning disabilities, to discuss with us any appropriate accommodations that we might make on their behalf. Student must provide me with a note from the office of Disability Resources and Services at in 100 Ritter Annex, 215-204-1280, regarding their disability.
This course provides students with an introduction to the development and application of algorithms in computer science.
Comparative analysis of algorithms and data structures. Data structures include heaps, priority queues, binary and general trees, binary search trees, and graphs.
Algorithms include heapsort, topological sort, breadth-first search, depth-first search, shortest path algorithms, and Greedy algorithms.
The following is a detailed listing of the topics covered in the course. The section numbers refer to the current text.
0.1 Books and algorithms
0.2 Enter Fibonacci
0.3 Big-
O notation1.1 Basic arithmetic
1.2 Modular Arithmetic
1.3 Primality testing
1.4 Cryptography
1.5 Universal hashing
2.1 Multiplication
2.2 Recurrence relations
2.3 Merge sort
2.4 Medians
2.5 Matrix multiplication (optional)
2.6 The fast Fourier transform (optional)
3.1 Why graphs?
3.2 Depth first search in undirected graphs
3.3 Depth first search in directed graphs
3.4 Strongly connected components
4.1 Distances
4.2 Breadth-first search
4.3 Lengths on edges
4.4 Dijkstra's algorithm
4.5 Priority queue implementation
4.6 Shortest paths in the presence of negative edges
4.7 Shortest paths in dags
5.1 Minimum spanning trees
5.2 Huffman encoding (optional)
5.3 Horn formulas (optional)
5.4 Set cover (optional)
6.1 Shortest paths in dags, revisited
6.2 Longest increasing subsequences
6.3 Edit distance
6.4 Knapsack
6.5 Chain matrix multiplication
6.6 Shortest paths
6.7 Independent sets in trees
7.1 An introduction to linear programming
7.2 Flows in networks
7.3 Bipartite matching
7.4 Duality
7.5 Zero-sum games (optional)
7.6 The simplex algorithm (optional)
7.7 Postscript: circuit evaluation (optional)
latecki@temple.edu