Goals:
Successful course participants will:
• Master universal programming-language concepts (including datatypes, functions, continuations, threads,
macros, types, objects, and classes) such that they can recognize them in strange guises.
• Learn to evaluate the power, elegance, and definition of programming languages and their constructs
• Attain reasonable proficiency programming in a functional style
• Find relevant literature somewhat more approachable.
Audience: This course is for software professionals who have substantial programming experience. No background in functional programming or programming-language theory is assumed, though we will “move fast.”
Experience with imperative and object-oriented programming may be assumed informally and occasionally.
Contact Information: The instructor is Dan Grossman. See the course home page
(http://www.cs.washington.edu/education/courses/csep505/06sp/) for all pertinent information.
Topics covered in the course
1. Purpose of studying programming languages
2. Functional programming (in Caml)
• Datatypes
• Higher-order functions
• Tail recursion
• Lack of mutation
3. Defining languages
• Concrete vs. abstract syntax
• Introduction/elimination forms
• Semantics via interpretation
• Semantics via translation
4. Induction for Proving Program Properties
5. Program and Programming-Language Equivalence
6. Lambda-Calculus
7. Abstract Machines
8. Exceptions, continuations, continuation-passing style
9. Types
• Soundness vs. completeness
• Type safety
• Type inference
• Static vs. dynamic typing
10. Polymorphism
• Generics
• Parametricity
• Subtyping
• Polymorphic references
11. Laziness (thunks, streams, memoization)
12. Macros
13. Concurrency
• Threads
• Locks
• Message passing (Concurrent ML)
• Atomicity
14. Object-oriented programming
• Dynamic dispatch
• Classes vs. types
• Multimethods
• Classless OOP
• Extensibility: contrast with functional programming
15. Memory management
• Garbage collection
• Regions (a.k.a. arenas)
• Unique pointers
Successful course participants will:
• Master universal programming-language concepts (including datatypes, functions, continuations, threads,
macros, types, objects, and classes) such that they can recognize them in strange guises.
• Learn to evaluate the power, elegance, and definition of programming languages and their constructs
• Attain reasonable proficiency programming in a functional style
• Find relevant literature somewhat more approachable.
Audience: This course is for software professionals who have substantial programming experience. No background in functional programming or programming-language theory is assumed, though we will “move fast.”
Experience with imperative and object-oriented programming may be assumed informally and occasionally.
Contact Information: The instructor is Dan Grossman. See the course home page
(http://www.cs.washington.edu/education/courses/csep505/06sp/) for all pertinent information.
Topics covered in the course
1. Purpose of studying programming languages
2. Functional programming (in Caml)
• Datatypes
• Higher-order functions
• Tail recursion
• Lack of mutation
3. Defining languages
• Concrete vs. abstract syntax
• Introduction/elimination forms
• Semantics via interpretation
• Semantics via translation
4. Induction for Proving Program Properties
5. Program and Programming-Language Equivalence
6. Lambda-Calculus
7. Abstract Machines
8. Exceptions, continuations, continuation-passing style
9. Types
• Soundness vs. completeness
• Type safety
• Type inference
• Static vs. dynamic typing
10. Polymorphism
• Generics
• Parametricity
• Subtyping
• Polymorphic references
11. Laziness (thunks, streams, memoization)
12. Macros
13. Concurrency
• Threads
• Locks
• Message passing (Concurrent ML)
• Atomicity
14. Object-oriented programming
• Dynamic dispatch
• Classes vs. types
• Multimethods
• Classless OOP
• Extensibility: contrast with functional programming
15. Memory management
• Garbage collection
• Regions (a.k.a. arenas)
• Unique pointers
click on the link below for video lectures
0 comments :
Post a Comment