CS 417. Algorithms and Algorithm Analysis

Spring 2024


Announcements here.

Course Description

The study of algorithms and their mathematical analysis. Divide-and-conquer, greedy, brute-force, dynamic programming, backtracking, advanced tree and graph algorithms, big-O notation, case and amortized analysis. Prerequisites: Mathematics 230 and Computer Science 317. (Under the old GEC, this course meets the Natural Science & Mathematics requirement.)


No textbook, we will use lecture notes.

Student Learning Outcomes

Main Goals:


The course grade will be based on:
Homework 10%,
Midterms 60% (20% each),
Final Project 20%,
Attendance/Participation 10%.


There will be homework roughly every week. The homework will be posted on Moodle. Collaboration in the homework is permitted for exercises, but your work must be your own, and the code you submit must be your own (using the internet, including ChatGPT, is considered plagiarism).


There will be three midterms and no final exam. The midterms will be hand-written tests. On the midterms you must work on the problems on your own. No collaboration permitted in the exams.

The tentative dates for the exams:

Final Project

For the final project you will be given 8 questions, each question worth either 15 or 30 points. You either select a 30-point question or two 15-point questions and answer them. Answering the question includes writing code. Some questions require the code to be in Java, others can be done in either Java or Python. No other languages will be accepted. The questions can be found in Final Project Questions.

The final project is due Monday May 6 by 4:30pm. You will turn it in on Moodle. You can turn it in earlier if you wish, but projects will not be accepted after 4:30pm.

Note: The file references in Question 6 is Closest Pairs.

Note: The file references in Question 7 is Floyd-AllPairsShortestPath.


Students are expected to come to every lecture and every exam.

If the dates of the exams conflict with Lake Forest approved events, inform me as soon as possible.

Description of instructional time and expectations:

This course meets 3 times per week for 3 hours per week. The course carries 1.0 course credit (equivalent to four semester credit hours). Students are expected to devote a minimum of 12 hours of total work per week (in-class time plus out-of-class work) to this course.

Academic Honesty

Please read the College's information on Academic Honesty. If a student cheats in an exam, quiz or homework assignment, I will proceed with charging the student with the Academic Honesty Judicial Board. The usual (first) penalty is a 0 in the assignment on which the cheating occured plus some ethics lectures the student would take. The second penalty is usually suspension.
For the online exams and homework assignments, copying code from any website is considered plagiarism (including using ChatGPT). If code looks suspicious, I will ask the student to explain the code. If the explanation is unsatisfactory, the grade for that assignment will be 0.

Academic Resources, Protocols, and Policies

Click here: Academic Resources, Protocols, and Policies

Last modified on March 29, 2024.