Exam procedures for CS51

# Exam procedures for CS51 #

This document describes exam procedures and policies for CS51 and CSCI E-51. You should read this document and familiarize yourself with its contents well before the exam itself.

There will be two exams in CS51/CSCI E-51 given on the following dates:

• March 15, 2021 – covering material through lab 8 (modules and functors) and the corresponding readings and problem sets.

• April 28, 2021 – covering material from throughout the course.

Each exam will be delivered online as a Gradescope “timed online assignment”.

## Dry run #

We will hold a dry run exam before the first midterm exam for you to test out these procedures. This is your chance to familiarize yourself with Gradescope’s timed online assignments and to work out any kinks in the system, making sure your exam setup is ready for the actual midterms.

The dry run exam will be graded for completion, but not for correctness of your answers. The small number of points for the dry run exam will be added to those for the first midterm.

## Accommodations #

We will make every effort to accommodate students with special requirements, such as extra time for the exam. If you have special requirements for the exam, please let us know as soon as possible by email to administrator@cs51.io providing your AEO letter describing the accommodations.

## Timing #

Each exam will be made available over a 24-hour period. The first midterm will be held over the 24-hour period on Monday, March 15 between 12:01am ET and 11:59 ET. The second midterm will be held over the 24-hour period on Wednesday, April 28 between 12:01am ET and 11:59 ET.

You may take the exam at any point in the 24-hour period. You will have 100 minutes to complete the exam from the time you first access it. We nominally allocated 90 minutes for taking the exam and writing up your solutions and 10 minutes for any technical issues dealing with Gradescope, though you may allocate the time as you see fit. Although you may begin the exam at any point in the 24-hour period, keep in mind that if you begin with fewer than 100 minutes remaining in the 24-hour period, you will not have the full 100 minutes to complete the exam.

You can submit answers to Gradescope as many times as you want until the end of the 100 minutes; we will grade the last version submitted before the deadline.

## Use of materials #

Exams are “open book”. You may use any books or notes or other textual materials, either physical or digital on your local computer, in preparing your solutions for this exam. You may also use software on your local computer (such as ocaml, utop, and ocamlbuild). However, you may not use any other sources of help, including but not limited to talking with other people and asking questions or reading answers on online forums and platforms, or indeed any use of the internet other than your use of Gradescope to do the exam itself. You should also not provide such help to others.

You should practice the spirit of these rules, not merely the letter, which is: We want to see what you, solely by yourself, can accomplish using the programming tools common to the course.

Because the exam is being distributed over a 24-hour period, you should not discuss any aspects of the exam with anyone until the 24-hour distribution period is over. You should not post the exam or your answers even after the exam is over.

The exam is what Gradescope refers to as a timed online assignment. You should familiarize yourself with the Gradescope documentation on Understanding Timed Assignments and Submitting Online Assignments. (The exam will not be “browser-locked”, so you can ignore Gradescope’s discussion of that topic.)

Gradescope will allow you to save each answer as you complete it. When you are finished with the exam, you can select View Your Submission to look over your answers, and modify and resubmit if you would like.

## Preparing for internet outages and computer glitches #

Given the worldwide distribution of students working under varying conditions and the tight time constraints for the exam, preparation for technical problems is highly recommended, and you will be responsible for this preparation. We recommend the following practices to maximize the chances you can submit the exam within the time window.

1. You can do the exam at any time in the 24-hour period. To the extent that you are able, you should choose a time that is least likely to see power, internet, or other interruptions.

2. If you are using a laptop or tablet to do the exam, make sure its battery is fully charged before beginning the exam. If power outages are likely, we recommend that you not rely on a desktop computer to do the test.

3. Before starting the exam, open a browser window at http://time.is/, which will show your local time even if your internet access goes down, allowing you to timestamp screenshots later if necessary.

4. As soon as you’ve accessed the exam, thereby starting the timer for your exam, save a PDF copy of the exam browser window to your computer and verify that the exam questions are readable in a PDF viewer. In case of later internet outages you will then have access to the exam questions to work on them offline.

5. If there is a significant chance of power outages that would eliminate the ability to even use your computer and you have access to a printer, print a hardcopy of the PDF file at the start of the exam as a further backup.

6. As you work on the exam, type your answers first into a text editor buffer, saving it frequently, and copy and paste the answers into the Gradescope window in your browser, so that if the browser crashes while typing an answer, you will not have lost that work.

