Steam-powered Turing Machine University of Washington Computer Science & Engineering
 Syllabus for CSE341: Programming Languages
  CSE Home   About Us    Search    Contact Info 

CSE341: Programming Languages

Credits
4
Catalog description
Basic concepts of programming languages, including abstraction mechanisms, types, and scoping. Detailed study of several different programming paradigms, such as functional, object-oriented, and logic programming. No credit if CSE 413 has been taken.
Prerequisites
CSE 143.
Textbook(s) and/or other required material
Varies depending on instructor, but typically one or two of: Simon Thompson, Miranda: The Craft of Functional Programming Jeff Ullman, Elements of ML Programming Mark Guzdial, Squeak: Object-Oriented Programming with Multimedia Applications Kent Dybvig, The Scheme Programming Language (In addition, significant on-line materials, tutorials, and resources are provided.)
Course objectives
* To understand fundamental programming-language concepts. * To become fluent in non-imperative programming paradigms. * To become able to learn new programming languages efficiently.
Topics covered
The following topics are always covered: * Functional programming (avoiding mutation; exploiting recursion and higher-order functions; closures; anonymous functions) * algebraic datatypes and pattern-matching * essential object-oriented programming (late-binding / dynamic dispatch, subtyping vs. subclassing) * language support for abstraction, such as modules, abstract types, and dynamic type-creation * syntax vs. semantics * static vs. dynamic typing * parametric polymorphism / generics * object-oriented extensibility vs. functional extensibility In any particular offering, most of the following are covered: * tail recursion * currying * equality vs. identity * macros * type inference * lazy evaluation and related idioms such as streams and memoization * code-as-data concepts, such as reflection and eval/apply * lexical vs. dynamic scope * subtyping issues such as structural vs. named subtyping and sumpsumption vs. coercion * object-oriented concepts such as multiple inheritance, multimethods, and metaclasses * bounded parametric polymorphism * forms of parameter passing * subtype polymorphism and bounded polymorphism * logic programming * garbage collection A small number of these topics might also be covered: * language-design principles * history of programming languages * programming environments * debugging support * compilers vs. interpreters * continuations * continuation-passing style * coroutines * iterators * language support for concurrency
Course structure
3 lectures per week 1 section per week
ABET Outcomes Assessed
(k) an ability to use the techniques, skills, and modern computer engineering tools necessary for engineering practice
Additional ABET Outcomes Covered
(e) an ability to identify, formulate, and solve computer engineering problems
Last edited by
djg
Last modified
09:32pm 29 Apr 2007


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to webmaint]