Course Syllabus

Teaching Mode (Hybrid and Online)

UPDATE: Starting March 23, the lectures will be in classroom PV 167 and on Zoom. The classroom has a capacity of 25 students. Please attend in-person if and only if your visa requires in-person attendance.

  • If your last name starts with a letter from A to M, please attend the Tuesday lectures in person.
  • If your last name starts with a letter from N to Z, please attend the Thursday lectures in person.

The lectures will be online for the first 75% of the course (Zoom) and they will be simultaneously in-person and online for the last 25% of the course. If you need the in-person credit, sign up for the hybrid lecture section 37486. If you don't care about the in-person credit, sign up for the online lecture section 9635. Students in any of the sections will be allowed to attend the in-person lectures in the later part of the course. All of the labs will be conducted online.

Lecture: Tue. and Thu. 11:30A-12:45P in PV 167 and on Zoom

Lab: Friday 1:45P-2:35P or 3:00P-3:50P on Zoom

(the lab zoom has the same password as the lecture)

Instructors

If you have a question about grades, please direct your question to the teaching assistant responsible for students whose first letter of their last name is in the range given below.

  • Jeremy Siek (jsiek), office hours: Tuesdays and Thursdays 4:30-5:30pm on zoom (same password as lecture)
  • Chao-Hong Chen (chen464), office hours: Tuesdays 1-3pm on the Lab Zoom, student grades: A to G
  • Bhumika Agrawal (bagrawal), office hours: Wednesdays 10am - 12pm on the Lab Zoom, student grades: H to M.
  • Rupesh Deshmukh (rddeshmu), office hours: Mondays 3-5pm on the Lab Zoom, student grades: N to R.
  • Stephen Karukas (skarukas), office hours: Wednesdays 1-3pm on the Lab Zoom, student grades: S to Z.

Course Description

The objective of the course is to study the principles for the design and analysis of efficient algorithms and their implementations. Prior programming experience in C/C++, Java or Python is expected. The important themes that will be covered by this course include
- Basic principles for algorithm design
- Analysis of algorithms and asymptotic notations
- Recurrences
- Sorting and order statistics
- Heap and Priority Queue
- Divide-and-Conquer algorithms
- Greedy algorithms
- Dynamic programming algorithms
- Amortized analysis
- Graph algorithms
- Flow in networks

Required Textbook

Introduction to Algorithms, Third Edition. Author(s): Cormen, Leiserson, Rivest, and Stein; ISBN-13: 978-0262033848 [CLRS]

Late Homework Policy

You may submit homework and labs up to one week late with a 10% reduction in the grade for that assignment.

Resources

  • Slack Workspace link (for questions both during and after class)
  • Autograder link (for turning in programming assignments)
  • IntelliJ IDE link (download the Community Edition)
  • Rationale for using half-open intervals is here
  • Books for learning Java
    • Head First Java, 2nd Edition.
    • Core Java Volume I – Fundamentals, 11th Edition.

Schedule of Topics

Week

Contents

1
Module 0: Algorithm warm-up; Reading Chapter 1, 2.1. Jan. 19 lecture notes and video. Jan. 21 lecture notes and video. Jan. 22 lab notes.
2
Module 1: Algorithm Analyses and Asymptotic notations; Reading 2.2, 3. Jan. 26 lectures notes and video. Jan. 28 lecture notes and video.
3
Module 2: Divide-and-Conquer algorithms; Reading: 2.3, 4.1, 4.2. Feb. 2 lecture notes and video. Feb. 4 lecture notes and video.
4
Module 3: Master Theorem; Reading: 4.4, 4.5. Feb. 9 lecture notes and video. Feb. 11 lectures notes (Quicksort) and video.
5
Module 4: Sorting algorithms; Reading: 7, 8, 9.2. Feb. 16 no class (IU Wellness Day). Feb. 18 lecture notes and video.
6
Module 5: Greedy Algorithms; Reading: 16. Feb. 23 lecture notes and video. Feb. 25 lecture notes and video.
7
Module 6: Dynamic programming Algorithms; Reading: 15. March 2 lecture notes and video. March 4 lecture notes and video.
8 Midterm Review (March 9) notes and video, Midterm Exam (March 11)
9 Module 7: Heap; Reading 6. March 16 lecture notes and video. March 18 lecture notes and video.
a10
Module 8: Amortized Analyses, Binomial Heaps; Reading 17, 19. March 23 lecture notes and video. March 25 lecture notes and video.
11
Module 9: Graph algorithms: connectivity problems; Reading 22. March 30 lecture notes and video. April 1 lecture notes and video.
12 Module 10: Graph algorithms: Shortest distance problems; Reading 24, 25.2. April 6 lecture notes and video. April 8 lecture notes and video.
13 Module 11: Graph algorithms: minimum spanning tree; Reading 23. April 13 lecture notes and video. April 15 lecture notes and video.
14 Module 12: Graph algorithms: flow in network; Reading 26. April 20 lecture notes and video.
15
Review for the Final Exam (no lab this week). Lecture notes. April 27 video. April 29 video.
16 Final exam:  May 6 (Thursday) 7:45-9:45 a.m.

 

Course Summary:

Date Details Due