Contents

In-class Midterm Exam

Exam 1 is scheduled as an in-class exam on Friday, 1 November 2019.

Sample / Practice Exam Style

Exams in CS 251 will be similar in style to the past exams from another course linked here. Keep in mind that those exams are from a course that starts with ML and later moves to Racket (and another language). While emphasis may differ, you can expect that the general style of problems is fairly similar to exams in CS 251.

Topics

The first exam covers everything up through the Interpretive Dance assignment and the ML Abstract Data Types topic (not including representation by function closures, e.g., FunSet).

The exam will emphasize precise, but informal, treatment of programming languages concepts. It will de-emphasize formal aspects (e.g., grammars, inference rules, operational semantics, derivations).

Mastery topics

As indicated in the syllabus, there is a “light” mastery grading system in place for the two exams. Roughly, this means that certain topics will appear on both exams and your better performance on those topics is what counts. Other topics will appear on just one of the two exams.

As of Monday, 28 October, it is unlikely that the affected problems will be marked in the first exam, but that could change.

Allowed Resources

During the exam

  • You may not use any electronics. (Non-trivial arithmetic will not be required.)
  • You may use a single 2-sided 8.5×11-inch sheet of handwritten notes that you have prepared ahead of the exam.
  • You may not use any other resources.
  • The instructor will be available for clarification questions during the exam.

Exam Logistics

Accommodations

If you require accommodations to take the exam, please arrange at least 2 days in advance with the instructor. Accommodations documented with ADR will be granted.

Alternatives and Emergencies

If you will otherwise be unable to attend the scheduled exam, please consult the instructor at least 48 hours ahead of the exam start time. Alternative arrangements (e.g., for travel) are at the discretion of the instructor, or with support by your class dean. Should you be unable to attend the exam at the last minute for any reason (as determined within the 48-hour window of the exam), please consult your class dean for support of an alternative. The instructor will support any exam rescheduling that is supported by your class dean.

Self-Scheduled Final Exam

Logistics

The final exam is self-scheduled through the standard process. The exam is classified as open-book with the registrar, meaning you should use one of the open-book rooms.

Allowed Resources

During the exam

  • You may not use any electronics. (Non-trivial arithmetic will not be required.)
  • You may use a single 2-sided 8.5×11-inch sheet of handwritten notes that you have prepared ahead of the exam.
  • You may not use any other resources.

Topics

The final exam is comprehensive, but some topics will definitely get focus and others will not appear. Here is a guide to what to expect.

Continuing focus topics

Topics marked with [!] are mastery topics that will definitely appear. These topics overlap (in part or in full) with the first exam and are eligible for mastery grading. All other topics in the “continuing” list are also potential overlap/mastery topics.

  • Syntax and semantics of Racket and ML
    • [!] Know your evaluation rules and be prepared to reason about their relation to new rules.
    • Be ready to write small well-formed code snippets in both. Emphasis will lean toward ML.
  • Programming idioms/techniques including:
    • natural recursion and tail recursion
    • [!] higher-order functions (including the usual suspects)
    • [!] currying and partial application
  • [!] Scope and closures
  • [!] ML static type system
    • Know your type-checking/inference rules and how to reason about types.
    • Practical differences with dynamic type checking.
  • [!] Abstract data types

New focus topics

  • Delayed evaluation and laziness, including promises and streams
  • Parallelism and concurrency
    • concepts and reasoning
    • data parallelism, task parallelism
    • key Manticore primitives
    • futures
    • Concurrent ML primitives
    • explicit threads with message-passing
    • atomicity
  • Dynamic dispatch
  • Subtyping

Topics that are not important for the exam

  • Deductive programming / Prolog and any later topics on the calendar
  • Interpreter implementation details
  • Details of research paper readings that were not also covered elsewhere
  • Shared-memory multithreading

Mastery topics from in-class Exam

Most or all of these parts of the in-class exam qualify for mastery grading and will appear again on the final.

  • Part 2
  • Part 3
  • Part 4

Review

Drop-in / review hours with Ben

This is unstructured time much like regular drop-in hours. Bring topics, questions, old assignments, exam problems, etc., that you want to practice or review. If you are working on late assignments, we’ll be right next door to the lab this week, so I can float back and forth.

  • Thursday 12 December 2:30pm-4:30pm, SCI L035 (+ L037)
  • Friday 13 December 10:30am-12:30pm, SCI L039 (+ L037)
  • Monday 16 December 1:00pm-2:00pm, SCI E111
  • or by appointment

Materials

  • Final Exam Review / Sample Problems, including new problems, plus relevant problems from exams elsewhere.
  • Your midterm exam (on Gradescope or if you picked up the paper copy).
  • Assignment sample solutions (link now fixed)
    • Selected sample solutions, including the parts that are most relevant to the exam. Please feel free to ask questions about any assignment part, whether or not it is included in the selections.
    • Honor code note: these sample solutions are for your eyes only. Do not share them. You may view solutions for a given assignment only if you have made your final submission of that assignment.
  • Graded assignments, as of Saturday 21 December:
    • In progress:
      • Interpretive Dance
      • OO log, Prolog, Epilogue
    • Complete:
      • All other work submitted by end of Reading Period.
      • Run git pull in your working copy and view the file grade.txt along with sample solutions (above). Get in touch if anything is missing or confusing.
  • Review suggestions:
    • Sample review problems only partially overlap topics of problems from the in-class exam, so look at both.
    • Since in-class exam topics will return on the final, you should absolutely review those. Exam solutions will not be distributed, but Ben is willing to discuss any in-class exam problems in detail in person.

Extensions

Reminder: any outstanding extensions on late work terminate with the end of Reading Period. No late work is accepted thereafter without the support of your class dean.