Note: You must establish a session for Fall Academic Term 2001 on wolverineaccess.umich.edu in order to use the link "Check Times, Location, and Availability". Once your session is established, the links will function.
This page was created at 6:52 PM on Wed, Oct 10, 2001.
Open courses in Computer Science (*Not realtime Information. Review the "Data current as of: " statement at the bottom of hyperlinked page)
Wolverine Access Subject listing for CMPTRSC
Fall Term '01 Time Schedule for Computer Science.
What's New This Week in Computer Science.
CMPTRSC 181 / EECS 181. Introduction to Computer Systems.
Section 001.
Prerequisites & Distribution: Intended for students whose goal is computer literacy; not intended for computer science, computer engineering, electrical engineering concentrators. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.umich.edu/~cs181/
CS181 is meant to develop students into better computer users by offering a broad overview of how computers influence our lives. The lecture establishes what a computer is and how its parts affect the whole. Some time will be spent discussing
different types of software and what makes good software – this will better prepare students to critically evaluate the lab
material. In laboratory, students learn how to increase their productivity with several commercial software packages –
Microsoft Word, Excel, and PowerPoint as well as Filemaker Pro. Intended for non CE/CS/EE majors whose goal is computer literacy.
CMPTRSC 183 / EECS 183. Elementary Programming Concepts.
Prerequisites & Distribution: Not intended for engineering students. Students intending transfer to the College of Engineering should take Engin. 101. CS concentrators who qualify should elect CS 280. Credit is granted for only one course among CS 183 or Engineering 101. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~arford/183home.html
What's the Course About?
EECS/CS 183 is intended for both majors and nonmajors in Computer Science. The course does indeed teach "elementary programming concepts." The underlying goal of the course is to enable students to learn and apply fundamental programming techniques and solve basic programming problems using a highlevel programming language. Currently the language used is C++.
Textbook/Coursepack Readings:
 Programming in C++, by Nell Dale, Chip Weems & Mark
Headington, 2nd Edition, Jones & Bartlett, Publishers, 2001.
 Practical Debugging in C++, by Ann Ford & Toby Teorey, 2000.
CMPTRSC 203(303) / EECS 203. Discrete Structures.
Section 001.
Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~vchakkab/eecs203/
Introduction to the foundations of discrete mathematics: logic; sets; functions; methods of proof; methods of counting. Introduction to the foundations
of computational representation: relations, graphs, matrices. Application to problems in computer science and engineering.
Text: Discrete Mathematics and its Appllications by Kenneth H. Rosen
Topics:
 Logic
 Predicate Logic and Quantifiers
 Sets
 Set Operations
 Functions
 Sequences and Summations
 Growth of Functions
 Methods of Proof
 Mathematical Induction
 Recursive Definitions
 Recursive Algorithms
 Program Correctness
 Basics of Counting
 The Pigeonhole Principle
 Permutations and Combinations
 Discrete Probability
 Probability Theory
 Generalized Permutations and Combinations
