Information for Prospective Students Information for First-Year Students Information for Transfer Students Information for International Students Learning Communities, Study Abroad, Theme Semester Calendars Quick Reference Forms Listings Table of Contents SAA Search Feature Academic Advising, Concentration Advising, How-tos, and Degree Requirements Academic Standards Board, Academic Discipline, Petitions, and Appeals SAA Advisors and Support Staff

Winter Academic Term 2002 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 5:18 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 181 / EECS 181. Introduction to Computer Systems.

Section 001.

Instructor(s): Karen Langona

Prerequisites & Distribution: Intended for students whose goal is computer literacy; not intended for computer science, computer engineering, electrical engineering concentrators. (4). (Excl). (BS). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.umich.edu/~cs181/

CS181 is meant to develop students into better computer users by offering a broad overview of how computers influence our lives.The lecture establishes what a computer is and how its parts affect the whole.Some time will be spent discussing different types of software and what makes good software – this will better prepare students to critically evaluate the lab material..In laboratory,students learn how to increase their productivity with several commercial software packages – Microsoft Word,,Excel,and PowerPoint as well as Filemaker Pro.Students will also explore and make their own contribution to the Internet.There is no programming in this course;however,we will introduce a procedural method of thinking about problem solving which,by most approaches,is at the core of programming.With this growing knowledge of what computers can do,lecture will then discuss how computers have changed people 's jobs and society.

Course Objectives

A successful student in this course will:

  • Learn foundational concepts and theories.Students should have a good idea of what a computer program or operating system is doing.This sort of general analysis will help you in troubleshooting problems and in generalizing information from this class to new experiences.
  • Develop skills using the materials,tools and technology central to this course.As noted above,much of the laboratory time will be devoted to gaining new skills in several commercial software packages and learning basic Web page design.
  • Learn techniques and methods to gain new knowledge.This is probably the most important objective.The whole idea of this course is to prepare students to teach themselves.In six months the applications that you learned will be upgraded,and in order to keep your skills up-to-date you will need to know how to explore and learn on your own.
  • Develop problem-solving skills.This means both designing and evaluating solutions to tasks presented in class with the goal of handling more general problems.Such problems could be formulated as "How can we utilize the computer to improve how person X does task Y?"
  • Develop an informed concern about contemporary social issues.Technology is constantly bringing our world closer together.As responsible citizens of this world, students should be able to evaluate and form an opinion on various social issues.

Pre-requisites There are no course pre-requisites for CS181.There is an assumption that students have some basic web browsing,email,and writing experience. Students have done well in this course without ever touching a computer before the first lab.Generally,these students have had to work a little harder the first few weeks,but then performed no differently than more experienced students.

Textbook Computer Confluence:exploring tomorrow 's technology -4th edition Beekman,George -Prentice Hall. The 4th edition includes a CDROM and a supplementary booklet on HTML.You will need both the CD and the booklet.

Course Pack The course pack for CS181 is designed to provide you the resource material for your laboratory section and reading assignments.Consult it while working on your projects.The course pack is available at Ulrichs.

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

CMPTRSC 183 / EECS 183. Elementary Programming Concepts.

Instructor(s): Ann Ford (aford@umich.edu)

Prerequisites & Distribution: Not intended for engineering students. Students intending transfer to the College of Engineering should take Engin. 101. CS concentrators who qualify should elect CS 280. Credit is granted for only one course among CS 183 or Engineering 101. (4). (MSA). (BS). CAEN lab access fee required for 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/183/001.nsf

Course description Fundamental concepts and skills of programming in a high-level language. Flow of control: selection, iteration, subprograms. Data structures: strings, arrays, records, lists, tables. Algorithms using selection and iteration (decision making, finding maxima/minima, searching, sorting, simulation, etc.). Good program design, structure and style are emphasized. Testing and debugging.

