Note: You must establish a session for Winter Term 2001 on wolverineaccess.umich.edu in order to use the link "Check Times, Location, and Availability". Once your session is established, the links will function.
This page was created at 7:11 PM on Mon, Jan 29, 2001.
Open courses in Computer Science
(*Not realtime Information. Review the "Data current as of: " statement at the bottom of hyperlinked page)
Wolverine Access Subject listing for CMPTRSC
Winter Term '01 Time Schedule for Computer Science.
CMPTRSC 181/EECS 181. Introduction to Computer Systems.
Section 001.
Instructor(s): Daniel Berwick
Prerequisites & Distribution: Intended for students whose goal is computer literacy; not intended for computer science, computer engineering, electrical engineering concentrators. Credit is granted for only one course among CS 181, Engin. 103, and Engin. 104. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.umich.edu/~cs181/
CS181 is meant to develop students into better computer users by offering a broad overview of how computers influence our lives. The lecture establishes what a computer is and how its parts affect the whole. Some time will be spent discussing different types of software and what makes good software ? this will better prepare students to critically evaluate the lab material. In laboratory, students learn how to increase their productivity with several commercial products ? 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:
 Develop problemsolving 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??
 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 troubleshoot problems they encounter and generalize information from this class to new experiences.
 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 ? for example privacy vs. national security.
 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 uptodate you will need to know how to explore and learn on your own.
While students will be learning practical skills in the laboratory, these are not the only objective of this course. If those skills are your only objective then I encourage you to consider an alternative method for acquiring them.
Prerequisites: There are no course prerequisites 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, 4th Edition Beekman, George and Shelley Langman Benjamin Cummings Publishing Company, Inc. The 4th edition includes a CDROM and a supplementary booklet on HTML. ? you need both the CD and the booklet.
Course Pack: The course pack for CS181 is designed to provide you with resource material for your laboratory section and several reading assignments. Consult it while working on your projects. The course pack is available at either Ulrichs or Michigan Book and Supply.
Examinations: The two class examinations cover material discussed in lectures (including guest lectures), readings, and labwork. The first exam is on material covered up to that point. The second exam is on material not covered in the first exam. The exam on which you score highest will be worth 20%, and the other will be worth 10% of your final grade.
Grading and Exams: Final course grades will be based on the total points earned for participation, homework, assignments, projects, and exams. There will be no grading on a curve in this class.
CMPTRSC 183/EECS 183. Elementary Programming Concepts.
Section 001.
Prerequisites & Distribution: This course is not intended for computer science, electrical engineering, or computer engineering concentrators. Students intending transfer to the College of Engineering should take Engin. 101. Credit is granted for only one course among CS 183, Engin. 103, and Engin. 104. No credit granted to those who have completed or are enrolled in Engin. 101. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~arford/183home.html
What's the Course About?
EECS/CS 183 is intended for both majors and nonmajors in Computer Science. The course does indeed teach "elementary programming concepts." The underlying goal of the course is to enable students to learn and apply fundamental programming techniques and solve basic programming problems using a highlevel programming language. Currently the language used is C++.
Textbook/Coursepack Readings:
 Programming in C++, by Nell Dale, Chip Weems & Mark
Headington, 2nd Edition, Jones & Bartlett, Publishers, 2001.
 Practical Debugging in C++, by Ann Ford & Toby Teorey, 2000.
CMPTRSC 183/EECS 183. Elementary Programming Concepts.
Section 007.
Prerequisites & Distribution: This course is not intended for computer science, electrical engineering, or computer engineering concentrators. Students intending transfer to the College of Engineering should take Engin. 101. Credit is granted for only one course among CS 183, Engin. 103, and Engin. 104. No credit granted to those who have completed or are enrolled in Engin. 101. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~arford/183home.html
EECS/CS 183 is intended for both majors and nonmajors in Computer Science. The course does indeed teach "elementary programming concepts." The underlying goal of the course is to enable students to learn and apply fundamental programming techniques and solve basic programming problems using a highlevel programming language.
Currently the language used is C++.
Texts:
Programming in C++, by Nell Dale, Chip Weems & Mark Headington, 2nd Edition, Jones & Bartlett, Publishers, 2001.
Practical Debugging in C++, by Ann Ford & Toby Teorey, 2000.
CMPTRSC 203(303)/EECS 203. Discrete Structures.
Section 001.
Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs2031/
Course Description: Introduction to the foundations of discrete mathematics: logic, sets, proof methods, recursion, relations, and number theory. Application of the above to formulating and solving problems in computer engineering.
Homework Problem Sets: Homework problems will be assigned each Thursday, beginning January 11. Each assignment is due the
following Thursday, to be turned in at the beginning of the lecture that day. Late homework is not
accepted. Examinations:
There will be two 80minute midterm exams and one 2hour final exam, covering topics selected from
lectures, text reading assignments, and homework. All exams are closedbook in the sense that no
textbook, reference books, homework set solutions, notes, or other aids such as calculators are to be
used.
Grading:
Course Grade = 25% Homework Avg + 40% MT Exam Avg + 35% Final Exam.
Textbook: Discrete Mathematics and Its Applications, 4th Edition, by Ken Rosen (McGraw Hill, 1999)
CMPTRSC 203(303)/EECS 203. Discrete Structures.
Section 005.
Prerequisites & Distribution: Math. 115. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~ghw/203W01/
To every extent possible, we are going to take an accelerated pace through the early material in the textbook, primarily because the
really interesting applications of the tools you will be learning in the first few chapters aren't introduced until the later chapters.
Lectures and recitations will primarily follow the textbook. During lecture, I will make every attempt to foreshadow how what we
are learning now will relate to what we will be learning later in the more advanced chapters. Reading ahead, in such cases, is
strongly encouraged. Recitations will be used to work (and rework) the mechanics of the tools and the applications we cover in
lecture.
Textbook: Discrete Mathematics and Its Applications, 4th Edition, by Ken Rosen (McGraw Hill, 1999) Chapters 1, 3, 4 with additional material from 5, 6, 7, and 8
Workload
Homework (25%):
In general, homework will be assigned Thursdays, beginning on January 11th, and will be due inclass the following week. In computing your final grade, your two worst homework scores (on a percentage basis) will be dropped before computing your average score. Otherwise, homeworks are equally weighted.
Homework must be turned in on time.
Exams 14 (75%):
Exams will not be cumulative. The first three exams will be given during the normal lecture times. The last exam will
be held during the regularly scheduled final exam for this course. In computing your final grade, your worst exam score
(on a percentage basis) will be dropped before taking the average of your remaining exams.
CMPTRSC 210/EECS 210. Electrical Engineering I.
Section 001.
Prerequisites & Distribution: Math. 116. Credit is not granted for both CS 210 and EECS 314. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~aey/eecs210.html
SUBJECTS TO BE COVERED: Fourier series, Transfer functions, Circuit analysis, Opamps, Inductors & Capacitors, Complex numbers, Phasors, Impedance, admittance, Filtering, Complex power, and Bode plots.
TEXT: J.W. Nilsson and S.A. Riedel, Electric Circuits 6th Revised
Edition, PrenticeHall, 2001.
COURSEPACK (Available at Grade A Notes, 1100 S. University Ave., 7419669):
 EECS 210 Lab Book. Details about the labs, including prelabs, writeups and policies.
 EECS 210 Additional Course Notes. Applications include audio, autos, and humans.