CMPTRSC 203(303) / EECS 203. Discrete Structures.
Section 005.
Instructor(s):
Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs2035/
Fundamental concepts of algebra; partially ordered sets, lattices, Boolean algebras, semigroups, rings, polynomial rings. Graphical representation of algebraic systems; graphs, directed graphs. Application of these concepts to various areas of computer engineering.
CMPTRSC 270 / EECS 270. Introduction to Logic Design.
Section 001.
Prerequisites & Distribution: Engineering 101 or CS 183. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs270/
This course provides you with a basic understanding of what digital devices are, how they operate, and how they can be designed to perform useful functions. It forms the foundation necessary for the more advanced hardware and software design courses in our curriculum. You will learn about digital design through a combination of lectures, homework, and a handson laboratory. The laboratory is an integral part of the course that shows how the theory of digital design learned in lectures is applied in practice to construct real digital systems.
Binary
and nonbinary systems, Boolean algebra, digital design techniques, logic
gates, logic minimization, standard combinational circuits, sequential circuits, flipflops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computeraided design. Laboratory includes
hardware design and CAD experiments.
CMPTRSC 270 / EECS 270. Introduction to Logic Design.
Section 002.
Prerequisites & Distribution: Engineering 101 or CS 183. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs270/
This course provides you with a basic understanding of what digital devices are, how they operate, and how they can be designed to perform useful functions. It forms the foundation necessary for the more advanced hardware and software
design courses in our curriculum. You will learn about digital design through a
combination of lectures, homework, and a handson laboratory. The laboratory is
an integral part of the course that shows how the theory of digital design learned
in lectures is applied in practice to construct real digital systems.
Binary
and nonbinary systems, Boolean algebra, digital design techniques, logic
gates, logic minimization, standard combinational circuits, sequential circuits, flipflops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computeraided design. Laboratory includes
hardware design and CAD experiments.
CMPTRSC 280 / EECS 280. Programming and Introductory Data Structures.
Section 001.
Prerequisites & Distribution: Math. 115 and prior programming experience (assumes prior programming experience using decision constructs, iteration, functions, basic I/O, and simple arrays in C/C++). Those without prior programming experience should elect Engineering 101 or CS 183 before electing CS 280. No credit granted to those who have completed or are enrolled in CS 283. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://coursetools.ummu.umich.edu/2001/fall/eecs/280/001.nsf
Techniques and algorithm development and effective programming, topdown analysis, structured programming, testing, and program correctness. Program language syntax and static and runtime semantics. Scope, procedure instantiation, recursion, abstract data types, and parameter passing methods. Structured data types, pointers, linked data structures, stacks, queues, arrays, records, and trees.
CMPTRSC 281(380) / EECS 281. Data Structures and Algorithms.
Section 001 – https://coursetools.ummu.umich.edu/2001/fall/eecs/281/001.nsf
Prerequisites & Distribution: CS 280 and 203. (4). (NS). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/
EECS 281 is an introductory course in data structures and algorithms at the
undergraduate level. The objective of the course is to present a number of
fundamental techniques to solve common programming problems. For each of these
problems, we will determine an abstract specification for a solution, examine one or
more potential representations to implement the abstract specification, focusing on those with significant advantages in the time/space required to solve large problem
instances. When appropriate, we will consider special cases of a general problem that
admit particularly elegant solutions.
CMPTRSC 281(380) / EECS 281. Data Structures and Algorithms.
Section 005.
Instructor(s):
Prerequisites & Distribution: CS 280 and 203. (4). (NS). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/
EECS 281 is an introductory course in data structures and algorithms at the undergraduate level. The objective of the course is to present a number of fundamental techniques to solve common programming problems. For each of these problems, we will determine an abstract specification for a solution, examine one or more potential representations to implement the abstract specification, focusing on those with significant advantages in the time/space required to solve large problem instances. When appropriate, we will consider special cases of a general problem that admit particularly elegant solutions.
Course Objectives:
By the end of the course, you will become familiar with various techniques for estimating program performance, organizing data
to allow efficient searching and sorting, and methods for developing efficient algorithms. You will also get critical foundational
material for courses on such things as operating systems, compilers, networks, database, artificial intelligence, computer
architecture and advanced algorithm design and analysis.
While programming plays an important role in this course, this is not a programming course. Rather, our emphasis is on the
design and analysis of data structures and algorithms.
CMPTRSC 285 / EECS 285. A Programming Language or Computer System.
Section 001 – Java.
Instructor(s):
Prerequisites & Distribution: Some programming knowledge required. (2). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (2).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~bartlett/f01java.html
Supported programming environment – Java 1.2 using Sun's JDK on Unix
 Writing, compiling and running Java programs
 Java syntax
 Object Based programming in Java
 Object Oriented programming in Java
 Java applets
 Java GUI components
 Layout managers
 Images and sounds, animation, and Threads
 Advanced animation, multithreading
 Exception handling
CMPTRSC 370 / EECS 370. Introduction to Computer Organization.
Section 001.
Prerequisites & Distribution: CS 280 or CS 283. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs370/
Course Overview:
This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software processes that enable you and the computer to work together to have the computer carry out a concept. In your introductory programming courses (e.g., EECS 280), you learned how to express a concept in terms of a highlevel programming language such as C/C++. In EECS 370, you will see how a lowlevel language is executed by the hardware, and you will see how to put together basic hardware building blocks to form the functional units of a computer.
To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finitestate machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.
Prerequisites:
Students must have taken EECS 280, or have equivalent knowledge of C/C++. Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quickly – a TA can help you during office hours.
Course Material:
The required text for the course is Computer Organization and Design: The Hardware/Software Interface (2nd edition), by Patterson and Hennessy. There are also optional lecture notes on the course home page.
Exams:
There will be four exams this semester – approximately one each month. You are expected to take the exams at the scheduled times. If you do not take an exam without verifying that a documented medical or personal emergency has caused you to miss it, you will receive a zero for that exam. If you anticipate conflicts with the exam time, talk to the instructor at least 1 month before the exam date. The exam dates are given at the beginning of the semester so you can avoid scheduling job interviews or other commitments on exam days. Outside commitments are not considered a valid reason for missing an exam.
Grading policy:
Final grades will be based on the total points earned on the projects and exams. Factors such as class participation may be used to adjust your final grade, especially if it falls on a borderline. The tentative point breakdown is as follows: Projects (10% each) = 40%, Exams (15% each) = 60%.
CMPTRSC 370 / EECS 370. Introduction to Computer Organization.
Section 002.
Prerequisites & Distribution: CS 280 or CS 283. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs370/
Course Overview:
This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software processes that enable you and the computer to work together to have the computer carry out a concept. In your introductory programming courses (e.g., EECS 280), you learned how to express a concept in terms of a highlevel programming language such as C/C++. In EECS 370, you will see how a lowlevel language is executed by the hardware, and you will see how to put together basic hardware building blocks to form the functional units of a computer.
To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finitestate machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.
Prerequisites:
Students must have taken EECS 280, or have equivalent knowledge of C/C++. Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quickly – a TA can help you during office hours.
Course Material:
The required text for the course is Computer Organization and Design: The Hardware/Software Interface (2nd edition), by Patterson and Hennessy. There are also optional lecture notes on the course home page.
Exams:
There will be four exams this semester – approximately one each month. You are expected to take the exams at the scheduled times. If you do not take an exam without verifying that a documented medical or personal emergency has caused you to miss it, you will receive a zero for that exam. If you anticipate conflicts with the exam time, talk to the instructor at least 1 month before the exam date. The exam dates are given at the beginning of the semester so you can avoid scheduling job interviews or other commitments on exam days. Outside commitments are not considered a valid reason for missing an exam.
Grading policy:
Final grades will be based on the total points earned on the projects and exams. Factors such as class participation may be used to adjust your final grade, especially if it falls on a borderline. The tentative point breakdown is as follows: Projects (10% each) = 40%, Exams (15% each) = 60%.
CMPTRSC 373 / EECS 373. Design of Microprocessor Based Systems.
Section 001.
Instructor(s): Marios Papaefthymiou (marios@umich.edu)
Prerequisites & Distribution: CS 370 and 270; junior standing. (4). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs373/
Objectives: In this course, you will:
 Learn how the hardware and software components of a microprocessorbased system work together to implement systemlevel features.
 Learn both hardware and software aspects of integrating digital devices (such as memory and I/O interfaces) into microprocessorbased systems.
 Learn the operating principles of, and gain handson experience with, common microprocessor peripherals such as UARTs, timers, and analogtodigital and digitaltoanalog converters.
 Get practical experience in applied digital logic design and assemblylanguage programming.
 Get exposed to the tools and techniques used by practicing engineers to design, implement, and debug microprocessorbased systems.
