Below is a list of the various important points we've covered in the class so far. Hopefully, you can map between your notes and these ideas.
- basics of reg exps and their use for identifying lexemes
- basics of Context-free grammars and their use for specify language grammar
- relationship between derivations and parse trees
- ambiguity in grammars, how to detect it
- specifying fix and precedence and associativity in grammars
- BNF vs EBNF
- attribute grammars, why they help
- basics of relations and functions
- basic types of ML: int, real, string, char bool (and the standard functions for each)
- function definition vs function application
- setting values in the evaluation environment
- function definition by cases -- matching of values to params
- function definition by recursion
- using helper functions to structure code development
- "type" key word for basic type aliasing
- record and tuple types and their basic functions
- "datatype" key word for creating complex data types
- list types and their basic functions
- basic exception handling
- referential transparency and its relation to functional programming
- type matching
- Object oriented programming: adts, inheritance, dynamic method binding
- Is-a vs has-a inheritance
- sub-class vs sub-type
- instance vs class variables
- Ruby classes: variables, methods, initialize
- accessors and setters
- Ruby modules --use for code mgmt
- subprograms & parameters
- declaration vs definition
- formals vs actuals - params
- binding: position, keyword, default
- allocation: static vs stack dynamic
- Param usage: in/out/in-out
- by-value, by-result, by-reference, by-value-result, by-name
- type-checking of params
- passing arrays as params
- passing subprograms as params
- allocating subprogam resources on the stack
- Params causing aliasing
- 4 levels of concurrency
- synchronization: cooperative and competitive
- semaphores, monitors, message passing
- exception handling -- tour of languages (throw/catch, raise/handle)
- exceptions: modeled as; propogation; continuation;
- event models
- lambda calculus variables/applications/abstractions
- free vs bound variables in lambda substitution
- alpha/beta/etc conversion
- semantics: operational/denotational/axiomatic
- inference rules; weakest precondition
- predicate and propositional calculus
- horn clauses and Prolog programming
- big data, pig programming, HDFS