The midterm tests your skills at functional programming in Racket. It will cover material up through higher order functions (expected to finish the Thursday before the exam). I want to see how well you are developing instincts for programming in Racket.
Note: My exams are sometimes a bit long and produce grades all along the spectrum. If you are doing very well with the material, you should be able to finish the exam within the 50 minutes. Many students will not finish the exam, and we're aware of that when determining the passing cutoff. We don't define that cutoffs in advance (in case the exam goes unusually badly for the class as a whole); in past terms, however, the midterm passing cutoff has been in the 50s. We don't tell you this to make you nervous now, but to keep you from panicking during the exam.
Code that follows templates. You will lose points for code that does not follow the templates. Furthermore, if you can write down the correct template, even if you can't fill it in, you will get half credit for a question. Know the templates.
Note that you do not need to write the template separately on the exam, unless a question asks otherwise. If you are at all shaky on programming in Racket, we do recommend that you start with them though, as they will get you (a) started and (b) partial credit.
That you're learning to think in terms of contracts, data definitions, and functional style. If you really can't figure out any code, try to explain what you're thinking (within reasonable length).
Readability. Please be as neat as possible so we can dechiper your answers.
Counting closing parens. If your code is nicely indented, we will not count parens to the last letter when we grade your exams. Indent your code cleanly, and we can overlook a missing paren here and there because the indentation can make it obvious that you knew what you were doing. We will watch for parens that show you know the number of arguments to built-in functions like map and filter, but would assume you just miscounted if you missed one of a few parens before the closing bracket of a cond clause, for example.
Cleverness or optimizations. If you write a solution that follows the templates and is logically sound, that's sufficient. No extra points for efficiency or optimization on the exam.
Test cases. Unless a question asks otherwise, you do not need to show test cases.
You may bring one sheet of paper (normal 8.5x11) with notes on it (written on both sides) to the exam. The exam will be self-contained, though, so you do not need to bring notes if you don't want to.
The syllabus page links to two old midterms on this material. When you work through the previous exams, try at least one of the exams under timed conditions, so you get a sense of the pacing. Feel free to come to office hours for help working through the problems.
Should I memorize data definitions from class for the
Absolutely not. The exam will be self-contained. You should know how to use all of the operators listed on the front page of the exam (similar to the posted exams; I will post the list to the discussion board by the weekend before the exam), but we will not assume that you know any other operators or data definitions from memory.
Is the exam open or closed book/notes?
Closed book, but you may bring one sheet of notes (written both sides).
What's the best way to prepare?
Practice, practice, practice! If you can read Racket programs but not write them, you're going to have trouble with the exam. Do as many problems as you need to to get comfortable with programming in Racket.
And practice templates. If you can't get at least as far as the template on any problem, you need to be coming in for help if you want to pass the midterm.
The exam is not designed to trick you. If you can do all the problems from lab, homework, and the in-class exercises, you should be prepared for the exam.
Will you post solutions to the sample exams?
No. Over the years we've found that posted solutions hurt studying, because many students look at the solutions too quickly and then get fooled into thinking they could reproduce the answers. Feel free to come see any of us during office hours, or make an appointment at some other time, if you want to go over your answers to the practice exams. We're glad to go over them.
Are computers allowed during the exam?
No. Pen(cil) and paper only.
Do we need to write contracts on the exam?
Each problems should state clearly whether you need to write contracts (we tend to write them down for you, when possible, to avoid confusion during the exam).
Any other questions or concerns, post to the discussion board.