# Fundamental Algorithms

## CSc I0600–Fall 2021

The City College of CUNY
Department of Computer Science

Instructor: Prof. Nelly Fazio
Lectures: Wednesday, 4:50pm–7:20pm, Online
Office hours: Thursdays, 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:

- Introduction to Algorithms. 3rd Edition
  T. Cormen, C. Leiserson, R. Rivest, C. Stein, 2009.
  ISBN-10: 0262033844
  ISBN-13: 978-0262033848

## Work Load & Grading

- Work load
  2.5 hrs/week: Class attendance
  2.5 hrs/week: Readings
  5.0 hrs/week: Assignments
- Grading
  10%: Class participation
  20%: Quizzes
  30%: Midterm (Nov 3)
  40%: Final (Dec 15)

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 | Topic | Readings
1 | Overview. Growth of functions. Asymptotic notation. InsertionSort. Divide-and-Conquer. Examples. MergeSort. | CLRS 1–3 Review CLRS 10, 11, 12
2 | 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 | Solving recurrences: Substitution method. Examples. Solving recurrences: Master method. Examples. | CLRS 4.3, 4.5
4 | Sorting Algorithms: Heapsort. | CLRS 6
5 | Sorting Algorithms: Quicksort. | CLRS 7
6 | More on sorting: Lower bound and beyond. | CLRS 8
7 | Balanced Search Trees: B-Trees. | CLRS 18
8 | Dynamic Programming (I). Example: Rod Cutting. | CLRS 15
9 | Dynamic Programming (II). Example: Longest Common Subsequence. | CLRS 15
10 | Midterm Exam. (Nov. 3) |
11 | Greedy Algorithms. Huffman Codes. | CLRS 16
12 | Graphs. BFS and DFS. Topological Sort. SCC. | CLRS 22
13 | Minimum Spanning Trees. | CLRS 23
14 | Shortest Paths: Bellman-Ford algorithm. Single-Source Shortest Paths for DAGs + Dijkstra. All-Pairs Shortest Paths: Floyd-Warshall. | CLRS 24, 25
| Final Exam, Dec 15, 2021, 5:00-7:20pm |

Copyright © Nelly Fazio