Skip to content

JonnyKong/Coursera-ProgrammingLanguagesUW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coursera: Programming Languages, UW

This is the course project for MOOC Programming Languages, offered by University of Washington

The content of this course includes:

  1. Section 1 (Standard ML):

    • SML Functions
    • Pairs, tuples and lists
    • Let expressions
    • Local variables, nested functions
    • Options
    • Boolean and comparison operators
  2. Section 2 (Standard ML):

    • Compound types: records and tuples
    • Concept of "Syntatic Sugar"
    • Datatype bindings and case expressions
    • Pattern Matching
    • Type synonyms
    • Polymorphic datatypes
    • Nested patterns
    • Tail recursions
  3. Section 3 (Standard ML):

    • Anonymous functions
    • Lexical scope and closures
    • Currying
    • Mutable references
    • Callbacks
    • Use closures in OOP (Java) and procedual languages (C)
  4. Section 4 (Standard ML):

    • Type inferencing
    • Mutual recursion
    • SML module systems
    • Signatures
    • Implementing ADTs with signatures and modules
    • Equivalent functions
  5. Section 5 (Racket):

    • Racket definitions, functions and conditionals
    • Racket lists
    • Dynamic typing
    • Local and top-level bindings
    • Mutation
    • Delayed evaluation and thunks
    • Streams use and definition
    • Memoization
  6. Section 6 (Racket):

    • Datatype programming in Racket
    • Implementing programming languages
    • Intepreter assumptions
    • Implementing variables and closures
  7. Section 7 (Racket):

    • Static typing v.s. dynamic typing
    • Weak typing
    • The soundness and completeness of a type system, undecidability
  8. Section 8 (Ruby):

    • Ruby syntax, semantics and scopes
    • Rules of Ruby OOP:
      • Everything is an object
      • Object states, class variables, class constants, class methods
      • Visibility
      • Class definitions are dynamic
      • Duck typing
      • Subclassing and overriding
      • Dynamic Dispatch
    • Arrays, Hashes and Ranges
    • Blocks and procs
  9. Section 9 (Ruby):

    • OOP v.s. functional decomposition
    • Adding methods or variants
    • Double dispatch
    • Multiple inheritance
    • Mixins
    • Interfaces
    • Abstract Methods
  10. Section 10 (Ruby):

    • Subtyping
    • Depth subtyping
    • Function subtyping
    • Suptyping and OOP
    • Subtyping v.s. generics
    • Bounded polymorphism