CS 251: Programming Languages

Spring 2018

Exam 2 information

1. Notes

You are permitted one letter-size handwritten notes sheet (both sides) for use as a reference during the exam.

2. How to study

Lots of research has shown that reading over material isn't a very good way to prepare for exams. The best thing to do is to practice. Reading how to swing a baseball bat or how to cross-country ski might give you some good ideas on how to get better the next time you try it, but it's not even close to just getting out there and swinging a bat or skiing in the Arb.

How can you practice? Go back to look at the assignments. Can you code selected portions of them from scratch on paper? Can you write down thoughts for all of the topics listed below? Can you invent questions to try for the topics listed below? Practice these under test conditions and see how you do. Even though the solutions may not be available, just trying to do them can be incredibly useful. The ones that involve programming you can put into the computer to see if they work. Otherwise, you can work with other students to see if you think you've got the right answers. Even if you don't know for sure if you've got the right answer, just practicing with these exercises can be helpful.

Go back and pick out all of the content from class that you understand least well. Then, without simultaneously looking at your notes, write down all that you know about that content. Think about what I might ask you to do on an exam that would be scary. Try to do that yourself. If you can't, work with other people in the class or stop by office hours to get help on doing that.

Finally, make sure to do all of your practicing on paper, not at a keyboard, so as to simulate the exam conditions.

Recall that it is against the academic integrity policy to seek out resources from past versions of this course or similar courses offered elsewhere.

3. Exam content

The exam covers everything we have done, up to but not including recursive descent parsing (which will be covered on the next exam). While the exam is cumulative, we will focus on what was not already tested (starting with the recursive substitution model).

People asked me to give more description as to what the exam would be like. So I am going to list some types of things students should be able to do.

Students should:

As usual, please note that this document is not a contract. I may have inadvertently left something off that ends up on an exam question. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it.