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

Fall '00 Course Guide

Note: You must establish a session on wolverineacccess.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 (Division 353)

This page was created at 3:54 PM on Wed, Dec 13, 2000.

Fall Term, 2000 (September 6 December 22)

Open courses in Computer Science

Wolverine Access Subject listing for CMPTRSC

Take me to the Fall Term '00 Time Schedule for Computer Science.

To see what has been added to or changed in Computer Science this week go to What's New This Week.


The EECS Department offers one introductory programming class intended for both CS concentrators and non-concentrators in the College of LS&A, CS 183, Elementary Programming Concepts. The Department also offers a computer literacy course intended specifically for non-concentrators, CS 181, Introduction to Computer Systems.

What should I take for my first computing course?

CS 181

Fundamental computer skills needed to increase productivity both personally and at the workplace. Use of software packages including word-processors, spreadsheets, world wide web browsers, simple graphics, databases and more. No programming. Usually taken by non CS/CE/EE concentrators whose goal is computer literacy. (Note: CS is Computer Science, CE is Computer Engineering, EE is Electrical Engineering).

Note: does not count for the computing requirement in CE or EE free elective only.

CS 183

Fundamental concepts and skills of programming in a high level language (currently C++). Basic algorithms and data structures. Assumes no prior programming experience. Taken by both CS concentrators and non-concentrators in LS&A whose goal is to learn fundamental programming skills.

Note: does not count for the computing requirement in CE or EE free elective only.

Engineering 101

Fundamental concepts of programming in a high level language (currently C) plus Engineering applications of computing, including MatLab. Assumes no prior programming experience. Replaces the former Engineering 103, 104, 106, 107 courses. Taken by all Engineering students.

Note: This course is counted as non-LS&A credit. (There is a limit of 12 credits in the 120 required for an LS&A degree.)

For those who would like to take two programming courses

