Applied Algorithms (Spring 2021)
Applied Algorithms (Spring 2021)
Teaching Mode (Hybrid and Online)
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 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)
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.
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
- Sorting and order statistics
- Heap and Priority Queue
- Divide-and-Conquer algorithms
- Greedy algorithms
- Dynamic programming algorithms
- Amortized analysis
- Graph algorithms
- Flow in networks
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.
- 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
||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.
||Module 1: Algorithm Analyses and Asymptotic notations; Reading 2.2, 3. Jan. 26 lectures notes and video. Jan. 28 lecture notes and video.
||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.
||Module 3: Master Theorem; Reading: 4.4, 4.5. Feb. 9 lecture notes and video. Feb. 11 lectures notes (Quicksort) and video.
||Module 4: Sorting algorithms; Reading: 7, 8, 9.2. Feb. 16 no class (IU Wellness Day). Feb. 18 lecture notes and video.
||Module 5: Greedy Algorithms; Reading: 16. Feb. 23 lecture notes and video. Feb. 25 lecture notes and video.
||Module 6: Dynamic programming Algorithms; Reading: 15
|9||Module 7: Heap; Reading 6|
||Module 8: Amortized Analyses; Reading 17, 19|
||Module 9: Graph algorithms: connectivity problems; Reading 22|
|12||Module 10: Graph algorithms: Shortest distance problems; Reading 24, 25.2|
|13||Module 11: Graph algorithms: minimum spanning tree; Reading 23|
|14||Module 12: Graph algorithms: flow in network; Reading 26|
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.