College of LS&A

Winter Academic Term '02 Graduate Course Guide

Note: You must establish a session for Winter Academic Term 2002 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 Computer Science


This page was created at 4:32 PM on Fri, Mar 22, 2002.

Winter Academic Term, 2002 (January 7 - April 26)

Open courses in Computer Science
(*Not real-time Information. Review the "Data current as of: " statement at the bottom of hyperlinked page)

Wolverine Access Subject listing for CMPTRSC

Winter Academic Term '02 Time Schedule for Computer Science.


CMPTRSC 470 / EECS 470. Computer Architecture.

Section 001.

Instructor(s): Steven Reinhardt (stever@umich.edu)

Prerequisites: CS 370. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

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), Pentium 4, and the Sony PlayStation/2. 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 to five 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.

EECS 270 and EECS 370 are prerequisites for this course. I will assume that you have a solid understanding of both digital logic design from 270 and the following material from 370: assembly language, machine language, ALU design, and the basic ideas of pipelining, caches, and virtual memory. EECS 470 expands on EECS 370 greatly in both depth and breadth. If you did not take EECS 370 here, you may need to spend extra time reviewing this material.

Textbooks:

  1. Computer Architecture: A Quantitative Approach, 2 nd edition, by Hennessy and Patterson, Morgan Kaufman Publishers. (This is the same text we've used for several years. It's getting a little dated, but unfortunately the 3 rd edition is not quite out yet.)
  2. Verilog Styles for Synthesis of Digital Systems, 1 st edition, by Smith and Franzon, Prentice Hall. (This is a new text covering the Verilog HDL and its use in hardware synthesis. The GSIs will be using this text as they present Verilog and the CAD tools in the discussion sections. It should also be a very useful reference for your homeworks and projects.)

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

CMPTRSC 477 / EECS 477. Introduction to Algorithms.

Section 001.

Instructor(s): Marios Papaefthymiou (marios@umich.edu)

Prerequisites: CS 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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: divide-and-conquer, 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 coding-heavy project in EECS 477).

Required text: "Fundamentals of Algorithms" by Brassard and Brately, Prentice Hall 1996

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: 25% One project: 25% One midterm: 25% Final: 25%

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

CMPTRSC 478 / EECS 478. Logic Circuit Synthesis and Optimization.

Section 001.

Instructor(s): John Hayes (jhayes@umich.edu)

Prerequisites: CS 270 and 203, and senior or graduate standing. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

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 techniques: modeling, scheduling, and binding. Verification and testing.

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

CMPTRSC 481 / EECS 481. Software Engineering.

Section 001.

Instructor(s): David Chesney (chesneyd@umich.edu)

Prerequisites: CS 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: No homepage submitted.

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.

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

CMPTRSC 482 / EECS 482. Introduction to Operating Systems.

Section 001.

Instructor(s): Peter Chen (pmchen@umich.edu)

Prerequisites: CS 370 and 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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 first-year 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 including MULTICS, UNIX, Mach, and Windows NT. We will cover topics such as processes and threads, concurrency 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 functionality in modern operating systems. These projects will give you practical exposure to topics such as threads, virtual memory management, client-server systems, and file systems. We will also provide practice questions that will be discussed in the discussion sections.

Prerequisites
Students must have taken EECS 370 and EECS 380/281, 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.

Course Material
The required text for the course is Modern Operating Systems (2nd edition), by Tanenbaum. There will also be supplementary readings posted on the course home page.

Exams
There will be two exams during the term: March 7 and April 11. The exams will be during class (3:30-5) for lecture 6, and 5-6:30 pm for lectures 1 and 7.

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: 45%
Exam 1: 25%
Exam 2: 30%

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

CMPTRSC 482 / EECS 482. Introduction to Operating Systems.

Section 006.

Instructor(s): Donald Winsor (don@umich.edu)

Prerequisites: CS 370 and 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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 first-year 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 including MULTICS, UNIX, Mach, and Windows NT. We will cover topics such as processes and threads, concurrency 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 functionality in modern operating systems. These projects will give you practical exposure to topics such as threads, virtual memory management, client-server systems, and file systems. We will also provide practice questions that will be discussed in the discussion sections.

