Quiz Learning Objectives

This page lists the Quiz Learning Objectives for this course. These will be assessed on quizzes, but you’ll have a chance to practice these skills in class and on assignments as well.

There will be approximately 25 Core and 15 Advanced Learning Objectives. The full list will be given as the term progresses.

General: Programming Languages

Core        Advanced
PL 1: programming paradigms – compare/contrast different paradigms PL 7: side effects – identify side effects in a program
PL 2: value vs. reference model – identify impacts of different type semantics PL 8: types – identify impacts of different type-checking approaches
PL 3: compilers vs. interpreters – compare/contrast compilers, interpreters, and hybrid approaches
PL 4: Backus-Naur form – use a BNF grammar to derive expressions(s)
PL 5: parse trees – produce parse tree(s) for a given grammar
PL 6: scoping – identify impacts of lexical vs. dynamic scoping

Unit 1: Functional Programming and Scheme

Core        Advanced
FS 1: procedure calls – interpret (nested) Scheme expressions FS 9: car and cdr – write or interpret expressions using car and cdr
FS 2: cons cells – create or interpret diagram of cons cells for a list FS 10: implementing higher-order functions – implement higher-order function(s)
FS 3: recursion – interpret or modify recursive procedures FS 11: tail recursion – identify and interpret tail recursion
FS 4: lambda – interpret expressions using anonymous functions FS 12: writing Scheme – write Scheme procedure(s)/program
FS 5: higher-order functions – interpret expressions using map, filter, fold, etc. FS 13: set! vs. define – explain scenario when bindings differ
FS 6: currying and partial application – use or complete curried procedures
FS 7: lazy lists – write or interpret expressions using lazy lists
FS 8: reading Scheme – explain functionality of given Scheme procedure(s)/program

Unit 2: Imperative Programming and C

Core        Advanced
IC 1: pointers – write or interpet expressions using pointers IC 7: memory issues – identify and explain pointer/memory-related errors
IC 2: stack vs. heap – draw or interpret diagram of stack/heap/static memory IC 8: writing C – write C function(s)/program
IC 3: structs – write expressions using structs/unions
IC 4: arrays – write or interpret expressions using arrays
IC 5: strings – draw or interpret diagram of characters in a string
IC 6: reading C – explain functionality of given C function(s)/program

Unit 3: Interpreter Project

Core        Advanced
IP 1: linked list – explain or work with our linked-list data structure scheme_item_t IP 6: catching errors – identify Scheme errors and interpreter stage at which they should be caught
IP 2: memory management – distinguish features of talloc versus malloc IP 7: evaluating procedures – apply environment model of evaluation to expressions with (nested) procedures
IP 3: tokenization – provide tokenization output for a given Scheme program IP 8: handling quote – explain how ' is handled when parsing/evaluating Scheme
IP 4: parsing – demonstrate our Scheme-parsing algorithm for a given Scheme program IP 9: evaluation order – identify evaluation order for compound expression(s)
IP 5: evaluating simple expressions – apply environment model of evaluation to expressions without procedures IP 10: primitives – explain or work with our approach for handling primitives