CS 141 (Sections 1 & 2)

 Intermediate Data Structures and Algorithms (Spring 2024)

Lectures:

(Section 1) Mon and Wed: 06:30 PM - 07:50 PM (Humanities and Social Sciences | Room 1501)

(Section 2) Mon and Wed: 03:30 PM - 04:50 PM (Gordon Watkins Hall | Room 1101)


Instructor:

Amey Bhangale (ameyb AT ucr.edu)

Office hours: (Section 1) Mondays 2 pm - 3 pm

(Section 2) Wednesdays 2 pm - 3 pm

Teaching Assistants: 

Yezhou Zhang &  Yitong Dai

Office hours: 

TBA

Discussion:


Prerequisites: CS 014, CS 111, MATH 009C (MATH 009HC). The prerequisites are strictly enforced.


Text Book:

Grading: (approximately) 4-5 Quizzes + 4-5 Homework (50%)2 Midterms and a Final Exam (50%)

(Homework papers need to be formatted with LaTeX. For your convenience, a LaTeX template for homework assignments will be available.)

Academic Integrity: Zero-tolerance policy on plagiarism is enforced. Cheating on homework assignments or tests will result in an F grade for the course and a disciplinary action, independently of the extent of plagiarism. You are required to print, read, and sign the academic integrity statement, and upload it to eLearn (check your eLearn account) no later than Monday, April 8. You can find more information here.

Tentative list of topics:


1. O-notation & Recurrence relations 

2. Divide-and-conquer approach 

3. Greedy algorithms 

4. Dynamic programming 

5. Graph algorithms and shortest path 


Tentative Schedule:

Week 1

04/01: Introduction

04/03: Asymptotic notations, recurrence relations

Week 2

04/08: (HW1 out) Master theorem, divide-and-conquer - Linear-time selection, Integer multiplication

04/10: more divide-and-conquer - Matrix Multiplication, Closest pair

Week 3

04/15: (Quiz 1, in class)  Finish divide-and-conquer, greedy algorithms

04/17: (HW1 due) Greedy algorithms - Interval scheduling, fractional Knapsack

Week 4:

04/22: (HW2 out) Greedy algorithms - Huffman encoding

04/24: Greedy algorithms - Finish Huffman encoding

Week 5

04/29: (Quiz 2, in class) Dynamic programming - Counting, Fibonacci, 0/1Knapsack

(Midterm 1, take home, submit by EoD)

05/01: (HW2 due) Dynamic programming - Finish /1Knapsack, longest increasing subsequence

Week 6

05/06:  (HW3 out) Dynamic programming - Longest common Subsequence

05/08: Dynamic programming - Sequence alignment. Trees - review

Week 7:

05/13: (Quiz 3, in class) Graphs - DFS on undirected graphs/BFS

05/15: (HW3 due) Graphs - DFS/BFS on directed graphs, connected components, cycle, topological ordering, etc.

Week 8

05/20: (HW4 out) Graphs - Dijkstra's shortest path algorithm

05/22: (Midterm 2*)  Graphs - Dijkstra's shortest path algorithm, Bellman-Ford

Week 9:

05/27:   (no class, holiday)

05/29: (HW4 due) Graphs - Bellman-Ford

Week 10

06/03:, (Quiz 4, in class) Floyd-Warshall, MSTs

06/05: Finish MST, Review, etc.

Finals week

06/10-06/14: Midterm 3 (a.k.a the final exam)