CSE 413
Programming Languages and Their Implementation
Credits
3.0
Lead Instructor
Hal Perkins
Textbook
Online reference and tutorial information
Course Description
Basic concepts and implementation strategies for modern functional and object-oriented programming languages such as Scheme and Java. Intended for non-majors. No credit to students who have completed CSE 341 or CSE 401.
Prerequisites
CSE 373.
CE Major Status
None
Course Objectives
Expand our notions of programming, learn basic concepts of
programming languages, and gain insight into how languages are
implemented. The main focus of the course will be to study functional
and object-oriented programming using Racket (a dialect of Scheme) and
Ruby, then explore language implementation techniques, and possibly other languages as time
allows.
The final project will be to implement a compiler or interpreter for a
small
language.
ABET Outcomes
No outcomes registered
Course Topics
- functional programming (avoiding mutation; exploiting recursion and higher-order functions; closures; anonymous functions)
- essential object-oriented programming concepts (late-binding / dynamic dispatch, subtyping vs. subclassing)
- syntax vs. semantics
- static vs. dynamic typing
- object-oriented extensibility vs. functional extensibility
- tail recursion
- memory management, reference counting, and garbage collection
- compilers vs. interpreters
- definitions of programming languages
- regular expressions and lexical analysis
- context free gramamrs and semantic analysis
- interpretation
- runtime storage layout