CS 124: Data Structures and Algorithms

Professor Michael Mitzenmacher


  • Mar 25:
  • Hi everyone,

    The autograder for Programming Assignment 2 has been changed, and the process for submitting should now be significantly simpler. Essentially, you will only submit two files to Gradescope:
    1. A writeup PDF
    2. One of strassen.c, strassen.cpp, strassen.py, or strassen.java. Note that these file names are cAsE sEnSiTiVe.
    The autograder will take care of the compiling the code and running it. With regards to the environment that the autograder uses: the following language versions are supported, so make sure your local tests are compatible with these versions: With the exception of Python 3 vs Python 2, all of these versions are largely backward-compatible, so just make sure that you're not using any features from anything newer. If you have already made a submission to Gradescope, you will need to resubmit. In particular, if your code is split across multiple files, you will need to merge it into a single file.

    I hope that this makes the submission process easier for everyone, but if you continue to have to trouble, please follow up to this thread or make a private Piazza post.

  • Mar 20:
    Next week's lectures are now available online. I would recommend watching them approximately at the usual time, subject to your convenience. (There's no reason to binge-watch lectures, or to watch them before vacation ends, but I wanted to make them available.) I have put up the 2017 lecture on Bloom filters and hashing; this covers the same material as for the 2020 lecture, but you may want to review the last 30 minutes or so, both to get back into the class, and because I got to a bit more I didn't get to in our last lecture. The next lectures are more on randomness: fingerprinting, primality testing, and RSA. The corresponding lecture and section notes are online. TAs will be having both online office hours and "section" in the coming week; "section" will go over the section material. Times will be posted on the CS calendar and on Piazza this weekend. Note that an online section covering this material recorded from 2017 is also available if anyone can't make an online section time.
    I realize many of you are going through challenging situations. Indeed, I imagine everyone is going through a challenging situation. As we've said elsewhere, we will plan to be flexible and aim to understand people's needs. Please give feedback on Piazza. (And look for other announcements there.)
  • Mar 13:
    Post Spring Break Plans

    Thank you all for your patience moving forward. I wanted to let you know what our current plans are with regard to the class for post-spring break. All of this is in flux, but I think we have a solid plan moving forward.

    1) Because I have taught this class through extension before, we already have previous recordings of all lectures and all sections. While ideally I would have come into Harvard and made fresh recordings, I am told Extension is not planning continuing on campus recording at this time. My plan is therefore to switch to more of a flipped classroom mode. We will plan to put up previous years' lectures on roughly a week by week basis. (I may release something like 2 weeks ahead, to give people flexibility to get a bit ahead if they like.)

    2) Lecture notes will be released with the lectures, and section notes will continue to be made available.

    3) The TAs will offer online office hours and online "sections". The purpose of section hours is specifically to go over the material generally (and not the problem set), focusing as usual through the section notes. The TAs will be revising their schedules in the coming week; we will post schedules here, but please also make sure to check the class Google calendar available at the bottom of this page.

    4) I will also have online office hours for questions and such as well. What was previously class time will be repurposed to go over lecture material questions online, under the assumption you have watched the video and will have questions that need answering.

    5) Assignments will continue as usual. We expect to offer more flexibility in terms of extensions and such, but we ask that you continue to ask for extensions when needed. Ideally we'd like the class to stay "on schedule", and that means assignments keeping on schedule.

    6) We will all try to keep up with grading but please be understanding. For example, the TAs are leaving before we have had a chance to grade the midterms, so we will (probably) have to scan them and grade them online, which will take a while (given much of campus is shut down). It may take a while before the midterm is graded.

    7) For the Harvard undergraduate class, we expect and are planning on online/take home exam of some form; we will be figuring out the format. I hope to manage to have it be as close to the standard final exam as possible, which will be you will have a 3-hour exam (that you will have some 48-hour period to take), and it will look something like the midterm, except at the end you will submit a pdf (either scanned or from your computer) that we will grade online.

    Thank you for your understanding, and of course we course staff will similarly be working to provide understanding for all of you as we navigate this challenge. Please leave questions here and I will try to address them, as I've undoubtedly I've forgotten many things that may need addressing.

    Michael Mitzenmacher

  • Mar 10:
    Extension Midterm is Live!

    All extension students should have received an email with instructions and a link to the exam. If you are an extension student and have not received this, please let us know as soon as possible.

    Eric K.

  • Mar 10:
    Class Update
    Hi all.

    I'm glad we switched classes earlier this semester....
    1) I've told the TAs we're going to postpone midterm grading so as not to interfere with their leaving campus as early as possible. Please be patient with us as we manage the grading.
    2) I will talk with the people who videotape but I expect we'll do lectures recorded at the normal times; I think we can have the live stream made available to students. I may arrange to videotape multiple lectures in advance, though.
    3) We will aim to be flexible with due dates where possible given the new situation.

    More news as we figure this out.

  • Mar 4:
    I will be holding my office hours today in MD 234 instead of the lounge. They will be at the usual time, 4-6pm.

    Eric K.

  • Mar 4:
    Homework Assignment 4 will now be due on Saturday, March 7th by the end of the day.

    Eric K.

  • Mar 2:
    To help you prepare for the midterm next Monday, we will be having a midterm review session Saturday. We will go over the important concepts discussed in the first half of the class and go over some practice problems.

    The midterm review handout can be found under sections notes if you'd like to get a head start. If you're not able to make it to the review, the solutions to the problems will also be posted shortly after the review.

    Location: MD G115
    Time: Saturday, March 7th, 12:30pm - 2:30pm


  • Mar 1:
    Any students who have approval from the ASO for extra exam time, please forward me your letter at eric_knorr@g.harvar.edu so we can make sure you are accommodated.

    Eric K.

  • Feb 29:
    Programming Assignment 1 Gradescope Submission Guidelines
    As you finish up and start submitting programming assignment 1, please remember to adhere to the following guidelines:
    • If you worked with a partner, make sure that both of you are on the listed on gradescope
    • The only files that you should submit to gradescope are
      • A single PDF file containing your writeup
      • Your source code file(s)
      • Your makefile if you had one
    • Do not submit things like
      • Java .class files
      • .DS_Store files
      • Scripts or other files that you used to generate data for your writeup
      • Other files which are not important for grading
    Please take a few moments to check your submission, make sure that it meets these guidelines, and update it if it does not.


  • Feb 29:
    Sunday 3/1 Extension Office Hours 7-8PM
    I will be hosting Extension Office Hours 7-8PM on Sunday (tomorrow) March 1st. The Zoom link is on piazza. If you are planning on attending, please fill out this form here. If you don't fill out the form with a specific time, feel free to join the Zoom meeting, and it will be first come first serve.

    Let me know if you have any questions,

  • Feb 24:
    Hey all,
    Silvia and I will be holding Office Hours from 8:30-10:30pm on Monday instead of 9:30-11:30pm. They will still be in Dunster Dining Hall. This is a permanent change.

    - Eric

  • Feb 21:
    Additional Extension School Office Hours
    I will hold extension office hours this Sunday 8-9 pm via zoom. See piazza for the link. If you plan to attend, please fill out this form so I know how many people to expect.

    Esther Plotnick

  • Feb 19:
    My office hours have been fairly crowded the last couple weeks, so, to ensure that extension students have an opportunity, I will be holding office hours by appointment between 3 and 4pm on Wednesdays specifically for extension students. Please email me before hand if you want to reserve a spot. We can meet through Zoom or in person. Please include some general questions or areas you would like to cover.

    Eric Knorr

  • Feb 12:
    All of the following will also be discussed in class today:
    1) We will have class on Feb 17, in MD G-115, at the usual time. If you can not attend, it will be recorded/livestreamed.
    2) You will have an overlapping programming assignment and problem set over the next 2 weeks; so no assignment due next week, but two the week after.
    3) I suggest finding a partner over the weekend and reading the programming assignment, but you'll probably need Monday's lecture before diving in.
    4) There will be one more set due March 6 before the midterm.
    5) March 9 is the midterm date; March 11 class will be cancelled. (Extension students will take the midterm online sometime that week; you'll need to block off a 2 hour time block, and you take it at your leisure.)
    6) No assignment due March 13.

  • Feb 6:
    If you are not enrolled in the class officially (because of simultaneous enrollment or other such stuff) and therefore are not in on Gradescope please send your assignment to mmitzenm@g.harvard.edu. You will probably get a response e-mail saying I don't use the account. Please ignore that. When you are enrolled we'll ask you to resubmit it through Gradescope, but this will serve as a timestamp for the submission.

  • Feb 5:
    While the Gradescope is up, it appears that many students have submitted their problem sets without selecting the pages for each problem. For a tutorial on submitting to Gradescope, please see the following video: https://www.youtube.com/watch?v=KMPoby5g_nE

    Problem 2 Code : The current gradescope assignment for problem set 1 does not support uploading multiple files, so for this pset only, please inline your code into your PDF, preferably in the appendix. See https://www.overleaf.com/learn/latex/Code_listing for some ideas on how to do this in Latex, or just print out your code into a pdf and then combine the 2 pdf files. But for future problem sets that have a coding component, you will have the ability to upload multiple files, so you should upload your code separate from the PDF.

  • Jan 31:
    Hello all. I realize in my haste to get problem set 1 out, I pasted in the wrong date.
    Homework 1 is due FRIDAY, FEB 7 for the Harvard class. (NOT Monday, Feb 10, which was what was posted; that has been changed now on the sheet and web page.) Assignments are due at midnight on that day. The aim is to have all assignments due on Fridays.
    For the extension class, assignments will be due SATURDAY at midnight. (Not just this assignment; extension students get an additional day, if needed, on all assignments.) There will not a distinct date put on the assignment; extension students should just be aware that they can turn in the assignment on Saturday.
    My apologies; if this causes anyone significant distress, please let me know. (Given the issues with shopping week, some late assignments may be expected anyway.)

  • Jan 29:
    From Patel Fellow Serena Davis:
    Hi everyone, hope shopping week is off to a great start! I'll be the Patel Fellow for CS124 this semester and wanted to share some info on what that means. Professor Mitzenmacher has ensured there are a ton of resources available to CS124 students this spring - including many TFs, sections, office hours, math review sessions, etc. The aim of the Patel fellowship is to provide extra help for students who are having trouble in the class, typically as evidenced by performance below the class average. I will be reaching out to these students throughout the semester to get in touch and set up time to meet, but please also feel free to email me at serenadavis@college.harvard.edu. Another resource to be aware of is the Academic Resource Center (ARC) which will be reponening on February 3rd - if their offerings are of interest to you, I would recommend looking into them sooner rather than later as slots can fill up very early in the semester. Thanks!

  • Jan 27:
    I'm not clear what the issues are the video people are having, but for now I'm told that for the Harvard students, they can access the videos on the Canvas page.

  • Jan 27:
    Lecture notes are made available after class. Do not ask for them to be made avalable before class. Section worksheets are available as soon as ready, full notes are also generally posted after section(s) are complete.

  • Jan 27:
    The sections for the regular class will start 2nd week. For the first week -- this Saturday and Sunday, roughly 10-12, there will be math review sections in MD G115.

  • Jan 27:
    The sections for the extension school will be held in Maxwell Dworkin Room G125 Tuesdays from 8-9 pm. The first section will be this week and will be a math review. Sections are recorded for extension students (and, I think, livestreamed).

  • Jan 15: When you enroll for the class, sign up for Piazza here.

  • Calendar