The following topics are fair game for the midterm:
- Readably vs. Writability vs. Maintainability
- Programming language paradigms (focus on imperative vs. functional)
- Syntax
- BNF
- Operator precedence
- Memory allocation
- Heap
- Stack
- Garbage collection
- Scope
- Names and bindings
- Information hiding
- Static scope
- Declaration scope
- Modules
- Dynamic scope
- Aliases
- Overloading
- Types
- Views of types (definitions)
- Classes and kinds of types / their properties
- Boxing/unboxing
- Type conversion
- Type equivalence
- Type compatibility
- Programming language features
- Cons cells
- Pointers
- Data-is-code-is-data
Questions about what code does are fair game in:
- Java
- C
- Clojure
- Pseudocode styles as used in class
You should be sure that you can do any of the kinds of tasks we worked out together in class.