Topics for ECS 140A Final Exam
- Syntax and Parsing.
- Context-free grammars, derivations and parse trees.
- BNFS.
- EBNFs.
- Semantics and Go.
- Scope in Go.
- Basic types, structs, pointers, arrays, maps, and user-defined types.
- Type conversion.
- Interfaces.
- Type assertions and type switches.
- Type embeddings.
- Closures.
- Functional Programming (Lisp).
- Basic list operations (list, car, cdr, cons).
- Predicates (atom, null, equal, etc.)
- User-defined functions (defun).
- Lisp constructs (cond, if, let, let*, quote, eval, funcall, apply).
- High-order functions (mapcar, maplist, reduce).
- Parsing Revisited.
- FIRST sets.
- FOLLOW sets.
- Parsing tables.
- Removirig immediate left recursion.
- Prolog.
- Unification.
- Lists in Prolog.
- Arithmetic operators, logical operators, and comparison operators.
- Defining facts and rules.
- Solving goals — search and backtracking, goal and rule ordering.
- Cuts (green and red)
- Concurrency in Go.
- Creating Goroutines.
- WaitGroups (Add, Done, and Wait).
- Channels — channel creation, send statement, receive statement, and closing channels.
- Range statement to receive values from a channel.
- Select statement to wait on multiple communication operations.
- Mutex type (Lock and Unlock).
- Dynamic Data Race Detection.
- Identifying data races.
- Channels and mutexes to fix data races.
- Happens-before analysis.
- Lockset analysis.