At this time, rather than an exam I'm having students:
- write short answers to multiple (3/week) quizzes on concepts and fundamentals
- present their implementations in class, explaining their process and their chosen implementation
- conduct a final presentation in which they must effectively explain how a modern computer works, and what we didn't cover in class (optimizations, some depth)
I might have a midterm and final, but only if the students are having difficulty with concepts (so far they're doing great!)
Ok, thanks for the information. I am thinking about bringing presentations into play more with the class. So far they are doing great. I have a short oral assessment that give each student after each project, and that has helped a lot too. I'm teaching the course at a gifted high school so that changes some issues with timing and pace.
In my ever so humble opinion, 'Code' is one of the best computer books ever written. I feel bad for Charles Petzold that it is so relatively obscure. Every time I think about this I mean to go buy his Turing book !
Another good book is "22 Microcomputer projects to build, use and learn" by Daniel Metzger... if you are interested in tinkering with real chips, an oscilloscope and a breadboard; Metzger's projects are based on the Motorola 6802 processor. The book is out of print, but you can still find it for sale online.