Fundamental Algorithms

CSc I0600–Spring 2023

The City College of CUNY
Department of Computer Science

Instructor: Prof. Nelly Fazio
Lectures: Wednesday, 2:00–4:30pm, Online
Office hours: Mondays, 11:00am–12:00pm (and by appointment), Online
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 Jan 25 Overview. Growth of functions. Asymptotic notation. InsertionSort.
Divide-and-Conquer. Examples. MergeSort.
CLRS 1–3
Review CLRS 10, 11, 12
2 Feb 1 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 Feb 8 Solving recurrences: Substitution method. Examples.
Solving recurrences: Master method. Examples.
CLRS 4.3, 4.5
4 Feb 15 Sorting Algorithms: Heapsort. CLRS 6
5 Feb 22 Sorting Algorithms: Quicksort. CLRS 7
6 Mar 1 More on sorting: Lower bound and beyond.
CLRS 8
7 Mar 8 Balanced Search Trees: B-Trees. CLRS 18
8 Mar 15 Review
9 Mar 22 Midterm Exam.  
10 Mar 29 Dynamic Programming (I). Example: Rod Cutting. CLRS 15
11 Apr 19 Dynamic Programming (II). Example: Longest Common Subsequence. CLRS 15
12 Apr 26 Greedy Algorithms. Huffman Codes. CLRS 16
13 May 3 Graphs. BFS and DFS. Topological Sort. SCC. CLRS 22
14 May 10 Shortest Paths: Bellman-Ford algorithm.
Single-Source Shortest Paths for DAGs + Dijkstra.
All-Pairs Shortest Paths: Floyd-Warshall.
CLRS 24, 25
May 17 Final Exam, May 17, 2023, 2:00-4:30pm (tentative)

Copyright © Nelly Fazio