CSCI 382
Algorithms

Time

MWF 10:10am - 11:00am (A3)

Location

MC Reynolds 314

Instructor

Dr. Brent Yorgey
yorgey@hendrix.edu
(501) 450-1377
Office Hours

Overview

Introduction to standard algorithms and algorithm design strategies, with an emphasis on constructing rigorous formal proofs of algorithm correctness and performance, as well as translating fluently between theory and practice. Strategies discussed include brute-force, greedy algorithms, divide and conquer, dynamic programming, amortization, and problem reduction. The course includes an introduction to complexity theory and the complexity classes P and NP. Prerequisites: CSCI 151 and MATH 240.

Learning Goals

Upon completing this course, you will be able to:

Resources

Advice from former students!

Calendar

Below is a unified calendar for the semester showing the topic and mode for each class meeting, as well as assignment due dates. Some specifics may change as the semester progresses, but the calendar will be kept up-to-date.

Assignment submission form Problems


Unit Date Activity / Lecture Assignments & Resources
Introduction W 26 Aug Introduction to POGIL and CSCI 382 pogil CSCI student survey
      See the induction resources linked above!
  F 28 Aug Reasons for POGIL pogil CSCI student survey due
    Brute force algorithms pogil Grading contract due
      PS 0 due (1 pt)
       
  M 31 Aug GCD analysis pogil  
  W 2 Sep Proving algorithms correct pdf stream  
Asymptotic Analysis F 4 Sep Intro to asymptotic analysis pogil PS 1 due (8 pts)
       
  M 7 Sep No class (Labor Day)  
  W 9 Sep Asymptotic analysis definitions and limit theorems pdf stream  
  F 11 Sep Asymptotic Analysis Zoo pdf stream PS 2 due (8 pts)
       
Graphs M 14 Sep Introduction to graphs pogil  
  W 16 Sep Graph proofs pogil  
  F 18 Sep Depth-first search PS 3 due (8 pts)
      Interview 1 due
       
  M 21 Sep Breadth-first search  
  W 23 Sep Bipartite graphs  
  F 25 Sep DAGs and topsort PS 4 due
    Notes on more efficient topsort algorithm Exam 1 out
       
Greedy Algorithms M 28 Sep Introduction to Dijkstra’s Algorithm pogil Grading contract evaluation due
  W 30 Sep Dijkstra’s Algorithm  
  F 2 Oct Analysis of Dijkstra’s Algorithm  
       
  M 5 Oct Exam 1  
  W 7 Oct Minimum spanning trees pogil  
  F 9 Oct Kruskal’s algorithm and the Cut Property pogil PS 5 due
      Interview 2 due
       
  M 12 Oct Union-find Union-find
  W 14 Oct Exchange arguments PS 6 due
      Midterm grades due
  F 16 Oct No class (Fall break)  
       
Divide & Conquer M 19 Oct Introduction to Divide & Conquer pogil  
  W 21 Oct Divide & Conquer Arithmetic pogil  
  F 23 Oct Master Theorem and Karatsuba’s Algorithm Divide & Conquer example: QuickSelect
      PS 7 due
      Exam 2 out
       
Dynamic Programming M 26 Oct Introduction to Dynamic Programming pogil  
  W 28 Oct DP example: high/low stress jobs Hi/lo stress job writeup
  F 30 Oct Exam 2  
       
  M 2 Nov DP example: subset sum pogil Subset sum writeup
  W 4 Nov Floyd-Warshall Grading contract evaluation due
Network Flow F 6 Nov Introduction to flow networks pogil PS 8 due
      Interview 3 due
       
  M 9 Nov Applications of flow networks  
  W 11 Nov Ford-Fulkerson  
  F 13 Nov Max flow-min cut theorem PS 9 due
      Exam 3 out
       
Amortized Analysis M 16 Nov Introduction to amortized analysis pogil  
  W 18 Nov Amortized analysis  
  F 20 Nov Amortized analysis examples  
       
  M 23 Nov Exam 3  
  W 25 Nov No class (Thanksgiving break)  
  F 27 Nov No class (Thanksgiving break)  
       
Intractability M 30 Nov INDEPENDENT-SET, SAT, and reducibility  
  W 2 Dec P and NP  
  F 4 Dec NP-completeness (with Super Mario Bros) Classic Nintendo Games are (Computationally) Hard
      PS 10 due
      Interview 4 due
       
  Th 10 Dec Final exam period (8:30-11:30)  
  F 11 Dec Last day for office hours  
       
  T 15 Dec Deadline for problem submission (5pm)  

Grading

Grading contracts

In this course, you determine your own final grade: you will prepare and submit for my approval a grading contract explaining your chosen final grade and what you will do to achieve it. You will then earn your chosen final grade by fulfilling the agreed-upon contract.

This may be different than what you are used to. Professor Cathy Davidson of CUNY perfectly sums up the reasons for doing things this way:

