COS 371: Programming Languages
Spring 2022
Exam 1 information
1. Allowed materials
You are permitted one letter-size handwritten notes sheet (both sides) for use as a reference during the exam.
You may only use electronic devices (computer, smart phone) to the extent of following exam logistics (below).
In particular, you should NOT use DrRacket 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.
How can you practice? Go back to look at the homework problems. Can you do them from scratch on paper? This website and this website contain long lists of exercises, though they don't focus much on the more abstract concepts. Here are more, which seem to include some content that the other sites are missing. 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.
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.In particular, besides the basics,
major topics we've focused on in class includes tail recursion and higher-order functions (map
, filter
, foldl
, and foldr
).
In homework, you've worked with some data structures (BSTs, lazy lists) and more higher-order functions (currying, composing, etc.).
These are all concepts students should be able to use and reason about.
Students should be able to write Scheme functions on paper to do specified tasks.
In particular, students should be able to successfully make significant use of recursion,
and write functions that are tail-recursive (and identify whether a function is tail-recursive).
As in the homework, any Scheme code should be written in a purely functional style (no side effects like set!
).
Students should be able to evaluate Scheme code (in the style of our pop quizzes) on paper, without the aid of a computer. Students should be able to draw box-and-pointer diagrams for nested pairs and lists.
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.
4. Logistics
The exam will take place during our usual class time. I will proctor you via Zoom.Before class time:
- Read this document carefully. Ignorance is not an excuse.
- Prepare enough paper to write on.
- On the first sheet, write at the top an academic integrity statement of your own devising. You should say that you didn't consult any unauthorized resources (textbook, DrRacket, Internet search, friends, other sources of help, etc.).
- Sign your name after the statement.
At class time:
- Join our usual Zoom meeting first.
- Find a PDF of the exam questions on Moodle near the bottom; pull it up on your computer.
- Work things out on notebook/blank paper. You do not need to print out the questions.
- After you are done or the time is up, scan your work and upload to Moodle near the bottom.
- Download your submission from Moodle to double check that you uploaded correctly.
- You may leave early after you finish scanning and uploading your exam.
Scanning:
- Here are instructions for how best to scan handwritten work using a smart phone.
- It is different from simply taking pictures.
- Familiarize yourself with the procedure to make sure you feel confident scanning your work.
Timing:
- You have the full 50 minutes of class time for the exam.
- To give you more flexibility, since this class is scheduled within the 70-minute B4 block, you may use the entire 70 minutes.
- To accommodate for scanning, you may submit up to 10 minutes after the 70 minutes end.
- Moodle will still accept submissions after the cutoff time, but it will be marked "late."
- If this happens, you should email me ASAP and explain why you were late, and assert that you did not spend any more than 70 minutes working on the exam.
- Summary:
time description 09:00 Zoom opens, PDF of exam questions available on Moodle 09:50 class/exam officially ends 10:10 flex time ends, you must stop working 10:20 deadline for submitting to Moodle
Proctoring:
- Please turn on your camera but mute your microphone.
- During the exam, don't unmute to talk to me: you will end up talking to everyone else as well.
- If you need to contact me, you can send me a message privately via the "chat" function in the Zoom meeting.
- Aim the camera at you, not your desk; don't hold up your work for others to see.
- Disconnect from the meeting after you've finished scanning and submitting to Moodle.
Tips:
- Label your questions clearly, especially if you are doing things out of order (try not to).
- Do not write in columns.
- Even though you are under time pressure, try to write legibly; if I can't read your handwriting, I can't give you credit.
- Make sure your scan is legible. If I can't open your PDF or read your content, I can't give you credit.
- After submitting, download the PDF from Moodle and open it up to make sure you submitted the right file and it contains all the pages.