College of LS&A

Winter Academic Term 2003 Graduate Course Guide

Note: You must establish a session for Winter Academic Term 2003 on wolverineaccess.umich.edu in order to use the link "Check Times, Location, and Availability". Once your session is established, the links will function.

Courses in Electrical Engineering and Computer Science


This page was created at 6:35 PM on Wed, Feb 5, 2003.

Winter Academic Term, 2003 (January 6 - April 25)

Search the LS&A Course Guide
(Advanced Search Page)

EECS 427. VLSI (Very Large Scale Integrated) Design I.

Computer Science

Instructor(s): Gordy Carichner

Prerequisites: EECS 270 and 311. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/courses/eecs427/

his course introduces mask level integrated circuit design. This is a senior/graduate level project-oriented course in which the students design a simple 16-bit, 2-stage pipelined RISC microprocessor. Weekly CAD assignments will be in the form of design of the cells for the processor. Extensive use of commercial CAD tools is required. Within constraints of available funding, eligible projects will be fabricated through the MOSIS service.

The Lab/Disc. time will be used primarily for discussing project-related assignments, quizzes and occasionally for catching up on lecture material. Otherwise, all "lab" time is unscheduled - you'll be doing the majority of your design work in the CAEN labs on your own time.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 470. Computer Architecture.

Computer Science

Instructor(s):

Prerequisites: EECS 370. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~tnm/470/home.htm

Course Synopsis: EECS 470 is an introductory graduate-level course in computer architecture. This course is intended to do two things: to give you a solid, detailed understanding of how computers are designed and implemented, including the central processor and memory and I/O interfaces; and to make you aware of the numerous tradeoffs in design and implementation, their interaction, their realization in both historical and state-of-the-art systems, and trends that will affect them in future systems. We will cover instruction set architectures, pipelining (including basic pipelining, multiple-instruction-per-cycle machines, out-of-order instruction execution, and vector processing), memory systems (including caches and virtual memory), I/O interfaces, operating system issues, and basic multiprocessor systems. We will also do case studies on microprocessors and systems you may have used, such as the P6 (Pentium Pro/II/III), and Pentium 4. A central part of EECS 470 is the detailed design of major portions of a substantial processor using the Verilog hardware design language (HDL). Portions of this work will be done individually as homeworks; the bulk of the work will be done in groups of four as a term project. You will use modern commercial CAD tools to develop your design. This project represents a significant investment of time on your part, and is a significant portion of your grade in this class. However, in computer architecture it is particularly true that "the devil is in the details", and you will gain important experience and knowledge by coming face to face with that devil. Textbooks: 1. Computer Architecture: A Quantitative Approach, 3rd edition, by Hennessy and Patterson, Morgan Kaufman Publishers. If you can find a used version, I would suggest buying it. The second edition is ok, but you must be responsible for the the fact that references to the "text book" refer to the third edition. 2. Optional: Verilog Styles for Synthesis of Digital Systems, 1st edition, by Smith and Franzon, Prentice Hall.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 478. Logic Circuit Synthesis and Optimization.

Computer Science

Instructor(s): John Patrick Hayes

Prerequisites: EECS 270 and 203, and senior or graduate standing. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/478/001.nsf

This is an advanced course in logic design that focuses on computer-aided design (CAD) methods for synthesis and optimization. The topics to be covered include: Advanced design of logic circuits. Technology constraints. Theoretical foundations. Computer-aided design algorithms. Two-level and multilevel optimization of combinational circuits. Optimization of finite-state machines. High-level synthesis methods: modeling, scheduling, and binding. Verification and testing.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 481. Software Engineering.

Computer Science

Instructor(s):

Prerequisites: EECS 281. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 482. Introduction to Operating Systems.

Computer Science

Instructor(s): Brian Noble (bnoble@umich.edu)

Prerequisites: EECS 370 and 281. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~bnoble/482/

