The syllabus for the course can be found here. Most (but not all) of that information is summarized here.
Lectures will be held in-person in the classroom listed on the University Registrar. Lectures will be recorded for the convenience of those who cannot intend or prefer not to for any reason.
The class schedule depends on the day of the week. On Mondays and Wednesdays, we will have a traditional lecture in which material is presented to you by the instructor. On Fridays, we will do one of three things: Take an in-person quiz (2 total), work together on a homework assignment (6 total), or cancel class.
Class attendance is mandatory. Every lecture, I will have a computer program randomly select 20 names from the roster. If your name is chosen and you are not present on class for any reason, then your participation score will drop by 2 percentage points (you will lose 2 of the 12 percent participation grade). I have a good reason for instituting this policy, which will be justified to you in person during the first class period.
Our classroom is a no technology zone (except for the projector used for the slides) during traditional lectures (Mondays and Wednesdays). The purpose of this policy is to ensure students are present and paying attention to the lecture consistently. If you use technology during lecture, then I will consider you absent and deduct from your participation score. I will also justify this policy to you verbally during the first class period. On Fridays, you will use your laptops to work on homework assignments collaboratively with others.
We’ll post readings from the following two sources (one is a textbook, the other a curated website of algorithms concepts). We urge you to read them or get that info from another source.
Introduction to Algorithms by Cormen, et. al., 3rd edition. Referred to as “CLRS”. UVA Library has a digital version of CLRS available online for free * CP-Algorithms. A curated website of algorithm ideas for competitive programming (https://cp-algorithms.com)
The course covers the following topics:
There will be six programming challenges that we will give for homework. Each assignment should be done individually, but high-level discussion is allowed. Each assignment will consist of a problem statement and sample input/output. Gradescope will be available for submissions and assignments will be autograded. The general flow for homework assignements is:
There will be two quizzes given throughout the term. Please reference the course schedule for details on the dates and content of each quiz. Each quiz will be short and is meant to quickly test your basic understanding of the concepts from class. These will be held in-person, in-class, on specific Fridays throughout the term. The schedule can be referenced to see which Friday class periods have quizzes scheduled.
There is NO final exam for this class. Instead, there is a final project. Each student will join a group of other students (3-4 per group) and be given an algorithm to study on their own. The group will need to do the following for their algorithm:
More details on this project will be provided once it is available.
This course will use a standard weighted-average grading system. The grade breakdown is shown below: