CS 380 Exam Two Terms and Concepts
Clojure
- Be able to write and understand simple Clojure code.
Chapter 6
- Control flow
- How expressions are evaluated
- short-circuit evaluation
- selection statements
- iteration statements
- recursion, including tail recursion
Chapter 7
- Type systems
- type checking, including name versus structure compatability
- type inference
Chapter 8
- Composite types
- records, arrays, including associative arrays
- pointers
- heap-dynamic variables
- dereferencing
- pointer problems, including:
- dangling pointers (what causes them, what can be done)
- lost heap-dynamic variables (what causes them, what can be
done)
- how languages use pointers
- reference variables (in Java or Common Lisp) vs. pointers
- heap management (including garbage collection)
Chapter 9
- subroutines:
- basic characteriscs
- kinds of parameters: positional, keyword, optional
- categories: procedures and functions
- local referencing environment: stack dynamic vs. static
- parameter passing
- semantic models: in, out, in out
- transfer models: copy or access path
- implementation models:
- pass-by-value
- pass-by-result
- pass-by-value-result
- pass-by-reference
- be able to simulate each
- show how some can introduce aliases
- type checking of parameters
- know what needs to happen for a subprogram call
- know what needs to happen for a subprogram return
- fully static environments, know how they work
- stack-based runtime environments
- know how they work
- static link vs. dynamic link
- techniques for accessing nonlocal variables, static chains
vs. displays
- nonlocal references in a dynamically-scoped environment
- fully dynamic environments, what makes them (sometimes)
necessary
- exception handling
Chapter 10
- Data abstraction and object orientation
- big three: encapsulation, inheritance, dynamic polymorphism
- encapsulation
- inheritance
- terminology: object, instance, subclass, superclass, method,
message
- single vs. multiple inheritance vs. interfaces
- polymorphism and dynamic binding
- "pure" object-oriented languages vs. hybrids
Chapter 11
- functional languages
- referential transparency
- persistant data types
- lazy evalution, why it is useful and how it works
- programs as data