The exams test your skills in designing data definitions, functions, and test cases for the kinds of programming problems we have done in class up to the time of the exam. Mainly, I 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 the TAs 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 partial 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 Racket, 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 signatures, data definitions, and Racket programming.
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. I expect that you know the operators listed on the front page of the exam . I 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.
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 (unless a problem specifically asks for an efficient solution).
Test cases. Unless a question asks otherwise, you do not need to show test cases.
Bring a pen or pencil.
Bring your WPI student ID.
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 textbook or to 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, quizzes, 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 question is worth.
Exam 1 will cover up through and including the class material for Thursday, January 30 (functions that operate on lists).
Exam 2 will cover lists of structures, trees, and hierarchies (the material through Friday, Feb. 14).
Exam 3 will cover programs with memory (set! and set-structure!), testing programs with memory, creating circular data, programs with accumulators, and the built-in abstract functions map, filter, andmap, ormap, foldr, build-list.
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. The homeworks 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.
Are computers allowed during the exam?
No. Pen(cil) and paper only.
Do we need to write signatures on the exam?
Each
problem should state clearly whether you need to write signatures (I
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 signatures).
If I develop a helper function as part of the solution to a
problem, do I have to show the entire design recipe process for the helper?
No, you don't have to go through the entire process. It's not necessary
to show the template or check-expects for a helper function, unless the
problem specifically tells you to do so. But you should show the signature
and a (very brief) purpose for any helper you define.
Any other questions or concerns, post to the forum on InstructAssist.
Good luck!