Course Overview: EECS 482 is an introductory course in operating systems at the advanced undergraduate or beginning graduate level. The objective of the course is to familiarize you with the issues involved in the design and implementation of mod-ern 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 in-cluding MULTICS, UNIX, Mach, and Windows NT. We will cover topics such as processes and threads, concur-rency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondary-storage management, file systems, and security. To help you understand operating systems, you will implement several modules that form much of the core func-tionality in modern operating systems. These projects will give you practical exposure to topics such as threads, vir-tual memory management, client-server systems, and file systems. We will also provide practice questions that will be discussed in the discussion sections; you can use these to help gauge your understanding of the material as the course progresses.

Prerequisites: Students must have obtained a grade of C or better in EECS 370 and EECS 281/380. Students are expected to un-derstand computer architecture and data structures, to have 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 instructor as soon as possible.

Required Textbook: Modern Operating Systems (2nd ed.), Andrew S. Tanenbaum, Prentice Hall. ISBN 0-13-031358-0

Other Course-Related Resources

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 484. Database Management Systems.

Computer Science

Instructor(s): Viviane Jensen

Prerequisites: EECS 380. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://coursetools.ummu.umich.edu/2003/winter/eecs/484/001.nsf

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, single-user 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 281: 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 lower-level course to build these skills, and take 484 in a later semester.

Text Database Management Systems (3rd edition) - by Raghu Ramakrishnan and Johannes Gehrke, McGraw Hill.

Course Format and Approximate Grading Exam 1, February 19 Time TBA (maybe evening) 24%

Exam 2, April 16 Time TBA (maybe evening) 24%

Quizzes: Three to four 20-30 minutes in-class quizzes (lowest score will be dropped not make-up quizzes under any circumstances) 6% total

SQL Assignment: Individual SQL assignment. 10%

Group Project: The group project involves building a simple relational database engine, Minirel 2000. We will provide you a skeleton framework of this database engine, and in a sequence of four assignments you will fill up this framework to build a simple relational database engine. You can form your own groups (of 3). 36% total

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 485. Web Database and Information Systems.

Computer Science

Instructor(s):

Prerequisites: EECS 484. Permission of instructor required. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: 5, Permission of instructor

EECS 486. Object-Oriented Methodology.

Computer Science

Instructor(s): David R. Chesney

Prerequisites: EECS 281. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/courses/eecs486/win03/

The course will first study characteristics that make an object-oriented (OO) language object-oriented, such as abstraction, encapsulation, polymorphism, inheritance, generalization, and reusability. The focus of the class is using a design methodology to develop software in an OO language. Therefore, expressive notations that describe OO language characteristics are needed. Both Object Modeling Technique (OMT) and Unified Modeling Language (UML) are such expressive notations, and both will be described in the course. The notations related to system structure, architecture, and behavior will be thoroughly described. The methodology will be applied to a semester project, such as a requirements and design analysis. Finally, current industry-standard OO languages may be reviewed.

Instructional Objectives Draw, understand, and critique an individual descriptive diagram in the appropriate context. Map between related diagrams and incorporate the interplay into system understanding. As an example, the student should be able to map the following sequence of UML diagrams: scenario, sequence diagram, collaboration diagram, object diagram, class diagram. Decompose a moderately complex system and completely describe its implementation in terms of object-oriented characteristics. Both requirements and design of the system may be described. Use a current PC- or workstation-based tool (e.g., Visio 2000 Professional) to decompose a system in an industry standard specification language, such as UML and OMT. Work within a group of 2-4 persons to complete jointly established goals.

Grading Homework 10% Midterm Exam 25% Final Exam 25% Project 1 Documentation 5% Project 1 Implementation 5% Project 2 Proposal and Requirements Draft 5% Project 2 Requirements Document 10% Project 2 Design Document 10% Project 2 Implementation 5%

