
These are some sample instructions for an examma-ray exam, derived from instructions used in EECS 280 at the University of Michigan.

<div markdown=1 class="alert alert-info">
Double check that there are no compatibility issues with your web browser, and please let us know if you run into any issues! In particular, you may want to verify that your answers are backed up and restored from your browser's local storage in case something goes wrong:

1. answer a few questions
2. wait 10 seconds
3. close your entire web browser (not just the exam tab)
4. open the exam again
5. verify your answers are still there.

If this doesn't work, make sure you are NOT using private/incognito browsing mode and that you are not using any browser extensions/add-ons that disable browser local storage.

If you run into any issues, please let us know on Piazza (there will be a pinned post on exam logistics).
</div>

<div markdown=1 class="alert alert-warning">
**During the real exam, make sure that you get the "popup" at the start that asks you to click "I understand".** If you don't see this, try refreshing the page a few times. If it still doesn't work, or anything else seems wrong (e.g. misplaced items on the page, weird formatting), please contact the staff right away and we can help you get it fixed!</div>

**Instructions for a real final exam would look very similar to below...**

This exam is randomized. Every student will receive a different set of questions chosen from a larger question bank. Individual questions found to be significantly more difficult than others will be curved in your favor. This exam also includes other unspecified countermeasures to prevent cheating.

**Instructions**

* **DO NOT** open this exam in more than one browser window.
* You may work on the questions in **any order**.
* **You must download and turn in your answers file to Canvas before exam time is up.**
* Read questions carefully, noting any **requirements or restrictions** for your solution.
* There is **no penalty for wrong answers**.
* It is to your benefit to record an answer to each question, even if you're not sure what the correct answer is.
* Assume all code is in **standard C++11**, and use only standard C++11 in your solutions.
* Throughout the exam, assume all necessary `#include` headers and the `using namespace std;` directive are present unless otherwise directed.
* You do not need to verify `REQUIRES` clauses with `assert` unless specifically instructed to do so.
* In code examples, `...` may be used to indicate code has been omitted for brevity. You may assume all omitted code works correctly and generally behaves as expected.

**Questions and Reference Material**
Some sections include reference material with additional information and/or examples, shown on the right side of the page. Make sure to read this thoroughly for each question, and note that **you may have to scroll down to see all of the reference material**.

**Allowed Resources**

* You may use any notes or other resources, including online resources.
* You may use a compiler, IDE, or other programming tools.
* You may use the "Lobster" C++ tool, but be aware that it is not 100% C++ compliant and may compile/run incorrectly in some complex cases.

**Collaboration/Assistance is Prohibited**

* You are NOT allowed to collaborate with anyone else to answer these questions.
* You are NOT allowed to solicit assistance from anyone to answer these questions.
* You are NOT allowed to screenshot, photograph, or otherwise reproduce these exam materials.

**For example**, reading existing posts on stackoverflow.com is OK, but posting new questions based on these exam materials to solicit help from others is prohibited.