|
Syllabus for CSE341: Programming Languages
|
|
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
|
 |
Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA 98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to webmaint]
|