Instructor: James Skon
Office: Chalmers 428
Phone: 740-427-5369
Department: Computing
Class Location: Chalmers 320
Meeting Times: Monday, Wednesday, Friday, 9:10-10:00 AM
Office Hours
Times: Monday, Wednesday, Friday 9:00–11:00 AM (Chalmers 428)
Appointments: [Book Meeting Link]
Walk-ins welcome, but students with appointments will be given priority.
Class Tutor: TBA
MSSC Hours: TBA
Course Description and Learning Objectives
This course explores the design, analysis, and application of algorithms using Skiena’s The Algorithm Design Manual (3rd Edition) as the primary text. Students develop fluency in core algorithmic techniques—divide and conquer, greedy algorithms, dynamic programming, graph algorithms, network flow, randomized algorithms, and heuristics—while also learning to analyze algorithmic complexity and correctness.
A major focus of the course is applying algorithmic thinking across disciplines. Students will work with real datasets and problem domains from cultural heritage, environmental science, public health, art and design, political science, and AI evaluation. The goal is to experience algorithms as practical tools for solving real-world problems, not just abstract exercises.
Another important component is engineering correct, efficient, and readable implementations. Many labs involve experimentation, performance measurement, and comparing algorithmic strategies.
Prerequisites:
COMP 218 (Data Structures) or equivalent foundational course.
MATH 112 (Calculus II) or higher.
This course does not count toward the mathematics major.
Course Text and Resources
Primary Textbook:
The Algorithm Design Manual, 3rd Edition, Steven S. Skiena.
(Springer, ISBN 978-3-030-54256-6)
Recommended:
Skiena’s online “Hitchhiker’s Guide to Algorithms,” problem catalog, and datasets.
Programming Environment:
Students may use C++, Python, or Java depending on lab requirements.
GitHub Classroom will be used for distribution and submission of labs.
Moodle:
All quizzes, exams, and lab submissions will be through Moodle unless otherwise noted.
Artificial Intelligence (AI) Use Policy
AI tools (ChatGPT, GitHub Copilot, etc.) may only be used when explicitly allowed in specific assignments. Allowable uses may include:
- generating test data
- writing test drivers
- reviewing and commenting on your own code
- generating visualizations
Prohibited uses (unless explicitly permitted):
- generating code solutions
- fixing or completing your lab or project work
- using online solutions (StackOverflow, GitHub repositories, etc.)
Using AI or online sources to produce assignment code constitutes academic dishonesty. All submitted work must reflect your own understanding. If in doubt, ask before using AI.
Grading and Evaluation Criteria
Component Percentage
Quizzes 10%
Homework 25%
Labs (6 total) 35%
Midterm Exam 10%
Final Exam/Final Project 20%
Total 100%
Assessments
Quizzes:
Frequent short quizzes at the start or end of class based on reading and recent topics.
Lowest n quiz scores will be dropped.
No makeup quizzes except for documented long-term circumstances.
Labs (10):
Weekly to biweekly labs form the backbone of the course.
Labs involve implementing algorithms, analyzing performance, and applying methods to real datasets.
Some labs are interdisciplinary and use external data sources.
Exams:
Midterm Exam: in-class exam before Spring Break.
Final Exam or Final Project: To be announced (may include both algorithmic problems and a programming component).
Participation and Engagement:
Attendance, engagement, participation in discussion, and ability to explain your code when asked.
Programming Assignment Grading Criteria
Correctness: Meets requirements, handles all inputs.
Design: Includes appropriate algorithms, structure, and decomposition.
Implementation Quality: Clean, readable, documented code.
Efficiency: Time and space usage appropriate for the problem.
Robustness: Programs should compile; non-compiling labs earn at most 50%.
Runtime Issues: Programs with runtime errors earn at most 75%.
Late Policy
Late submissions are accepted only with prior permission via the Request Form.
One Week Extension: Must request at least one week before due date.
Three-Day Extension: Must request three days before due date.
24-Hour Extension: Must request before the assignment deadline.
Do not modify submissions after the deadline without permission.
Academic Honesty
All work must reflect your own understanding. Collaboration must follow instructions for each assignment. Violations will be handled under the college’s Academic Honesty Policy.
Study Tips
- Read assigned textbook sections before class.
- Take notes on confusing concepts to ask during discussion.
- Start labs early; many require iterative refinement and debugging.
- Attend office hours or tutoring early and often.
- Practice solving algorithmic problems regularly.
Labs (10 Total)
Lab 1: Algorithm Analysis and Benchmarking
Measure performance of simple algorithms; build empirical complexity intuition.
Lab 2: Divide and Conquer
Implement merge sort or quicksort; analyze recursion behavior.
Lab 3: Greedy Algorithms – WiFi Planning
Lab 4: Dynamic Programming for the Gallery
Lab 5: Profiling Naive vs FFT Convolution
Lab 6: Hashing in Exhibition Layout Design
Lab 7: Gallery Layout final
Greedy, hill climbinhg, annealing.
Schedule
| Date | Slides | Examples | Section / Topic / Reading | Due |
|---|---|---|---|---|
| Jan 12 | Intro | Algorithmic Thinking System Setup | Course overview; asymptotics review; Skiena Ch. 1 | |
| Jan 14 | Algorithm Analysis Benchmarking | Mathematical foundations; empirical performance | ||
| Jan 16 | Divide & Conquer I | Matrix Sum Multiplication One Sided Search | Skiena Ch. 5; recursion warm-up | |
| Jan 19 | Divide & Conquer II | Karatsuba Parallel Merge Sort | Case studies; recursion tree analysis | Lab 1 |
| Jan 21 | Algorithm Engineering | Profiling Tools | Runtime measurement; optimization basics | |
| Jan 23 | Greedy Algorithms I | MST | greedy design patterns | |
| Jan 26 | Greedy Algorithms II | Counterexamples | Matroids; when greedy strategies fail | |
| Jan 28 | Applied: Exhibition Layout | Spatial heuristics | Hybrid greedy/backtracking strategies | |
| Jan 31 | Gund Gallary Tour Dynamic Programming I | |||
| Feb 2 | Gallery Considerations | |||
| Feb 4 | Brain Storming for Gallery | |||
| Feb 6 | Backtracking | Examples | Skiena Ch. 9 | Gallery Writeup |
| Feb 9 | Dynamic Programming I | Demo Programs Edit distance Text alignment Segmentation models | Graph modeling; representations | |
| Feb 11 | Dynamic Programming II BOARD PROBLEM | Subset sum | Geographic shortest-path modeling | |
| Feb 13 | Hashing | Skiena Ch. 6, hashing | Lab 3 | |
| Feb 16 | Card Sorting Gallery Visit Prep | Skiena Ch. 5; disjoint-set deep dive | Lab 2 Lab 4 | |
| Feb 18 | Gallery Visit Field Guide | Lab 5 | ||
| Feb 20 | Gallery Synthesis | |||
| Feb 23 | disjoint-set | Skiena Ch. 7 Stable/bipartite matching | ||
| Feb 25 | Hill Climbing | |||
| Feb 27 | Midterm Exam | Study Guide | In-class exam | |
| Mar 2–13 | Spring Break | No class | ||
| Mar 16 | Gallery Plan | Gallery-Framework Gallery-algorithms-framework-python | Lab 6 | |
| Mar 18 | YMAL Representations Anealing | YAML Ideas | ||
| Mar 20 | Gallery – Defining the evaluator The Starter Code | Evaluation Functions Simple Layout generator with Visualizor | ||
| Mar 23 | Jodi – Evaluating Layouts. | Proposals fot program assignment | ||
| Mar 25 | ||||
| Mar 27 | Group Meetings | In Class Activity | Code review and proposals | |
| Mar 30 | Discuss Evaluation Design | |||
| Apr 1 | Propose Hillclimbing Structure | Scoring Ideas | Group Interface Proposal | |
| Apr 3 | Design Hill climbing UI. | Designing the Scoring Model | ||
| Apr 6 | Gallary Platform Docs | Refining Scoring Process | ||
| Apr 8 | Backtracking | CSP applications | Designing the Curator Interface | |
| Apr 9 | Visit to Divelbiss | |||
| Apr 10 | No Class | |||
| Apr 13 | Ecosystem modeling | Workflow Assignment | ||
| Apr 15 | Python Dev Platform | Advanced approximation | ||
| Apr 17 | The Gallery Platform | |||
| Apr 20 | Greedy Enhancements The Greedy Challenge | Gallery Builder | ||
| Apr 22 | Hill Climbing for the Gallery | |||
| Apr 24 | Discuss Hill Climbing | Greedy Improvement | ||
| Apr 27 | Simulated Anealing | |||
| Apr 29 | NP-HARD Problems | |||
| May 1 | Solving Hard Problems | Hill Climbing and Anealing | ||
| May 6 | FInal Presentation 8:30 AM | Present final work on Gallery Project |