Prerequisites: You must have taken EECS 270 and EECS 280 to take this course. I will assume you are familiar with (on the hardware side) Boolean algebra, gates, multiplexers, flipflops, and finitestate machines, and (on the software side) program control structures (if/then/else, while and for loops), functions, procedures, parameter passing, pointerbased data structures, and basic structured programming techniques (information hiding, modular programming, etc.). This course also builds on a number of concepts introduced in EECS 100, such as assembly language, traps/interrupts, memory and I/O spaces, etc. If you managed to take 270 and 280 without taking 100, you should still be able to succeed in this class, but you will be at a disadvantage.
Topics Covered:
 Lectures
 Embedded Systems Overview
 PowerPC Architecture and Assembly language
 Bus Basics, Input/ Output devices, Bus Timing, aligned and nonaligned access
 Input/ Output data transfers, Interrupts
 Programmable Counters, Timers
 Analog to Digital and Digital to Analog Conversion
 Memory Types and Timing Issues
 Busses
 Direct Memory Access
 Experiments
 Introduction to the Xilinx FPGA and the EECS373 Expansion board
 Familiarization with the SDS software and the PowerPC ISA
 Bus Interfacing for I/O devices
 Bus Interfacing for Byte addressable memory
 Simple Serial Communication
 Basic Interrupts
 Timers
 Analog to Digital Conversion
 SRAM Interfacing
