EECS 490: Programming Languages
Basic Information
Instructor: Chandrasekhar Boyapati
Credits: 4
Prerequisites: EECS 281
For CS-ENGR and CS-LSA undergrads, counts as an upper-level CS technical elective.
For CE undergrads, counts as a flexible technical elective and an EECS elective.
For CSE grads, counts as a 400-level elective.
Course Overview
Fundamental concepts in programming languages.
Course covers
different programming languages including functional, imperative,
object-oriented, and logic programming languages;
different language constructs for naming, control flow, memory
management, concurrency, and modularity;
as well as
methodologies, techniques, and tools for writing correct and maintainable
programs.
Topics
-
Scheme:
Functional Programming
-
Functions, Higher-Order Functions, Recursion, Lists, Continuations
-
Datatypes and Pattern Matching
-
Garbage Collection
-
Lambda Calculus
-
Java:
Object-Oriented Programming
-
Modularity, Abstraction, Object-Oriented Programming
-
Classes, Types, Subtyping, Dynamic Dispatch, Polymorphism,
Exceptions
-
Concurrency
-
Portability and Safety, Java Bytecodes, Mobile Code, Proof Carrying Code
-
C#, Microsoft .Net Platform
-
Design Patterns
-
Prolog:
Logic Programming
-
Lightweight Formal Methods in Software Development
-
Semantics of Programming Languages
-
Types in Programming Languages
-
Writing Formal Specifications, Specification Languages, Checking
Specifications
Grading
70%: Individual Written and Programming Assignments
30%: Exams