EECS/CMPTRSC 183 can be taken by both majors and non-majors in Computer Science. The course does indeed teach "elementary programming concepts." The underlying goal of the course is to enable students to learn and apply fundamental programming techniques and solve basic programming problems using a high-level programming language. Currently the language used is C++.

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

CMPTRSC 203(303) / EECS 203. Discrete Structures.

Section 001.

Instructor(s): William Rounds (rounds@umich.edu)

Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). 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/eecs203-1/

Fundamental concepts of algebra; partially ordered sets, lattices, Boolean algebras, semigroups, rings, polynomial rings. Graphical representation of algebraic systems; graphs, directed graphs. Application of these concepts to various areas of computer engineering.

EXAMS AND HOMEWORKS: All examinations are closed book, closed notes. There are 3 midterms and no final. The midterms will be written in blue books which you will have to bring to the test. Homework will be assigned every week, to be turned in at the end of class the next week. An assignment is late if it turned after class on the day when it was due, but before the beginning of the next lecture. In that period, there is a 20% reduction of the grade; after that period, no credit is given. Assistance on homework may be sought from the instructor and the GSIs. Discussion of the class material independent of homework is encouraged, but don't even think of copying, slightly changing, working on writing up, your homework with someone else. Suspected cases of this go straight to the Engineering Honors Council.

GRADING: Midterms 25% each (total 75%), homework 25%.

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

CMPTRSC 203(303) / EECS 203. Discrete Structures.

Section 005.

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

Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). 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/EECS203/eecs203.html

Fundamental concepts of algebra; partially ordered sets, lattices, Boolean algebras, semigroups, rings, polynomial rings. Graphical representation of algebraic systems; graphs, directed graphs. Application of these concepts to various areas of computer engineering.

Textbook: K. Rosen, Discrete Mathematics and its Applications, McGraw-Hill, Fourth Ed. Homework Policy:

Homework will be due in class one week after it is assigned. An assignment is late if it is turned in after class on the due date and before the beginning of the next lecture. Homework turned in that period receives a 20% reduction in grade; after that, no credit is given. You may receive assistance on homework from the instructor or GSI's for the course. Do not copy or modify answers from another source and present them as your own. Do not work on or write up homework with someone else. Suspected violations will be referred to the appropriate authority in your college.

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

CMPTRSC 270 / EECS 270. Introduction to Logic Design.

Instructor(s): Trevor Mudge (tnm@umich.edu)

Prerequisites & Distribution: Engineering 101 or CS 183. (4). (MSA). (BS). 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/eecs270/

Binary and non-binary systems, Boolean algebra digital design techniques, logic gates, logic minimization, standard combinational circuits, sequential circuits, flip-flops, synthesis of synchronous sequential circuits, PLA's, ROM's, RAM's, arithmetic circuits, computer-aided design. Laboratory includes hardware design and CAD experiments. Lectures and laboratory.

Course goals This course is intended to give you an understanding of digital logic. We will mostly concern ourselves with gate-level designs, but we will also address one level of abstraction up (larger logic devices such as MUXes, adders, etc.) and one level down (CMOS and TTL logic). There will be a heavy emphasis on learning design tools in your lab sections, and in the latter half of the course, the use of a hardware description language (HDL), namely the ABEL HDL, to complete labs.

Textbook Wakerly, J. F., Digital Design: Principles and Practices, 3d ed. Upper Saddle River, NJ: Prentice-Hall, 2000.

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

CMPTRSC 280 / EECS 280. Programming and Introductory Data Structures.

Instructor(s): James R Eng

Prerequisites & Distribution: Math. 115 and prior programming experience (assumes prior programming experience using decision constructs, iteration, functions, basic I/O, and simple arrays in C/C++). Those without prior programming experience should elect Engineering 101 or CS 183 before electing CS 280. No credit granted to those who have completed or are enrolled in CS 283. (4). (MSA). (BS). CAEN lab access fee required for 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/280/001.nsf

