Meeting Times: | TR 11:00 am – 12:15 pm, JFRM 022 |
---|---|
Instructor: | Ian Finlayson |
Email: | ifinlay@umw.edu |
Office: | Farmer 043 |
Office Hours: | TR 8:30 am – 11:00 am, or by appointment |
Prerequisite: CPSC 340. Covers a repertoire of algorithmic problem-solving techniques including greedy algorithms, divide and conquer approaches, dynamic programming, and graph and network algorithms. Covers canonical problems that arise within computer science and standard algorithms to solve them. Emphasizes practical application through coding exercises, problem solving, and collaborative algorithm design.
After completing this course, students will be able to:
This class will be a flipped classroom with lots of in-class time spent working in teams on programming problems. When we begin a new topic, you will be assigned a reading or video to watch. The schedule below has links to what you should read or watch before each class period. On the days in which these are assigned, we will have a brief quiz on the material. If you miss a quiz, you can make it up during my office hours, or the next class period. We will then go over it together in class, and work on example problems and concepts together.
You will then get into your teams where you will work on programming problems based on the material we cover. These will be stored in the Domjudge programming contest software, so you can submit them in class as many times as you like and they will be evaluated automatically. These do not have a specific due date, but your team should try not to get too far behind, as new problems will be added each week.
This class is structured this way to maximize our time working together on the problems, which most closely works the way computer scientists work together in industry and academia.
This class has no final exam. The final exam period will be reserved for your team to work on any problems they haven't finished yet.
This class will used an XP-based grading scale. Each quiz is worth 15 points. Each day you attend class and actively participate is worth 10 points. Each problem you and your team correctly solve is worth 15 points. Based on the number of class days we have, and the number of quizzes and problems I expect we'll have across the semester the maximum XP available will be at least 800. I may add additional XP opportunities at my discretion.
Your final grade will be calculated using the following table:
Grade | XP Threshold |
---|---|
A | 750 |
A- | 725 |
B+ | 700 |
B | 675 |
B- | 650 |
C+ | 625 |
C | 600 |
C- | 575 |
D+ | 550 |
D | 500 |
F | 0 |
Students are expected to conduct themselves in a manner consistent with the letter and spirit of the Honor Constitution and CPSC department honor policy
For this class, you should not receive unauthorized help on the quizzes. For the team programming problems, you should work together within your team only. You can search the web or use AI for small pieces of a problem (like "how to split a string into a list with Python"), but not for entire programs (like "how to solve the coin row problem in Python").
If you have any questions or need clarification, please don't hesitate to contact me!
The Office of Disability Resources has been designated by the university as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, please provide me a copy of your accommodation letter via email or during a meeting. I encourage you to follow-up with me about your accommodations and needs within this class. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise.
If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, their office is located in Seacobeck 005, phone number is (540) 654-1266 and email is odr@umw.edu. The office will require appropriate documentation of disability.
University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the confidential resources found below. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator, their contact information can be found below. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.
Classroom activities in this course may be recorded by student's enrolled in the course for the personal, educational use of that student or for all students presently enrolled in the class only, and may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the course instructor. All students are advised that classroom activities may be taped by students for this purpose. Distribution or sale of class recordings is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of copyright law. This policy is consistent with UMW's Policy on Recording Class and Distribution of Course Materials.
Date | Class Topic | Viewing / Reading | Problem Assigned |
---|---|---|---|
August 26 | Course Introduction, Stable Marriage Problem | ||
August 28 | Stable Marriage Problem continued, Domjudge Setup | ||
September 2 | Greedy algorithms | Activity Selection Problem | |
September 4 | Greedy algorithms continued | ||
September 9 | Divide and Conquer | ||
September 11 | Divide and Conquer continued | ||
September 16 | Graph Search | ||
September 18 | Graph Search continued | ||
September 23 | No Class | ||
September 25 | Decrease and Conquer | ||
September 30 | Simulation | ||
October 2 | No Class | ||
October 7 | String algorithms | ||
October 9 | String algorithms continued | ||
October 14 | ![]() | ||
October 16 | Disjoint sets | ||
October 21 | Dynamic programming | ||
October 23 | Dynamic programming continued | ||
October 28 | Dynamic programming continued | ||
October 30 | Dynamic programming continued | ||
November 4 | ![]() | ||
November 6 | Backtracking | ||
November 11 | Network flow | ||
November 13 | Network flow continued | ||
November 18 | Combinatorics | ||
November 20 | Computational Geometry | ||
November 25 | Randomness | ||
November 27 | ![]() | ||
December 2 | Distributed algorithms | ||
December 4 | Distributed algorithms | ||
December 9 | Final Exam Period, 12:00 – 2:30 |
Copyright © 2025 Ian Finlayson | Licensed under a Creative Commons BY-NC-SA 4.0 License.