Text Books Required: Developing Software with UML, Object Oriented Analysis and Design in Practice, Bernd Oestereich, Addison Wesley, 2001, ISBN 0-201-75603-X.

Reference: The Unified Modeling Language User Guide, Grady Booch, James Rumbaugh, and Ivar Jacobson, Addison Wesley Longman, 1999, ISBN 0-201-57168-4.

The Unified Modeling Language Reference Manual, James Rumbaugh, Ivar Jacobson, and Grady Booch, Addison Wesley Longman, 1999, ISBN 0-201-30998-X.

Using UML, Software Engineering with Objects and Components, Rob Pooley and Perdita Stevens, Addison Wesley Longman Limited, 1999, ISBN 0-201-36067-5.

Instant UML, Pierre-Alain Muller, Wrox Press Ltd., 1997, ISBN 1-861000-87-1.

Programming Languages Design and Implementation 3rd Edition, Terrence Pratt and Marvin Zelkowitz, Prentice Hall, 1999, ISBN 0-13-678012-1.

Java How to Program, Deitel & Deitel, Prentice Hall, 1997, ISBN 0-13-263401-5.

UML Explained, Kendall Scott, Addison Wesley, 2001, ISBN 0-201-72182-1.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 487. Interactive Computer Graphics.

Computer Science

Instructor(s): Jon Harris (harrisjw@umich.edu)

Prerequisites: EECS 281 and senior standing. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/courses/eecs487/w03/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; 2-D and 3-D coordinate transformations, and their representation as matrices; 3-D 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 anit-aliasing.

Applications
Graphical User Interfaces, Visualization, Animations

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 general-purpose programming and OpenGL for 3-D graphics. We will review OpenGL in class and discussion; you are assumed to know C or C++. Extensive information about 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. Grading and Exams: Final course grades will be based on the total points earned on the homework, computer programming projects, and the two exams.

Class Text: (Required) Computer Graphics; Donald Hearn, M. Pauline Baker Source Code Link: http://www.ncsa.uiuc.edu/Vis/Graphics/code.html (Recommended) Computer Graphics using Open GL; F.S Hill, Jr. Source Code Link: http://cwx.prenhall.com/bookbind/pubbooks/hill4/chapter0/deluxe.html

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 489. Computer Networks.

Computer Science

Instructor(s):

Prerequisites: EECS 482. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://devon.eecs.umich.edu/

If you want to learn how to design way-cool 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 modems work, 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 how to use sockets. And we write code. We write code to implement various routing and transmission protocols. We write code to build client-server 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 co-requisite.
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.


EECS 492. Introduction to Artificial Intelligence.

Computer Science

Instructor(s): Satinder Baveja

Prerequisites: EECS 281. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

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 machine-learning 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.

Topic Overview of AI; Intelligent Agents; Solving Problems by Searching; Informed Search and Exploration; Constraint Satisfaction Problems; Adversarial Search; Logical Agents; First-Order Logic; Inference in First-Order Logic; Knowledge Representation; Planning; Planning and Acting; Review of Probability/Statistics; Uncertainty; Probablistic Reasoning; Probablistic Reasoning over time; Decision Making; Learning from Observations; Knowledge in Learning; Statistical Learning; Reinforcement Learning; Probablistic Language Processing; Philosophical Issues.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 493. User Interface Development.

Computer Science

Instructor(s): David Kieras (kieras@umich.edu)

Prerequisites: EECS 281. Fluency in a standard object-oriented programming language is assumed. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.engin.umich.edu/class/eecs493/html/index.html

Concepts and techniques for designing computer system user interfaces to be easy to learn and use, with an introduction to their implementation. Task analysis, design of functionality, display and interaction design, and usability evaluation. Interface programming using an object-oriented application framework. Fluency in a standard object-oriented programming language is assumed.