PROBLEM SETS: Weekly problem sets assigned on FRIDAYS, due IN CLASS one week later. No problem sets during exam weeks. No late problem sets can be accepted.
CMPTRSC 210/EECS 210. Electrical Engineering I.
Section 002.
Prerequisites & Distribution: Math. 116. Credit is not granted for both CS 210 and EECS 314. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs210s2/EECS210%252f2_W01_England.html
Text: J.W. Nilsson and S.A. Riedel, Electric Circuits, 6th Ed (revised), PrenticeHall, 2001.
Course pack: EECS 210 Lab Book and EECS 210 Additional Course Notes, available
from Grade A Notes, 1100 S. University Ave., 7419669.
Problem Sets:
Weekly problem sets assigned on Fridays, due in Class one week later.
No Problem Sets during exam weeks. No late problem sets can be accepted.
Exams:
Two 50minute closedbook (1 "cheat sheet" allowed) inclass midterm exams.
One 90minute Lab Exam given in the lab. See pink sheets in Lab Book.
One 2hour closedbook (2 "cheat sheets" allowed) final exam.
Grade Weights: Problem sets, 10%; Laboratory, 25%; Each midterm exam, 20%; Final 25%
CMPTRSC 211/EECS 211. Electrical Engineering II.
Section 001.
Instructor(s): John F Whitaker
Prerequisites & Distribution: CS 210, and prior or concurrent enrollment in Math. 216. Credit is not granted for both CS 211 and EECS 313. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs211/
Introductory electrical engineering topics, continued: basic circuit analysis; elementary transistor and diode circuits. Equivalent transformations of electric circuits. Transient analysis of circuits. Introduction to diode and transistor circuits. Amplifiers, limiters, filters and logic circuits. Laboratory experience with electrical signals and circuits.
Book: Electric Circuits by Nilsson and Riedel, Prentice Hall, Sixth
Edition.
Course Pack:
 Lab and CAD Manuals by Prof. Rebeiz.
 Chapters 3, 5 and 13 on Diodes, MOS Transistors and MOS Digital Circuits from Microelectronics
