Programming Languages: Quizzes

General Information

Quiz Rules/Procedures

Administration

Quizzes will be administered via Canvas. The available window and allotted time (see below) for each quiz will be announced ahead of time on this page. Quizzes must be completed as scheduled unless prior permission has been has been granted. If you encounter technical difficulties during your quiz, you must contact Brett as soon as possible to explain the situation and provide documentation (e.g. screenshots of errors or notification of internet outage in your area). No makeup opportunities for missed or unfinished quizzes will be given without prior approval or documented technical issues.

A Practice Quiz is available to allow you to test your connection and get used to taking a quiz in Canvas. This quiz is not worth any points, and you may take it at any time and as many times as you like.

Timing Rules
Each quiz will be available for a set period of time (usually 24 hours). You will be able to begin the quiz at any time during the available window, but you will only have a certain amount of time to complete the quiz once you begin (usually 60 minutes). Your time will begin once you open the quiz and will run continuously. You will not be able to pause the quiz for any reason.
Materials

Quizzes will be open-book, open-note, and open-computer. You may use any resources at your disposal during the quiz. Note that quizzes will be written with this in mind, meaning they are unlikely to include questions that can be answered simply by referencing notes. We strongly advise you to consider your resources as back-up support and prepare with the goal of using them as little as possible.

Questions During the Quiz

You may post questions on the message board during the quiz, however we cannot guarantee they will be answered before your time is up. Please make all posts releated to the quiz private. If you encounter a major concern, please complete the quiz to the best of your ability, and then contact Brett immediately to explain the situation.

Collaboration Policy
Quizzes must be completed individually. You are welcome to collaborate with classmates in your preparation, including creating shared study or reference materials. However, you must complete the quiz itself on your own. Furthermore, you may not communicate with classmates about the quiz AT ANY TIME during the available window. This includes before you begin the quiz, while you are taking the quiz, and after you have completed the quiz. Any communication about the quiz or its content while the quiz is available, even if all parties have completed the quiz, will be considered academic misconduct and handled as such.

Old Exams

While our quizzes will cover roughly the same material as the sample exams in aggregate, the actual type, order, or style of questions may vary. In addition, each quiz will cover only about half the material of each exam. Be careful not to overfit your preparation to the specific questions in the sample exams.

Midterms (roughly quizzes 1 and 2)

Final Exams (roughly quizzes 3 and 4)

Quiz 4 (optional)

Overview

Quiz 4 (optional) will take place on Thursday, June 11 via Canvas. It will be available from 12:01am PDT until 11:59pm PDT. You may begin the quiz anytime during that window, however you must finish within 60 minutes of when you begin. You may not pause the quiz once you have started.

Topics Covered

Quiz 4 (optional) will cover material from Units 7-8 (Lectures 19-24, Sections 9-10). Specifically, you are responsible for understanding the following topics:

  • Ruby syntax/semantics
    • classes
    • methods
    • subclassing/overriding
    • arrays
    • ranges
    • blocks
  • Dynamic dispatch
  • Functional v. object-oriented decomposition
  • Double dispatch
  • Mixins
  • Subtyping (for records, as in lecture)
    • definitions
    • rules
    • soundness

Post-quiz

  • Key: Quiz 4 Key
  • Mean: 42.556
  • Median: 46
  • Std. Dev.: 11.371

Quiz 3

Overview

Quiz 3 will take place on Friday, May 29 via Canvas. It will be available from 12:01am PDT until 11:59pm PDT. You may begin the quiz anytime during that window, however you must finish within 60 minutes of when you begin. You may not pause the quiz once you have started.

Topics Covered

Quiz 3 will cover material from Units 5-6 (Lectures 13-18, Sections 6-8). Specifically, you are responsible for understanding the following topics:

  • Racket syntax/semantics
    • arithmetic expressions
    • lists/pairs (cons)
    • if
    • cond
    • let, let*, letrec
    • mutation
  • Dynamic typing
    • mixed-type lists
    • functions with different result types
  • Delayed evaluation
    • thunks
    • precomputation
    • promises
    • streams
    • memoization
  • Racket macros
  • Structs
  • Implementing languages/interpreters
  • Soundness/Completeness of type systems
  • Static v. dynamic typing

Post-quiz

  • Key: Quiz 3 Key
  • Mean: 43.049
  • Median: 45
  • Std. Dev.: 6.9

Quiz 2

Overview

Quiz 2 will take place on Tuesday, May 12 via Canvas. It will be available from 12:01am PDT until 11:59pm PDT. You may begin the quiz anytime during that window, however you must finish within 60 minutes of when you begin. You may not pause the quiz once you have started.

Topics Covered

Quiz 2 will cover material from Units 3-4 (Lectures 7-12, Sections 4-5); material from Units 1-2 will be fair game to include, but will not generally be explicitly tested. Specifically, you are responsible for understanding the following topics:

  • First-class functions
    • functions as values
    • function closures
    • anonymous functions
  • Higher-order functions
    • functions as arguments
    • functions as results
    • "Hall of Fame" functions (map, filter, fold)
  • Lexical scope
  • Currying/Partial application
  • Modules
    • structures
    • signature
    • hidden (private) bindings
    • abstract types
  • Equivalence
    • "pure" functions v. functions with side-effects
  • Type inference

Post-quiz

  • Key: Quiz 2 Key
  • Mean: 45.07
  • Median: 47
  • Std. Dev.: 5.81

Quiz 1

Overview

Quiz 1 will take place on Tuesday, April 28 via Canvas. It will be available from 12:01am PDT until 11:59pm PDT. You may begin the quiz anytime during that window, however you must finish within 60 minutes of when you begin. You may not pause the quiz once you have started.

Topics Covered

Quiz 1 will cover material from Units 1-2 (Lectures 1-6, Sections 1-3). Specifically, you are responsible for understanding the following topics:

  • Bindings
    • variable bindings
    • function bindings
    • datatype bindings
  • Expressions
    • literal values (e.g. 5, true, "hello")
    • variables
    • function calls
    • arithmetic operations (+, -, *, div, mod)
    • integer comparisons (<, <=, >, >=, =, <>)
    • boolean operations (andalso, orelse, not)
    • if-then-else
    • let
    • case
  • SML Types
    • int
    • bool
    • string
    • functions (e.g. int -> int)
    • tuples (e.g. int * int)
    • records (e.g. {x :int, y : int})
    • lists
    • options
  • Shadowing
  • Pattern Matching
  • Tail Recursion

Post-quiz

  • Key: Quiz 1 Key
  • Mean: 44.16
  • Median: 47
  • Std. Dev.: 6.55