Usefulness and usability of software is becoming more critical, as we see hard-to-use e-commerce sites frustrating millions, a monopoly operating systems and its applications in thrall to severe "featuritis," and a brilliant open-source OS floundering under the burden of misguided GUIs that do not solve the fundamental usability problems. This course is intended for advanced undergraduates and graduate students who plan a career in software development in domains where the usefulness and usability of the software is a critical design goal. The ideal student is a good programmer who has done some significant application programming and is now ready to focus on getting a good design of the software and its interface rather than simply getting code to work. The emphasis of the course will be on learning and applying modern concepts and techniques for user interface design and evaluation, along with an introduction to how GUIs can be programmed to implement usable designs. Within very broad limits, students will be able to use a user interface toolkit, platform, and programming language of their choice, but background in object-oriented C++ techniques is assumed as the "common language" for discussion in the course. Past experience both with this course, and industry experience in general, is that GUI programming is relatively difficult - there is a mass of details to be nailed down in code that must be well-structured and reliable. So this course is a good choice only for those students who are comfortable with writing and debugging substantial amounts of code, who are able to learn a specific toolkit on their own, and who expect to have time to do this work for this course.

Texts: Dan Olsen. Developing User Interfaces. Morgan-Kaufman, 1998. Don't purchase until you have formally registered for the course! Clayton Lewis & John Rieman. Task-Centered User Interface Design: A Practical Introduction. Internet-distributed shareware publication. Download (plain text, multiple files) from ftp://ftp.cs.colorado.edu/pub/distribs/clewis/HCI-Design-Book. Your choice: Appropriate manuals and documentation for the platform/application framework/language of your choice for the programming projects.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 497. EECS Major Design Projects.

Computer Science

Instructor(s): Solloway

Prerequisites: Senior standing. (4). CAEN lab access fee required for non-Engineering students. May be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/496/001.nsf

See Electrical Engineering and Computer Science 496.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 001 AI in Computer Games. [credits?]

Instructor(s): John E Laird

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 002 Real-Time Rendering. [credits?] Meets with EECS 598.006

Instructor(s): Igor Guskov (guskov@umich.edu)

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~guskov/eecs498-2/

Even though the class is called Real-Time Rendering, it will cover some relevant graphics modeling techniques as well. EECS 487 is a prerequisite. Basic knowledge of OpenGL programming will be assumed.

Graphics rendering pipeline in detail Advanced lighting, shading Advanced texturing Scene graph topics, culling etc. Non-photorealistic rendering Level-of-detail techniques Collision detection Polygonal techniques Vertex and fragment programs.

The required text is Real-Time Rendering (2nd edition) by Tomas Akenine-Möller and Eric Haines, AK Peters (2002).

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 003 Formal Verification Methods. [credits?]

Instructor(s): Compton

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/498/003.nsf

An introduction to current methodologies for verifying computer systems. Topics covered include logic and theorem proving; modeling sequential, reactive and concurrent systems; transition systems; model checking methods; and controlling state explosion. Special topics such as temporal logic, the mu-calculus, binary decision diagrams, Buechi automata, partial order reduction, and process algebras will be covered as time permits. Students will complete a project using current model checking technology.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 004 Experimental Algorithms. [credits?]

Instructor(s): Quentin F. Stout (qstout@umich.edu)

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

The course will allow advanced undergraduates (or graduates) to go beyond standard algorithms classes by pursuing a problem of their interest and implementing algorithms to solve it. Each student (or team) will select a problem area, such as sorting, scheduling, matrix multiplication, intersecting polygons, etc. They will read selected papers on their topic, make class presentations, implement algorithms, and evaluate and improve the algorithms. Some students may pick an area for which exact solutions are available (such as sorting), or may pick an area where heuristics are used, such as solving an NP-complete problem. As part of this, we will also discuss basic issues in experimentally measuring and predicting the performance of algorithms, and in tuning performance. This area is the basis for the new electronic journal, the ACM Journal of Experimental Algorithms, and is one of the up-and-coming areas in the field of algorithms. Since the running time of an algorithm is a random variable, this will require that we address some statistical issues, though no prior statistical background is required. This random behavior has important effects that must be taken into account, yet it is rarely addressed in most computer science courses. Students will be expected to be active participants in the seminar, and most of the presentations will be by students, not the professor. This course can be counted as having 2 credits of engineering design experience. Grading will be based primarily on presentations and reports. As the course progresses, we will use the web to put up summaries and projects, and to keep track of work on experimental algorithms elsewhere. I expect that some students may decide to continue their projects as an REU project or as a directed study.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 005 Natural Language Generation. [credits?]