Circuits by Sedra & Smith, Oxford Univ. Press, Fourth Edition.
Course Packs available from Grade A Notes, Ulrich
Bookstore, S. University, Tel: 7419669. (Chapters not yet available.
CMPTRSC 270/EECS 270. Introduction to Logic Design.
Section 001.
Prerequisites & Distribution: CS 100. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs270/instructor.html
This course provides you with a basic understanding of what digital devices are, how they operate, and how they can be designed to perform useful functions. It
forms the foundation necessary for the more advanced hardware and software
design courses in our curriculum. You will learn about digital design through a
combination of lectures, homework, and a handson laboratory. The laboratory is
an integral part of the course that shows how the theory of digital design learned
in lectures is applied in practice to construct real digital systems.
Binary
and nonbinary systems, Boolean algebra, digital design techniques, logic
gates, logic minimization, standard combinational circuits, sequential circuits, flipflops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computeraided design. Laboratory includes
hardware design and CAD experiments.
Required Textbook:
John Wakerly, Digital Design: Principles and Practices, 3rd Ed., Prentice
Hall, 2000. ISBN 0137691912.
References (On reserve at the Media Union Library):
 J. P. Hayes, Introduction to Digital Logic Design, AddisonWesley.
 M. Mano, Digital Design, 2nd Ed., PrenticeHall.
 C. H. Roth, Jr., Fundamentals of Logic Design, 3rd Ed.
 R. H. Katz, Contemporary Logic Design, 1st Ed., PrenticeHall.
Coursework and Grading Policy: Besides attending lectures (which I highly recommend!) you are expected to
produce evidence of your performance in this course based on:
 Seven homework problem sets
 Seven laboratory experiments
 Two 1hour midterm exams and one 2hour final exam
CMPTRSC 270/EECS 270. Introduction to Logic Design.
Section 002.
Prerequisites & Distribution: CS 100. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs270/instructor.html
This course provides you with a basic understanding of what digital devices are, how they operate, and how they can be designed to perform useful functions. It
forms the foundation necessary for the more advanced hardware and software
design courses in our curriculum. You will learn about digital design through a
combination of lectures, homework, and a handson laboratory. The laboratory is
an integral part of the course that shows how the theory of digital design learned
in lectures is applied in practice to construct real digital systems.
Binary
and nonbinary systems, Boolean algebra, digital design techniques, logic
gates, logic minimization, standard combinational circuits, sequential circuits, flipflops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computeraided design. Laboratory includes
hardware design and CAD experiments.
Required Textbook:
John Wakerly, Digital Design: Principles and Practices, 3rd Ed., Prentice
Hall, 2000. ISBN 0137691912.
References (On reserve at the Media Union Library):
 J. P. Hayes, Introduction to Digital Logic Design, AddisonWesley.
 M. Mano, Digital Design, 2nd Ed., PrenticeHall.
 C. H. Roth, Jr., Fundamentals of Logic Design, 3rd Ed.
 R. H. Katz, Contemporary Logic Design, 1st Ed., PrenticeHall.
Coursework and Grading Policy: Besides attending lectures (which I highly recommend!) you are expected to
produce evidence of your performance in this course based on:
 Seven homework problem sets
 Seven laboratory experiments
 Two 1hour midterm exams and one 2hour final exam
CMPTRSC 280/EECS 280. Programming and Introductory Data Structures.
Section 001.
Prerequisites & Distribution: Math. 115 and CS 100. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 280/EECS 280. Programming and Introductory Data Structures.
Section 006.
Prerequisites & Distribution: Math. 115 and CS 100. (4). (MSA). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 283/EECS 283. Elementary Programming Concepts II.
Section 001 – Practical Programming Concepts
Instructor(s): Andrew Michael Morgan
Prerequisites & Distribution: Engin. 101 or CS 183. This course is not intended for computer science, electrical engineering, or computer engineering concentrators. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs283/
Course Goals:
 Learn methods for problem decomposition and program design. This consists of analyzing problem requirements, breaking the problem down, and designing an algorithm for
each part of the problem.
 Learn the C++ language, including many of the objectoriented features.
 Learn the basics of writing good code (software engineering), especially code that can easily be read and modified by others, and using the debugger.
 Learn how to construct mediumsized programs for various applications, including those that require some basic knowledge of linked lists, searching, and sorting techniques.
 Learn the concepts and usage of many different data structures, and learn the benefits each has to offer.
 Learn practical usage of programming concepts to solve real problems.
Course Textbooks "Problem Solving With C++ – The Object of Programming" by Walter Savitch, published by Addison Wesley. Additional Reference: Practical C++ Programming, by Steve Oualline (the chipmunk book), published by O'Reilly and Associates.
3 inclass exams and four programming projects.
CMPTRSC 284/EECS 284. Introduction to a Programming Language or System.
Section 001 – C++. Meets in the first half of the term. (Drop/Add deadline=January 24).
Instructor(s): Kevin J Compton
Prerequisites & Distribution: Some programming knowledge is required. No credit granted for the C minicourse to those students who have completed CS 280. (1). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Mini/Short course
Credits: (1).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 285/EECS 285. A Programming Language or Computer System.
Section 001 – Java. (Drop/Add deadline=January 24).
Prerequisites & Distribution: (2). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Mini/Short course
Credits: (2).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~bartlett/w01java.html
Supported programming environment – Java 1.2 using Sun's JDK on Unix
 Writing, compiling and running Java programs
 Java syntax
 Object Based programming in Java
 Object Oriented programming in Java
 Java applets
 Java GUI components
 Layout managers
 Images and sounds, animation, and Threads
 Advanced animation, multithreading
 Exception handling
Grades will be based on:
 40% homework assignments
 30% midterm (1 hour)
 30% final exam (1 hour) (cumulative)
Textbooks
 Java How to Program 3rd Ed. (recommended, not required)
by Deitel and Deitel
Publisher: Prentice Hall

Java and the JDK
CMPTRSC 285/EECS 285. A Programming Language or Computer System.
Section 002 – Java. (Drop/Add deadline=January 24).
Prerequisites & Distribution: (2). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Mini/Short course
Credits: (2).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 370/EECS 370. Introduction to Computer Organization.
Section 001.
Prerequisites & Distribution: CS 270 and CS 280. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs370/
Course Overview: This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software 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 highlevel programming language such as C. EECS 270 taught you the basics building blocks of hardware (flipflops, gates, etc.). EECS 370 is the course
where these two approaches meet. You will see in this course how a lowlevel language is executed by the hardware, and you will see how to put together basic, hardware
building blocks to form the functional units of a computer.
To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates (we
assume you can do that from EECS 270). Rather, you will describe the hardware in diagrams, finitestate machines, and hardware simulators (written in C). To further your
understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.
Prerequisites:
Students must have taken EECS 270 and EECS 280, or have equivalent knowledge of digital logic design and C. You should understand digital design concepts such as
multiplexors, gates, boolean algebra, finitestate machines, and flipflops. You should also understand and be reasonably fluent in programming in C, e.g. using arrays, structures, functions, and pointers.
Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quicklya 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.
Class Projects
Four projects will be assigned during the term, each of which will require a substantial time commitment on your part. Many students find the work load in this course to be
heavy.
CMPTRSC 370/EECS 370. Introduction to Computer Organization.
Section 002.
Prerequisites & Distribution: CS 270 and CS 280. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs370/
Course Overview: This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software 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 highlevel programming language such as C. EECS 270 taught you the basics building blocks of hardware (flipflops, gates, etc.). EECS 370 is the course
where these two approaches meet. You will see in this course how a lowlevel language is executed by the hardware, and you will see how to put together basic, hardware
building blocks to form the functional units of a computer.
To achieve these goals, you will partially design and "build" simple computers at various levels of detail. Building in this course will not mean connecting chips and gates (we
assume you can do that from EECS 270). Rather, you will describe the hardware in diagrams, finitestate machines, and hardware simulators (written in C). To further your
understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.
Prerequisites:
Students must have taken EECS 270 and EECS 280, or have equivalent knowledge of digital logic design and C. You should understand digital design concepts such as
multiplexors, gates, boolean algebra, finitestate machines, and flipflops. You should also understand and be reasonably fluent in programming in C, e.g. using arrays, structures, functions, and pointers.
Depending on when you took EECS 280, you may not yet be familiar with programming C on Unix. I advise you to learn quicklya 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.
Class Projects
Four projects will be assigned during the term, each of which will require a substantial time commitment on your part. Many students find the work load in this course to be
heavy.
CMPTRSC 380/EECS 380. Data Structures and Algorithms.
Section 001.
Prerequisites & Distribution: CS 280 and 203 (or 303). (4). (NS). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs380/
Course overview:
This course is intended to give you an understanding of data structures and algorithms in addition to further exposing you to C++ and programming in general. We intend
to teach the "traditional" topics for this course. But in addition the students will be exposed to nontraditional (but very useful in practice) data structures and tools.
Prerequisites:
Students must have taken EECS 203 and EECS 280 or have an equivalent background. You should understand basic programming concepts including pointers, arrays, linked lists, and data abstractions. You should understand basic discrete mathematics including recursion relations, bigOh notation, and have a basic understanding of sets
and graphs.
You will be doing your work in C++ on a Unix system. If you are not familiar with that environment, we advise that you learn quickly. A TA can help you during office
hours.
Course Material:
The required text for this class is Algorithms in C++, 3rd edition by Robert Sedgewick. We will also use handouts and web references on a regular basis.
Class Projects and Homework:
Three projects will be assigned during the term, each of which will require substantial time commitments. Further there will be about 6 homework assignments. Midterm and Final Exams
Grading:
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: 33%
Homework: 12%
Midterm: 25%
Final: 30%
CMPTRSC 380/EECS 380. Data Structures and Algorithms.
Section 005.
Prerequisites & Distribution: CS 280 and 203 (or 303). (4). (NS). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs380/
Course overview:
This course is intended to give you an understanding of data structures and algorithms in addition to further exposing you to C++ and programming in general. We intend
to teach the "traditional" topics for this course. But in addition the students will be exposed to nontraditional (but very useful in practice) data structures and tools.
Prerequisites:
Students must have taken EECS 203 and EECS 280 or have an equivalent background. You should understand basic programming concepts including pointers, arrays, linked lists, and data abstractions. You should understand basic discrete mathematics including recursion relations, bigOh notation, and have a basic understanding of sets
and graphs.
You will be doing your work in C++ on a Unix system. If you are not familiar with that environment, we advise that you learn quickly. A TA can help you during office
hours.
Course Material:
The required text for this class is Algorithms in C++, 3rd edition by Robert Sedgewick. We will also use handouts and web references on a regular basis.
Class Projects and Homework:
Three projects will be assigned during the term, each of which will require substantial time commitments. Further there will be about 6 homework assignments. Midterm and Final Exams
Grading:
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: 33%
Homework: 12%
Midterm: 25%
Final: 30%
CMPTRSC 398/EECS 398. Special Topics.
Section 001 – Object Oriented and Advanced Programing. (3 credits).
Prerequisites & Distribution: Permission of instructor. (14). (Excl). CAEN lab access fee required for nonEngineering students.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs398/
Brief description: 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 objectoriented programming with the use of single and multiple inheritance and polymorphism, and using the Standard Library algorithms and containers. Key ideas in objectoriented 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 highperformance software relatively easily.
Textbooks:
REQUIRED
 Kernighan, B. & Ritchie, D. The C Programming Language, 2nd edition. PrenticeHall, 1988. paperback
 Stroustrup, B. The C++ Programming Language, 3rd edition. AddisonWesley, 1997. paperback
RECOMMENDED (not required)
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: typesafety 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).
ObjectOriented 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 (modelviewcontroller).
CMPTRSC 400/EECS 400/Math. 419. Linear Spaces and Matrix Theory.
Section 001.
Prerequisites & Distribution: Four terms of college mathematics beyond Math. 110. Credit can be earned for only one of Math. 214, 217, 417, or 419. No credit granted to those who have completed or are enrolled in Math. 513. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
See Mathematics 419.001.
CMPTRSC 470/EECS 470. Computer Architecture.
Section 001.
Instructor(s): Steven K Reinhardt
Prerequisites & Distribution: CS 370. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs470/
Course Synopsis: EECS 470 is an introductory graduatelevel 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 stateoftheart systems, and trends that will affect them in future systems. We will cover instruction set architectures, pipelining (including basic pipelining, multipleinstructionpercycle machines, outoforder
instruction execution, and vector processing), memory systems (including caches and virtual memory), I/O interfaces, operating system issues, and (if time
permits) basic multiprocessor systems.
A central part of EECS 470 is the detailed design of major portions of a substantial processor using the Verilog hardware
design language. Portions of this work will be done individually as homeworks; the bulk of the work will be done in groups of three to four as a term project. You
will use modern commercial CAD tools to develop and test 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 370 is a prerequisite for this course. I will assume that you have a solid understanding of the material
covered in that course: assembly language, machine language, ALU design, and the basic ideas of pipelining, caches, and virtual memory. EECS 470 expands on this material greatly in both depth and breadth. If you did not take EECS 370 here, you may need to spend extra time reviewing this material.
Textbook: Computer Architecture: A Quantitative Approach, 3rd Edition, by Hennessy and Patterson, Morgan Kaufman Publishers. We will be using a draft of the
upcoming 3 rd edition, available from the Art & Architecture Copy Center in Pierpont Commons. If you send in comments on the chapters we read to the publisher, you will receive a bound version of the text when it comes out. The text is substantially revised since the 2nd edition, so there's no point in borrowing a text from someone who took the class previously.
Course policies:
Attendance at the discussion section is mandatory. The TA will hand out homework assignments and present vital information on the CAD tools you will be using
for your project. Do not register for this course unless you can attend the discussion section.
This course is a lot of work. You will spend many long nights debugging your processor at the end of the term. If you are registered for other classes that may
interfere with your ability to dedicate a lot of time to this course, especially in the last few weeks, you should reconsider your schedule.
You are encouraged to interact with other students to discuss course material, form study groups for the exams, help each other learn Verilog and the CAD
tools, and provide each other with debugging assistance, encouragement, and moral support. However, the honor code is still in force: all individual assignments
(i.e., homeworks and exams) are to be performed on your own, and all group assignments (i.e., the project) are to be performed only by members of the group.
Violation of this policy is grounds for initiating an action that would be filed with the Dean's office and would come before the College of Engineering's Honor
Council. If you have any doubts about whether your level of collaboration is permissible, contact the professor or the TA first.
Grading: Homeworks 30%, Midterm 15%, Final 20%, Project 35%.
CMPTRSC 476/EECS 476. Foundations of Computer Science.
Section 001 – Theory of Computation
Prerequisites & Distribution: CS 280 and 203 (or 303). (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://wwwpersonal.engin.umich.edu/~hge/476/
Texts:
 Sipser, Introduction to the Theory of
Computation, PWS Publishers
 Barwise and Etchemendy: Turing's World, CSLI Publications
CMPTRSC 476/EECS 476. Foundations of Computer Science.
Section 004.
Instructor(s): Richmond Thomason
Prerequisites & Distribution: CS 280 and 203 (or 303). (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs476/w01/sec4/
Finite Automata, Regular Operations, Nondeterminism. Regular Expressions. Proofs of nonregularity. ContextFree Grammars.
Pushdown Automata. Proofs of noncontextfreeness. Background to computability. Turing machines. Variations on Turing Machines.
Abstract algorithms. Decidability Halting problem. Undecidability. Reducibility Time complexity. P complexity, NP complexity.
NPcompleteness. NPcomplete problems.
CMPTRSC 477/EECS 477. Introduction to Algorithms.
Section 001.
Prerequisites & Distribution: CS 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 478/EECS 478. Logic Circuit Synthesis and Optimization.
Section 001.
Prerequisites & Distribution: CS 270 and 203 (or 303), and senior or graduate standing. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs478/
Course Overview: This course covers digital logic synthesis and its underlying theory from an advanced perspective. Topics include: combinational logic optimization (twolevel and multilevel minimization), sequential logic optimization (state assignment, FSM minimization, retiming), timing analysis and optimization, technology
mapping, scheduling, allocation, and verification. Emphasis will be placed on algorithmic techniques that are currently used in the design of integrated systems
with millions of transistors.
Textbook: Logic synthesis and verification algorithms, G. Hachtel and F. Somenzi, Kluwer Academic Publishers.
Supplementary textbook: Synthesis and optimization of digital circuits, G. DeMicheli, McGrawHill.
Both textbooks have been placed on reserve in the Media Union Library.
CMPTRSC 481/EECS 481. Software Engineering.
Section 001.
Prerequisites & Distribution: CS 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 482/EECS 482. Introduction to Operating Systems.
Section 001.
Instructor(s): Atul Prakash
Prerequisites & Distribution: CS 370 and 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs482/
Course Overview:
EECS 482 is an introductory course in operating systems at the senior undergraduate level or firstyear graduate level. The objective of the course is to familiarize
you with the issues involved in the design and implementation of modern operating systems. The concepts in this course are not limited to any particular operating
system or hardware platform. We will discuss examples that are drawn from historically significant and modern operating systems. We will cover topics such as
processes and threads, concurrency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondarystorage
management, file systems, and security.
In order to more fully understand operating systems, you will implement several projects that expose you to the core features of modern operating systems. These
projects will give you practical exposure to topics such as threads, efficient resource usage, caching, and clientserver systems. To further your understanding of other
topics, we will provide practice questions that will be presented in the discussion sections. In discussion sections, we will also present material on the practice of
programming, including elegance in design and coding; the process of testing and debugging; and how to effectively work in teams.
Prerequisites
Students must have obtained a grade of C or better in each of EECS 370 and EECS 380. Graduate students must have equivalent knowledge of computer
architecture, data structures, and C/C++ programming. Students are expected to have had extensive C/C++ programming experience and to be familiar with UNIX.
Students with questions about whether they have sufficient preparation for this course should speak with the instructors as soon as possible. Due to the
overwhelming number of students interested in this course, we will strictly enforce the prerequisites. We will also give priority to senior students who need the
course to graduate in May and have declared their major. Undeclared majors will not be accepted into this course because of high enrollment.
Course Projects:
Four projects will be assigned during the term. These projects will require a substantial time commitment on your part. Many students find the workload in this
course to be heavy. However, we expect that effort spent on programming projects will be conceptual rather than bruteforce; none of the projects are excessively large
in terms of lines of code.
Exams:
There will be two exams for this course – a midterm and a final.
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 40%
First Exam 30%
Second Exam 30%
Course Materials. Required Textbooks:
 Operating Systems, 4th Edition, by Stallings, Prentice Hall.
 Practical Unix Programming, Robbins and Robbins, Prentice Hall.
Other Required Reading
 An Introduction to
Programming with Threads, A. Birrell

Experience with Processes
and Monitors in Mesa, B. Lampson, D. Redell
 A Fast File System for UNIX, M. McKusic, W. Joy, S. Leffler, R. Fabry
 EndtoEnd Arguments
in System Design, J. Saltzer, D. Reed, D. Clark
 Using Encryption for Authentication in Large Networks of Computers , R. Needham, M. Schroeder
Supplementary reading (for your entertainment and edification)
CMPTRSC 482/EECS 482. Introduction to Operating Systems.
Section 006.
Prerequisites & Distribution: CS 370 and 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs482/
Course Overview:
EECS 482 is an introductory course in operating systems at the senior undergraduate level or firstyear graduate level. The objective of the course is to familiarize
you with the issues involved in the design and implementation of modern operating systems. The concepts in this course are not limited to any particular operating
system or hardware platform. We will discuss examples that are drawn from historically significant and modern operating systems. We will cover topics such as
processes and threads, concurrency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondarystorage
management, file systems, and security.
In order to more fully understand operating systems, you will implement several projects that expose you to the core features of modern operating systems. These
projects will give you practical exposure to topics such as threads, efficient resource usage, caching, and clientserver systems. To further your understanding of other
topics, we will provide practice questions that will be presented in the discussion sections. In discussion sections, we will also present material on the practice of
programming, including elegance in design and coding; the process of testing and debugging; and how to effectively work in teams.
Prerequisites
Students must have obtained a grade of C or better in each of EECS 370 and EECS 380. Graduate students must have equivalent knowledge of computer
architecture, data structures, and C/C++ programming. Students are expected to have had extensive C/C++ programming experience and to be familiar with UNIX.
Students with questions about whether they have sufficient preparation for this course should speak with the instructors as soon as possible. Due to the
overwhelming number of students interested in this course, we will strictly enforce the prerequisites. We will also give priority to senior students who need the
course to graduate in May and have declared their major. Undeclared majors will not be accepted into this course because of high enrollment.
Course Projects:
Four projects will be assigned during the term. These projects will require a substantial time commitment on your part. Many students find the workload in this
course to be heavy. However, we expect that effort spent on programming projects will be conceptual rather than bruteforce; none of the projects are excessively large
in terms of lines of code.
Exams:
There will be two exams for this course – a midterm and a final.
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 40%
First Exam 30%
Second Exam 30%
Course Materials. Required Textbooks:
 Operating Systems, 4th Edition, by Stallings, Prentice Hall.
 Practical Unix Programming, Robbins and Robbins, Prentice Hall.
Other Required Reading
 An Introduction to
Programming with Threads, A. Birrell

Experience with Processes
and Monitors in Mesa, B. Lampson, D. Redell
 A Fast File System for UNIX, M. McKusic, W. Joy, S. Leffler, R. Fabry
 EndtoEnd Arguments
in System Design, J. Saltzer, D. Reed, D. Clark
 Using Encryption for Authentication in Large Networks of Computers , R. Needham, M. Schroeder
Supplementary reading (for your entertainment and edification)
CMPTRSC 484/EECS 484/IOE 484. Database Management Systems.
Section 001.
Prerequisites & Distribution: CS 380 or IOE 373. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: https://coursetools.ummu.umich.edu/2001/winter/eecs/484/001.nsf
This is an introductory course on database management systems from the viewpoint of database system user, database designer, and database system developer. Consistent with recent offerings of the course, several large programming assignments will be given. Competence in objectoriented programming and data structures is required.
Required Text: Database Management Systems (2nd edition) – by Raghu Ramakrishnan and Johannes Gehrke, McGraw Hill 1999.
CMPTRSC 486/EECS 486. ObjectOriented Software Development.
Section 001.
Prerequisites & Distribution: CS 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 487/EECS 487. Interactive Computer Graphics.
Section 001.
Instructor(s): Jon Harris
Prerequisites & Distribution: CS 380 and senior standing. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/courses/eecs487/w01/index.htm
The course will have four major focus areas:
 Mathematics for Computer Graphics
This includes the representation and manipulation of points, lines, planes, and vectors; 2D and 3D coordinate transformations, and their representation as matrices; 3D
viewing and perspective.
 Geometric Modeling
Includes the modeling hierarchy, facets, polygons, curves, splines, and solids models (combinatoric solid geometry CSG).
 Rendering
Including scan line and ray tracing techniques, camera models, illumination and reflection models for surfaces, shadowing, texture mapping, and antialiasing.
 Applications
Graphical User Interfaces, Visualization, Animations
While not a formal prerequisite, familiarity with simple trigonometry and linear algebra concepts will make the course material easier to understand and comprehend. Likewise, familiarity with object oriented programming techniques is a plus in developing programs driven by graphical user interfaces.
Programming exercises will use the C (or C++) language for generalpurpose programming; Tcl/Tk, for UI development, and OpenGL for 3D graphics. We will review Tcl/Tk and OpenGL in class and discussion; you are assumed to know C or C++. Extensive information about Tcl/Tk and OpenGL is available on the web. Check the class web page for
links.
You will undertake written assignments and programming assignments to explore and increase your understanding of the concepts covered in this course. Final course grades will be based on the total points earned on the homework, computer programming projects, and the two exams.
Class Text:
Computer Graphics; Donald Hearn, M. Pauline Baker Source Code Link: http://www.ncsa.uiuc.edu/Vis/Graphics/code.html
Interactive Computer Graphics, A TopDown Approach with OpenGL; Edward Angel. Source Code Link: http://thelma.cs.unm.edu/~angel/BOOK/SECOND_EDITION/
CMPTRSC 489/EECS 489. Computer Networks.
Section 001.
Instructor(s): Kang G. Shin
Prerequisites & Distribution: CS 482. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://vail.eecs.umich.edu/syllabus.html
If you want to learn how to design waycool Web pages, how to build and maintain a killer Web site, or how to setup, administer, and engineer a LAN, this course is not for you. In this course we do not study how
modem works, nor do we study how ISDN works. We do not study Novell Netware Administration and we
do not learn how to use Adobe Photoshop. We do not learn how to set up a chat room, nor how to set up an electronic guest book.
We do try to understand how networks operate and how network applications are written. We study the workings of the Ethernet and the Internet: how packets are routed, how packets are transmitted, and what to do when there is network congestion. We look at packet headers and routing and transmission protocols. We learn what sockets are and how to use them. And we write code. We write code to
implement various routing and transmission protocols. We write code to build clientserver applications.
There will be a lot of programming.
You should know what processes and threads are and be familiar with concurrency and interprocess communication. EECS 482 (Introduction to Operating Systems) is a strict prerequisite. You must also have good working knowledge of C and UNIX. An introduction to probability course such as EECS 401, EECS 501, Math 425, Math 525, or Stat 412 is highly recommended as a corequisite.
Textbooks:
Kurose and Ross, Computer Networking: A TopDown Approach, AddisonWesley, 2001.
ISBN 020147114. W.R. Stevens, UNIX Network Programming, vol. 1: Networking APIs: Sockets and XTI, 2nd. ed., PrenticeHall, 1997. (Don't buy the first edition!).
CMPTRSC 492/EECS 492. Introduction to Artificial Intelligence.
Section 001.
Prerequisites & Distribution: CS 380. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://ai.eecs.umich.edu/people/durfee/courses/492winter01/
Course Objectives: The purpose of this course is to introduce the student to the major ideas and techniques of Artificial Intelligence, as well as to develop an appreciation for the engineering issues underlying the design of intelligent computational agents. The successful student will finish the course with specific modeling and analytical skills (e.g., search, logic, probability), knowledge of many of the most important knowledge representation, reasoning, and 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.
There will be three examinations – two midterms and a final. There will be six homework assignments (problem sets).
Textbook: Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, PrenticeHall, 1995.
CMPTRSC 499(500)/EECS 499. Directed Study.
Section.
Prerequisites & Distribution: Senior standing in EECS. (14). (Excl). CAEN lab access fee required for nonEngineering students. (INDEPENDENT). May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 545/EECS 545. Machine Learning.
Section 001.
Prerequisites & Distribution: CS 492. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 573/EECS 573. Microarchitecture.
Section 001.
Prerequisites & Distribution: CS 470. (3). (Excl).
Credits: (3).
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 575/EECS 575. Theoretical Computer Science II.
Section 001.
Prerequisites & Distribution: CS 574. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 581/EECS 581. Software Engineering Tools.
Section 001.
Prerequisites & Distribution: CS 481 or equivalent programming experience. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 582/EECS 582. Advanced Operating Systems.
Section 001.
Prerequisites & Distribution: CS 482. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~bnoble/582/
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 over the last three decades. 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.
Commensurate with its numbering, this is a graduatelevel course. The official prerequisite is EECS 482. While graduate standing is not strictly required, undergraduates are strongly discouraged from taking this course. This course is run very differently from an undergraduate course, and the few undergraduates who have taken it have found it to be quite difficult.
The work of this course consist of:
 Reading, analyzing, and actively discussing papers.
 As part of a team, designing a semesterlong project, carrying it out, and writing up the results.
 Writing a review for a project done by other students.
 Writing a critique of current research papers submitted to a toptier conference.
 Taking a final exam during the last week of class.
CMPTRSC 586/EECS 586. Design and Analysis of Algorithms.
Section 001.
Prerequisites & Distribution: CS 380. (3). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (3).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.eecs.umich.edu/~qstout/586/index.html
Audience: In decreasing order of frequency, historically the students in this class have been
 Gradute students in Computer Science and Engineering: For these students, this class can satisfy the Theory distributional requirements for the MS and PhD degrees, and helps satisfy the 500level course requirements.
 Graduate students from other disciplines: For these students, this class can satisfy cognate requirements, and it can satisfy computer science requirements for students in the Scientific Computing program.
 Undergraduate students: For CSE undergraduates it can satisfy computeroriented technical elective requirements, and can be used to satisfy theory requirements (though this is not recommended unless you are very good).
Prerequisites: In terms of computational maturity, you should be able to program well in some standard procedural language such as C, Fortran, Pascal, or Java, including experience in
data structures at least equivalent to EECS 380 (preferably you've had at least one class that used 380 as a prerequisite). In class we'll use pseudocode, so the computer language you've used is not critical (though if you have only used Fortran it is likely that your background is quite weak).
In terms of mathematical background, you should have had least EECS 303 or its equivalent and done well in it. Any additional upper level courses in theoretical
computer science, logic, or discrete mathematics in which you had to do proofs will be helpful. In addition to the discrete mathematics, we will also make use of calculus
and basic probability theory.
For all students, the course can satisfy a general desire to learn more about algorithms and computer science. This is one of the core graduate computer science courses, both here and elsewhere, and I make an attempt to show how algorithms relate to a wide range of software and hardware concerns. By far, most of the students
enrolled are in the first category. If you are in the other categories, make sure you satisfy the prerequisites.
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, divideandconquer, and dynamic programming. We also cover the ways in which one analyzes the efficiency of algorithms, through the use of "generalized Onotation" for worstcase, expectedcase, 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: Corman, Leiserson, and Rivest, Introduction to Algorithms, Garey and Johnson, Computers and Intractability: a Guide to the Theory of NPCompleteness, additional handouts.
Grading: Based on many rather difficult homework assignments, and class participation. No tests.
CMPTRSC 589/EECS 589. Advanced Computer Networks.
Section 001.
Prerequisites & Distribution: CS 489. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://irl.eecs.umich.edu/jamin/courses/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 WorldWide 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 corequisite.
It is an understatement to say that computer networking, in the forms of the
Internet and the WorldWideWeb, 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 highquality 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.
Textbooks:
Please see the course's Reading List for the papers we will be reading this semester. 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," PrenticeHall, 1995.
 Keshav, S., "An Engineering Approach to Computer Networking,"
AddisonWesley, 1997.
 Kurose and Ross, "Computer Networking: A TopDown Approach,"
AddisonWesley, 2000.
 Patterson 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., PrenticeHall, 1997.
 Tanenbaum, A., "Computer Networks," 3rd ed., PrenticeHall, 1996. Wright and Stevens, TCP/IP Illustrated v.2, AddisonWesley.
CMPTRSC 592/EECS 592. Advanced Artificial Intelligence.
Section 001 – Topic
Prerequisites & Distribution: CS 492. (4). (Excl). (BS). CAEN lab access fee required for nonEngineering students.
Credits: (4).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
CMPTRSC 598/EECS 598. Special Topics in Electrical Engineering and Computer Science.
Section 001 – Cryptography and Network Security. (3 credits).
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: http://www.citi.umich.edu/u/honey/crypto/
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 0138690170
CMPTRSC 598/EECS 598. Special Topics in Electrical Engineering and Computer Science.
Section 002 – Control of Motion in Animals and Machines. (3 credits).
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: https://coursetools.ummu.umich.edu/2001/winter/eecs/598/003.nsf
This course will explore the connections between biological and engineering theories of motion control. We will focus on problems of legged locomotion, developing the relevant mechanics models, exploring in that context the efficacy of various biological theories of neural control, and contrasting their explanatory power with various ideas from engineering control theory. Format: There will be twice weekly lectures with
reading assignments and a required project. Projects, to be arranged with the instructor's consultation and approval, will involve a combination of
 readings,
 numerical or analytical follow on,
 class presentation.
 culminating in a written report according to the individual agreement with the
instructor
Prerequisites: The instructor welcomes all interested students with advanced (e.g., first
year graduate level) background in any one of the areas: computer science, control; dynamical systems; mechanics; neurobiology; and related disciplines. The hope is to establish a strong
interdisciplinary dialogue at as detailed a technical level as possible.
CMPTRSC 598/EECS 598. Special Topics in Electrical Engineering and Computer Science.
Section 003 – (3 credits).
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: 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.
Prerequisites & Distribution: Permission of instructor or advisor. (14). (Excl). (BS). CAEN lab access fee required for nonEngineering students. May be repeated for credit.
Credits: (14).
Lab Fee: CAEN lab access fee required for nonEngineering students.
Course Homepage: No Homepage Submitted.
No Description Provided
Check Times, Location, and Availability
This page was created at 7:12 PM on Mon, Jan 29, 2001.
University of Michigan  College of LS&A  Student Academic Affairs  LS&A Bulletin Index
This page maintained by LS&A Academic Information and Publications, 1228 Angell Hall
Copyright © 2001 The Regents of the University of Michigan,
Ann Arbor, MI 48109 USA +1 734 7641817
Trademarks of the University of Michigan may not be electronically or otherwise altered or separated from this document or used for any nonUniversity purpose.
