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 2001 Course Guide

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.

Courses in Computer Science

This page was created at 7:11 PM on Mon, Jan 29, 2001.

Winter Term, 2001 (January 4 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 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 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 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 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??
  • 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 up-to-date 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.

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

CMPTRSC 183/EECS 183. Elementary Programming Concepts.

Section 001.

Instructor(s): Ann R. Ford (arford@umich.edu)

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 non-Engineering students.

Credits: (4).

Lab Fee: CAEN lab access fee required for non-Engineering 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 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++.

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.

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

CMPTRSC 183/EECS 183. Elementary Programming Concepts.

Section 007.

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

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 non-Engineering students.

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~arford/183home.html

EECS/CS 183 is intended for 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++.

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.

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

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

    Section 001.

    Instructor(s): John F. Meyer (jfm@umich.edu), Rob Robertson (robertlr@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/

    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 80-minute midterm exams and one 2-hour final exam, covering topics selected from lectures, text reading assignments, and homework. All exams are closed-book 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)

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

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

    Section 005.

    Instructor(s): Gregory H Wakefield

    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/~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 re-work) 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 in-class 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 1-4 (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.

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

    CMPTRSC 210/EECS 210. Electrical Engineering I.

    Section 001.

    Instructor(s): Andrew E. Yagle (aey@umich.edu)

    Prerequisites & Distribution: Math. 116. Credit is not granted for both CS 210 and EECS 314. (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/~aey/eecs210.html

    SUBJECTS TO BE COVERED: Fourier series, Transfer functions, Circuit analysis, Op-amps, 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, Prentice-Hall, 2001.

    COURSEPACK (Available at Grade A Notes, 1100 S. University Ave., 741-9669):

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

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

    CMPTRSC 210/EECS 210. Electrical Engineering I.

    Section 002.

    Instructor(s): Tony England (england@umich.edu)

    Prerequisites & Distribution: Math. 116. Credit is not granted for both CS 210 and EECS 314. (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/eecs210s2/EECS210%252f2_W01_England.html

    Text: J.W. Nilsson and S.A. Riedel, Electric Circuits, 6th Ed (revised), Prentice-Hall, 2001.

    Course pack: EECS 210 Lab Book and EECS 210 Additional Course Notes, available from Grade A Notes, 1100 S. University Ave., 741-9669.

    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 50-minute closed-book (1 "cheat sheet" allowed) in-class midterm exams.
  • One 90-minute Lab Exam given in the lab. See pink sheets in Lab Book.
  • One 2-hour closed-book (2 "cheat sheets" allowed) final exam.

    Grade Weights: Problem sets, 10%; Laboratory, 25%; Each midterm exam, 20%; Final 25%

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

    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 non-Engineering students.

    Credits: (4).

    Lab Fee: CAEN lab access fee required for non-Engineering 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:

    1. Lab and CAD Manuals by Prof. Rebeiz.
    2. 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: 741-9669. (Chapters not yet available.

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

    CMPTRSC 270/EECS 270. Introduction to Logic Design.

    Section 001.

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

    Prerequisites & Distribution: CS 100. (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/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 hands-on 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 non-binary systems, Boolean algebra, digital design techniques, logic gates, logic minimization, standard combinational circuits, sequential cir-cuits, flip-flops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computer-aided design. Laboratory includes hardware design and CAD experiments.

    Required Textbook: John Wakerly, Digital Design: Principles and Practices, 3rd Ed., Pren-tice- Hall, 2000. ISBN 0-13-769191-2.

    References (On reserve at the Media Union Library):

    • J. P. Hayes, Introduction to Digital Logic Design, Addison-Wesley.
    • M. Mano, Digital Design, 2nd Ed., Prentice-Hall.
    • C. H. Roth, Jr., Fundamentals of Logic Design, 3rd Ed.
    • R. H. Katz, Contemporary Logic Design, 1st Ed., Prentice-Hall.

    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 1-hour midterm exams and one 2-hour final exam

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

    CMPTRSC 270/EECS 270. Introduction to Logic Design.

    Section 002.

    Instructor(s): Pinaki Mazumder (mazum@umich.edu)

    Prerequisites & Distribution: CS 100. (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/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 hands-on 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 non-binary systems, Boolean algebra, digital design techniques, logic gates, logic minimization, standard combinational circuits, sequential cir-cuits, flip-flops, synthesis of synchronous sequential circuits, PLAs, ROMs, RAMs, arithmetic circuits, computer-aided design. Laboratory includes hardware design and CAD experiments.

    Required Textbook: John Wakerly, Digital Design: Principles and Practices, 3rd Ed., Pren-tice- Hall, 2000. ISBN 0-13-769191-2.

    References (On reserve at the Media Union Library):

    • J. P. Hayes, Introduction to Digital Logic Design, Addison-Wesley.
    • M. Mano, Digital Design, 2nd Ed., Prentice-Hall.
    • C. H. Roth, Jr., Fundamentals of Logic Design, 3rd Ed.
    • R. H. Katz, Contemporary Logic Design, 1st Ed., Prentice-Hall.

    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 1-hour midterm exams and one 2-hour final exam

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

    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 non-Engineering students.

    Credits: (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 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 non-Engineering students.

    Credits: (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 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 non-Engineering students.

    Credits: (4).

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

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

    Course Goals:

    1. 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.
    2. Learn the C++ language, including many of the object-oriented features.
    3. Learn the basics of writing good code (software engineering), especially code that can easily be read and modified by others, and using the debugger.
    4. Learn how to construct medium-sized programs for various applications, including those that require some basic knowledge of linked lists, searching, and sorting techniques.
    5. Learn the concepts and usage of many different data structures, and learn the benefits each has to offer.
    6. 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 in-class exams and four programming projects.

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

    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 non-Engineering students. May be repeated for credit.

    Mini/Short course

    Credits: (1).

    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 285/EECS 285. A Programming Language or Computer System.

    Section 001 Java. (Drop/Add deadline=January 24).

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

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

    Mini/Short course

    Credits: (2).

    Lab Fee: CAEN lab access fee required for non-Engineering 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

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

    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 non-Engineering students.

    Mini/Short course

    Credits: (2).

    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 370/EECS 370. Introduction to Computer Organization.

    Section 001.

    Instructor(s): Gary Tyson (tyson@umich.edu)

    Prerequisites & Distribution: CS 270 and 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: 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. EECS 270 taught you the basics building blocks of hardware (flip-flops, gates, etc.). EECS 370 is the course where these two approaches meet. You will see in this course 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 (we assume you can do that from EECS 270). 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 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, finite-state machines, and flip-flops. 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 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.

    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.

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

    CMPTRSC 370/EECS 370. Introduction to Computer Organization.

    Section 002.

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

    Prerequisites & Distribution: CS 270 and 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: 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. EECS 270 taught you the basics building blocks of hardware (flip-flops, gates, etc.). EECS 370 is the course where these two approaches meet. You will see in this course 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 (we assume you can do that from EECS 270). 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 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, finite-state machines, and flip-flops. 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 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.

    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.

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

    CMPTRSC 380/EECS 380. Data Structures and Algorithms.

    Section 001.

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

    Prerequisites & Distribution: CS 280 and 203 (or 303). (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: 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 non-traditional (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, big-Oh 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%

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

    CMPTRSC 380/EECS 380. Data Structures and Algorithms.

    Section 005.

    Instructor(s): Igor Markov (imarkov@umich.edu)

    Prerequisites & Distribution: CS 280 and 203 (or 303). (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: 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 non-traditional (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, big-Oh 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%

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

    CMPTRSC 398/EECS 398. Special Topics.

    Section 001 Object Oriented and Advanced Programing. (3 credits).

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

      Hint: Check www.bookpool.com or similar booksellers for prices.

    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 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 non-Engineering students.

    Credits: (3).

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

    Course Homepage: No Homepage Submitted.

    See Mathematics 419.001.

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

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

    Course Synopsis: EECS 470 is an introductory graduate-level course in computer architecture. This course is intended to do two things: to give you a solid, detailed understanding of how computers are designed and implemented, including the central processor and memory and I/O interfaces; and to make you aware of the numerous tradeoffs in design and implementation, their interaction, their realization in both historical and state-of-the-art systems, and trends that will affect them in future systems. We will cover instruction set architectures, pipelining (including basic pipelining, multiple-instruction-per-cycle machines, out-of-order instruction execution, and vector processing), memory systems (including caches and virtual memory), I/O interfaces, operating system issues, and (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%.

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

    CMPTRSC 476/EECS 476. Foundations of Computer Science.

    Section 001 Theory of Computation

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

    Prerequisites & Distribution: CS 280 and 203 (or 303). (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-personal.engin.umich.edu/~hge/476/

    Texts:

    • Sipser, Introduction to the Theory of Computation, PWS Publishers
    • Barwise and Etchemendy: Turing's World, CSLI Publications

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

    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 non-Engineering students.

    Credits: (4).

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

    Course Homepage: http://www.eecs.umich.edu/courses/eecs476/w01/sec4/

    Finite Automata, Regular Operations, Nondeterminism. Regular Expressions. Proofs of non-regularity. Context-Free Grammars. Pushdown Automata. Proofs of non-context-freeness. Background to computability. Turing machines. Variations on Turing Machines. Abstract algorithms. Decidability Halting problem. Undecidability. Reducibility Time complexity. P complexity, NP complexity. NP-completeness. NP-complete problems.

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

    CMPTRSC 477/EECS 477. Introduction to Algorithms.

    Section 001.

    Prerequisites & Distribution: CS 380. (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.

    No Description Provided

    Check Times, Location, and Availability


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

    Section 001.

    Instructor(s): Marios C. Papaefthymiou (marios@umich.edu), Sayan Bhattacharyya (bhattach@umich.edu)

    Prerequisites & Distribution: CS 270 and 203 (or 303), 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: 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 (two-level 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, McGraw-Hill.

  • Both textbooks have been placed on reserve in the Media Union Library.

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

    CMPTRSC 481/EECS 481. Software Engineering.

    Section 001.

    Prerequisites & Distribution: CS 380. (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.

    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 non-Engineering students.

    Credits: (4).

    Lab Fee: CAEN lab access fee required for non-Engineering 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 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. 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.

    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 client-server 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 brute-force; 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

    Supplementary reading (for your entertainment and edification)

    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 C Winsor (don@umich.edu)

    Prerequisites & Distribution: CS 370 and 380. (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/eecs482/

    Course Overview: 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. 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.

    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 client-server 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 brute-force; 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

    Supplementary reading (for your entertainment and edification)

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


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

    Section 001.

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

    Prerequisites & Distribution: CS 380 or IOE 373. (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/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 object-oriented programming and data structures is required.

    Required Text: Database Management Systems (2nd edition) by Raghu Ramakrishnan and Johannes Gehrke, McGraw Hill 1999.

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

    CMPTRSC 486/EECS 486. Object-Oriented Software Development.

    Section 001.

    Prerequisites & Distribution: CS 380. (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.

    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 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/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; 2-D and 3-D coordinate transformations, and their representation as matrices; 3-D viewing and perspective.
    • Geometric Modeling
      Includes the modeling hierarchy, facets, polygons, curves, splines, and solids models (combinatoric solid geometry CSG).
    • Rendering
      Including scan line and ray tracing techniques, camera models, illumination and reflection models for surfaces, shadowing, texture mapping, and anti-aliasing.
    • 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 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.

    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 Top-Down Approach with OpenGL; Edward Angel. Source Code Link: http://thelma.cs.unm.edu/~angel/BOOK/SECOND_EDITION/

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

    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 non-Engineering students.

    Credits: (4).

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

    Course Homepage: http://vail.eecs.umich.edu/syllabus.html

    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 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): Edmund H. Durfee (durfee@umich.edu)

    Prerequisites & Distribution: CS 380. (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://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, Prentice-Hall, 1995.

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

    CMPTRSC 499(500)/EECS 499. Directed Study.

    Section.

    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.

    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 non-Engineering students.

    Credits: (3).

    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 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 non-Engineering students.

    Credits: (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 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 non-Engineering students.

    Credits: (3).

    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 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: 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 graduate-level 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 semester-long 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 top-tier conference.
    • Taking a final exam during the last week of class.

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

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

    Section 001.

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

    Prerequisites & Distribution: CS 380. (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/~qstout/586/index.html

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

    • Gradute students in Computer Science and Engineering: For these students, this class can satisfy the Theory distributional requirements for the MS and PhD degrees, and helps satisfy the 500-level course requirements.
    • Graduate students from other disciplines: For these students, this class can satisfy cognate requirements, and it can satisfy computer science requirements for students in the Scientific Computing program.
    • Undergraduate students: For CSE undergraduates it can satisfy computer-oriented technical elective requirements, and can be used to satisfy theory requirements (though this is not recommended unless you are very good).

    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 pseudo-code, so the computer language you've used is not critical (though if you have only used Fortran it is likely that your background is quite weak).

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

    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, divide-and-conquer, and dynamic programming. We also cover the ways in which one analyzes the efficiency of algorithms, through the use of "generalized O-notation" for worst-case, expected-case, and competitive analysis. We also give techniques for proving that an algorithm is an optimal solution to a problem of course, we first have to define what that means.

    Texts: Corman, Leiserson, and Rivest, Introduction to Algorithms, Garey and Johnson, Computers and Intractability: a Guide to the Theory of NP-Completeness, additional handouts.

    Grading: Based on many rather difficult homework assignments, and class participation. No tests.

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

    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.

    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," Prentice-Hall, 1995.
    • Keshav, S., "An Engineering Approach to Computer Networking," Addison-Wesley, 1997.
    • Kurose and Ross, "Computer Networking: A Top-Down Approach," Addison-Wesley, 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., 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 Topic

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

    Instructor(s): Peter Honeyman (honey@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.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 0-13-869017-0

    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 002 Control of Motion in Animals and Machines. (3 credits).

    Instructor(s): Daniel Koditschek (kod@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: 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.

    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 (3 credits).

    Instructor(s): Lingjie 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 004.

    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


    This page was created at 7:12 PM on Mon, Jan 29, 2001.


    LSA logo

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

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

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