The advantage of contract grading is that you, the student, decide how much work you wish to do this semester; if you complete that work on time and satisfactorily, you will receive the grade for which you contracted. This means planning ahead, thinking about all of your obligations and responsibilities this semester and also determining what grade you want or need in this course. The advantage of contract grading to the professor is no whining, no special pleading, on the student’s part. If you complete the work you contracted for, you get the grade. Done. I respect the student who only needs a C, who has other obligations that preclude doing all of the requirements to earn an A in the course, and who contracts for the C and carries out the contract perfectly.

Required components of a grading contract

There is no specific format required for a grading contract, but it must have the following components:

Example grading contract

For example, a grading contract might look like this:

My desired course grade in Algorithms is a C. To achieve this grade, I will complete the following:

Warning: the above example grading contract is incomplete since it is missing at least one requirement for a C! Read the rest of the syllabus to figure out what the missing requirements are.

Grading contract submission

You must turn in an initial proposed grading contract by Friday, August 30. After the initial submission, I may require some revisions before I approve your contract.

Contract evaluation and adjustment

Two times during the semester (Monday, September 28 and Wednesday, November 4) you are required to reflect on your progress in the course and complete an evaluation of your work, comparing it against what you agreed to in your grading contract. Your evaluation should:

  1. Contain a copy of your original grading contract, with items you have completed checked off.

  2. Revise your grading contract with more specific details as appropriate.

  3. Include a 1-2 paragraph reflection, which answers questions such as the following (you do not necessarily need to answer every single question):

    • What have you done well?
    • What have you learned?
    • What could you do to improve your learning?
    • What could I (the instructor) do to improve your learning?
    • Are there ways in which you have not lived up to the requirements of your contract, and if so, what steps are you taking, or will you take, to rectify that?

Your evaluation is also an opportunity to request an adjustment to your contract in either direction. If you find that you will be unable to meet the obligations of your contract, you may request to move to a lower grade and its requirements. Contrariwise, if you find that you’ve been performing above the obligations of your contract, you may request to fulfill the requirements for a higher grade.

Note, however, that you don’t have to wait for an evaluation to adjust your contract. If your life has really gone off the rails (or if, say, you are finding the class easier and more enjoyable than you thought!) just come and talk to me about adjusting your contract.

To “complete” an assignment means to complete it at or above the required criteria for receiving credit. For example, “complete a midterm exam” means not just taking the exam, but scoring sufficiently high on the problems so as to receive credit (possibly after retaking it).

A, B, and C grades

D and F grades

[Adapted from Cathy Davidson.] You cannot intentionally contract for a grade of D (and certainly not for an F). However, I reserve the right to award a grade of D or F to anyone who fails to meet their contractual obligations in a systematic way. A “D” grade denotes some minimal fulfilling of the contract; an “F” denotes absence of enough satisfactory work, as contracted, to warrant passing of the course. Both a “D” and “F” denote a breakdown of the contractual relationship.

Midterm grades

Midterm grades will be assigned according to the following specification:


Weekly problem sets

Assignment submission form algorithms-hw.sty (LaTeX style) Problems


The core of your learning in this class will take place through weekly problem sets, due at 5pm on Fridays. Problems will be assigned daily, with each problem being worth some number of points (typically 1-3) depending on its difficulty. Each problem set will require a certain point total; you will select a portfolio of problems with at least the required total and submit your solutions all together. (You may split up a problem set into multiple submissions throughout the week, but I would prefer a single submission.)

Note that for a given problem set you may select any problems that you have not previously submitted; i.e. they do not have to be from the same week as the problem set is due. For example, if you get behind, it is up to you whether you select more recent problems to stay “up to date”, older problems to solidify your understanding of previous material, or some combination.

Problem set submission

Homework assignments must be turned in electronically, in PDF format, via the submission form. You have several options:

On-time submissions

Any problem set submission prior to a due date containing reasonable attempts at problems with at least the required point total will be counted as an on-time submission. A certain number of on-time submissions are required for various final grades, in addition to certain point totals.

There is no way to submit a problem set “late”. If you submit a problem set after a deadline, it will simply count as an on-time submission for the next deadline (assuming it has a sufficient point total; if not, you may submit additional problems before the deadline). Problem sets submitted after the final problem set deadline (December 4) will not count towards your on-time submission total, though they will still count towards your problem completion total.

Problem grading

Each solution on a problem set or exam will be marked on the following scale:

In addition to the mark, feedback will be provided explaining how you can improve (with the only exception that feedback may not always be provided for solutions marked “E”).

Problem resubmission

If you do not get credit (S or E) for a problem, you may turn in a revised version within one week of receiving feedback. A problem may be revised as many times as necessary, as long as each revision is turned in within one week of receiving feedback on the previous submission.

If you do not revise a problem within one week, then you lose your chance to receive credit for that problem.

You may turn in problem revisions separately, or you may bundle them together with your next problem set submission. Note, however, that revised problems do not count towards the required point total for a problem set.

Interviews

You will complete four interviews with me throughout the semester. Each interview is a one-on-one meeting with me in my office that you will schedule and attend.

Of course, you are welcome and encouraged to sign up for additional office hour meetings beyond the required interviews!

Interview deadlines

Each interview must be completed by the dates listed below; for example, the first interview must be completed by Friday, September 18.

