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 |