Univ. Washington video course: Programming Languages

http://www.cs.washington.edu/education/courses/csep505/06sp/

本课程以Caml/Ocaml为蓝本介绍现代程序语言中的诸多特性,虽然这不是编译原理的课程,但是肯定也很合对此感兴趣的人的胃口。网站包括所有讲义pdf, 代码,作业和答案,授课视频和mp3。

课程大纲:
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

你可能感兴趣的:(oop)