Course description Techniques and algorithm development and effective programming, top-down analysis, structured programming, testing, and program correctness. Program language syntax and static and runtime semantics. Scope, procedure instantiation, recursion, abstract data types, and parameter passing methods. Structured data types, pointers, linked data struc-tures, stacks, queues, arrays, records, and trees.

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

CMPTRSC 281(380) / EECS 281. Data Structures and Algorithms.

Section 001.

Instructor(s): James R Eng

Prerequisites & Distribution: CS 280 and 203. (4). (NS). (BS). 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/281/001.nsf

Course description EECS 281 is an introductory course in data structures and algorithms at the undergraduate level. The objective of the course is to present a number of fundamental techniques to solve common programming problems. For each of these problems, we will determine an abstract specification for a solution, examine one or more potential representa-tions to implement the abstract specification, focusing on those with significant advantages in the time/space re-quired to solve large problem instances. When appropriate, we will consider special cases of a general problem that admit particularly elegant solutions.
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: 1


CMPTRSC 281(380) / EECS 281. Data Structures and Algorithms.

Section 005, 009.

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

Prerequisites & Distribution: CS 280 and 203. (4). (NS). (BS). 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/281/001.nsf

Course description EECS 281 is an introductory course in data structures and algorithms at the undergraduate level. The objective of the course is to present a number of fundamental techniques to solve common programming problems. For each of these problems, we will determine an abstract specification for a solution, examine one or more potential representa-tions to implement the abstract specification, focusing on those with significant advantages in the time/space re-quired to solve large problem instances. When appropriate, we will consider special cases of a general problem that admit particularly elegant solutions.

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

CMPTRSC 283 / EECS 283. Programming for Science and Engineering.

Section 001.

Instructor(s): Andrew Morgan (morgana@umich.edu)

Prerequisites & Distribution: Engin. 101 or CS 183. This course is not intended for computer science concentrators. No credit granted to those who have completed or are enrolled in CS 280. (4). (Excl). (BS). 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.

Programming concepts with numeric applications for mathematics, the sciences, and engineering. Object-oriented programming, abstract data types, and standard class libraries with numeric and non-numeric applications. Elementary data structures, linked lists, and dynamic allocation. Searching and sorting methods. Intended for non-CS/CE/EE concentrators.

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

CMPTRSC 285 / EECS 285. A Programming Language or Computer System.

Section 001 – Java.

Instructor(s): Sandra Bartlett (bartlett@umich.edu)

Prerequisites & Distribution: Some programming knowledge required. (2). (Excl). (BS). CAEN lab access fee required for non-Engineering students.

Credits: (2).

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

Course Homepage: http://www.eecs.umich.edu/~bartlett/w02java.html

  • Writing, compiling and running Java programs
  • Java syntax
  • OOP in Java
  • Doing OOP in Java
  • Java applets
  • Java GUI components
  • Layout managers
  • Event handling
  • Images, animation, and Threads
  • Advanced animation, multithreading, and sound
  • Exception handling
  • Project demos

Programming problems will be assigned.

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

CMPTRSC 370 / EECS 370. Introduction to Computer Organization.

Section 001.

Instructor(s): Peter Bird (pbird@umich.edu)

Prerequisites & Distribution: CS 280 or CS 283. (4). (Excl). (BS). 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/eecs370/

Course Overview

This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software process of how you and the computer work together to have the computer carry out a concept. In your introductory programming courses (e.g., EECS 280), you learned how to express a concept in terms of a high-level programming language such as C/C++. In EECS 370, you will see how a low-level language is executed by the hardware, and you will see how to put together basic, hardware building blocks to form the functional units of a computer.

To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finite-state machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Prerequisites

Students must have taken EECS 280. Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quickly - a TA can help you during office hours.

Course Material

The required text for the course is Computer Organization and Design: The Hardware/Software Interface (2nd edition), by Patterson and Hennessy. There are also optional lecture notes on the course home page.

Exams

There will be three exams this semester.

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

CMPTRSC 370 / EECS 370. Introduction to Computer Organization.

Section 002.

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

