The midterm tests your skills at functional programming in Scheme. It will cover material up through programming with trees and mutual recursion (lecture for Feb 2 and homework 3). I want to see how well you are developing instincts for programming in Scheme.
Note:I tend to give long exams that 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 I'm aware of that when we determine the passing cutoffs. I don't define those 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 high 40's to around 50. I 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 Scheme, I 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.
Parentheses counting. 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.
The exams from previous terms (when I have taught 2135) should give you a very good idea of what to expect. They are posted on the lectures page in the row for the midterm date. When you work through the previous exams:
Is the exam open or closed book/notes?
Closed. The final will be open book. A closed book midterm helps we gauge whether you are learning to think functionally, rather than depending on your notes to pattern-match solutions.
What's the best way to prepare?
Practice, practice, practice! If you can read Scheme 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 Scheme.
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.
Will you post solutions to the sample exams?
No. Over the years I'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 to see me 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 (I 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.