This test is open-book: you may use any and all non-human resources during the test, but the only humans to whom you may turn for help or from whom you may receive help are the course’s heads, which means that

you may

  • browse and search the internet,
  • review books,
  • review questions and answers already posted on Ed,
  • review the course’s own materials,
  • use CS50 IDE or CS50 Sandbox,
  • email the course’s heads at heads@cs50.yale.edu with questions, but

you may not

  • receive or solicit directly or indirectly any help from anyone other than the course’s heads.

Take care to review the course’s policy on academic honesty in its entirety. Note particularly, but not only, that

  • looking at another individual’s work during the test is not reasonable and
  • turning to humans (besides the course’s heads) for help or receiving help from humans (besides the course’s heads) during the test is not reasonable.

There will be a “debrief” section in every question for you to list every resource you use to answer the question, including the URLs of any web sites you consult. Use this debrief section instead of the help log, there is no need to report things in both places. Include course materials in your debrief as well as outside resources. And remember, we are expecting to see something here since this is an open-book exam!

Unless otherwise noted, you may call any functions we’ve encountered this term in code that you write. You needn’t comment code that you write, but comments may help in cases of partial credit. If having difficulty with code, you may resort to pseudocode for potential partial credit.

Among the test’s aims is to assess your newfound comfort with the course’s material and your ability to apply the course’s lessons to familiar and unfamiliar problems. And most problems aspire to teach something new.

You may resubmit as many times as you would like before the test’s deadline. Late submissions incur penalties per the course’s syllabus.

What To Do

  1. In CS50 IDE, execute

     wget https://cdn.cs50.net/2020/fall/test/test.zip

    followed by

     unzip test.zip

    to download the distribution code for the test.

  2. Open the test’s response document in Google Docs.

  3. Make a copy of the response document in your own Google account by choosing File > Make a Copy.

  4. Answer all of the questions below, in any order, by writing your answers in the response document, replacing each TODO with an answer. Some questions will instead ask you to complete a TODO in one of the files in your test directory within CS50 IDE.


Reload this page (and each problem’s page) throughout the week to see any clarifications to the test.

In Flaskless, clarified that directory is called flaskless, not server.
In Getting Input, clarified that get_string can be compiled with clang but not make.
In Happy Cats, corrected title of meow.html to be meow instead of count.
Changed double quotes to single quotes in sample return values for parse in Flaskless for consistency with Python’s print function. This change is purely aesthetic; parse should still return a list whose first element is a str and whose second element is a dict.
Clarified in Baby Shark Dance that node*a in sharks/integers.c should be node *a.
Clarified in Finsta that group messages don’t need to be unsendable.
Clarified in Baby Shark Dance that the sum of an integer’s digits will fit in an int.
In Programming in B, clarified that strings (e.g., "meow") should be quoted as in C.
In Baby Shark Dance, clarified that node is of type struct node *, not struct integer *.
In Baby Shark Dance, clarified that digit is 0 through 9.

How to Submit

  1. Download a ZIP file of your test folder (which should contain folders for finsta, flaskless, and shark) by control-clicking on your test folder in CS50 IDE’s file browser and choosing Download.
  2. Go to CS50’s Gradescope page.
  3. Click Test: Code Files.
  4. Drag and drop your test.zip file to the area that says “Drag & Drop”.
  5. Click “Upload”.
  6. You should see a message that says “Test: Code Files submitted successfully!”
  7. Download your completed test response document from Google Docs as a PDF by choosing File → Download → PDF Document, and save it to your computer.
  8. Go to CS50’s Gradescope page.
  9. Click Test: Response Document.
  10. Click Submit PDF.
  11. Click Select PDF and choose your test file.
  12. Click Upload PDF.
  13. For each question in the Question Outline at left, click on the question and then click on the page (or pages) on which your response to that question is located.
  14. Click Submit.
  15. You should see a message that says “Test: Response Document submitted successfully!”

If you run into any trouble with the above steps, email heads@cs50.yale.edu!