Instructor(s): Thomason

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/eecs/courses/eecs498.005/index.html

You need natural language generation when you want to get a computer to produce individually crafted texts and utterances in human language. This course will deal with the computational techniques for doing this effectively. We will ignore the problem of how to take a written text and render it in human speech (this problem is mostly solved, but with a residue of very difficult unsolved problems). Instead, we will focus on how to produce well-structured, effective communicative outputs. This places the emphasis on applications in human-computer dialogues, and puts us in the center of an exciting and rapidly-developing field. By the end of the course, students should be in a position to understand the scientific and technological issues in this area, and to have a sense of how they play out in applications such as intelligent tutoring and task-oriented dialogues.

The first half of the course will be based on the required textbook, and will be concerned mainly with (1) the architecture of typical NLG systems, (2) document planning, (3) microplanning (low-level methods of expressing already-specified content), and (4) surface realization. The second half of the course will use course notes, and will be mainly concerned with issues having to do with interactive dialogue. Students who take this course for credit will be asked to complete three assignments and to plan, execute and report on a (moderately ambitious) project. Typical projects will involve developing and testing a component of a natural language generation system.

REQUIRED TEXT: Building Natural Language Generation Systems, by Ehud Reiter and Robert Dale, Cambridge University Press, 2000.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 006 Radio Frequency Engineering.

Instructor(s): Mortazawi

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 007 Cryptography and Security. [credits?]

Instructor(s): Honeyman

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.citi.umich.edu/u/honey/crypto/

This course introduces the principles and practices of cryptography, network security, and secure software.

The first half of the lecture content covers basic cryptographic methods, key distribution, and protocols for authenticated and confidential communications. Topics include block and stream ciphers, transposition, substitution, Feistel networks, DES, 3DES, IDEA, Blowfish, CAST-128, Rijndael, feedback and chaining modes, confidentiality, traffic analysis, key distribution, random number generation, public key cryptography, RSA, public key certificates, key distribution, Needham-Schroeder protocol, Diffie-Hellman key exchange, one-way hash functions, message authentication codes, weak and strong collision resistance, birthday attack, MD4, MD5, SHA-1, HMAC, digital signatures, mutual authentication, and replay attacks.

The latter half of the lecture content addresses the practice of network security. Topics include Kerberos, PGP, public key infrastructures, SSL, and IP security.

The discussion sections focus on secure software. Topics include risk management, open source vs. closed source, software auditing, buffer overflow, and race conditions.

is course is intended for advanced undergraduate or first-year graduate students. There will be weekly homework assignments, occasional programming assignments, and a midterm and final exams.

Required textbooks (available at online bookstores):

Cryptography and Network Security: Principles and Practice, Third Edition William Stallings ISBN 0130914290 Please take care to purchase the Third Edition.

Building Secure Software: How to Avoid Security Problems the Right Way John Viega and Gary McGraw ISBN 020172152X

Supplementary textbooks (on reserve and available at online bookstores)

Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition Bruce Schneier ISBN 0471117099

Cryptography: Theory and Practice, Second Edition Douglas Stinson ISBN 1584882069

Handbook of Applied Cryptography Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone (Editor) ISBN 0849385237 (free download available online)

Network Security: Private Communication in a Public World, Second Edition Charlie Kaufman, Radia Perlman, Mike Speciner ISBN 0130460192

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 498. Special Topics.