Prerequisites
Students must have taken EECS 370 and EECS 380/281, 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.

Course Material
The required text for the course is Modern Operating Systems (2nd edition), by Tanenbaum. There will also be supplementary readings posted on the course home page.

Exams
There will be two exams during the term: March 7 and April 11. The exams will be during class (3:30-5) for lecture 6, and 5-6:30 pm for lectures 1 and 7.

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: 45%
Exam 1: 25%
Exam 2: 30%

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

CMPTRSC 482 / EECS 482. Introduction to Operating Systems.

Section 007.

Instructor(s): Peter Honeyman (honey@umich.edu)

Prerequisites: CS 370 and 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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 first-year 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 including MULTICS, UNIX, Mach, and Windows NT. We will cover topics such as processes and threads, concurrency 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 functionality in modern operating systems. These projects will give you practical exposure to topics such as threads, virtual memory management, client-server systems, and file systems. We will also provide practice questions that will be discussed in the discussion sections.

Prerequisites
Students must have taken EECS 370 and EECS 380/281, 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.

Course Material
The required text for the course is Modern Operating Systems (2nd edition), by Tanenbaum. There will also be supplementary readings posted on the course home page.

Exams
There will be two exams during the term: March 7 and April 11. The exams will be during class (3:30-5) for lecture 6, and 5-6:30 pm for lectures 1 and 7.

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: 45%
Exam 1: 25%
Exam 2: 30%

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

CMPTRSC 483 / EECS 483. Compiler Construction.

Section 001.

Instructor(s):

Prerequisites: CS 281 and 376. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: No homepage submitted.

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.

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

CMPTRSC 484 / EECS 484 / IOE 484. Database Management Systems.

Section 001.

Instructor(s): Viviane Crestana Jensen (viviane@umich.edu)

Prerequisites: CS 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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, 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 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 lower-level course to build these skills, and take 484 in a later semester.

Required textbook
Database Management Systems, by Ramakristian, PWS Publishing Company, 1997
ISBN 0-534-94728-X

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

CMPTRSC 485 / EECS 485. Web Database and Information Systems.

Section 001.

Instructor(s): Hosagrahar Jagadish (jag@umich.edu)

Prerequisites: CS 484. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~jag/eecs485/

This is a new course, aimed at advanced undergraduates, on the issues involved with deploying databases connected to the web. This course is not about database internals: it is about database design and use in a distributed context. A basic understanding of database operation will be assumed. EECS 484 is a pre-requisite. If you have not taken 484, you may take this course only if you have extensive database programming experience and obtain the instructor's permission. This course is worth 4 credits.

This is an academically rigorous university course and not a skill-specific technical school course, which means the class material will primarily discuss underlying concepts rather than the current hot tools. If you expect the course material to teach you how to use your favorite commercial product, you will be disappointed. On the other hand, armed with the conceptual understanding developed from this course, you ought not to have difficulty learning how to use any tools/languages of your choice.

Approximately half the course grade will be for examinations that test the conceptual material learned in class. Note that the exams will test your understanding of fundamental concepts, not your knowledge of PHP or Javascript. Approximately half the course grade will be for a carefully designed sequence of programming assignments, most of which will be done in teams, leading to the construction of a feature-rich database backed website. To be able to complete these assignments, you will need to learn how to use at least the following: SQL (MySQL), PHP, Apache, HTTP and Javascript. None of these will be formally covered in lecture class. However, you can expect considerable support for you to learn these tools, in discussion sections and from your peers (except for SQL, which you are expected to know coming in). You will also need to learn XML, XQuery, and SOAP: but these will be covered in class.

Textbook
Building Electronic Commerce with Web Database Constructions, by Anne Nelson and William H. M. Nelson III. Published by Addison Wesley, 2002.

This text will be supplemented with class notes, as needed.

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

CMPTRSC 487 / EECS 487. Interactive Computer Graphics.

Section 001.

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

Prerequisites: CS 281 and senior standing. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

Course Homepage: http://www.eecs.umich.edu/courses/eecs487/w02/index.html

