Programming assignments and projects of Programming Language course on Coursera
-
Part A: Standard ML
- SML grammer and basics: functions, recursions, scope, tuple, lists, options etc. and SML's REPL
- Datatypes, pattern-matching, tail-recursion, exceptions
- First-class/high-order/anonymous functions, closures, map/filter/fold, currying and partial application
- Type inference, module systems, equivalence
-
Part B: Racket
- parentheses, dynamic typing, mutation, thunks, delay/force, streams, memoization, Macros and DrRacket
- struct and using struct to implement a new PL: AST interpreter
- static VS typing, eval and quote
-
Part C: Ruby
- Class/Objects, visibility, duck typing, Blocks, Procs, Array/Hash/Range, Subclass, Overriding/Dynamic Dispatch: enhance a Tetris Game in Ruby
- OOP vs. Functional Decomposition, Dynamic Dispatch, Double Dispatch, Multi-Inheritance, Mixins, Interfaces, Java Abstract Methods,C++ pure Virtual Functions
- SubTyping, Generics Vs. SubTyping, Bounded Polymorphism