The exams test your skills as designing data definitions, programs, and test cases for the kinds of programming problems we have done in class up to the time of the exam. Mainly, we want to make sure that each student is able to carry out the design and programming tasks that we have covered without the help of his/her homework partner or others. The exams are not designed to trick you.
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 how to write 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, 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 Scheme programming. If you really can't figure out any code, try to explain what you're thinking in English (but be brief!).
Readability. Please be as neat as possible so we can dechiper your answers. Indent your code as we do in class.
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, but would assume you just miscounted if you missed one of a few parens before the closing bracket of a cond clause, for example.
Having you memorize data definitions or operators from class or homeworks. We expect that you know the operators listed on the front page of the exam (will be posted to the discussion board at least two days in advance of the exam). We do not expect that you have memorized any data definitions or functions written in class or on homeworks. The exam will be self-contained except for the operators listed on the front page of the exam.
Images. Since you can't see the images while working on paper, we won't ask you to write any programs with them during exams.
Cleverness or optimizations. If you write a solution that follows the templates and is logically sound, that's sufficient. No points will be gained or lost 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 with notes of your choosing (printout or handwritten, one or both sides). You do not need any particular notes, as the exam will be self-contained as described above.
You may not refer to the text or notes other than your one page during the exam.
You may not use a laptop or other computing device beside your brain during the exam.
You may not use earphones, headphones, cellphones, etc during the exam.
Expect problems similar in style to the homeworks and labs (though obviously not as many since the exam lasts only 50 minutes). While some questions will have multiple parts, individual questions will be independent so you can do them in any order. The exam will show how many points each questions is worth.
Exam 1 will cover up through the class material for Friday, Sept 9 (basic list functions). Sample Exam
Exam 2 will cover lists of structures, trees, and hierarchies (the material through Friday, Sept 23). Sample Exam
Exam 3 will cover programs with memory (set! and set-structure!), testing programs with memory, creating circular data, and programs with accumulators. Sample Exam
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. The homeworks (up through homework 3) will be good practice for the exam.
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 exam.
Will you post sample exams?
The sample exam from this class a year ago is linked above. We will not post solutions though. Please come to any of our office hours and we will happily review your solutions with you.
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 to avoid confusion during the exam, unless the point of the problem is to see whether you can write contracts).
Any other questions or concerns, post to the discussion board.