COMP 368 – Applied Algorithms

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


DateSlidesExamplesSection / Topic / ReadingDue
Jan 12IntroAlgorithmic Thinking
System Setup
Course overview; asymptotics review; Skiena Ch. 1
Jan 14Algorithm Analysis
Benchmarking
Mathematical foundations; empirical performance
Jan 16Divide & Conquer IMatrix Sum
Multiplication
One Sided Search
Skiena Ch. 5; recursion warm-up
Jan 19Divide & Conquer IIKaratsuba
Parallel Merge Sort
Case studies; recursion tree analysisLab 1
Jan 21Algorithm EngineeringProfiling ToolsRuntime measurement; optimization basics
Jan 23Greedy Algorithms I
MSTgreedy design patterns
Jan 26Greedy Algorithms IICounterexamplesMatroids; when greedy strategies fail
Jan 28Applied: Exhibition LayoutSpatial heuristicsHybrid greedy/backtracking strategies
Jan 31Gund Gallary Tour
Dynamic Programming I
Feb 2Gallery Considerations
Feb 4Brain Storming for Gallery
Feb 6BacktrackingExamplesSkiena Ch. 9 Gallery Writeup
Feb 9Dynamic Programming I
Demo Programs
Edit distance
Text alignment
Segmentation models
Graph modeling; representations
Feb 11Dynamic Programming II
BOARD PROBLEM
Subset sumGeographic shortest-path modeling
Feb 13HashingSkiena Ch. 6, hashingLab 3
Feb 16Card Sorting
Gallery Visit Prep
Skiena Ch. 5; disjoint-set deep diveLab 2
Lab 4
Feb 18Gallery Visit
Field Guide
Lab 5
Feb 20Gallery Synthesis
Feb 23disjoint-set
Skiena Ch. 7
Stable/bipartite matching
Feb 25Hill Climbing
Feb 27Midterm ExamStudy GuideIn-class exam
Mar 2–13Spring BreakNo class
Mar 16Gallery PlanGallery-Framework
Gallery-algorithms-framework-python
Lab 6
Mar 18YMAL Representations
Anealing
YAML Ideas
Mar 20Gallery – Defining the evaluator
The Starter Code
Evaluation Functions
Simple Layout generator with Visualizor
Mar 23Jodi – Evaluating Layouts.Proposals fot program assignment
Mar 25
Mar 27Group MeetingsIn Class ActivityCode review and proposals
Mar 30Discuss Evaluation Design
Apr 1Propose Hillclimbing StructureScoring Ideas
Group Interface Proposal
Apr 3Design Hill climbing UI. Designing the Scoring Model
Apr 6Gallary Platform DocsRefining Scoring Process
Apr 8BacktrackingCSP applicationsDesigning the Curator Interface
Apr 9Visit to Divelbiss
Apr 10No Class
Apr 13Ecosystem modelingWorkflow Assignment
Apr 15Python Dev Platform Advanced approximation
Apr 17The Gallery Platform
Apr 20Greedy Enhancements
The Greedy Challenge
Gallery Builder
Apr 22Hill Climbing for the Gallery
Apr 24Discuss Hill ClimbingGreedy Improvement
Apr 27Simulated Anealing
Apr 29NP-HARD Problems
May 1Solving Hard ProblemsHill Climbing and Anealing
May 6FInal Presentation
8:30 AM
Present final work on Gallery Project
Scroll to Top