Interview Due date
1 9/18
2 10/9
3 11/6
4 12/4

As part of your grading contract, you will sign up in advance for interview times throughout the semester. However, I recognize that schedules can change. If you need to reschedule an interview, just let me know.

More details about interviews coming soon!

Exams

# Exam Out Date
1 Exam 1 F Sep 25 M Oct 5
2 Exam 2 F Oct 23 F Oct 30
3 Exam 3 F Nov 13 M Nov 23

There will be three midterm exams. Each exam will be distributed at least one week ahead of its administration date. Once you receive the exam, you may:

On the exam administration date, you will take the exam during class, with no external resources allowed; you must recreate your solutions from memory. Thorough understanding of the solutions, rather than memorization, will be the best strategy for ensuring success.

Exam grading

Exam problems will be marked in the same manner as homework problems. To receive credit for an exam, you must receive a mark of ‘S’ or better on all exam problems.

Exam revision

If you do not receive credit for an exam, you may retake it at a mutually agreed time, possibly with different but similar questions (you will also be given the new problems in advance, just as with the original exam). Note that you only need to retake problems you did not receive credit for; you do not need to retake the entire exam.

Expectations

Although you and I play different roles in the course, we both have your learning as a common goal. There are things I expect from you as a student in the course, but there are also things you can expect of me as the course instructor and facilitator.

If I am not fulfilling my responsibilities outlined below, you are welcome (and encouraged!) to discuss it with me.. I will also initiate a conversation if you are not fulfilling yours. However, none of us will meet all of the expectations perfectly—me included!—so it’s also important that we have grace and patience with one another.

What I expect from you What you can expect from me
Communication
  • Check your email and Teams for occasional course announcements.
  • Let me know if you will need to miss class.
  • Let me know as soon as possible if you feel you are struggling, would like extra help, or have something going on that will affect your engagement in the course or your ability to fulfill your responsibilities.
  • Clearly communicate expectations, assignment details and dates, and grading standards.
  • Return grades and feedback on submitted work within 7 days of submission.
  • Provide a way for you to view your current grades in the course.
  • Respond to emails within 24 hours.
Preparation
  • Come prepared to fully engage in class meetings, with distractions minimized, to the best of your ability.
  • Spend time outside of class actively practicing unfamiliar or shaky concepts or skills (not just reading over notes).
  • Have a concrete plan for how we will spend each class meeting, prepared to lead you through the plan.
  • Complete all homework and exam questions myself, to help ensure they are reasonable and don't hold any unintended surprises.
Engagement
  • Make myself available to meet outside of class, and give you my full attention during a meeting.
  • Be committed to your learning, open to feedback and willing to respond in substantive ways to your suggestions or concerns.

Attendance

Attending class and being an active participant in the class community is one of the most important contributors to your learning. Attendance is especially important in this class since you will often engage in group learning activities.

Generative AI

Generative AI/LLM use in this class is strictly prohibited and will be considered an academic integrity violation. This is for a number of reasons:

In case you are worried I am being hypocritical, I have made a personal commitment not to use LLMs at all. You may also be interested in reading these reflections I wrote for my students last year.

Academic Integrity

Discussion and collaboration on the problem sets is encouraged. However, solutions must be written up individually. Copying another student’s writeup, in whole or in part, or directly collaborating on a writeup, will be considered an academic integrity violation. Insightful discussion with others must be cited in your homework solutions. You will not lose credit for such citations.

Hendrix College is committed to high standards of honesty and fairness in academic pursuits. Such standards are central to the process of intellectual inquiry, the development of character, and the preservation of the integrity of the community. Please familiarize yourself with the statement of Academic Integrity.

You should also familiarize yourself with the Computer Science-specific Academic Integrity Policy.

Disabilities

If you have a documented disability or some other reason that you cannot meet the above expectations, and/or your learning would be best served by a modification to the usual course policies, I would be happy to work with you—please get in touch (via Teams or email)! The course policies are just a means to an end; I don’t care about the policies per se but I do care about you and your learning.

It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.

Diversity & Inclusion

Hendrix College values a diverse learning environment as outlined in the College’s Statement on Diversity. All members of this community are expected to contribute to a respectful, welcoming, and inclusive environment for every other member of the community. If you believe you have been the subject of discrimination, please contact the Dean of Students Office (Donna Eddleman, Eddleman@hendrix.edu, 501-450-1222) or the Title IX Coordinator (JenniferFulbrighttitleix@hendrix.edu, 501-505-2901). If you have ideas for improving the inclusivity of the classroom experience, please feel free to contact me. For more information on Hendrix non-discrimination policies, visit hendrix.edu/nondiscrimination.

Mental & Physical Health

Hendrix recognizes that many students face mental and/or physical health challenges. If your health status will impact attendance or assignments, please communicate with me as soon as possible. If you would like to implement academic accommodations, contact Julie Brown in the office of Academic Success (brownj@hendrix.edu). To maintain optimal health, please make use of free campus resources like the Hendrix Medical Clinic or Counseling Services (501.450.1448). Your health is important, and I care more about your health and well-being than I do about this class!