CS 2135: Programming Language Concepts
Preparing for the Final Exam

My Goals for the Final

The final tests your skills at identifying and implementing languages, as well as working with the other concepts introduced since the midterm (macros and web programming). You will have a choice of two final exams: one will cover material since the midterm, including web programming; the other will re-test some material from the midterm in place of the material on web programming. You cannot earn an A in the course without taking the exam that includes web programming.

Expect the final to be at a similar level of difficulty/complexity as the midterm.

The exam is open book. The open book policy (further down on this page) details what you may and may not bring, and suggests which materials you may find more useful to have on hand.

Exam Topics

All material covered since the midterm is fair game for the final. In particular, I expect that you:

Some of the notes have included lists of "what I expect you can do" at the end -- you should have all the skills listed in those sections.

What I Care About on the Exam

What I DO NOT Care About on the Exam

Open Book Policy

The final is open book/notes, but all materials you bring must be on paper. You may bring:

You may NOT:

I realize that those of you who've taken notes on your laptop or other electronic device may find this policy inconvenient. I follow this policy so that everyone has equal access to material during the exam (i.e., a student with a laptop could grab or search material from the web during the exam, while a student without a laptop could not).

Suggestions on Using Notes During the Exam

I expect that notes could be helpful to you during the exam in the following ways:

As I mentioned above, you will not be asked to look up data definitions or other specific example details during the exam. The exam is designed to require no notes. I let you bring them in so that you don't waste time memorizing material instead of learning how to work with it. However, if you don't understand the concepts coming into the exam, you won't have enough time during the exam to figure them out and answer the questions.

What to Expect

I've included links here to the final exams from previous terms when I have taught 2135. Please note that I changed the back part of the course a bit over time, so these sample exams are only partly representative: some questions on them will make no sense to you and other topics aren't covered at all. I list below which problems you should be able to do based on the course this term.

As always, feel free to come to office hours or to the review sessions during Wednesday's lab time for help working through the problems.


  1. Is the exam open or closed book/notes?
    Open. See the open book policy for details.

  2. What's the best way to prepare?
    Practice, practice, practice! If you can reproduce the examples from class and redo the homeworks without referring back to your previous solutions, you should be fine on the exam. If you can read the programs we've written but not write them, you're going to have trouble with the exam.

  3. 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. All four labs on Wednesday are devoted to exam questions, so you have plenty of time to get help.

  4. Are computers allowed during the exam?
    No. Pen(cil) and paper only.

  5. 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.

Good luck!