Prerequisites & Distribution: CS 280 or CS 283. (4). (Excl). (BS). 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/eecs370/

Course Overview

This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software process of how you and the computer work together to have the computer carry out a concept. In your introductory programming courses (e.g., EECS 280), you learned how to express a concept in terms of a high-level programming language such as C/C++. In EECS 370, you will see how a low-level language is executed by the hardware, and you will see how to put together basic, hardware building blocks to form the functional units of a computer.

To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finite-state machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Prerequisites

Students must have taken EECS 280. Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quickly - a TA can help you during office hours.

Course Material

The required text for the course is Computer Organization and Design: The Hardware/Software Interface (2nd edition), by Patterson and Hennessy. There are also optional lecture notes on the course home page.

Exams

There will be three exams this semester.

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

CMPTRSC 370 / EECS 370. Introduction to Computer Organization.

Section 009.

Instructor(s): Mark Brehob (brehob@umich.edu)

Prerequisites & Distribution: CS 280 or CS 283. (4). (Excl). (BS). 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/eecs370/

Course Overview

This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software process of how you and the computer work together to have the computer carry out a concept. In your introductory programming courses (e.g., EECS 280), you learned how to express a concept in terms of a high-level programming language such as C/C++. In EECS 370, you will see how a low-level language is executed by the hardware, and you will see how to put together basic, hardware building blocks to form the functional units of a computer.

To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finite-state machines, and hardware simulators (written in C). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Prerequisites

Students must have taken EECS 280. Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quickly - a TA can help you during office hours.

Course Material

The required text for the course is Computer Organization and Design: The Hardware/Software Interface (2nd edition), by Patterson and Hennessy. There are also optional lecture notes on the course home page.

Exams

There will be three exams this semester.

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

CMPTRSC 373 / EECS 373. Design of Microprocessor Based Systems.

Section 001.

Instructor(s):

Prerequisites & Distribution: CS 370 and 270; junior standing. (4). (Excl). (BS). 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/eecs373

In this course, you will:

  • Learn how the hardware and software components of a microprocessor-based system work together to implement system-level features.
  • Learn both hardware and software aspects of integrating digital devices (such as memory and I/O interfaces) into microprocessor-based systems.
  • Learn the operating principles of, and gain hands-on experience with, common microprocessor peripherals such as UARTs, timers, and analog-to-digital and digital-to-analog converters.
  • Get practical experience in applied digital logic design and assembly-language programming.
  • Get exposed to the tools and techniques used by practicing engineers to design, implement, and debug microprocessor-based systems.

Prerequisites:

You must have taken EECS 270 and EECS 370 to take this course. This also implies EECS 280. I will assume you are familiar with (on the hardware side) Boolean algebra, gates, multiplexers, flip-flops, and finite-state machines, (on the computer architecture side) assembly language, pipelining, memory, and caching, and (on the software side) program control structures (if/then/else, while and for loops), functions, procedures, parameter passing, pointer-based data structures, and basic structured programming techniques (information hiding, modular programming, etc.).

Topics Covered:

  • Lectures
    • Embedded Systems Overview
    • PowerPC Architecture and Assembly language
    • Bus Basics, Input/ Output devices, Bus Timing, aligned and non-aligned access
    • Input/ Output data transfers, Interrupts
    • Programmable Counters, Timers
    • Analog to Digital and Digital to Analog Conversion
    • Memory Types and Timing Issues
    • Busses
    • Direct Memory Access

  • Experiments
    • Introduction to the Xilinx FPGA and the EECS373 Expansion board
    • Familiarization with the SDS software and the PowerPC ISA
    • Bus Interfacing for I/O devices
    • Bus Interfacing for Byte addressable memory
    • Simple Serial Communication
    • Basic Interrupts
    • Timers
    • Analog to Digital Conversion
    • SRAM Interfacing

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

CMPTRSC 376(476) / EECS 376. Foundations of Computer Science.

Section 001.

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

Prerequisites & Distribution: CS 280 or 203. (4). (Excl). (BS). 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/eecs376/