Computer Science

Section 009 Dev. Educational Software for

Instructor(s): Soloway

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 499. Directed Study.

Computer Science

Instructor(s):

Prerequisites: Senior standing in EECS. (1-4). CAEN lab access fee required for non-Engineering students. (INDEPENDENT). May be repeated for credit.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 571. Principles of Real-Time Computing.

Computer Science

Instructor(s):

Prerequisites: EECS 470 and 482. (3). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (3).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/571/001.nsf

Real-time computing (RTC) is a crucial discipline of study as computational systems are being depended upon in increasingly time-critical applications such as multimedia, virtual reality, telecommunications, industrial automation, embedded commercial and defense systems, medical instrumentation, and life-support systems. This course is intended to provide a solid introduction to the foundations of RTC. While examples and case studies may be considered at times, the emphasis of the course is on principles rather than particular applications. This course will provide students with a firm grasp of the fundamentals of RTC, expose students to some of the state-of-the-art research and development activities in this field, and give students an opportunity to do a small amount of research and development on their own.

Real-time computing (RTC) is a crucial discipline of study as computational systems are being depended upon in increasingly time-critical applications such as multimedia, virtual reality, telecommunications, industrial automation, embedded commercial and defense systems, medical instrumentation, and lifesupport systems. This course is intended to provide a solid introduction to the foundations of RTC. While examples and case studies may be considered at times, the emphasis of the course is on principles rather than particular applications. This course will provide students with a firm grasp of the fundamentals of RTC, expose students to some of the state-of-the-art research and development activities in this field, and give students an opportunity to do a small amount of research and development on their own.

Course Topics: Background, motivation, and definition of real-time computing; Characterization of real-time computing systems: performance measures and deadlines; Estimation of execution time of real-time tasks, and evaluation of the system's ability to meet deadlines; Task assignment and scheduling to meet deadlines, principles, and examples; Real-time databases and their applications ; Real-time communications: protocols and end-to-end delay guarantees, and their implementation; Fault-tolerance and evaluation techniques for real-time systems: models, algorithms and architectures for error detection, fault isolation, and recovery; Real-time artificial intelligence (separate reading).

Course Materials: The required text for the course is Real-Time Systems by Krishna and Shin, McGraw-Hill 1997.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 573. Microarchitecture.

Computer Science

Instructor(s):

Prerequisites: EECS 470. (3). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (3).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 578. Computer-Aided Design Verification of Digital Systems.

Computer Science

Instructor(s):

Prerequisites: EECS 478 and graduate standing. (3). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (3).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://coursetools.ummu.umich.edu/2003/winter/eecs/578/001.nsf

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 581. Software Engineering Tools.

Computer Science

Instructor(s):

Prerequisites: EECS 481 or equivalent programming experience. (3). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (3).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

No Description Provided. Contact the Department.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 583. Programming Languages.

Computer Science

Instructor(s): Scott Mahlke

Prerequisites: EECS 376 and 483. (4). Rackham credit requires additional work. CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~mahlke/583w03

An in-depth study of compiler backend design for high-performance architectures. Topics include control-flow and data-flow analysis, classical optimization, instruction scheduling, and register allocation. Advanced topics include memory hierarchy management, optimization for instruction-level parallelism, modulo scheduling, predicated and speculative execution. The class focus is processor-specific compilation techniques, thus familiarity with both computer architecture and compilers is recommended.

Prerequisites: Strong C++ programming skills (EECS 281), good background in computer architecture (EECS 370 at minimum, EECS 470 is desirable), basic familiarity of compilers (EECS 483 is useful but not required)

Grade Midterm Exam - 30% Project - 35% Homeworks - 20% Paper presentation 7.5% Class participation 7.5%

References: Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman, Addison-Wesley, 1988. Advanced Compiler Design & Implementation, Steven S. Muchnick, Morgan Kaufmann, 1997. Building an Optimizing Compiler, Robert Morgan, Butterworth-Heinemann,1998.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 586. Design and Analysis of Algorithms.