The course will have four major focus areas:

  1. 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.
  2. Geometric Modeling:
    Includes the modeling hierarchy, facets, polygons, curves, splines, and solids models (combinatoric solid geometry CSG).
  3. Rendering:
    Including scan line and ray tracing techniques, camera models, illumination and reflection models for surfaces, shadowing, texture mapping, and anti-aliasing.
  4. Applications:
    Graphical User Interfaces, Visualization, and 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 general-purpose programming; Tcl/Tk, for UI development, and OpenGL for 3-D 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.

Class Text:
Computer Graphics, Donald Hearn, M. Pauline Baker
Source Code Link: http://www.ncsa.uiuc.edu/Vis/Graphics/code.html

Computer Graphics using Open GL, F.S Hill, Jr.
Source Code Link: http://www.prenhall.com/hill

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

CMPTRSC 489 / EECS 489. Computer Networks.

Section 001.

Instructor(s): Kang Shin (kgshin@umich.edu)

Prerequisites: CS 482. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://vail.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 a 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 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.

Textbooks:
Kurose and Ross, Computer Networking: A Top-Down Approach, Addison-Wesley, 2001.
ISBN 0-201-4711-4.

W.R. Stevens, UNIX Network Programming, vol. 1: Networking APIs: Sockets and XTI, 2nd. ed., Prentice-Hall, 1997. (Don't buy the first edition!).

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

CMPTRSC 492 / EECS 492. Introduction to Artificial Intelligence.

Section 001.

Instructor(s):

Prerequisites: CS 281. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~pollackm/eecs492w02/index.htm

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 in the student 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, planning, 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.

Course Requirements

There will be six graded homework assignments over the course of the semester. Some of these will be written problem sets, while others will involve programming, but the amount of code you write from scratch will be minimal. Instead, we will supply substantial code, which you will run, modify, and use to conduct experiments. The code we provide will typically be in Lisp; you can access an Allegro Common Lisp system from the CAEN machines.

There will also be a midterm exam, given in class, and a final, cumulative exam, given during the final exam period.

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

CMPTRSC 493 / EECS 493. User Interface Development.

Section 001.

Instructor(s):

Prerequisites: CS 281. Fluency in a standard object-oriented programming language is assumed. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~ackerm/courses/02-1.eecs493/index.html

No Description Provided

Check Times, Location, and Availability


CMPTRSC 497 / EECS 497. EECS Major Design Project.

Section 001.

Instructor(s): Elliot Soloway (soloway@umich.edu)

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

Credits: (4).

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

Course Homepage: No homepage submitted.

Professional problem-solving methods developed through intensive group studies. Normally, one significant design project is chosen for entire class requiring multiple EECS disciplines and teams. Use of analytic, computer, design, and experimental techniques where applicable are used. Projects are often interdisciplinary allowing non-EECS seniors to also take the course (consult with instructor).

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

CMPTRSC 498 / EECS 498. Special Topics.

Section 001 – Topic?

Instructor(s): Peter Honeyman (honey@umich.edu)

Prerequisites: (1-4). CAEN lab access fee required for non-Engineering students.

Credits: (1-4).

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

Course Homepage: http://coursetools.ummu.umich.edu/2002/winter/artdes/454/007.nsf

No Description Provided

Check Times, Location, and Availability


CMPTRSC 499 / EECS 499. Directed Study.

Instructor(s): Charles Antonelli

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.

Individual study of selected topics in Electrical Engineering and Computer Science. May include experimental investigation or library research.

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

CMPTRSC 573 / EECS 573. Microarchitecture.

Section 001.

Instructor(s): Todd Austin (austin@umich.edu)

Prerequisites: CS 470. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

Course Homepage: No homepage submitted.

Graduate level introduction to the foundations of high performance microprocessor implementation. Problems involving instruction supply, data supply, and instruction processing. Compile-time vs. run-time tradeoffs. Aggressive branch prediction. Wide-issue processors, in-order vs. out-of-order execution, instruction retirement. Case studies taken from current microprocessors.

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

CMPTRSC 575 / EECS 575. Theoretical Computer Science II.

Section 001.

Instructor(s): Kevin Compton (kjc@umich.edu)

Prerequisites: CS 574. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~kjc/EECS575/eecs575.html

Course Description:
This course is an in-depth introduction to the theory of computer security with an emphasis on network and web security. Course topics: complexity theoretic foundations of cryptography; classical cryptography and cryptanalysis; shift ciphers, substitution ciphers and stream ciphers; block ciphers and Feistel networks; the Data Encryption Standard (DES) and more recent block ciphers; public key cryptography; the RSA system and other public key systems; message authentication and hash functions; digital signatures; key distribution and authentication schemes; systems for proving security of cryptographic protocols.

Textbook:
Cryptography: Theory and Practice, Douglas Stinson, CRC Press, 1995.

Additional references:
Applied Cryptography : Protocols, Algorithms, and Source Code in C, 2nd ed., Bruce Schneier, Wiley, 1996.

Cryptography and Network Security, 2nd ed., William Stallings, Prentice-Hall, 1999.

Handbook of Applied Cryptography, Alfred J. Menezes, CRC Press, 1997.

Modern Cryptography, Probabilistic Proofs, and Pseudorandomness, Oded Goldreich, Springer, 1999.

Prerequisites:
EECS 574 or a famliarity with NP-completeness.

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

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

Section 001.

Instructor(s): Karem Sakallah (karem@umich.edu)

Prerequisites: CS 478 and graduate standing. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

Course Homepage: https://coursetools.ummu.umich.edu/2002/winter/eecs/578/001.nsf

Course description

In this course we explore how large complex digital systems are verified to ascertain their functional and temporal correctness. Students who enroll can expect to gain proficiency in state-of-the-art informal as well as formal approaches to verification of large-scale systems. Many of these techniques, and the insights that inspired them, can also be adapted to the verification of other large-scale systems, e.g., complex software. Hands-on experience with a variety of verification tools (equivalence checkers, model checkers, SAT solvers, symbolic simulators, etc.) is an integral part of the course.

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

CMPTRSC 581 / EECS 581. Software Engineering Tools.

Section 001.

Instructor(s): John Sayler (jhsayler@umich.edu)

Prerequisites: CS 481 or equivalent programming experience. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

Course Homepage: No homepage submitted.

Fundamental areas of software engineering including life cycle paradigms, metrics, and tools. Information hiding architecture, modular languages, design methodologies, incremental programming, and very high level languages.

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

CMPTRSC 582 / EECS 582. Advanced Operating Systems.

Section 001.

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

Prerequisites: CS 482. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: https://coursetools.ummu.umich.edu/2002/winter/eecs/582/001.nsf

This course covers advanced topics and current issues in operating systems. The objective of the course is threefold. First, it will expose you to many of the important results in the field of operating systems. Second, it will illustrate some current trends and topics in the field. Third, it will give you experience planning and carrying out a modest OS project, from design through communication of results.

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.

3 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 during the last week of class.

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

CMPTRSC 583 / EECS 583. Programming Languages.

Section 001 – Advanced Compilers

Instructor(s): Scott Mahlke

Prerequisites: CS 376 and 483. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

No Description Provided

Check Times, Location, and Availability


CMPTRSC 586 / EECS 586. Design and Analysis of Algorithms.

Section 001.

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

Prerequisites: CS 281. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

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

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.

Texts
Introduction to Algorithms by Corman, Leiserson, Rivest and Stein. Most of the course will be based on this book. This is a new edition with another coauthor, so you should not buy used copies from earlier courses.

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: 1

CMPTRSC 589 / EECS 589. Advanced Computer Networks.

Section 001.

Instructor(s): Sugih Jamin (jamin@umich.edu)

Prerequisites: CS 489. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://irl.eecs.umich.edu/jamin/courses/eecs589/

In this course we study the Internet; we study the protocols and architectures that make the Internet tick and allow it to grow beyond its designers' wildest dreams. We will investigate the design principles and architectural considerations that have allowed the Internet to survive the onslaught of the World Wide Web. Most importantly, we ask where to take the Internet from here. For those interested in exploring and advancing the state of the art in computer networking, this is a required course.

Aside from EECS 489, an introductory probability course such as EECS 401, EECS 501, Math 425, Math 525, or Stat 412 is highly recommended as a co-requisite.

It is an understatement to say that computer networking, in the forms of the Internet and the World Wide Web, has had a much felt impact on our daily lifes. When the Internet was first designed in the mid 70's, it was never intended to provide virtual tours of the Vatican. Yet it has done so without melting down (yet). In this course, we will study the design philosophy and architectural choices that make the Internet scalable. We will look at how the Internet has continually evolved to accommodate new usages and applications. And most importantly, we will study the issues facing the Internet architectures of today to bring the Net into the next century, to carry not just email and low bandwidth phone calls, but high-quality realtime streams. In the end, what we will be studying is not just the Internet, but how to build scalable and sustainable global computer and communication networks.

There is no textbook for this course. For background review and reference, you may find the following textbooks useful:

Huitema, C., Routing in the Internet, 2nd ed., Prentice-Hall, 2000.

Keshav, S., An Engineering Approach to Computer Networking, Addison-Wesley, 1997.

Kurose and Ross, Computer Networking: A Top-Down Approach, Addison-Wesley, 2000.

Peterson and Davie, Computer Networks: A Systems Approach, 2nd ed., Morgan Kaufmann, 2000.

Stevens, UNIX Network Programming, vol. 1: Networking APIs: Sockets and XTI, 2nd ed., Prentice-Hall, 1997.

Tanenbaum, A., Computer Networks, 3rd ed., Prentice-Hall, 1996.

Wright and Stevens, TCP/IP Illustrated v.2, Addison-Wesley.

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

CMPTRSC 592 / EECS 592. Advanced Artificial Intelligence.

Section 001.

Instructor(s): Michael Wellman (wellman@umich.edu)

Prerequisites: CS 492. (4). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

This semester will focus on decision making, reinforcement learning, and multi-agent systems. 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: 1

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

Section 001 – Geometric Modeling in Computer Graphics. (3 credits).

Instructor(s): Igor Guskov

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit.

Credits: (1-4).

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

Course Homepage: http://www.eecs.umich.edu/~guskov/graphics-winter02.html

This course will provide a practical survey of both the principles and practices of cryptography and network security. In the first half of the course, we will explore the basic issues addresses by network security capabilities, such as conventional and modern cryptography. The latter half of the course deals with the practice of network security, including Kerberos, PGP, public key infrastructures, SSL, and IP security. We will follow the textbook closely. There will be weekly homework assignments, occasional programming assignments, and a midterm and final exams. Enrollment is restricted to graduate students.

Textbook: Cryptography and Network Security: Principles and Practice, Second Edition, by William Stallings, Prentice Hall. ISBN 0-13-869017-0

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

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

Section 002 – Randomized Computation. (4 credits).

Instructor(s): Satyanarayana V. Lokam

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit.

Credits: (1-4).

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

Course Homepage: http://www.eecs.umich.edu/~satyalv/rand/

Understanding the powerful role of randomness in computation is one of the most active pursuits of research in foundations of computer science. For several important problems, use of randomness yields the most efficient algorithms known, or the simplest, or both. In fact, randomness is essential for certain tasks in cryptography and distributed computation.

In the first half of this course, we will study a collection of techniques for effectively using randomization and for analyzing randomized algorithms. We will pick examples from a variety of settings and problem areas.

Given that randomization helps, where do computers get their randomness from? In practice, we often use Pseudo-Random Generators (PRG's). But, when is the output of a PRG "random enough" to replace a source of pure random bits? How do we construct such good PRG's? Even assuming computers do have access to "pure randomness," how dramatic a speedup can we achieve using randomness? In the second half of the course, we will study recent results that address such issues. Important results in this area have rigorously established the intimate relations among the notions of randomness, computation, and information.

Attempts to understand some basic scientific questions, use of simple, but elegant, mathematics, and building rigorous foundations for important practical applications are some of the interesting highlights of this course.

Main Topics:

  • Background from Probability Theory
  • Randomized Algorithms
  • Derandomization
  • Pseudo-Random Generators

Grading: Based on periodically assigned homework and term papers/final projects.

  • Homework: 50%
  • Term Paper/Final Project: 50%

References: Material for the course will be drawn from some books, monographs, survey articles, and research papers (especially for the second half).

Text Book: Motwani and Raghavan, Randomized Algorithms, Cambridge University Press, 1995.

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

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

Section 003 – Nanoelectronics.

Instructor(s):

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. 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

Check Times, Location, and Availability


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

Section 004 – Computer and Network Security. (3 credits).

Instructor(s): Atul Prakash (aprakash@umich.edu)

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit.

Credits: (1-4).

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

Course Homepage: http://www.eecs.umich.edu/~aprakash/security/

Current topics in computer and network security, including: viruses and worms, cryptographic file systems, computer and network intrusion tolerance, applied cryptography, network security, firewalls, secure authentication and group protocols, wireless security. A term project or paper is required.

Prerequisites: EECS 482 or equivalent experience. Familiarity with basics of networking protocols can be helpful. Ability to pick up backgound material on your own as needed.

Grading:

  • Midterm 1: 20%
  • Final (Midterm 2): 20%
  • Readings: 10%. (Review of 5 papers of your choice and rating the quality of the review of 5 other papers submitted by other students)
  • Other assignments: 5-10%.
  • any other contributions to the positive atmosphere in the class, e.g., class discussions: up to 5% extra credit.

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

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

Section 005 – Mathematical Modeling and Simulation Techniques in Networking. (credits?).

Instructor(s): Mingyan Liu (mingyan@umich.edu)

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. May be repeated for credit.

Credits: (1-4).

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

Course Homepage: http://www.eecs.umich.edu/~mingyan/598W02/index.html

Communication networks have become increasingly complex systems. With the rapid expansion of the Internet, it is important that we are equipped with proper tools to analyze and gain insight on the performance, dynamics, technical and social implications of various mechanisms used in the Internet. In this course we will study two classes of such tools: mathematical modeling and simulation. Both of them are widely used in networking. On the one hand mathematical modeling, via abstraction, can be tractable, fast and intuitive, as well as facilitate optimization and sensitivity analysis. On the other hand simulation can be much more detailed and can handel large-scale systems.

In this course we will review mathematical modeling techniques based on a range of principles and examine their effectiveness, particularly, the relationship between the simplicity of a model and its usefulness. The study will be highly application-oriented, in that there is always a very clear realistic subject to be modeled, be it a protocol, a channel or a policy. Under the second theme of the course we will review the techniques of computer simulation, which is widely used to study complex systems, and also often used to validate mathematical models. We will NOT show how to use a particular simulation tool (e.g., NS-2, OPNET), but will show the basic statistical and discrete event concepts underlying most simulation tools. We will also discuss how to use simulation in a scientific way.

This course will consist of both lectures (i.e., presentation by the instructor) and discussions (i.e., discussion on assigned papers in class). The subjects covered in this course are as follows (the sequence is subject to change):

  • Modeling of multiple access systems - performance, capacity and energy efficiency
  • Performance modeling of TCP
  • Congestion control, rate control and utility maximizing
  • Simulation and the Monte Carlo method
  • Internet traffic and self-similarity

For each of these subjects there will be a list of selected papers as reading assignment. The final grade will be based on

  • the summary reviews on paper reading assignment (approx. 30%);
  • participation in class discussions (approx. 10%);
  • a term project/paper and presentation (approx. 60%).

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

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

Section 006 – Topic?

Instructor(s): Lingjie J Guo (guo@umich.edu)

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. 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

Check Times, Location, and Availability


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

Section 007.

Instructor(s):

Prerequisites: Permission of instructor or advisor. (1-4). CAEN lab access fee required for non-Engineering students. 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

Check Times, Location, and Availability


CMPTRSC 695 / EECS 695 / PSYCH 640. Neural Models and Psychological Processes.

Section 001.

Instructor(s): Stephen Kaplan

Prerequisites: Permission of instructor. (3). CAEN lab access fee required for non-Engineering students.

Credits: (3).

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

Course Homepage: No homepage submitted.

See Psychology 640.001.

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

CMPTRSC 990 / EECS 990. Dissertation/Precandidate.

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.

CMPTRSC 995 / EECS 995. Dissertation/Candidate.

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 CMPTRSC.


Page Counter


This page was created at 4:32 PM on Fri, Mar 22, 2002.


lsa logo

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