7. If you lose internet access, continue working on the exam offline, using the PDF file to view the questions and the text editor to write your answers. If you also lose power, you can write your answers on the printed copy if there is one. If internet access is restored, you can then copy and paste your answers in.

8. If internet access is not restored by, say, 90 minutes into the exam, you should compose and send an email attaching the text file where you’ve been saving your answers to heads@cs51.io. The timestamp on the message will record that the message was sent within the 100 minute window, even if your mail client can’t upload the message to the server until later.

Alternatively, you can take screenshots on your computer showing the exam answers and the current time (for instance, by capturing the http://time.is/ browser window in the screenshot) or timestamped photos or scans of your handwritten answers, and send these once your internet access is restored.

We recommend your determining the best method for you to provide timestamped evidence of your exam answers well before the exam and practice using it.

Difficulty or delay in submitting is not grounds for our allowing exceptions to the exam’s time limit.

## Exam structure #

The exam is composed of multiple sections, each of which may have multiple questions. Each question is marked with the number of points allocated to the question and may provide a very approximate recommendation for allocating time.

Many of the problems ask you to define something or write code to do something. Throughout the exam, when we ask you to define a value or function or type or module, we mean that you should provide a top-level OCaml definition written in well-formed, idiomatic OCaml using the appropriate OCaml definitional construct (let, type, module, etc.). Your answers will be graded firstly on the well-formedness and correctness of the code, but in keeping with the course’s goals, we may also secondarily consider the many other dimensions of code quality – including design and style issues – in evaluating your answers.

## Questions during the exam #

Because the exam is being administered over a 24-hour period, we can’t guarantee that clarificatory questions will be answered in a timely manner. In case of an exam problem that admits of two plausible but inconsistent interpretations, we recommend that your submission provide a clear description of the two interpretations and their respective answers. Note however that if one of the interpretations is not consistent with the exam or other course materials, we may consider your answer in error.

You should not post public questions on Ed or Slack during the 24-hour exam period.

On the exam, you will be requested to affirm your awareness of the standards of the Harvard College Honor Code.

## Exam tactics #

I turn now from instructions and procedures to friendly advice. It’s useful to think ahead about tactics for doing this exam, because certain properties of the exam are unusual:

• The exam is open book, open notes, and open ocaml. (It is not, however, open internet.)

• The exam is written in such a way that opening books, notes, and ocaml shouldn’t help much.

• The exam may be time-pressured in ways that labs and problem sets are not.

• Some problems will be easier than others.

What tactics follow from these properties of the exam?

• The time limitation means that time management is especially important. You’ll want to have at least attempted all of the problems on the exam.

• Because some problems are easier than others, you don’t want to get hung up on a hard problem when there are easier ones you could be doing instead. So feel free to move past problems you’re having a hard time on; you can always come back later.

• It’s probably a good idea to look over the exam as a whole, so that you can get a sense of what’s on it, and you can focus on the problems that are easier for you.

• Don’t be seduced into testing things out in ocaml or utop. Doing so takes time, which means you’ll complete fewer problems. Furthermore, the problems are designed so that they can’t be trivially solved just by typing something into ocaml. (There won’t, for instance, be problems of the sort “What does such-and-such expression evaluate to?”, which could be answered by simply typing the expression into ocaml and copy-pasting the result into the answer box.)

• Instead, it’s probably a better strategy to do a first pass where you solve problems by reasoning them out, providing your best answer, and moving on. If there’s time at the end, you can (and should) go back and verify your answers using software tools, debugging if necessary. If you don’t get a chance to verify and debug, at least you might get partial credit. But if you don’t get a chance to do a problem at all, you’re guaranteed to get a zero for it.

• To make it easier to go back later to verify and debug your answers, as well as providing a backup in case of browser failure, you can keep an editor window open and type all of your code answers in the editor window. Then copy and paste into the exam answer box. If you have time, you can go back to the editor window and copy and paste the code into ocaml to verify and debug the answers. If you make fixes, you can then copy and paste the revised answer into the exam answer box.

• Looking things up in the textbook or past labs or problem sets is similarly a time trap that you don’t want to fall into. Instead, use your exam preparation time to put together any useful reference material you might want for easy access. A simple method to do so is to build a “cheat sheet” by just entering a systematic set of expressions into OCaml as a reference…something like the cheat sheet I made and posted at http://url.cs51.io/cheatsheet1. But it’s better if you make your own, because you’ll be more familiar with it.

Good luck!