If you are not a CS, CE or EE major but are in a concentration where you need to take two programming courses, we currently recommend that you take 183 or 101 and then take the section of EECS/CS 280 which is intended for non-majors. More information about 280 may be found on the departmental web pages (http://www.eecs.umich.edu).

QUESTIONS?

If you are interested in becoming a CS, CE or EE concentrator, contact the EECS Counseling Office at (734) 763-2305, 3415 EECS Building.

If you are an undecided LS&A student, contact the LS&A Academic Advising Center at (734) 764-0332, 1255 Angell Hall.

If you are an undecided Engineering student, contact the College of Engineering Freshman Counseling Office at (734) 647-7106, 1009 Lurie Engineering Center.

Questions about the concentration program in Computer Science should be addressed to:

Undergraduate Counseling Office
EECS Department
3415 EECS
University of Michigan
Ann Arbor, MI 48109-2122
Phone (734) 763-2305
E-mail: csdegree@eecs.umich.edu
Web: http://www.eecs.umich.edu/cse/

Course Homepages for the EECS Department are listed at: http://www.eecs.umich.edu/courses/


Comp. Sci. 181/EECS 181. Introduction to Computer Systems.

Section 001.

Instructor(s): Dan Berwick (dberwick@umich.edu)

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/

Fundamental computer skills needed to increase productivity. Use of software packages and applications including word processors, web browsers, spreadsheets, database systems. Creating a web home page. History of computing, ethics and legal issues. Introduction to basic hardware components. Intended for non CE/CS/EE concentrators whose goal is computer literacy.

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. Some of the options available to you here at the University include:

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

Textbook: Computer Confluence, 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 Dollar Bill Copying, 611 Church St.

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. The staff reserves the right to scale any portion of the final grade, but this will never lower students' scores.

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

Comp. Sci. 183/EECS 183. Elementary Programming Concepts.

Instructor(s): Ann 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

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

EECS/CS 183 is intended for both majors and non-majors in Computer Science, and is not intended for Engineering students. 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++.

In this course you will learn to write programs in the C++ programming language using good style and design. No prior programming knowledge is assumed, however this is not a course in how to usecomputer software such as word processors and world wide web browsers (EECS/CS 181 is such a course). This course is concerned with how to design and write computer software. Six programming projects will be assigned during the term, some of which will require a large time commitment on your part. Many students find the work load in this course to be heavy, especially during the last half of the course. Assignments will begin with simple problems, and the difficulty level and length will increase as the term progresses. The first project will not require you to write a program yourself, but will be a very simple exercise which will familiarize you with our computer system and C++ compiler.

Textbook Readings are from Programming in C++, by Nell Dale, Chip Weems, & Mark Headington, 2nd Edition, Jones & Bartlett, Publishers, 2001.

GRADING AND EXAMS: Final grades will be based on the total points earned on 6 programming projects and 2 exams. You are expected to take both exams at the scheduled times. If a medical or personal emergency is not involved in your missing an exam, you will receive a zero for that exam. If you anticipate an exam in another course which conflicts with our exam time, you must notify the instructor at least two weeks before the exam date. The exam dates are given at the beginning of the term so that you can avoid scheduling job interviews or other commitments on exam days, hence job interviews etc. are not considered valid reasons for missing an exam.

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

Comp. Sci. 203(303)/EECS 203. Discrete Structures.

Section 001.

Instructor(s): Daniel Koditschek (kod@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-personal.engin.umich.edu/~konik/203/

Introduction to the foundations of discrete mathematics: logic; sets; functions; methods of proof; methods of counting. Introduction to the foundations of computational representation: relations, graphs, matrices. Application to problems in computer science and engineering.

Text: Discrete Mathematics and its Appllications by Kenneth H. Rosen

Topics:

  • Logic
  • Predicate Logic and Quantifiers
  • Sets
  • Set Operations
  • Functions
  • Sequences and Summations
  • Growth of Functions
  • Methods of Proof
  • Mathematical Induction.
  • Recursive Definitions
  • Recursive Algorithms
  • Program Correctness
  • Basics of Counting
  • The Pigeonhole Principle
  • Permutations and Combinations
  • Discrete Probability
  • Probability Theory
  • Generalized Permutations and Combinations

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

Comp. Sci. 203(303)/EECS 203. Discrete Structures.

Section 005.

Instructor(s): Mark Brehob (brehob@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-5/

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

Required Reading

  1. Kenneth H. Rosen. Discrete Mathematics and Its Applications, 4th Edition, McGraw-Hill. (Web site)
  2. Handouts
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

Comp. Sci. 210/EECS 210. Electrical Engineering I.

Section 001.

Instructor(s): Alfred Hero (hero@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/eecs210/

Introductory electrical engineering topics: audio signals and their processing; basics of electricity; elementary circuit design and analysis. Frequency content of signals, Fourier series, filtering. Analysis of resistive circuits. Steady-state response of circuits of resistors, capacitors, inductors and operational amplifiers to sinusoidal signals (frequency response). Laboratory experience with electrical signals and circuits.

Text: Electric Circuits, 6th edition (Revised printing) by J.W. Nilsson and S.A. Riedel

Also Required:

  1. EECS 210 Electrical Engineering I Lab Manual and Study Guide.
  2. EECS 210 Additional Course Notes.

Purchase these from The Michigan Union Bookstore, 530 South State St., or Grade A Notes at 1100 South University (741-9669).

Lab lectures and lab sessions will occur in alternate weeks beginning with a lab lecture during your lab period on the week of Sept. 13. Students must register for a specific lab section, and attendance is required at its specific session. See the Laboratory Manual for lab policies, especially those on page 2, "Any student missing a lab (not present in the lab) with no proper or reasonable excuse will get a "0" grade on that specific lab and will have his/her letter grade reduced by a full letter (for example, A- to B-). Any student missing two labs with no proper excuse will automatically get a failing grade (F) on the entire course.

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

Comp. Sci. 210/EECS 210. Electrical Engineering I.

Section 002.

Instructor(s): Wayne Stark (stark@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/eecs210/

Introductory electrical engineering topics: audio signals and their processing; basics of electricity; elementary circuit design and analysis. Frequency content of signals, Fourier series, filtering. Analysis of resistive circuits. Steady-state response of circuits of resistors, capacitors, inductors and operational amplifiers to sinusoidal signals (frequency response). Laboratory experience with electrical signals and circuits.

Text: Electric Circuits, 6th edition (Revised printing) by J.W. Nilsson and S.A. Riedel

Also Required:

  1. EECS 210 Electrical Engineering I Lab Manual and Study Guide.
  2. EECS 210 Additional Course Notes.

Purchase these from The Michigan Union Bookstore, 530 South State St., or Grade A Notes at 1100 South University (741-9669).

Lab lectures and lab sessions will occur in alternate weeks beginning with a lab lecture during your lab period on the week of Sept. 13. Students must register for a specific lab section, and attendance is required at its specific session. See the Laboratory Manual for lab policies, especially those on page 2, "Any student missing a lab (not present in the lab) with no proper or reasonable excuse will get a "0" grade on that specific lab and will have his/her letter grade reduced by a full letter (for example, A- to B-). Any student missing two labs with no proper excuse will automatically get a failing grade (F) on the entire course.

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

Comp. Sci. 211/EECS 211. Electrical Engineering II.

Instructor(s): Gabriel Rebeiz (rebeiz@umich.edu)

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/EECS211_F00.html

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, Prentic 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: No Data Given.

Comp. Sci. 270/EECS 270. Introduction to Logic Design.

Section 001.

Instructor(s): Janice Jenkins (jenkins@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/

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:

  • Six homework problem sets
  • Seven laboratory experiments
  • Two 1-hour mid-term exams and one 2-hour final exam

The two 1-hour mid-term exams are scheduled for 7:30-8:30 PM on Friday October 13, and Friday November 17.

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

Comp. Sci. 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/~mazum/eecs270/

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:

  • Six homework problem sets
  • Seven laboratory experiments
  • Two 1-hour mid-term exams and one 2-hour final exam

The two 1-hour mid-term exams are scheduled for 7:30-8:30 PM on Friday October 13, and Friday November 17.

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

Comp. Sci. 280/EECS 280. Programming and Introductory Data Structures.

Section 001 is intended for non-concentrators

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

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: http://www.eecs.umich.edu/courses/eecs280/

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

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

Comp. Sci. 280/EECS 280. Programming and Introductory Data Structures.

Section 006 Section 006 is intended for concentrators.

Instructor(s): Jim Eng (jimeng@umich.edu) , Charles Severance (csev@umich.edu)

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: http://www.engin.umich.edu/class/eecs280/06/

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

Course Overiew The purpose of this course is to prepare CS and CE majors for the rest of their undergraduate courses. All of the courses which follow this course will simply assume that all students are capable of writing a 3000 line program in a week or so. Students coming into this course will have diverse skill levels. Some students will find the first few weeks of the course to be review while others will feel that the pace is impossible to keep up with.

Pre-Requisites The prerequisite for the course is EECS 183, EECS 100, ENGIN 101, or equivalent. The goal is for students to have some familiarity with programming before taking this class. If a student is not already familiar with computers and programming concepts, they should take one of the above courses. A strong high school programming class should also be sufficient. You should be a confident programmer capable of writing 200 line programs given a written specification.

Textbook: Problem Solving with C++, Walter Savitch, Addison Wesley, ISBN 0-201-35749-6. The book is avialable in the bookstores with a student edition of VIsual C++ which is not required for the course. You can purchase the book on-line without the CD at a lower price but then you will pay shipping.

The exams are scheduled as follows:
Mid Term I Friday September 29, 2000
Mid Term II Friday November 3, 2000
Final Exam Friday December 22, 2000

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

Comp. Sci. 285/EECS 285. A Programming Language or Computer System.

Section 001 Java

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

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

Credits: (2).

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

Course Homepage: http://www.eecs.umich.edu/~bartlett/f00java.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: No Data Given.

Comp. Sci. 285/EECS 285. A Programming Language or Computer System.

Section 002.

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

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

Credits: (2).

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

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

A course covering a complex computer system or programming language. Programming problems are assigned. Specific languages or systems offered are announced in advance.

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

Comp. Sci. 370/EECS 370. Introduction to Computer Organization.

Section 001.

Instructor(s): Peter Chen (pmchen@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/~pmchen/eecs370/

Computer organization will be presented as a hierarchy of virtual machines representing the different abstractions from which computers can be viewed. These include the logic level, microprogramming level, and assembly language level. Lab experiments will explore the design of a microprogrammed computer.

This course is intended to give you a basic understanding of how computers execute programs. Under-standing 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 func-tional 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 simu-lators (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 Inter-face (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 commit-ment on your part. Many students find the work load in this course to be heavy.

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%
Midterm Exam 20% (October 20, in class)
Final Exam 40% (December 15, 1:30-3:30)

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

Comp. Sci. 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/~pmchen/eecs370/

Computer organization will be presented as a hierarchy of virtual machines representing the different abstractions from which computers can be viewed. These include the logic level, microprogramming level, and assembly language level. Lab experiments will explore the design of a microprogrammed computer.

This course is intended to give you a basic understanding of how computers execute programs. Under-standing 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 func-tional 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 simu-lators (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 Inter-face (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 commit-ment on your part. Many students find the work load in this course to be heavy.

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%
Midterm Exam 20% (October 20, in class)
Final Exam 40% (December 15, 1:30-3:30)

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

Comp. Sci. 380/EECS 380. Data Structures and Algorithms.

Section 001.

Instructor(s): William Birmingham (wpb@umich.edu)

Prerequisites & Distribution: CS 280 and CS 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/

Abstract data types. Recurrence relations and recursions. Advanced data structures: sparse matrices, generalized lists, strings. Tree-searching algorithms, graph algorithms, general searching and sorting. Dynamic storage management. Analysis of algorithms and O-notation. Complexity. Top-down program development: design, implementation, testing, modularity. Several programming assignments.

Course Objectives: By the end of the course, you will become familiar with various techniques for estimating program performance, organizing data to allow efficient searching and sorting, and methods for developing efficient algorithms. You will also get critical foundational material for courses on such things as operating systems, compilers, networks, database, artificial intelligence, computer architecture and advanced algorithm design and analysis.

While programming plays an important role in this course, this is not a programming course. Rather, our emphasis is on the design and analysis of data structures and algorithms.

Course Materials: Course textbook: Data Structures, Algorithms, and Applications in C++, Sartjai Sahni. McGraw-Hill, 1998.

Course Requirements Homework Assignments From time to time, we will distribute homework assignments. These assignments are intended to help you master the course material, prepare for exams, and become familiar with topics not covered in class, but which we consider nonetheless important. We will post answers to these assignments on the course web page. The assignments will not be graded. Programming Projects There will be four programming assignments during the term. The assignments will cover material from lecture and discussion. The assignment details will be given in handouts, along with the assignment due date. Remember to turn your work in on time, otherwise you will receive a substantial reduction in your score, or the assignment may not be accepted at all.

Grading.

The tentative grade breakdown is: Programming Assignments (4) 55%, Exams (3) 45%

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

Comp. Sci. 380/EECS 380. Data Structures and Algorithms.

Section 005.

Instructor(s): Martha Pollack

Prerequisites & Distribution: CS 280 and CS 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/

Abstract data types. Recurrence relations and recursions. Advanced data structures: sparse matrices, generalized lists, strings. Tree-searching algorithms, graph algorithms, general searching and sorting. Dynamic storage management. Analysis of algorithms and O-notation. Complexity. Top-down program development: design, implementation, testing, modularity. Several programming assignments.

Course Objectives: By the end of the course, you will become familiar with various techniques for estimating program performance, organizing data to allow efficient searching and sorting, and methods for developing efficient algorithms. You will also get critical foundational material for courses on such things as operating systems, compilers, networks, database, artificial intelligence, computer architecture and advanced algorithm design and analysis.

While programming plays an important role in this course, this is not a programming course. Rather, our emphasis is on the design and analysis of data structures and algorithms.

Course Materials: Course textbook: Data Structures, Algorithms, and Applications in C++, Sartjai Sahni. McGraw-Hill, 1998.

Course Requirements Homework Assignments From time to time, we will distribute homework assignments. These assignments are intended to help you master the course material, prepare for exams, and become familiar with topics not covered in class, but which we consider nonetheless important. We will post answers to these assignments on the course web page. The assignments will not be graded. Programming Projects There will be four programming assignments during the term. The assignments will cover material from lecture and discussion. The assignment details will be given in handouts, along with the assignment due date. Remember to turn your work in on time, otherwise you will receive a substantial reduction in your score, or the assignment may not be accepted at all.

Grading.

The tentative grade breakdown is: Programming Assignments (4) 55%, Exams (3) 45%

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

Comp. Sci. 398/EECS 398. Special Topics.

Instructor(s):

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: No Homepage Submitted.

Topics of current interest selected by the faculty. Lecture, seminar, or laboratory.

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

CMPTRSC 400/EECS 400/Math. 419. Linear Spaces and Matrix Theory.

Section 001, 003.

Instructor(s): Alexandre I Barvinok (barvinok@umich.edu)

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: http://www.math.lsa.umich.edu/~barvinok/m419.html

See Mathematics 419.001.

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

CMPTRSC 400/EECS 400/Math. 419. Linear Spaces and Matrix Theory.

Section 002, 004.

Instructor(s): J Tobias Stafford (jts@umich.edu)

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

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

CMPTRSC 400/EECS 400/Math. 419. Linear Spaces and Matrix Theory.

Section 005, 006.

Instructor(s): Bruce A Kleiner (bkleiner@umich.edu)

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: http://www.math.lsa.umich.edu/~bkleiner/syllabus.html

See Mathematics 419.005.

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

Comp. Sci. 476/EECS 476. Foundations of Computer Science.

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

Prerequisites & Distribution: CS 280 and 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/~yjin/eecs476/

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

  • Review of discrete math
  • Discrete math; introduction to finite automata
  • Regular lanuages, NDFA, and DFA
  • State equivalence and minimization
  • Non-pumping lemma, proofs of nonregularity
  • Context-free grammars
  • Pushdown automata; closure properties
  • Pumping Lemma, Non-CF languages
  • Algorithms for CFG
  • More algorithms
  • Turing machines
  • What Turing machines do
  • What TMs do NOT and CANNOT do.
  • Undecidable problems; reducibility

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: No Data Given.

Comp. Sci. 477/EECS 477. Introduction to Algorithms.

Instructor(s): John Meyer (jfm@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://www.eecs.umich.edu/courses/eecs477/

Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance. Paradigms for algorithm design: divide-and-conquer, greedy methods, graph search techniques, dynamic programming. Design of efficient data structures and analysis of the running time and space requirements of algorithms in the worst and average cases.

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

Comp. Sci. 478/EECS 478. Logic Circuit Synthesis and Optimization.

Section 001.

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

Prerequisites & Distribution: CS 270 and CS 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/

This course covers digital logic synthesis and its underlying theory from an advanced perspective. Topics include basic switching and sequential systems and high-level synthesis. Emphasis will be placed on algorithmic techniques that are currently used in the design of integrated systems with millions of transistors.

Assignments, Exams, and Grades

  • Five or six homework assignments (30% of final grade)
  • Midterm exam (30%)
  • Final exam (40%)

Textbook:

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

Comp. Sci. 481/EECS 481. Software Engineering.

Instructor(s): John Sayler (jhsayler@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://www.eecs.umich.edu/courses/eecs481/

Pragmatic aspects of the production of software systems, dealing with structuring principles, design methodologies and informal analysis. Emphasis is given to development of large, complex software systems. A term project is usually required.

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

Comp. Sci. 482/EECS 482. Introduction to Operating Systems.

Section 001.

Instructor(s): Donald 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/~bnoble/482/

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 hard-ware 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 se-curity. In order to more fully understand operating systems, you will implement several projects that expose you to much of the core functionality in 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, or have equivalent knowl-edge of computer architecture, data structures, and C/C++ programming. Students are expected to have had exten-sive 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 over-whelming number of students interested in this course, we will strictly enforce the prerequisites.

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 work load in this course to be heavy. However, we expect that effort spent on pro-gramming 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. The second exam will only cover material from the second half of the course; it will not be comprehensive. There will be no final exam.

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 fo-lows:

  • Projects 40%
  • First Exam 30% (October 26)
  • Second Exam 30% (December 12)

Reading List: This course has one required text: Operating Systems Concepts, by Silberschatz and Galvin. There will also be a number of required papers and handouts; these will be available on the course web page.

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

Comp. Sci. 482/EECS 482. Introduction to Operating Systems.

Section 006.

Instructor(s): Brian Noble (bnoble@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/~bnoble/482/

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 hard-ware 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 se-curity. In order to more fully understand operating systems, you will implement several projects that expose you to much of the core functionality in 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, or have equivalent knowl-edge of computer architecture, data structures, and C/C++ programming. Students are expected to have had exten-sive 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 over-whelming number of students interested in this course, we will strictly enforce the prerequisites.

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 work load in this course to be heavy. However, we expect that effort spent on pro-gramming 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. The second exam will only cover material from the second half of the course; it will not be comprehensive. There will be no final exam.

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 fo-lows:

  • Projects 40%
  • First Exam 30% (October 26)
  • Second Exam 30% (December 12)

Reading List: This course has one required text: Operating Systems Concepts, by Silberschatz and Galvin. There will also be a number of required papers and handouts; these will be available on the course web page.

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

Comp. Sci. 483/EECS 483. Compiler Construction.

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

Prerequisites & Distribution: CS 380 and 476. (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/~tnm/483/483.htm

Introduction to compiling techniques including parsing algorithms, semantic processing, and optimization. Students implement a compiler for a substantial programming language using a compiler generating system.

This is a fair description of what we will be covering, but the subject of compiler construction is a large one, and time limitations mean that we will not cover everything mentioned in the description in great depth. The goal will be to introduce the basics of compiler construction with an emphasis on using tools to construct a simple compiler.

Homework: Homework will be set on a regular basis. It will not be graded. The solutions will be discussed in class. The homework material will be typical of the questions that will be on the exams.

Exams: There will be two written exams, but no final.

Projects: The main grade will come from five projects that will require you to write parts of a compiler.

Books: There are two books that you should purchase. The first one is a classic, which is often referred to as the dragon or dinosaur book (I think it's a dragon on the cover).

  • Title: Compilers: Principles, Techniques, and Tools Authors: Aho, Sethi, and Ullman. Publisher: Addison-Wesley Pub Co ISBN: 0201100886
  • The second book is: Title: Lex & Yacc Authors: John R. Levine, Tony Mason, Doug Brown. Publisher: O'Reilly & Associates ISBN: 1565920007

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

Comp. Sci. 484/EECS 484/IOE 484. Database Management Systems.

Instructor(s): Jignesh Patel (jignesh@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: http://www.eecs.umich.edu/courses/eecs484/

EECS 484 provides basic introduction to relational database management systems (DBMSs). This course is designed to provide you with both an external and an internal view of relational DBMSs. Topics related to the external view will cover concepts that will allow you to use a relational DBMS. Topics related to the internal view will allow you to better understand how a relational DBMS works, making you more sophisticated (and perhaps higher paid) database users/administrators. The course has a group course project in which you will build a simple, but fairly complete, single-user relational database engine. Note, in this course you will not learn the details of how to use any specific commercial database system, or the intricacies of SQL programming. This course is designed to cover the fundamental database concepts and the implementation techniques that are used in relational database engines. Using the course project, you will actually build a few key components of a database engine. If you are interested in the details of SQL programming, or the operation of a specific commercial database system, you will be able to pick this up very easily after you have taken this course.

Prerequisites EECS 380: Data Structures and Algorithms or equivalent. WARNING: The course project is programming intensive and requires that you be comfortable programming in C++. For most of you, the course project will be the largest and most complex software project that you have built so far. If you are not comfortable programming in C++, you should take a lower-level course to build these skills, and take 484 in a later semester.

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: No Data Given.

Comp. Sci. 486/EECS 486. Object-Oriented Software Development.

Section 001.

Instructor(s): David Chesney (chesneyd@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: No Homepage Submitted.

Object-oriented programming concepts such as data and program abstraction, encapsulation, polymorphism, single and multiple inheritance, and reusable objects. Techniques for object-oriented system decomposition and class design. Study and use of class libraries and application frameworks. Programming projects in an object-oriented language currently standard in industry.

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

Comp. Sci. 487/EECS 487. Interactive Computer Graphics.

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

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/f00/index.html

Computer graphics hardware, line drawing, rasterization, anti-aliasing, graphical user interface (GUI), affine geometry, projective geometry, geometric transformation, polygons, curves, splines, solid models, lighting and shading, image rendering, ray tracing, radiosity, hidden surface removal, texture mapping, animation, virtual reality, and scientific visualization.

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

Comp. Sci. 489/EECS 489. Computer Networks.

Section 001.

Instructor(s): Sugih Jamin (sugih@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://crib.eecs.umich.edu/

Protocols and architectures of computer networks. Topics include client-server computing, socket programming, naming and addressing, media access protocols, routing and transport protocols, flow and congestion control, and other application-specific protocols. Emphasis is placed on understanding protocol design principles. Programming problems to explore design choices and actual implementation issues assigned.

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

Comp. Sci. 492/EECS 492. Introduction to Artificial Intelligence.

Instructor(s): Michael Wellman (wellman@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: https://coursetools.ummu.umich.edu/2000/fall/engin/eecs/492/001.nsf

Fundamental concepts of AI, organized around the task of building computational agents. Core topics include search, logic, representation and reasoning, automated planning, decision making under uncertainty, and machine learning.

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

Comp. Sci. 493/EECS 493. User Interface Development.

Section 001.

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

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

Credits: (4).

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

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

Usefulness and usability of software is becoming more critical, as we see hard-to-use e-commerce sites frustrating millions, and a brilliant open-source OS floundering under the burden of misguided GUIs that do not solve the fundamental usability problems. This course is intended for advanced undergraduates and graduate students who plan a career in software development in domains where the usefulness and usability of the software is a critical design goal. The ideal student is a good programmer who has done some significant application programming and is now ready to focus on getting a good design of the software and its interface rather than simply getting code to work.

The emphasis of the course will be on learning and applying modern concepts & techniques for user interface design and evaluation. Because this is the first offering under the new description and credit hours, the coverage of interface implementation programming will depend on the background and interests of the enrolled students. Because no TA will be available, the enrollment will be limited and will include only students who have an appropriate background and who will clearly benefit from the course. Thus, instructor's permission is required to register.

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

Comp. Sci. 494/EECS 494. Computer Game Design and Development.

Section 001.

Instructor(s): John Laird (laird@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://ftp.eecs.umich.edu/~soar/Classes/494/

In this course we will study the technology, science, and art involved in the creation of computer games. The course will emphasize hands-on development of games. We will study a variety of software technologies relevant to games including programming languages, scripting languages, operating systems, file systems, networks, simulation engines, and multi-media design systems. We will also study some of the underlying scientific concepts from computer science and related fields including: simulation and modeling, graphics, artificial intelligence, real-time processing, and game theory. Finally, we will study the art and design principles for developing useable and engaging games including: software engineering, human computer interaction, thematic structure, graphic design, choreography, music and sound effects, and game aesthetics.

The course will include visiting lectures and a variety of group projects. The group projects will involve system implementation, but emphasize design and use of existing tools. The final group project will require the students to go through all phases of system conceptualization, specification, design, implementation, and evaluation.

Required texts: Tricks of the Windows Game Programming Gurus, Andre LaMothe, SAMS publishing. Game Architecture and Design, Rollings & Morris, Coriolis. Coursepack Available from Dollar Bill Copying ($61.28)

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

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


Comp. Sci. 543/EECS 543. Knowledge-Based Systems.

Instructor(s): Edmund Durfee (durfee@umich.edu)

Prerequisites & Distribution: CS 380 and permission of instructor. (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://ai.eecs.umich.edu/people/durfee/courses/543fall00/

Knowledge-based systems (also called just knowledge systems) are sophisticated AI programs that solve complex problems. These programs have found considerable use in industry, and are finding exciting new applications in cyberspace (e.g., as intelligent agents). Knowledge-based systems are particularly suited to these kinds of applications because they help users define and modify knowledge for tasks in a way that users are comfortable with, and then use this knowledge based on complex inference techniques.

The goal of this class is provide students with an understanding of the principles and system-building experience needed to create a knowledge system by introducing the student to programming languages and techniques that promote a knowledge-based, or declarative, approach to software development. Although a rigorous characterization of what this means is elusive (though we will attempt to accomplish this in the course), what it amounts to practically is emphasis on programming constructs that facilitate:

  • building levels of abstraction and interpretation
  • modular specification of functionality (e.g., object orientation)
  • representations of propositions and inference (e.g., logic).

Historically, researchers in the field of Artificial Intelligence have identified these properties as important for development of "intelligent" (whatever that means) programs, and thus have developed languages embodying them. We will explore this "knowledged-based" programming methodology through substantial exercises in three "AI" languages:

  1. Common Lisp (including its object-oriented extension, CLOS)
  2. Prolog
  3. SOAR (a problem solving architecture based on production rules)

Successful students will complete the course with a working knowledge in each of these languages, and more importantly, with a broader perspective on programming itself.

Textbooks:

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

Comp. Sci. 570/EECS 570. Parallel Computer Architecture.

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

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

Credits: (3).

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

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

Pipelining and operation overlapping, SIMD and MIMD architectures, numeric and non-numeric applications, VLSI, WSI architectures for parallel computing, performance evaluation. Case studies and term projects.

Course Objectives:

  • understand the fundamental issues of parallel computation (communication, synchronization, naming, etc.)
  • understand the various ways in which hardware and software can interact to address these issues in parallel systems
  • understand the basic cost, performance, and programmability tradeoffs involved in these interactions

Prerequisites: EECS 470 (Computer Architecture). In particular, you should feel comfortable with caches, virtual memory, dataflow concepts, and instruction-level parallelism.

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

CMPTRSC 571/EECS 571. Principles of Real-Time Computing.

Section 001.

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

Prerequisites & Distribution: CS 470 and CS 482. (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/eecs571/

Principles of real-time computing based on high performance, ultra reliability, and environmental interface. Architectures, algorithms, operating systems, and applications that deal with time as the most important resource. Real-time scheduling, communications, and performance evaluation.

Textbook: C. M. Krishna and Kang G. Shin, Real-Time Systems, McGraw Hill 97. Errata are maintained at http://www.ecs.umass.edu/ece/gradfac/krishna.html

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

Comp. Sci. 574/EECS 574. Theoretical Computer Science I.

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

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

Credits: (4).

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

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

Fundamentals of the theory of computation and complexity theory. Computability, undecidability, and logic. Relations between complexity classes, NP-completeness, P-completeness, and randomized computation. Applications in selected areas such as cryptography, logic programming, theorem proving, approximation of optimization problems, or parallel computing.

Text: Theory of Computational Complexity, Ding-Zhu Du and Ker-I Ko, Wiley.

Homework is due in class one week after it is assigned. No late homework will be accepted. I will pick one or two problems from each assignment to grade. Your homework score will be based on the best 6 scores (out of 8) throughout the semester. You may work with others in the class on homework and consult any source you like, but the answers you turn in must be written (or typed) in your own hand. There will be three take-home exams handed out in class Oct. 6, Nov. 3, and Dec. 11. They will be due one week after they are handed out. You may use the textbook and course notes on these exams, but no other source. In particular, there may be no collaboration between students on the take-home exams.

Grade: Exam 1 28%; Exam 2 28%; Exam 3 28%; Homework (best 6 of 8) 16%.

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

Comp. Sci. 579/EECS 579. Digital System Testing.

Section 001.

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

Prerequisites & Distribution: CS 478. (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/eecs579/index.html

This course examines in depth the theory and practice of fault analysis, test generation, and design for testability for digital integrated circuits and systems. The topics to be covered include: circuit and system modeling; fault sources and types; the single stuck-line fault model; fault simulation methods; test generation algorithms for combinational and sequential circuits, including PODEM; testability measures; design-for- testability techniques; scan design; test compression methods; logic-level diagnosis; self-checking circuits; built-in self- testing (BIST); system-level diagnosis; processor and memory testing; VLSI and system-on-a-chip (SOC) testing; design verification and its relation to physical fault testing. A term paper or small experimental/research project will be part of the course. Current research issues, including topics suitable for M.S. or Ph.D. thesis research, will be discussed.

Text: Digital System Testing and Testable Design, by M. Abramovici, M. A. Breuer and A. D. Friedman, New York, IEEE Press, 1990. (Required text). Additional reference material will be placed on reserve in the Media Union (Engineering) Library.

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

Comp. Sci. 583/EECS 583. Programming Languages.

Section.

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

Prerequisites & Distribution: CS 476 and CS 483. CS 482 or CS 489 are recommended. (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/~tyson/class/583/index.html

No Description Provided

Check Times, Location, and Availability


Comp. Sci. 584/EECS 584. Advanced Database Systems.

Section 001.

Instructor(s): H.V. Jagadish (jag@umich.edu)

Prerequisites & Distribution: CS 484. (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/~jag/eecs584/

Survey of advanced topics in database systems. Distributed databases, query processing, transaction processing. Effects of data models: object-oriented and deductive databases; architectures: main-memory and parallel repositories; distributed organizations: data management for emerging areas: Internet applications, OLAP, data mining. Case studies of existing systems.

This is an advanced database course that will give you a good understanding of the pieces of a database system and what is involved in building one. I will also try to give you a feeling for the role of databases in today's computing infrastructure and how this has evolved. This is NOT a course on how to use databases, though you will arguably be a better user if you have an understanding of what is going on "under the hood". Also, this is NOT a course on XML, even though XML and the inernet will be mentioned frequently.

2 midterm exams. Both in-class. No make-ups for missed midterm exams. No final exam. Term Project: A course project is required.

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

Comp. Sci. 595/EECS 595/Ling. 541. Natural Language Processing.

Section 001.

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

Prerequisites & Distribution: 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/~rthomaso/cl/cl-course.html

See Linguistics 541.001.

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

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

Instructor(s):

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

Credits: (1-4).

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

Course Homepage: No Homepage Submitted.

Topics of current interest in electrical engineering and computer science.

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

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

Section 001.

Instructor(s): Demos Teneketzis (teneket@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


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

Section 002 Web Technologies. (credits?) Prereqs: CS 482 or 484.

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

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

Credits: (1-4).

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

Course Homepage: http://www.eecs.umich.edu/~aprakash/585/info.html

Provides an overview of the current work on web-related infrastructure and applications.

Topics will include the following:

  • HTTP protocol performance issues; client architecture; web server architecture
  • web proxies: Security and performance issues, web caching, data distillation to support mobile web clients
  • scalability issues in web servers
  • security: cookies, certificates, secure socket layer, secure http, authentication, anonymity, firewalls, safe-guarding web sites against malicious attacks
  • XML, server-side technologies such as servlets, JSP, ASP, database/web integration.
  • design of web search engines and information filtering/classification
  • electronic commerce-related topics
  • virtual communities

Grading: This will be a interactive, discussion-oriented class, with both lectures and discussions. The goal is to find out about cutting-edge technologies related to the web and share them with the class. Grading will be based on short quizzes; homeworks; class presentations of assigned readings and project work; and a term project.

For the term project, you can work alone or in small groups. A project write-up and and in-class presentation on the project is required.

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

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

Section 003 Control of Motion in Animals and Machines. (Credits ?).

Instructor(s): Dan 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: No Homepage Submitted.

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

Pre-requisites: 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.

Page


This page was created at 3:55 PM on Wed, Dec 13, 2000.


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