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, 1:10–2:00 PM

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 15%
Labs (10 total) 40%
Midterm Exam 15%
Final Exam/Project 30%
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
Solve interval scheduling or similar tasks; evaluate when greedy strategies succeed or fail.

Lab 4: Dynamic Programming
Implement edit-distance or sequence alignment; apply to textual/cultural data.

Lab 5: Graph Algorithms I
Implement BFS/DFS; analyze connectivity and structure.

Lab 6: Graph Algorithms II
Implement shortest paths or MST; use union–find.

Lab 7: Network Flow and Matching
Implement max-flow/min-cut or bipartite matching; apply to community health or network tasks.

Lab 8: Randomized and Hashing Algorithms
Explore randomized quicksort, universal hashing, or probabilistic methods.

Lab 9: NP-Complete Problems and Heuristics
Experiment with heuristics for SAT, TSP variants, or partitioning.

Lab 10: Interdisciplinary Applied Project
Choose a dataset or domain (AI alignment, ecology, political mapping, gallery layout, cultural heritage, etc.); design, implement, and evaluate an algorithmic solution.


Tentative Schedule (High-Level)

Weeks 1–2: Algorithm Analysis; Mathematical Foundations; Skiena Ch. 1–2
Weeks 3–4: Divide and Conquer; Recursion; Skiena Ch. 5
Weeks 5–6: Greedy Algorithms and Heuristics; Skiena Ch. 4
Weeks 7–8: Dynamic Programming; Skiena Ch. 6
Weeks 9–10: Graph Algorithms; Shortest Paths; MSTs; Skiena Ch. 5
Week 11: Network Flow and Matching; Skiena Ch. 7
Week 12: Randomized and Approximation Algorithms
Week 13: NP-Completeness and Hard Problems; Skiena Ch. 12–13
Weeks 14–15: Interdisciplinary Applications and Project Work
Finals Week: Final Exam or Final Project Presentations


DateSlidesExamplesSection / Topic / ReadingQuizDue
Jan 12IntroAlgorithmic ThinkingCourse overview; asymptotics review; Skiena Ch. 1
Jan 14Algorithm AnalysisBenchmarkingMathematical foundations; empirical performance1
Jan 17Divide & Conquer IMerge SortSkiena Ch. 5; recursion warm-up2
Jan 19Divide & Conquer IIFFT overviewCase studies; recursion tree analysis
Jan 21Algorithm EngineeringProfiling ToolsRuntime measurement; optimization basics3
Jan 24Greedy Algorithms IInterval SchedulingSkiena Ch. 4; greedy design patterns
Jan 26Greedy Algorithms IICounterexamplesMatroids; when greedy strategies fail4
Jan 28Applied: Exhibition LayoutSpatial heuristicsHybrid greedy/backtracking strategies
Jan 31Dynamic Programming IEdit distanceSkiena Ch. 6; DP introduction5
Feb 2Dynamic Programming IIText alignmentCultural heritage applications
Feb 4Dynamic Programming IIISegmentation modelsMachine summarization alignment6
Feb 7Graphs IBFS / DFSGraph modeling; representations7
Feb 9Graphs IIShortest pathsDijkstra; Bellman–Ford
Feb 11Applied: Community HealthFacility accessGeographic shortest-path modeling
Feb 14MST and Union–FindKruskal; PrimSkiena Ch. 5; disjoint-set deep dive8
Feb 16Applied: Environmental ClusteringHabitat networksEcological datasets
Feb 18Network Flow IMax-flowSkiena Ch. 79
Feb 21Network Flow IIMatchingStable/bipartite matching
Feb 23Midterm ReviewCase studiesComprehensive reviewLab 1
Feb 28Midterm ExamIn-class exam
Mar 2–13Spring BreakNo class
Mar 16Approximation AlgorithmsVertex coverNP-hardness introduction10
Mar 18NP-CompletenessReductionsSkiena Ch. 12
Mar 20Hard ProblemsSAT; CliqueReduction practice11
Mar 23Heuristics ILocal searchSimulated annealing; hill climbing
Mar 25Randomization IRandomized quicksortProbabilistic analysis12
Mar 27Randomization IIUniversal hashingRandomization techniques
Mar 30Applied: AI HallucinationSummary alignmentRanking; clustering; dynamic programming13
Apr 1String AlgorithmsSuffix structuresText indexing; pattern search
Apr 3Data-driven AlgorithmsEmbedding graphsReal dataset analysis14
Apr 6Political MapsGerrymanderingGraph partitioning
Apr 8Constraint SatisfactionBacktrackingCSP applications15
Apr 10Gallery Layout Optimization IIConstraint solvingGund Gallery datasets
Apr 13Biological AlgorithmsClusteringEcosystem modeling16
Apr 15Approximation IIPTAS conceptsAdvanced approximation
Apr 17Wrap-up TopicsCase studiesAlgorithmic synthesis17Lab 7
Apr 20Final Review IAlgorithms panoramaExam preparation
Apr 22Final Review IIMixed problemsTargeted practice18
Apr 24Course SynthesisInterdisciplinary wrapConceptual integration
Apr 27Final Review IIIStrategy and tipsFinal Q&A
May 1Last ClassQ&ACourse evaluations and closing
Scroll to Top