An introduction to computation theory: finite automata, regular languages, pushdown automata, context-free languages, Turing machines, recursive languages and functions, and computational complexity.

xaminations: There will be two midterms and one final exam.

Grade Distribution: Midterms: 27% each Final: 27% Homeworks: 14% Project: 5%

Textbook: Introduction to the Theory of Computation by Michael Sipser, PWS Publishing Company, 1997 ISBN 0-534-94728-X

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

CMPTRSC 376(476) / EECS 376. Foundations of Computer Science.

Section 004.

Instructor(s): Richmond Thomason (rthomaso@umich.edu)

Prerequisites & Distribution: CS 280 or 203. (4). (Excl). (BS). 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/eecs376/

An introduction to computation theory: finite automata, regular languages, pushdown automata, context-free languages, Turing machines, recursive languages and functions, and computational complexity.

xaminations: There will be two midterms and one final exam.

Grade Distribution: Midterms: 27% each Final: 27% Homeworks: 14% Project: 5%

Textbook: Introduction to the Theory of Computation by Michael Sipser, PWS Publishing Company, 1997 ISBN 0-534-94728-X

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

CMPTRSC 398 / EECS 398. Special Topics.

Section 001 – Object-Oriented and Advanced Programming

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

Prerequisites & Distribution: Permission of instructor. (1-4). (Excl). 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://www.engin.umich.edu/class/eecs398/

This is the first offering of a new elective course that introduces advanced concepts and techniques in practical C/C++ programming. Some important "legacy" topics in C will be covered, but the course will emphasize object-oriented programming with the use of single and multiple inheritance and polymorphism, and using the Standard Library algorithms and containers. Key ideas in object-oriented analysis and design and common design patterns will be introduced. Programming projects will focus on learning and using techniques that are valuable for professional practice in developing and extending large scale or high-performance software relatively easily.

Textbooks
REQUIRED:
Kernighan, B. & Ritchie, D. The C Programming Language (2nd edition), Prentice-Hall, 1988. paperback
Stroustrup, B. The C++ Programming Language (3rd edition). Addison-Wesley, 1997. paperback

RECOMMENDED (not required)
Harbison, S., & Steele, G. C: A Reference Manual (4th edition), Prentice-Hall, 1994. paperback
Josuttis, N. The C++ Standard Library: A Tutorial and Reference Addison-Wesley, 1999. (listed as hardcover only, but please check if paperback is available).

Who should take this course?
This course is recommended for students interested in a career in software development, especially applications software development. Check the topics in the list below; if you have used most of them in your code already, this course would probably be redundant. Check with the David Kieras if you have questions.

Course Topics

The C legacy

  • Strong and static typing
  • Linkage, modularization
  • The preprocessor, macro definitions
  • Memory management
  • Error handling
  • Advanced pointers:

    • Multidimensional arrays and strings
    • Function pointers
    • Generic data structures based on void pointers
  • Object programming concepts

C++ basics and review

  • Type-safety concept
  • Using classes for abstraction and encapsulation
  • Pointers, references, const
  • Function and operator overloading
  • Memory management
  • Objects that manage memory
  • Templates
  • Exceptions for errror handling
  • Name spaces

Using the C++ Standard Library

  • Key design concepts
  • I/O streams, strings, string streams
  • Using the Library instead of "rolling your own" data structures and algorithm code
  • Containers, iterators, algorithms, function objects
    • vectors, lists, sets, maps, sorting, searching

Object-Oriented Programming basics

  • Inheritance
    • single and multiple
    • class hierarchies
    • object layout, construction, and destruction
  • Polymorphism
    • dynamic versus static typing
    • virtual functions
    • patterns of overriding in class hierarchies
    • abstract base classes for interface specification

