Courses
Offered
Click on a course name for a description and the next scheduled offering:
Click on a course name for a description and the next scheduled offering:
EECS 368 - Programming Language Paradigms
Programming Language Paradigms is an introduction to
programming language fundamentals. The objective of
the course is to provide an introduction to
alternative programming models that compliment the
traditional imperative models taught in introductory
courses. The course will provide theoretical insight
into various aspects of modern languages while
requiring hands-on development of programs using
Java, Scheme, and Haskell. EECS 368 is offered every
semester, I traditionally teach it in the fall.
Website
Website
EECS 443 - Digital Systems Design
Digital Systems Design expands on material from
Digital Logic to examine design techniques for
digital systems. The course examines register
transfer level design, systems level CPU design and
specification, data and control path design, and
basics of digital systems simulation and synthesis
using VHDL. EECS 443 is always offered in the Spring
semester when I traditionally teach it.
Website
Website
EECS 662 - Programming Languages
This course is an undergraduate introduction to
programming language concepts. The course is taught
each semester. I will be teaching the Fall 2008
section.
Website
Website
EECS 690 - Generic Programming
This course is an introduction to generic and
polytypic programming using Haskell. This course is
offered irregularly.
EECS 743 - Static Analysis
This course is an introduction to techniques for
performing static software analysis. It is offered
irregularly and is currently not scheduled to be
taught.
EECS 762 - Programming Language Foundation I
Programming Language Fundamentals is an introduction
to the semantics of programming languages. The course
will present modern approaches for defining dynamic
and static semantics as well as verifying definitions
and implementing interpreters. We will start with
dynamic semantics defining languages using
operational, denotational, and axiomatic semantics.
We will then overview domain theory and being looking
at static semantics and types. The course
concentrates on pragmatic issues and requires both
specification and verification of semantics and
implementation of interpreters.
Website
Website
EECS 755 - Systems Requirements Modeling
Systems Requirements Modeling and Analysis is an
advanced introduction to modern techniques for
specification, verification and implementation of
computer-based systems. Topics covered are equally
useful for hardware and software verification. We
will learn to write formal specifications, refine
specifications and verify that implementations meet
their requirements. Specific topics include axiomatic
specification, invariants, algebraic types and
induction, constructive specification,
assume-guarantees style specification, safety and
liveness, and natural deduction. Currently we use the
Isabelle proof tool, but techniques apply equally
well to other verification systems. EECS 755 is
offered every other fall semester. Next offering will
be Fall 2009.
Website
Website
EECS 843 - Programming Language Foundation II
Programming Language Foundation II is a continuation
of Programming Language Foundation I focusing on
static semantics and type systems. Starting with the
simply typed lambda calculus, we will explore
defining types consistent with implementations in
modern programming languages. We will discuss type
inference and type checking and explore the
Curry-Howard correspondance. We will continue by
examining recursive types, universal and existential
types, System F and the Lambda Cube. EECS 843 is
scheduled to be offered again in Spring 2009 and has
EECS 762 as a hard prerequisite.
EECS 955 - Theoretical Foundations of Software Construction
Theoretical Foundations of Software Construction is
an introduction to formal and principled techniques
for synthesizing and developing software.
Prerequisites are EECS 755 or EECS 762. This course
is taught irregularly and is currently not scheduled
to be taught.
For "official" advising appointments, please bring a draft of your schedule. I will have your ARTS form and your departmental folder. Students are welcome to discuss academic advising, graduate school, and employment issues throughout the year, not just during the advising period. Please feel free to make an appointment or visit during office hours. I will not sign enrollment forms for other advisors without permission from them or the department office.
Graduate Advising
I advise students working in my research group exclusively. If you have been assigned to me by the department, I am more than happy to help out, but this is not a commitment to long-term graduate advising. I will not under any circumstances sign forms related to I-20, OPT or CPT visas for anyone except my own students.