Computer Science

Instructor(s): Quentin F. Stout (qstout@umich.edu)

Prerequisites: EECS 281. (3). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (3).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~qstout/586/index.html

Audience: In decreasing order of frequency, historically the students in this class have been

Gradute students in Computer Science and Engineering: For these students, this class can satisfy the Theory distributional requirements for the MS and PhD degrees, and helps satisfy the 500-level course requirements.

Graduate students from other disciplines: For these students, this class can satisfy cognate requirements, and it can satisfy computer science requirements for students in the Scientific Computing program.

Undergraduate students: For CSE undergraduates it can satisfy computer-oriented technical elective requirements, and can be used to satisfy theory requirements (though this is not recommended unless you are very good).

For all students, the course can satisfy a general desire to learn more about algorithms and computer science. By far, most of the students enrolled are in the first category. If you are in the other categories, make sure you satisfy the prerequisites.

This is one of the core graduate computer science courses, both here and elsewhere, and I make an attempt to show how algorithms relate to a wide range of software and hardware concerns. You'll find that the material is useful in other courses, in research, and in software projects outside the university. In some cases you'll use specific algorithms from class, while in many other situations you'll need to design a new algorithm using the techniques taught in the class.

Content: We will cover the design and analysis of efficient algorithms to solve fundamental computational problems in searching, sorting, graph theory, geometry, optimization, and decision theory. We cover a variety of algorithmic design principles, such as greedy algorithms, divide-and-conquer, and dynamic programming. We also cover the ways in which one analyzes the efficiency of algorithms, through the use of "generalized O-notation" for worst-case, expected-case, and competitive analysis. We also give techniques for proving that an algorithm is an optimal solution to a problem - of course, we first have to define what that means. Prerequisites In terms of computational maturity, you should be able to program well in some standard procedural language such as C, Fortran, Pascal, or Java, including experience in data structures at least equivalent to EECS 280 (preferably you've had at least one class that used 280 as a prerequisite). In class we'll use pseudo-code, so the computer language you've used is not critical (though if you have only used Fortran it is likely that your background is quite weak).

In terms of mathematical background, you should have had least EECS 303 or its equivalent and done well in it. Any additional upper level courses in theoretical computer science, logic, or discrete mathematics in which you had to do proofs will be helpful. In addition to the discrete mathematics, we will also make use of calculus and basic probability theory.

Texts 1.Introduction to Algorithms by Corman, Leiserson, Rivest and Stein. Most of the course will be based on this book. 2.Computers and Intractability by Garey and Johnson. This will be used near the end of the course. There will also be additional handouts as the course progresses.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 591. Distributed Systems.

Computer Science

Instructor(s): Farnam Jahanian (farnam@umich.edu)

Prerequisites: EECS 482 and graduate standing. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: http://www.eecs.umich.edu/~farnam/591/Winter2003/591.html

Significant advances in computer and communication technologies have enabled the discovery of several distributed computing paradigms and the development of numerous distributed systems during the last two decades. The primary objective of this course is to examine the state of the art and practice in distributed computing and to provide students hands-on experience in developing distributed protocols. The course aims to convey insight into the principles underlying the design of distributed systems, providing students the necessary tools for evaluating existing systems or designing new ones.

This course covers the dominant paradigms for building distributed systems/applications including: client-server computing, object-based systems, group communication, remote-procedure calls, distributed shared memory, coordination-based systems, and the evolving distributed computing models on the Web. The topics explored in this course include: kernel support for distributed systems, failure models and programming paradigms, fault-tolerance, group multicast and group membership protocols, multicast over the Internet, replication and consistency, clock synchronization and logical timestamps, distributed synchronization, routing, naming, and security. Concepts are illustrated using several case studies of experimental and commercial systems.

The course requires active student participation in a semester-long group project. Groups of no more than three students will be responsible for the design and development of a collection of distributed services such as data replication, caching, naming, group membership, object support and multicast communication. The group project is intended to complement the reading material by allowing the students develop experimental skills for designing and building distributed protocols. Each group will have an opportunity to present its work to the class.

Reading List: Distributed Systems by Andrew Tanenbaum and Maarten van Steen, Prentice-Hall, 2002. Collection of papers and handouts on distributed systems. Distributed Systems by Sape Mullender, 2nd Edition, Addison-Wesley, 1993. (recommended)

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 592. Advanced Artificial Intelligence.

Computer Science

Instructor(s): Michael P Wellman

Prerequisites: EECS 492. (4). CAEN lab access fee required for non-Engineering students. May not be repeated for credit.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/592/001.nsf

Advanced topics in Artificial Intelligence. Intended as preparation for research in the field. Coursework will comprise extensive reading, research and writing assignments, quizzes, and a final project.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 598. Special Topics in Electrical Engineering and Computer Science.

Computer Science

Section 001 Mobile and Pervasive Computing. [credits?]

Instructor(s): Jason Flinn

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/598/001.nsf

This course covers advanced topics and current issues in mobile and pervasive computing. The objective of the course is threefold. First, it will expose you to many of the important prior results in the field. Second, it will illustrate current trends in mobile and pervasive computing. Third, it will give you practical experience in the area through the design and execution of a modest research project.

Intended Audience This is a graduate-level course; it is meant primarily for EECS graduate students, particularly those with a research interest in software systems. The prerequisite for the course is a strong undergraduate course in operating systems, equivalent to EECS 482. Undergraduates and graduate students from other departments should speak with me before deciding to take this course.

Course Requirements The work of this course consists of: Reading, analyzing, and actively discussing papers; As part of a team, designing a semester-long project, carrying it out, and writing up the results; Taking a final exam that will occur during the last week of class.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 598. Special Topics in Electrical Engineering and Computer Science.

Computer Science

Section 006 Real-Time Rendering. [credits?] Meets with EECS 498.002.

Instructor(s): Igor Guskov (guskov@umich.edu)

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit. May be elected more than once in the same term.

Credits: (1-4).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: https://coursetools.ummu.umich.edu/2003/winter/eecs/498/002.nsf

See Electrical Engineering and Computer Science 498.002.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 990. Dissertation/Precandidate.

Computer Science

Instructor(s):

Prerequisites: Election for dissertation work by doctoral student not yet admitted as a Candidate.Graduate standing. (1-8). CAEN lab access fee required for non-Engineering students. (INDEPENDENT). May be repeated for credit.

Credits: (1-8; 1-4 in the half-term).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

Election for dissertation work by doctoral student not yet admitted as a Candidate.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

EECS 995. Dissertation/Candidate.

Computer Science

Instructor(s):

Prerequisites: Graduate School authorization for admission as a doctoral Candidate. (8). CAEN lab access fee required for non-Engineering students. (INDEPENDENT). May be repeated for credit.

Credits: (8; 4 in the half-term).

Lab Fee: CAEN lab access fee required for non-Engineering students.

Course Homepage: No homepage submitted.

Graduate School authorization for admission as a doctoral Candidate. N.B. The defense of the dissertation (the final oral examination) must be held under a full term Candidacy enrollment period.

Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.


Undergraduate Course Listings for EECS.


Page


This page was created at 6:35 PM on Wed, Feb 5, 2003.


lsa logo

University of Michigan | College of LS&A | Student Academic Affairs | LS&A Bulletin Index

This page maintained by LS&A Academic Information and Publications, 1228 Angell Hall

Copyright © 2003 The Regents of the University of Michigan,
Ann Arbor, MI 48109 USA +1 734 764-1817

Trademarks of the University of Michigan may not be electronically or otherwise altered or separated from this document or used for any non-University purpose.