CSC447
Concepts of Programming Languages
Course Overview
Instructor: James Riely
Learning Goals
-
Become a better programmer
-
Understand PLs implementation
-
Know the lingo!
-
Be able to choose PL for a purpose
-
Be able to craft a small PL
PL Concepts
-
Scanning, Parsing, Analysis, Intermediate Representation, Optimization, Code Generation
-
Virtual Machine, Just-In-Time Compiler
-
Scope, Lifetime, Closures, Call-By-Value, Call-By-Name
-
Stack, Heap, Garbage Collection, Reference Counting, Borrow Checking
-
Static/Dynamic Types, Single/Multiple Inheritance, Mixins, Subtyping, Parametric Polymorphism
-
Static/Dynamic Dispatch (Early/Late Binding), Vtables, Multi-methods
-
List Comprehensions, Pattern Matching
Course Overview
-
Implement an interpreter in Java
-
Programming paradigms and styles in Scala (and possibly Javascript)
-
functional vs object-oriented
-
mutability vs immutability
-
iteration vs recursion
-
pattern matching vs visitor design pattern