Fundamental Algorithms

CSc I0600–Fall 2024

The City College of CUNY
Department of Computer Science

Instructor: Prof. Nelly Fazio
Lectures: Tuesdays, 2:00–4:30pm, Room NAC 6/306
Office hours: Tu/Th, 12:30–1:30pm (and by appointment)
Email: fazio AT cs DOT ccny DOT cuny DOT edu [Put CScI0600 in Subject line]


[ Course Description | List of Topics | Textbook | Work Load & Grading | CUNY Academic Integrity Policy | Assignments | Weekly Schedule ]


Course Description

From the course catalog: An intensive study of advanced non-numerical programming techniques. Data representation; list, tree and string manipulation algorithms. Recursive programming. Introduction to searching and sorting. Storage management algorithms. Comparative efficiency of algorithms.

Prerequisites: CSc 220.

Textbook

Required:

Work Load & Grading

NOTE: There will be NO make-up or substitute exams

CUNY Academic Integrity Policy

Cheating will not be tolerated. If you cheat, you risk losing your position as a student in the department and the college. CUNY policy on academic integrity can be found here. Failure to understand and follow these rules will constitute cheating, and will be dealt with as per university guidelines.

Assignments

Posted on blackboard.

Weekly Schedule (tentative)

Lecture Date Topic Readings
1 Sep 3 Overview. Growth of functions. Asymptotic notation. InsertionSort.
Divide-and-Conquer. Examples. MergeSort.
CLRS 1–3
Review CLRS 10, 11, 12
2 Sep 10 Solving recurrence: Recursion-tree method. Examples.
More on Divide-and-Conquer: Maximum Subarray. Matrix multiplication.
CLRS 4.1–4.2, 4.4.
Review Appendix A
3 Sep 17 Solving recurrences: Substitution method. Examples.
Solving recurrences: Master method. Examples.
CLRS 4.3, 4.5
4 Sep 24 Sorting Algorithms: Heapsort. CLRS 6
5 Oct 1 Sorting Algorithms: Quicksort. CLRS 7
6 Oct 8 More on sorting: Lower bound and beyond.
CLRS 8
7 Oct 22 Balanced Search Trees: B-Trees.
Review
CLRS 18
8 Oct 29 Midterm Exam.
9 Nov 5 Dynamic Programming (I). Example: Rod Cutting. CLRS 15
10 Nov 12 Dynamic Programming (II). Example: Longest Common Subsequence. CLRS 15
11 Nov 19 Greedy Algorithms. Huffman Codes. CLRS 16
12 Nov 26 Graphs. BFS and DFS. Topological Sort. SCC. CLRS 22
13 Dec 3 Shortest Paths: Bellman-Ford algorithm.
Single-Source Shortest Paths for DAGs.
CLRS 24
14 Dec 10 Dijkstra.
All-Pairs Shortest Paths: Floyd-Warshall.
CLRS 24, 25
Dec 17 Final Exam, 2:00-4:30pm

Copyright © Nelly Fazio