Basic concepts of OO analysis and design

  • Introduction to UML notation
  • Class and object relationships, states, interactions
  • Class design
    • Using inheritance and polymorphism for code reuse and extensibility
    • Application frameworks and class libraries
  • Common design patterns and idioms
    • managed pointers, automatic memory management
    • double dispatch
    • compiler firewall (Pimpl)
    • factory (virtual constructor)
    • state, memento
    • chain of responsibility
    • observer (model-view-controller)

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

CMPTRSC 470 / EECS 470. Computer Architecture.

Section 001.

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

Prerequisites & Distribution: CS 370. (4). (Excl). (BS). 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 & Distribution: CS 281. (4). (Excl). (BS). 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 & Distribution: CS 270 and 203, and senior or graduate standing. (4). (Excl). (BS). 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 & Distribution: CS 281. (4). (Excl). (BS). 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 & Distribution: CS 370 and 281. (4). (Excl). (BS). 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 & Distribution: CS 370 and 281. (4). (Excl). (BS). 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 & Distribution: CS 370 and 281. (4). (Excl). (BS). 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 & Distribution: CS 281 and 376. (4). (Excl). (BS). 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 & Distribution: CS 281. (4). (Excl). (BS). 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 & Distribution: CS 484. (4). (Excl). (BS). 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 & Distribution: CS 281 and senior standing. (3). (Excl). (BS). 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 & Distribution: CS 482. (4). (Excl). (BS). 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 & Distribution: CS 281. (4). (Excl). (BS). 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 & Distribution: CS 281. Fluency in a standard object-oriented programming language is assumed. (4). (Excl). (BS). 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 496 / EECS 496. Capstone Design Course in Computing.

Section 001.

Instructor(s): Toby Teorey (teorey@umich.edu)

Prerequisites & Distribution: Senior standing, and concurrent enrollment in Technical Communication 496 and one of the approved 400-level team project courses in computing. (2). (Excl). (BS). CAEN lab access fee required for non-Engineering students.

Credits: (2).

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

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

Capstone design course for seniors in computer science or computer engineering. Design principles for multidisciplinary team projects, team strategies, entrepreneurial skills, ethics, and social and environmental awareness. Each student must take (simultaneously) Tech. Comm. 496 (2 credits) and one of the approved 400-level team project courses in computing (2-4 credits).

Textbooks:

  • Kernighan,B.W. and Pike,R. "The Practice of Programming" Addison-Wesley, 1999.
  • Fleddermann, C.B. "Engineering Ethics", Prentice Hall, 1999.

Description and Grading of Homework/Exams

Team projects

  1. Software practice evaluation (15%)
  2. IT ethics case study (20%)
  3. Startup business plan (25%)

Individual work

  1. Life-long learning seminars (10%)
  2. Examination (30%)

The life-long learning seminar reports are one page, addressing the main ideas given in the talk and how those issues relate to the material covered in EECS 496.

The examination will be short answer, and taken from the lectures and class discussions as well as required reading assignments.

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

CMPTRSC 497 / EECS 497. EECS Major Design Project.

Section 001.

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

Prerequisites & Distribution: Senior standing. (4). (Excl). (BS). 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 499 / EECS 499. Directed Study.

Instructor(s): Charles Antonelli

Prerequisites & Distribution: Senior standing in EECS. (1-4). (Excl). 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 & Distribution: CS 470. (3). (Excl). (BS). 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 & Distribution: CS 574. (4). (Excl). (BS). 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 581 / EECS 581. Software Engineering Tools.

Section 001.

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

Prerequisites & Distribution: CS 481 or equivalent programming experience. (3). (Excl). (BS). 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 & Distribution: CS 482. (4). (Excl). (BS). 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 & Distribution: CS 376 and 483. (4). (Excl). (BS). 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 589 / EECS 589. Advanced Computer Networks.

Section 001.

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

Prerequisites & Distribution: CS 489. (4). (Excl). (BS). 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 & Distribution: CS 492. (4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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 & Distribution: Permission of instructor or advisor. (1-4). (Excl). (BS). 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


Graduate Course Listings for CMPTRSC.


Page Counter


This page was created at 5:18 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.