Fall '99 Course Guide

Courses in Computer Science (Division 353)

Fall Term, 1999 (September 8 December 22, 1999)

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


Introduction to Computing Courses CS 100 is an intro class intended for students who plan to concentrate in Computer Science, Computer Engineering, or Electrical Engineering. It is not a class for students who are looking for a good general introduction to computing.

Computer Science does offer two classes intended for non-concentrators: CS 181, Introduction to Computer Systems and CS 183, Elementary Programming Concepts. These classes are much more appropriate for entering LS&A students who plan on concentrating in areas other than Computer Science.

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, web browsers, databases, and more. Not programming. Usually taken by non CE/CS/EE concentrators whose goal is computer literacy. (Note: CE is Computer Engineering, CS is Computer Science, 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. Usually taken by non CE/CS/EE 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. Usually taken by non CE/CS/EE concentrators in Engineering whose goal is to learn fundamental skills in programming and computing for engineering.

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

CS 100

A foundation course in Computer Science & Engineering. First course for those who intend to major in CE, CS, or EE. Fundamentals of computer hardware (about 50% of the course), software and theory. Programming is currently done in machine language, assembly language, and C. Assumes no prior programming experience. Usually taken by students who intend to major in CE/CS/EE, or non-concentrators who intend to pursue a substantial amount of course work in CE/CS/EE. Those who want to study computer hardware and software in depth. If you take CS 183 or Engineering 101 and then decide later that you want to be a CE, CS, or EE major, you can take a bridge course (see below) to pick up the hardware half of CS 100 for one credit; you do not have to take all of CS 100. A CAEN fee may be required for non- Engineering students.

Special note about CS 280 & 270 and those who need 2 programming courses

If you already know C or C++ (the equivalent of 183 or 101 above), but you have not taken CS 100, and you want to take 280 and/or 270, you may take the CS 100 "bridge" course and then take 280 or 270. For Fall 1999 the bridge course is listed as CS 284, section 001. Note that the section number of the bridge course may change from term to term. Check the department web page for current semester course information (http://www.eecs.umich.edu).

If you are not a CE or CS major but are in a concentration where you need to take two "programming" courses, we currently recommend that you take 183 or 101 and the bridge course, then take 280.

QUESTIONS?

If you are interested in becoming a CE or EE major, contact the EECS Counseling Office at 763-2305, 3415 EECS Building.

If you are interested in becoming a CS major, contact the LS&A Counseling Office at 764-0332, 1255 Angell Hall.

If you are an undecided Engineering student, contact the College of Engineering Freshman Counseling Office at 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
(734) 763-2305
electronic mail: csdegree@eecs.umich.edu
web: http://www.eecs.umich.edu/cse.


Comp. Sci. 100/EECS 100. Introduction to Computing Systems.

Instructor(s): Michael Wellman (wellman@umich.edu) , Ann Ford (arford@umich.edu)

Prerequisites & Distribution: Intended for concentrators in computer science, computer engineering, and electrical engineering. (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/eecs100/

COURSE OVERVIEW

This course is an in-depth introduction to the fundamental hardware and software underpinnings of computer science and computer engineering. It is the first computing course for all those intending to be CE/CS/EE majors. We assume that you are enrolled because you want a thorough introduction to the field, whether you plan to major in CE/CS/EE or not. This course is a prerequisite to the first software course for majors (EECS/CS 280) and the first hardware course for majors (EECS/CS 270).

The objective of EECS 100 is to remove much of the mystery of how computers work and to teach you enough programming methodology to enable you to get the computer to do some useful work for you. To this end, we will discuss how a computer works at the machine organization level, including how to program the computer in its own, built-in language, machine language. We will move on to assembly language, and then to the high-level programming language C. We expect you to come out of this course not only knowing some things about a computer's hardware and software, but how these two essential aspects of computing are related.

Note that EECS 100 is not intended to be a basic programming skills course (like EECS/CS 183 or ENGIN 101) or a computer literacy course (like EECS/CS 181). For more information on the other 100-level computing courses offered at the UM, and a discussion that will help you decide which course is most appropriate for you, please read the guide available at http://www.eecs.umich.edu/eecs/undergraduate/firstcourse.pdf

The major topics covered in EECS/CS 100 include the following:

The course assignments include homework problem sets, programming projects, two midterm exams and a final exam. This is therefore not a course for the faint of heart. For the programming projects you will use the LC-2 Simulator software made available as part of this course, and the C compiler gcc, available at all UM computing facilities.

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

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

Instructor(s): Elaine Cousins (elainec@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 majors whose goal is computer literacy.

Course Pack: The course pack for CS181 is designed to provide you with resource material for your laboratory section and two reading assignments. Consult it while working on your projects. The course pack is available at Dollar Bill Copying, 611 Church St.

Textbook: Computer Confluence, 3rd Edition, Beekman, George and Shelley Langman. Benjamin Cummings Publishing Company, Inc. The 3rd edition includes a CDROM and a supplementary booklet on HTML. You will need both the CD and the HTML booklet.

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

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

Instructor(s): Soloway

Prerequisites & Distribution: This course is not intended for computer science, electrical engineering, or computer engineering concentrators. Credit is granted for only one course among CS 183, Engin. 103, and Engin. 104. (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.

Fundamental concepts and skills of programming in a high-level language. Flow of control: selection, iterations, 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.

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

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

Section 001.

Instructor(s): Alfred Hero

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

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

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

Section 002.

Instructor(s): Kim Winick

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

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

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

Instructor(s): Fred Terry

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/~fredty/211F99/Main211.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.

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

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

Section 001.

Instructor(s): Karem Sakallah

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/

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

In addition, the course is a prerequisite for:

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

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

Section 002.

Instructor(s): David Anderson

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/

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

In addition, the course is a prerequisite for:

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

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

Section 001.

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

Prerequisites & Distribution: Math. 115 and CS 100. Two credits granted to those who have completed CS 283. (4). (MSA). (BS). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

Techniques of 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 Textbooks

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.
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: 1

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

Section 007.

Instructor(s): Andrew Morgan

Prerequisites & Distribution: Math. 115 and CS 100. Two credits granted to those who have completed CS 283. (4). (MSA). (BS). CAEN lab access fee required for non-Engineering students.

Credits: (4).

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

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

Techniques of 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 Textbooks

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.
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: 1

Comp. Sci. 284/EECS 284. Introduction to a Programming Language or System.

Section 001 Hardware Bridge Course. Class ends October 28 (Drop/Add deadline=September 28).

Instructor(s): Shahin

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.

No Description Provided.

Check Times, Location, and Availability


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

Section 001, 002 Java. (Drop/Add deadline=September 28).

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

Prerequisites & Distribution: (2). (Excl). 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/f99java.html

Programming problems will be assigned.

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

Comp. Sci. 303/EECS 303. Discrete Structures.

Section 001.

Instructor(s): Václav Rajlich

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

Most of Computer Science uses discrete mathematics as its fundamental basis. So you can forget your calculus and trigonometry and yet be a very successful computer scientist, as long as you ace this course!! The aim in this course is to become familiar with the fundamental concepts of set theory, functions, relations, logic, induction, recursion, predicate calculus, graph theory, combinatorics, boolean algebra, and probability theory. Also, we shall study their application to several areas within computer science. This course constitutes 4 credits.

Discrete Structures is a mathematically-oriented subject; programming, if assigned, will be minimal. This course provides the prerequisite material for several higher-level courses.

Textbook: Discrete Mathematics and Its Applications, 4th Edition, by Ken Rosen (McGraw Hill, 1999)

Other material: To be placed in the Reserves Section in the Engineering Library.

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

Comp. Sci. 303/EECS 303. Discrete Structures.

Section 006.

Instructor(s): H.V. Jagadish

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

Most of Computer Science uses discrete mathematics as its fundamental basis. So you can forget your calculus and trigonometry and yet be a very successful computer scientist, as long as you ace this course!! The aim in this course is to become familiar with the fundamental concepts of set theory, functions, relations, logic, induction, recursion, predicate calculus, graph theory, combinatorics, boolean algebra, and probability theory. Also, we shall study their application to several areas within computer science. This course constitutes 4 credits.

Discrete Structures is a mathematically-oriented subject; programming, if assigned, will be minimal. This course provides the prerequisite material for several higher-level courses.

Textbook: Discrete Mathematics and Its Applications, 4th Edition, by Ken Rosen (McGraw Hill, 1999)

Other material: To be placed in the Reserves Section in the Engineering Library.

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

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

Instructor(s): Marios Papaefthymiou

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 basic 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, you will be assigned a number of non-graded paper-and-pencil homeworks.

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 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. We advise you to learn quickly; your GSI can help, and the first discussion section will be devoted to this topic.

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

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

Section 001.

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

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. O-notation. Complexity. Top-down program development: design, implementation, testing modularity. Several programming assignments.

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

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

Section 007.

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

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. O-notation. Complexity. Top-down program development: design, implementation, testing modularity. Several programming assignments.

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

Comp. Sci. 400/EECS 400/Math. 419. Linear Spaces and Matrix Theory.

Prerequisites & Distribution: Four terms of college mathematics beyond Math. 110. No credit granted to those who have completed or are enrolled in Math. 217 or Math. 513. One credit granted to those who have completed Math. 417. (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..

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

Comp. Sci. 470/EECS 470. Computer Architecture.

Instructor(s): Todd Austin

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: This course provides a broad introduction to computer architecture. The course covers a large amount of material in moderate depth, giving the student a good understanding of the basic issues in computer system design. Specifically, the course covers instruction set design, pipelining, the memory hierarchy, I/O systems, and current research topics. Example systems include the Intel PIII, Alpha 21264 processors.

Textbook: Computer Architecture: A Quantitative Approach, 2nd Edition, by Hennessy and Patterson.

Homeworks: Homework assignments include written answers and programming components. All homework programs must be written in Verilog using the VeriSimple (misnomer?) Alpha processor pipeline model. Homework assignments are handed in at the beginning of the class they are due. Assignment collaboration policy: Informally discussing the problems is allowed, however, each student must do their own work and write up.

Projects: There will be a group programming project beginning in week 3. Students may either extend their VeriSimple pipeline model, or extend a microprocessor simulation system I will supply (SimpleScalar). Other projects may also be possible with prior approval. Groups will hand in a report and present their results during the final class. More details will follow...

Grading:

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

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.eecs.umich.edu/courses/eecs476/

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

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

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

Section 001.

Instructor(s): John Meyer

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. 481/EECS 481. Software Engineering.

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.

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

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

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

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

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 hardware platform. We will discuss examples that are drawn from historically significant and modern operating systems including THE, MULTICS, UNIX, Mach, and Windows NT. We will cover topics such as processes and threads, concurrency and synchronization, CPU scheduling, virtual memory management, communication in distributed systems, secondary-storage management, file systems, and security.

    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, 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 taken and passed EECS 370 and EECS 380, or have equivalent knowledge of computer architecture, data structures, and C/C++ programming. Students are expected to have had extensive C/C++ programming experience and to be familiar with UNIX. Students with questions about whether they have sufficient preparation for this course should speak with the instructors as soon as possible.

Reading List

This course has two required texts: Operating Systems Concepts, by Silberschatz and Galvin, and The Practice of Programming, by Kernighan and Pike. There will also be a number of required papers and handouts; these will either be available on line or copies will be provided for you. The papers are:

    There are also two recommended texts. The first, Modern Operating Systems, by Tanenbaum, offers an alternate view on the topics covered by Silberschatz. You probably don't need to buy it unless you find Silberschatz difficult. The second, Advanced Programming in the UNIX Environment by Stevens, provides excellent tutorial material on writing systems code. It is a good reference book to keep for Life Beyond Michigan.

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

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

Instructor(s): Nandit Soparkar (soparkar@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/

Database systems deal with the management of the large quantities of data that are needed for virtually any important computing environment. These systems handle the important issues concerning data in order that the applications need not have to do so. Database technology is already well-established in terms of numerous application areas, but its increasing importance, several emerging technologies, and many unresolved problems, continue to spur the research and development efforts in the area. The objective of this course is to study the established basic technology issues for databases. We will examine both the users' perspective as well as the database implementor's perspective in this course. Students need to know the basics of computer architecture, programming, algorithms, and operating systems.

Text: Abraham Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts, Third Edition

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

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

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

Credits: (4; 3 in the half-term).

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

Course Homepage: No Homepage Submitted.

Graphics devices and fundamentals of operation. Two-dimensional and three-dimensional transformations. Interactive graphical techniques and applications. Three-dimensional graphics, perspective transformation, hidden line elimination. Data structures and languages for graphics. Interactive graphical programming.

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

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

Instructor(s): Kang 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://www.eecs.umich.edu/courses/eecs489/f99/

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

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

Instructor(s): William Birmignham

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/wpb/492.f.99/

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.

Textbook: Stuart Russell and Peter Norvig, Artificial Intelligence: A Modern Approach, Prentice-Hall, 1995.

Prerequisites: EECS 380, or equivalent experience. We assume programming experience and knowledge of programming language concepts, and familiarity with algorithmic concepts, such as graph search and computational complexity. We will not hesitate to employ mathematics where appropriate.

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

Comp. Sci. 499(500)/EECS 499. Directed Study.

Prerequisites & Distribution: Senior standing in EECS. (1-4). (Excl). CAEN lab access fee required for non-Engineering students. (INDEPENDENT).

Credits: (1-4).

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

Course Homepage: No Homepage Submitted.

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

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

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

Instructor(s): Kevin Compton

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

Textbook:

Additional references:

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

Comp. Sci. 577/EECS 577. Reliable Computing Systems.

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

Prerequisites & Distribution: CS 280 and 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/~jhayes/eecs577/f99.eecs577.flyer.html

Prerequisites: Graduate standing and basic background in computer hardware and software

Course Summary: This course deals with models and methods used in the analysis and design of highly reliable and fault-tolerant computer systems. Fault tolerance has long been a requirement of computers in specialized applications such as telephone switching and spacecraft control. Advances in hardware and software technology are making such systems cost-effective and, indeed, necessary for a wide range of new applications, especially embedded microcontrollers. The topics to be covered in this course include: faults and their manifestations; reliability, availability and maintainability; system evaluation criteria; hardware and software redundancy methods; structural fault tolerance; performance-reliability tradeoffs; fault-tolerant system design methods; static versus dynamic designs; high-availability systems; long-life systems; critical computations; commercial fault- tolerant computers (Tandem, Stratus, and others); embedded systems and VLSI issues. Current research issues, including topics suitable for an M.S. or Ph.D. thesis will be discussed.

Required Textbook: D. P. Siewiorek and R. S. Swarz: Reliable Computer Systems: Design and Evaluation, 3rd edition, A.K. Peters, 1998.

Course Assignments:

Semester grades will be based on the following:

  1. Exam 1: (Thursday October 21, 1999) About four homework assignments
  2. Term project and report
Check Times, Location, and Availability Cost: No Data Given. Waitlist Code: No Data Given.

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

Instructor(s): Gary Tyson

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

Credits: (4).

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

Course Homepage: http://www.eecs.umich.edu/~tyson/class/583/

Various programming languages are compared to understand general principles. To do this systematically and ignore inessential details, a format specification method is introduced. Current programming paradigms are examined; their potentials and compatibility are assessed. For example, the question of why functional languages become imperative when the go public is discussed.

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

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

Instructor(s): Jignesh Patel

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

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

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

Comp. Sci. 589/EECS 589. Advanced Computer Networks.

Instructor(s): Sugih Jamin

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/

Advanced topics and research issues in computer networks. Topics include routing protocols, multicast delivery, congestion control, quality of service support, network security, pricing and accounting, and wireless access and mobile networking. Emphasis is placed on performance trade-offs in protocol and architecture designs. Readings assigned from research publications. A course project allows in-depth exploration of topics of interest.

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

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

Section 001.

Instructor(s): Richmond Thomason (rhthomas@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.

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

Topics of current interest in electrical engineering and computer science. Lectures, seminar or laboratory. Can be taken more than once for credit.

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

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

This page was created at 7:18 AM on Wed, Sep 29, 1999.