CMPTRSC 376(476) / EECS 376. Foundations of Computer Science.
Prerequisites & Distribution: CS 280 or 203. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs376/
An introduction to computation theory: finite automata, regular languages, pushdown automata, contextfree languages, Turing machines, recursive languages and functions, and computational complexity.
Textbooks
Introduction to the Theory of Computation by Michael Sipser, PWS Publishing Company, 1997 ISBN 053494728X
Turing's World 3.0 (optional) by Jon Barwise and John Etchemendy, CSLI Publications, 1993 ISBN 1881526100
CMPTRSC 470 / EECS 470. Computer Architecture.
Section 001.
Instructor(s):
Prerequisites & Distribution: CS 370. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs470/
Course Synopsis: This course provides a broad introduction to computer architecture. The course covers a large amount of material in moderate depth, giving the student a good
understanding of the basic issues in computer system design. Specifically, the course covers instruction set design, pipelining, the memory hierarchy, I/O systems, and current research topics. Example systems include the Intel PIII, Alpha 21264 processors.
CMPTRSC 477 / EECS 477. Introduction to Algorithms.
Section 001.
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs477/
Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance. Paradigms for algorithm design:
divideandconquer, greedy methods, graph search techniques, dynamic programming. Design of efficient data structures and analysis of the running time and space requirements of algorithms
in the worst and average cases. Instructor's note: This is not a programming class. We will focus on the analysis of algorithms and situations where it is useful. If you are looking to learn C++/STL, EECS 280 or EECS
281 are relevant classes. If you are looking for programming experience, EECS 281 is the right class to take (but you can also opt for a codingheavy project in EECS 477).
Prerequisites
Students must have taken EECS 203 (Discrete Structures) and EECS 380(281) (Algorithms and Data Structures), or equivalents. Programming experience in C or C++ is required. Some
assignments in this class may require the understanding of C++/STL, but not necessarily designing large programs in C++. If you only know Pascal or Java (or some other language), talk to
Prof. Markov.
Grading Final grades will be based on the total points earned on the projects and exams. Grading will be on the curve. Factors such as class participation may be used to adjust your final grade, especially if it falls on a borderline. The tentative point breakdown is as follows:
Homework: 10%
One project: 30%
One midterm: 30%
Final: 30%
There will be a number of "extra credit" questions, especially on exams. You do not need to solve those to get an A, and other students' "extra credit" will not affect the curve. However, those
can lift your grade above the curve (so, in theory, everyone can get an A). Extra credit questions will not count if the regular part of your assignment is done poorly.
Course Material
Required text: Fundamentals of Algorithms by Brassard and Brately, Prentice Hall 1996
Recommended additional text: Introduction to Algorithms by Cormen, Leiserson, Rivest (and Stein – 2nd ed.), all editions are ok.
If you have your book from EECS 380 – it can be useful too. The book used in the Winter 2001 semester was: Algorithms in C++, Parts 14: Fundamentals, Data Structures, Sorting, Searching, 3rd edition by Robert Sedgewick. Part 5 (second volume) "Graph Algorithms" came out in August – it's quite good.
Additional handouts (typically made from the recommended books).
For references on C++, STL, etc (including online refs), see refs from EECS 380
CMPTRSC 478 / EECS 478. Logic Circuit Synthesis and Optimization.
Section 001.
Prerequisites & Distribution: CS 270 and 203, and senior or graduate standing. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs478/
Course Overview: This course covers digital logic synthesis and its underlying theory from an advanced perspective. Topics include: combinational logic optimization (twolevel and multilevel minimization), sequential logic optimization (state assignment, FSM minimization, retiming), timing analysis and optimization, technology mapping, scheduling, allocation, and verification. Emphasis will be placed on algorithmic techniques that are currently used in the design of integrated systems with millions of transistors.
Textbook: Logic synthesis and verification algorithms, G. Hachtel and F. Somenzi, Kluwer Academic Publishers.
Supplementary textbook: Synthesis and optimization of digital circuits, G. DeMicheli, McGrawHill.
Both textbooks have been placed on reserve in the Media Union Library.
CMPTRSC 481 / EECS 481. Software Engineering.
Section 001.
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs481/
Pragmatic aspects of the production of software systems, dealing with structuring principles, design methodologies and informal analysis. Emphasis is given to development of large, complex software systems. A term project is usually required.
CMPTRSC 482 / EECS 482. Introduction to Operating Systems.
Section 001.
Prerequisites & Distribution: CS 370 and 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~pmchen/eecs482/
Course Overview: EECS 482 is an introductory course in operating systems at the senior undergraduate level or firstyear graduate
level. The objective of the course is to familiarize you with the issues involved in the design and implementation of
modern operating systems. The concepts in this course are not limited to any particular operating system or hardware
platform. We will discuss examples that are drawn from historically significant and modern operating systems.
We will cover topics such as processes and threads, concurrency and synchronization, CPU scheduling, virtual
memory management, communication in distributed systems, secondarystorage management, file systems, and security. In order to more fully understand operating systems, you will implement several projects that expose you to much of the core functionality in modern operating systems. These projects will give you practical exposure to topics such as threads, efficient resource usage, caching, and clientserver systems. To further your understanding of other topics, we will provide practice questions that will be presented in the discussion sections. In discussion sections, we will also present material on the practice of programming, including elegance in design and coding, the process of testing and debugging, and how to effectively work in teams.
Prerequisites:
Students must have obtained a grade of C or better in each of EECS 370 and EECS 380, or have equivalent knowledge
of computer architecture, data structures, and C/C++ programming. Students are expected to have had extensive
C/C++ programming experience and to be familiar with UNIX. Students with questions about whether they
have sufficient preparation for this course should speak with the instructors as soon as possible. Due to the overwhelming
number of students interested in this course, we will strictly enforce the prerequisites.
CMPTRSC 482 / EECS 482. Introduction to Operating Systems.
Section 006.
Prerequisites & Distribution: CS 370 and 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~pmchen/eecs482/
EECS 482 is an introductory course in operating systems at the senior undergraduate level or firstyear graduate level. The objective of the course is to familiarize
you with the issues involved in the design and implementation of modern operating systems. The concepts in this course are not limited to any particular operating
system or hardware platform. We will discuss examples that are drawn from historically significant and modern operating systems. We will cover topics such as
processes and threads, concurrency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondarystorage
management, file systems, and security.
In order to more fully understand operating systems, you will implement several projects that expose you to the core features of modern operating systems. These
projects will give you practical exposure to topics such as threads, efficient resource usage, caching, and clientserver systems. To further your understanding of other
topics, we will provide practice questions that will be presented in the discussion sections. In discussion sections, we will also present material on the practice of
programming, including elegance in design and coding; the process of testing and debugging; and how to effectively work in teams.
Prerequisites
Students must have obtained a grade of C or better in each of EECS 370 and EECS 380/281. Graduate students must have equivalent knowledge of computer
architecture, data structures, and C/C++ programming. Students are expected to have had extensive C/C++ programming experience and to be familiar with UNIX.
Students with questions about whether they have sufficient preparation for this course should speak with the instructors as soon as possible. Due to the
overwhelming number of students interested in this course, we will strictly enforce the prerequisites. We will also give priority to senior students who need the
course to graduate in May and have declared their major. Undeclared majors will not be accepted into this course because of high enrollment.
CMPTRSC 483 / EECS 483. Compiler Construction.
Section 001.
Instructor(s): Trevor N Mudge
Prerequisites & Distribution: CS 281 and 376. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~tnm/483/483.htm
Introduction to compiling techniques including parsing algorithms, semantic processing, and optimization. Students implement a compiler for a substantial programming language using a compiler generating system.
This is a fair description of what we will be covering, but the subject of compiler construction is a large one, and time limitations mean that we
will not cover everything mentioned in the description in great depth. The goal will be to introduce the basics of compiler construction with an emphasis on using tools to construct a simple compiler.
Homework: Homework will be set on a regular basis. It will not be graded. The solutions will be discussed in class. The homework material
will be typical of the questions that will be on the exams.
Exams: There will be two written exams, but no final.
Projects: The main grade will come from five projects that will require you to write parts of a compiler.
Books: There are two books that you should purchase. The first one is a classic, which is often referred to as the dragon or dinosaur book (I think it's a dragon on the cover).
 Title: Compilers: Principles, Techniques, and Tools
Authors: Aho, Sethi, and Ullman. Publisher: AddisonWesley Pub Co
ISBN: 0201100886
 The second book is: Title: Lex & Yacc Authors: John R. Levine, Tony Mason, Doug Brown. Publisher: O'Reilly & Associates ISBN: 1565920007
CMPTRSC 484 / EECS 484 / IOE 484. Database Management Systems.
Section 001 – Relational Database Management Systems (DBMSs)
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs484/
EECS 484 provides basic introduction to relational database management systems (DBMSs). This course is
designed to provide you with both an external and an internal view of relational DBMSs. Topics related to the
external view will cover concepts that will allow you to use a relational DBMS. Topics related to the internal view will allow you to better understand how a relational DBMS works, making you more sophisticated (and perhaps higher paid) database users/administrators. The course has a group course project in which you will build a simple, but fairly complete, singleuser relational database engine. Note, in this course you will not learn the
details of how to use any specific commercial database system, or the intricacies of SQL programming. This
course is designed to cover the fundamental database concepts and the implementation techniques that are used in
relational database engines. Using the course project, you will actually build a few key components of a database
engine. If you are interested in the details of SQL programming, or the operation of a specific commercial
database system, you will be able to pick this up very easily after you have taken this course.
Prerequisites EECS 380: Data Structures and Algorithms or equivalent. WARNING: The course project is programming intensive and requires that you be comfortable
programming in C++. For most of you, the course project will be the largest and most complex
software project that you have built so far. If you are not comfortable programming in C++, you should
take a lowerlevel course to build these skills, and take 484 in a later academic term.
Text: Database Management Systems (2nd edition) – by Raghu Ramakrishnan and Johannes Gehrke, McGraw Hill
1999.
CMPTRSC 486 / EECS 486. ObjectOriented Software Development.
Section 001.
Instructor(s):
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/eecs/courses/eecs486/
No Description Provided.
Check Times, Location, and Availability
CMPTRSC 487 / EECS 487. Interactive Computer Graphics.
Section 001.
Instructor(s): Jon W Harris (harrisjw@umich.edu), Timothy J Hoffman
Prerequisites & Distribution: CS 281 and senior standing. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs487/f01/index.html
The course will have four major focus areas:
 Mathematics for Computer Graphics
This includes the representation and manipulation of points, lines, planes, and vectors; 2D and 3D coordinate transformations, and their representation as matrices; 3D viewing and perspective.
 Geometric Modeling
Includes the modeling hierarchy, facets, polygons, curves, splines, and solids models (combinatoric solid geometry CSG).
 Rendering
Including scan line and ray tracing techniques, camera models, illumination and reflection models for surfaces, shadowing, texture mapping, and antialiasing.
 Applications
Graphical User Interfaces, Visualization, Animations
While not a formal prerequisite, familiarity with simple trigonometry and linear algebra concepts will make the course material easier to understand and comprehend. Likewise, familiarity with object oriented programming techniques is a plus in developing programs driven by graphical user interfaces.
Programming exercises will use the C (or C++) language for generalpurpose programming; Tcl/Tk, for UI development, and OpenGL for 3D graphics. We will review Tcl/Tk and OpenGL in class and discussion; you are assumed to know C or C++. Extensive information about Tcl/Tk and OpenGL is available on the web. Check the class web page for
links.
You will undertake written assignments and programming assignments to explore and increase your understanding of the concepts covered in this course. Final course grades will be based on the total points earned on the homework, computer programming projects, and the two exams.
Class Text: Computer Graphics; Donald Hearn, M. Pauline Baker Source Code Link: http://www.ncsa.uiuc.edu/Vis/Graphics/code.html Interactive Computer Graphics, A TopDown Approach with OpenGL; Edward Angel. Source Code Link: http://thelma.cs.unm.edu/~angel/BOOK/SECOND_EDITION/
CMPTRSC 489 / EECS 489. Computer Networks.
Section 001.
Prerequisites & Distribution: CS 482. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://irl.eecs.umich.edu/jamin/courses/eecs489/
Protocols and architectures of computer networks. Topics include clientserver computing, socket programming, naming and addressing, media access protocols, routing and transport protocols, flow and congestion control, and other applicationspecific protocols. Emphasis is placed on understanding protocol design principles. Programming problems to explore design choices and actual implementation issues assigned.
If you want to learn how to design waycool Web pages, how to build and maintain a killer Web site, or how to setup, administer, and engineer a LAN, this course is not for you. In this course we do not study how modem works, nor do we study how ISDN works. We do not study Novell Netware Administration and we do not learn how to use Adobe Photoshop. We do not learn how to set up a chat room, nor how to set up an electronic guest book. We do try to understand how networks operate and how network applications are written. We study the workings of the Ethernet and the Internet: how packets are routed, how packets are transmitted, and what to do when there is network congestion. We look at packet headers and routing and transmission protocols. We learn what sockets are and how to use them. And we write code. We write code to implement various routing and transmission protocols. We write code to build clientserver applications. There will be a lot of programming. You should know what processes and threads are and be familiar with concurrency and interprocess communication. EECS 482 (Introduction to Operating Systems) is a strict prerequisite. You must also have good working knowledge of C and UNIX. An introduction to probability course such as EECS 401, EECS 501, Math 425, Math 525, or Stat 412 is highly recommended as a corequisite.
Textbooks: Kurose and Ross, Computer Networking: A TopDown Approach, AddisonWesley, 2001. ISBN 020147114. W.R. Stevens, UNIX Network Programming, vol. 1: Networking APIs: Sockets and XTI, 2nd. ed., PrenticeHall, 1997. (Don't buy the first edition!)
CMPTRSC 492 / EECS 492. Introduction to Artificial Intelligence.
Section 001.
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://ai.eecs.umich.edu/people/wpb/492.f.2001/
Course Objectives:
The purpose of this course is to introduce the student to the major ideas and techniques of Artificial Intelligence, as well as to develop an appreciation for the engineering issues underlying the design of intelligent, computational agents. The successful student will finish the course with specific modeling and analytical skills (e.g., search, logic, probability), knowledge of many of the most important knowledge representation, reasoning, and machinelearning schemes, and a general understanding of AI principles and practice. The course will serve to prepare the student for further study of AI, as well as to inform any work involving the design of computer programs for substantial application domains.
Textbook:
Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, PrenticeHall, 1995.
Prerequisites:
EECS 380, or equivalent experience. We assume programming experience and knowledge of programming language concepts, and familiarity with algorithmic concepts, such as graph search and computational complexity. We will not hesitate to employ mathematics where appropriate.
Grading:
Problem sets 60% (10% each); Exams 40% (exams 10% each; final 20%); (subject to slight adjustments at the discretion of instructor).
CMPTRSC 494 / EECS 494. Computer Game Design and Development.
Section 001.
Prerequisites & Distribution: CS 281. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://ai.eecs.umich.edu/soar/Classes/494/
In this course we will study the technology, science, and art involved in the creation of computer games. The course will emphasize handson development of games. We will study a variety of software technologies relevant to games including programming languages, scripting languages, operating systems, file systems, networks, simulation engines, and multimedia design systems. We will also study some of the underlying scientific concepts from computer science and related fields including: simulation and modeling, graphics, artificial intelligence, realtime processing, and game theory. Finally, we will study the art and design principles for developing useable and engaging games including: software engineering, human computer interaction, thematic structure, graphic design, choreography, music and sound effects, and game aesthetics.
The course will include visiting lectures and a variety of group projects. The group projects will involve system implementation, but emphasize design and use of existing tools. The final group project will require the students to go through all phases of system conceptualization, specification, design, implementation, and evaluation.
Required texts: Tricks of the Windows Game Programming Gurus, Andre LaMothe, SAMS publishing. Game Architecture and Design, Rollings & Morris, Coriolis. Coursepack Available from Dollar Bill Copying ($61.28)
CMPTRSC 496 / EECS 496. Capstone Design Course in Computing.
Section 001.
Prerequisites & Distribution: Senior standing, and concurrent enrollment in Technical Communication 496 and one of the approved 400level team project courses in computing. (2). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (2).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: https://coursetools.ummu.umich.edu/2001/fall/eecs/496/001.nsf
Capstone design course for seniors in computer science or computer engineering. Design principles for multidisciplinary team projects, team strategies, entrepreneurial skills, ethics, social and environmental awareness.
Each student must take (simultaneously) Tech Com 496 (2 cr.) and one of the approved 400level team project courses in computing (24 cr.)
CMPTRSC 498 / EECS 498. Special Topics.
Section 001 – Introduction to Micro Electro Mechanical Systems (MEMS)
Instructor(s): Khalil Najafi
Prerequisites & Distribution: (14). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No homepage submitted.
Micro Electro Mechanical Systems (MEMS) are miniature devices (with micron size tolerances) that are created using various techniques including many similar to those used to manufacture integrated circuits, and are capable of performing many tasks and functions that involve mechanical, electrical, optical, fluidic, and other types of signals. MEMS and Integrated Microsystems are increasingly finding applications in many areas including automotive, health care, industrial processing, environmental monitoring, biomedical systems, chemical analysis, energy sources, telecommunication, aerospace systems, consumer appliances, and many others. This course introduces students to this rapidly emerging, multidisciplinary, and exciting filed. It will cover thinfilm process technologies, photolithographic techniques, deposition and etching techniques, and the other technologies that are central to MEMS fabrication. A designer of MEMS requires knowledge and expertise across several different disciplines. Therefore, this course will pay special attention to teaching of fundamentals necessary for the design and analysis of devices and systems in mechanical, electrical, fluidic, and thermal energy/signal domains, and will teach basic techniques for multidomain analysis (e.g., electromechanical, electrothermal). Fundamentals of sensing and transduction mechanisms (i.e., conversion of nonelectronic signals to electronic signals), including capacitive and piezoresistive techniques, and design and analysis of micromachined miniature sensors and actuators using these techniques will be covered. Many examples of existing devices and their applications will be reviewed.
Course Organization and Format: This course is intended for undergraduate seniors and first yeargraduate students, and is the first in a series of four MEMS courses to be offered as part of a comprehensive MEMS educational program within the NSFERC WIMS Center. It is an introductory course designed for those students who are not familiar with MEMS, microfabrication technologies, integrated circuits, or nonelectrical devices and systems. Therefore, the course prerequisites are selected to allow students from MANY engineering or science disciplines, including mechanical, electrical, chemical, aerospace, biomedical, and materials engineering to take the course. Therefore, the course is organized into lectures and recitations. The lectures present material that ALL students need to learn. Recitations are intended to teach students from different disciplines in areas where they may need additional training, including the fundamentals and basics of heat transfer, mechanics (statics, and dynamics) basics of RLC circuit analysis, analysis of secondorder systems in the frequency domain, etc. This course is being offered as a multiinstitutional course and in partnership with Michigan Technological University (MTU) and Michigan State University (MSU). The course is taught over the instructional networks of these universities, and students will have access, ondemand, to all lecture materials, assignments, etc. over the Internet via video streaming.
Prerequisites: Senior standing, engineering, math, chemistry, physics, and differential equations.
CMPTRSC 498 / EECS 498. Special Topics.
Section 004 – Special Topics in Embedded Control Systems
Instructor(s): James S Freudenberg
Prerequisites & Distribution: (14). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs49802/
No Description Provided.
Check Times, Location, and Availability
CMPTRSC 498 / EECS 498. Special Topics.
Section 005.
Instructor(s):
Prerequisites & Distribution: (14). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No homepage submitted.
No Description Provided.
Check Times, Location, and Availability
CMPTRSC 570 / EECS 570. Parallel Computer Architecture.
Section 001.
Instructor(s): Steven K Reinhardt
Prerequisites & Distribution: CS 470. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs570/
Pipelining and operation overlapping, SIMD and MIMD architectures, numeric and nonnumeric applications, VLSI, WSI architectures for parallel computing, performance evaluation. Case studies and term projects.
Course Objectives:
 understand the fundamental issues of parallel computation (communication, synchronization, naming, etc.)
 understand the various ways in which hardware and software can interact to address these issues in parallel systems
 understand the basic cost, performance, and programmability tradeoffs involved in these interactions
Prerequisites:
EECS 470 (Computer Architecture). In particular, you should feel comfortable with caches, virtual memory, dataflow concepts, and instructionlevel parallelism.
CMPTRSC 571 / EECS 571. Principles of RealTime Computing.
Section 001.
Instructor(s): Kang Geun Shin
Prerequisites & Distribution: CS 470 and CS 482. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs571/
Principles of realtime computing based on high performance, ultra reliability, and environmental interface. Architectures, algorithms, operating systems, and applications that deal with time as the most important resource. Realtime scheduling, communications, and performance evaluation.
Textbook: C. M. Krishna and Kang G. Shin, RealTime Systems, McGraw Hill 97. Errata are maintained at http://www.ecs.umass.edu/ece/gradfac/krishna.html
CMPTRSC 584 / EECS 584. Advanced Database Systems.
Section 001.
Instructor(s): Hosagrahar V Jagadish
Prerequisites & Distribution: CS 484. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~jag/eecs584/
Survey of advanced topics in database systems. Distributed databases, query processing, transaction processing. Effects of data models: objectoriented and deductive databases; architectures: mainmemory and parallel repositories; distributed organizations: data management for emerging areas: Internet applications, OLAP, data mining. Case studies of existing systems.
This is an advanced database course that will give you a good understanding of the pieces of a database system and what is involved in building one. I will also try to give you a feeling for the role of databases in today's computing infrastructure and how this has evolved. This is NOT a course on how to use databases, though you will arguably be a better user if you have an understanding of what is going on "under the hood". Also, this is NOT a course on XML, even though XML and the inernet will be mentioned frequently.
2 midterm exams. Both inclass. No makeups for missed midterm exams. No final exam. Term Project: A course project is required.
CMPTRSC 595 / EECS 595 / LING 541. Natural Language Processing.
Section 001 – Meets with Information 661.001.
Prerequisites & Distribution: Senior standing. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://perun.si.umich.edu/~radev/NLP/
An introduction to computational linguistics, stressing the processing of written language but with supplementary discussion of topics relating to spoken language. The course will be based on the following textbook:
Daniel Jurafsky and James H. Martin, Speech and Natural Language Processing, Prentice Hall, 1999.
Topics covered in this course will include: finite state automata and finite state techniques for processing words, language models, tagging corpora for partofspeech, contextfree grammars, parsing techniques, unification grammars and unificationbased parsing, probabilistic parsing, semantics, discourse modeling, word sense disambiguation and information retrieval, natural language generation, and (if time permits) machine translation.
There will be a midterm and a final examination, as well as a course project and regularly assigned exercises. NonCS students without strong programming experience will not have to do a project that requires programming.
This course is the normal introduction to computational linguistics for advanced undergraduates or graduate students in Computer Science, the School of Information, or Linguistics, and normally is a prerequisite for more advanced courses in the area at the University of Michigan. For linguistics students, Linguistics 513 and any other 400 or more advanced level linguistics course are prerequisites. Computer literacy is essential; some programming experience would be helpful. Students in Computer Science or the School of Information should take the versions of this course offered in those units.
CMPTRSC 598 / EECS 598. Special Topics in Electrical Engineering and Computer Science.
Section 001 – Quantum Computing Circuits
Instructor(s): John Hayes, Igor Markov
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://vlsicad.eecs.umich.edu/Quantum/EECS598/
This specialtopics course is intended to explore the area of quantum computation, focusing on the design and analysis of quantum logic circuits. No prior knowledge of quantum
computing or quantum physics is required, but participants will be expected to read and present
papers on topics of interest. After some introductory lectures on basic principles, the course will
cover the following topics: quantum circuit synthesis, simulation and testing, matrix methods, algorithm implementation, errorcorrection techniques, experimental systems, research
problems.
 Part I. Introduction
 Brief Overview of Quantum Computing
 Basics of Quantum Mechanics and Mathematical/CS Background (2 lectures)
 Classical vs Quantum: positive and negative results; sample algorithms
 Basic examples of Quantum Circuits: adders, etc.
 An overview of implementation technologies and implied constraints
 Part II. Classical circuits
 Bruteforce Synthesis of Optimal Classical Circuits; Basic Heuristics
 BDDbased Synthesis with Implicit representations
 Basic ideas in circuit testing, ATPG, Dalgorithm, redundancies, etc.
 Don't cares in classical circuits, SPFDs and related
 Spectral ideas in circuit synthesis
 Faulttolerance, ECC....
 Reversible circuits
 Part III. Quantum Circuits
 The pivotal role of the Fourier transform in quantum computing
 Circuits for the Quantum Fourier transform
 Gate Libraries for Quantum Circuits
 Straighforward synthesis of quantum circuits (following Cybenko)
 Heuristics for minimization of quantum circuits
 Quantum Measurement and don't cares of quantum circuits
 Errors in quantum circuits, faulttolerance, ECC
 Part IV. Simulation of quantum circuits/algorithms
 Notations for quantum circuits and algorithms
 Basic challenges, bestcase vs worstcase
 FFTbased and BDDbased simulation
 Part V. Research topics explored via student term projects.
Each project will include a written report, a 30min presentation as well as the design of software or logic circuits.
Required textbook: Quantum Computation and Quantum Information
by Michael A. Nielsen, Isaac L. Chuang
Amazon Price: $47.95 (ships in 24 hours)
Paperback – 675 pages (September 2000)
Cambridge Univ Pr (Pap Txt); ISBN: 0521635039;
CMPTRSC 598 / EECS 598. Special Topics in Electrical Engineering and Computer Science.
Section 002 – Issues in HighPerformance DeepSubmicron Design
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs598/eecs598.html
As process technology has entered into deepsubmicron dimensions, feature sizes of 0.15 and 0.13 micrometers are now common, resulting in a
number of new challenges in the implementation of large designs. These issues are particularly critical in high performance designs, which are
reaching multiple Giga Hertz today, and design and CAD engineers need to reckon with them. In this course, we will examine a number of the
issues that the deep submicron designer has to face in order to implement highperformance circuits in the latest CMOS technologies.
We will examine 5 topics that cover some of the key issues in the design of deep submicron ICs. These are:
 onchip signal net noise,
 onchip power supply integrity,
 onchip inductance effects, and
 standby leakage current.
 implementation issues in silicononinsulator (SOI) technology,
For each topic, we will first study applicable analysis and modeling techniques and then examine the impact of these phenomena on VLSI design.
We will cover both the fundamental principles involved as well as practical issues based on industrial case studies.
Course Credit and Grade:
The course can be taken for 1, 2 or 3 credits, with associated expectation as follows:
 1 credit option: the student must complete the paper review homework and present two papers to the class over the course of the term. Class grade will be determined as follows: paper presentations (45%), paper review homework (35%), and class participation (20%)
 2 credit option: In addition to the requirements for the 1 credit option, the student must complete a survey paper at the end of the course. The topic of the survey paper will be selected by the student in consultation with the instructor. The survey paper must consist of an indepth review of the publications and current approaches in the selected topic. Class grade will be determined as follows: paper presentations (30%), paper review homework (20%), and class participation (10%), survey paper (40%)
 3 credit option: In addition to the requirements for the 1 credit option, the student must complete a final project at the end of the course. The topic of the final project will be selected by the student in consultation with the instructor. The final project must consist of a new analysis or solution method to a specific deep submicron issue. The quality of the class project is expected to be of a level suitable for submission to a workshop conference. Class grade will be determined as follows: paper presentations (30%), paper review homework (15%), and class participation (10%), class project (45%)
Prerequisites:
Familiarity with elementary circuits, circuit analysis techniques, device physics, logic design, and CMOS integrated circuit design techniques is
assumed. Graduate level standing is required.
This page was created at 6:52 PM on Wed, Oct 10, 2001.
University of Michigan  College of LS&A  Student Academic Affairs  LS&A Bulletin Index  Department Homepage
This page maintained by LS&A Academic Information and Publications, 1228 Angell Hall
Copyright © 2001 The Regents of the University of Michigan,
Ann Arbor, MI 48109 USA +1 734 7641817
Trademarks of the University of Michigan may not be electronically or otherwise altered or separated from this document or used for any nonUniversity purpose.
