Courses in Computer Science (Division 353)

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

Computer Science does offer two classes intended for non-concentrators: CS 181, Intro to Computing 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?

1. CS 181 learn how to use basic computer software packages like word processing, spreadsheets, simple graphics and databases, etc. (not programming). Does not count for the computing requirement in Electrical Engineering or Computer Engineering - free elective only.

2. CS 183 learn the fundamentals of C++ programming (including C programming). Usually taken by LS&A students who do not plan to concentrate in computer science (CS) or computer engineering (CE). Assumes no prior programming experience. Does not count for the computing requirement in Electrical Engineering or Computer Engineering free elective only.

3. Engineering 101 learn the fundamentals of C programming plus engineering applications of computing, including MATLAB. Usually taken by engineering students who do not plan to concentrate in Electrical Engineering, Computer Engineering, or Computer Science. This course replaces the former Engineering 103, 104, 106, 107 courses. Assumes no prior programming experience.

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

4. CS 100 recommended first course for those who intend to concentrate in electrical engineering, computer science or computer engineering. It assumes no prior programming experience. Half the course is devoted to computer hardware components and the second half to the basics of programming using C. If you take EECS/CS 183 or Engineering 101 and then decide later you want to be an Electrical Engineering, Computer Engineering, or Computer Science concentrator, you can take a bridge course to pick up the hardware half of EECS/CS 100 for one credit; you do not have to take all of EECS/CS 100.

5. If you already have C experience and want to jump to the next programming course, you need to take the EECS/CS 100 bridge course (for Fall 1997 it is listed as EECS/CS 284 Section 003), and then enroll in EECS/CS 280.


If you are interested in becoming an Electrical Engineering or Computer Engineering concentrator, contact the EECS Counseling Office at 763-2305, 3415 EECS Building.

If you are interested in becoming a Computer Science concentrator, contact the LS&A Academic Advising Center at 764-0332, 1255 Angell Hall.

If you are undecided about which of these three options to choose, please contact the College of Engineering Freshman Counseling Office at 647-7106, 1009 Lurie Engineering Center.

100/EECS 100. Introduction to Computing Systems. (4). (MSA). (BS).
A foundation course in computer science intended for CS & CE majors and those who are interested in a rigorous introduction to computer hardware, software, and theory. How a computer works, from the machine level to high level programming languages. Circuits, instructions, memory, how data is represented in a computer. Machine language and assembly language. Binary arithmetic, data types, data structures. Translation of high level languages into assembly and machine code. The C programming language: data structures, selection, iteration, subprograms, and recursion. Basic algorithm analysis; complexity. This is not a "programming" course; it is a rigorous introduction to the many aspects of computing systems.
Check Times, Location, and Availability

181/EECS 181. Introduction to Computer Systems. Credit is granted for only one course among CS 181, Engin. 103, and Engin. 104. (4). (Excl). (BS).
Fundamental computer skills needed to increase productivity both personally and at the workplace. Use of software packages and applications including word processing, world wide web browsers, spreadsheets, and database systems. Creating your own home page on the web. Discussion of the history of computing, ethics in the field (privacy, copyright, patents), and an introduction to basic hardware components. Intended for non CS/CE majors whose goal is computer literacy.
Check Times, Location, and Availability

183/EECS 183. Elementary Programming Concepts. This course is not intended for computer science concentrators or computer engineering concentrators. Credit is granted for only one course among CS 183, Engin. 103, and Engin. 104. (4). (MSA). (BS).
Fundamental concepts and skills of programming in a high level language. Flow of control: sequential, selection, iteration, subprograms. Basic data structures: strings, arrays, records, lists and tables. Fundamental algorithms using selection and iteration (decision making, finding maxima and minima, searching, sorting, simulation, setting up a simple database). Good program design, structure, and style are emphasized. Testing and debugging. Intended for non CS/CE majors whose goal is to achieve basic proficiency in programming.
Check Times, Location, and Availability

210/EECS 210. Electrical Engineering I. Math. 116. Credit is not granted for both CS 210 and EECS 314. (4). (Excl). (BS).
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.
Check Times, Location, and Availability

211/EECS 211. Electrical Engineering II. CS 210, and prior or concurrent enrollment in Math. 216. Credit is not granted for both CS 211 and EECS 313. (4). (Excl). (BS).
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

270/EECS 270. Introduction to Logic Design. CS 100. (4). (MSA). (BS).
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.
Check Times, Location, and Availability

280/EECS 280. Programming and Introductory Data Structures. Math. 115 and CS 100. Two credits granted to those who have completed CS 283. (4). (MSA). (BS).
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

284/EECS 284. Introduction to a Programming Language or System. Some programming knowledge is required. No credit granted for the C minicourse to those students who have completed CS 280. (1). (Excl). (BS).
A mini course covering the fundamentals of a high level programming language or a system such as UNIX. Programming problems will be assigned. Specific languages or systems to be offered will be announced in advance.
Check Times, Location, and Availability

303/EECS 303. Discrete Structures. Math. 115. (4). (MSA). (BS).
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.
Check Times, Location, and Availability

370/EECS 370. Introduction to Computer Organization. CS 270 and CS 280. (4). (Excl). (BS).
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.
Check Times, Location, and Availability

380/EECS 380. Data Structures and Algorithms. CS 280 and CS 303. (4). (NS). (BS).
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

398/EECS 398. Special Topics. Permission of instructor. (1-4). (Excl).
Topics of current interest selected by the faculty. Lecture, seminar or laboratory.

Section 001 Java. (2 credits).
Check Times, Location, and Availability

400/EECS 400/Math. 419. Linear Spaces and Matrix Theory. 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).
See Math 419.
Check Times, Location, and Availability

470/EECS 470. Computer Architecture. CS 370. (4). (Excl). (BS).
Basic concepts of computer architecture and organization. Computer evolution. Design methodology. Performance evaluation. Elementary queueing models. CPU architecture. Instruction sets. ALU design. Hardware and microprogrammed control. Nanoprogramming. Memory hierarchies. Virtual memory. Cache design. Input-output architectures. Interrupts and DMA. I/O processors. Parallel processing. Pipelined processors. Multiprocessors.
Check Times, Location, and Availability

476/EECS 476. Foundations of Computer Science. CS 280 and 303. (4). (Excl). (BS).
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

478/EECS 478. Logic Circuit Synthesis and Optimization. CS 270 and CS 303, and senior or graduate standing. (4). (Excl). (BS).
Advanced design of logic circuits. Technology constraints. Theoretical foundations. Computer-aided design algorithms. Two-level and multilevel optimization of combinational circuits. Optimization of finite-state machines. High-level synthesis techniques: modeling, scheduling, and binding. Verification and testing.
Check Times, Location, and Availability

481/EECS 481. Software Engineering. CS 380. (4). (Excl). (BS).
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

482/EECS 482. Introduction to Operating Systems. CS 370 and 380. (4). (Excl). (BS).
Operating system functions and implementations: multi-tasking; concurrency and synchronization; deadlock; scheduling; resource allocation; real and virtual memory management; input/output; file systems. Students write several substantial programs dealing with concurrency and synchronization in a multitask environment.
Check Times, Location, and Availability

483/EECS 483. Compiler Construction. CS 380 and 476. (4). (Excl). (BS).
Introduction to compiling techniques including parsing algorithms, semantic processing, and optimization. Students implement a compiler for a substantial programming language using a compiler generating system.
Check Times, Location, and Availability

484/EECS 484/IOE 484. Database Management Systems. CS 380 or IOE 373. (4). (Excl). (BS).
Concepts and methods for the design, creation, query and management of large enterprise databases. Functions and characteristics of the leading database management systems. Query languages such as SQL, forms, embedded SQL, and application development tools. Database design, normalization, access methods, query optimization, transaction management and concurrency control, recovery, and integrity.
Check Times, Location, and Availability

486/EECS 486. Object-Oriented Software Development. CS 380. (4). (Excl). (BS).
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

487/EECS 487. Interactive Computer Graphics. CS 380 and senior standing. (4). (Excl). (BS).
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

489/EECS 489. Computer Networks. CS 482. (4). (Excl). (BS).
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

492/EECS 492. Introduction to Artificial Intelligence. CS 380. (4). (Excl). (BS).
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

542/EECS 542. Vision Processing. CS 442. (3). (Excl). (BS).
Details of image formation theory, including the consideration of dynamic image sequences. The theoretical frameworks for edge detection, feature extraction, and surface description are presented. The relationship between image formation and object features is examined in detail. Programming required.
Check Times, Location, and Availability

545/EECS 545. Machine Learning. CS 492. (3). (Excl). (BS).
Survey of recent research on learning in artificial intelligent systems. Topics include learning based on examples, instructions, analogy, discovery, experimentation, observation, problem solving, and explanation. The cognitive aspects of learning will also be studied.
Check Times, Location, and Availability

575/EECS 575. Theoretical Computer Science II. CS 574. (4). (Excl). (BS).
Advanced computational complexity, intractability, classical probability and information theory, algorithmic information theory, and special topics such as computational algebra, concurrency, semantics, and verification.
Check Times, Location, and Availability

577/EECS 577. Reliable Computing Systems. CS 280 and 478. (3). (Excl). (BS).
An introduction to models and methods used in the analysis and design of reliable hardware systems, software systems and computing systems. Aspects of reliability considered include fault tolerance, fault detection and diagnosis, reconfiguration, design verification and testing, and reliability evaluation.
Check Times, Location, and Availability

579/EECS 579. Digital System Testing. CS 478. (3). (Excl). (BS).
Overview of fault-tolerant computing. Fault sources and models. Testing process. Combinational circuit testing. D-Algorithm and PODEM. Sequential circuit testing. Checking experiments. RAM and microprocessor testing. Fault simulation. Design for testability. Testability measures. Self-testing circuits and systems.
Check Times, Location, and Availability

582/EECS 582. Advanced Operating Systems. CS 482. (4). (Excl). (BS).
Course discusses advanced topics and research issues in operating systems. Topics will be drawn from a variety of operating systems areas such as distributed systems and languages, networking, security, and protection, real-time systems, modeling and analysis, etc.
Check Times, Location, and Availability

584/EECS 584. Advanced Database Systems. CS 484. (3). (Excl). (BS).
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: 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

586/EECS 586. Design and Analysis of Algorithms. CS 380. (3). (Excl). (BS).
Design of algorithms for nonnumeric problems involving sorting, searching, scheduling, graph theory, and geometry. Design techniques such as approximation, branch-and-bound, divide-and- conquer, dynamic programming, greed, and randomization applied to polynomial and NP-hard problems. Analysis of time and space utilization.
Check Times, Location, and Availability

592/EECS 592. Advanced Artificial Intelligence. CS 492. (4). (Excl). (BS).
Advanced topics in artificial intelligence. Issues in knowledge representation, knowledge based systems, problem solving, planning and other topics will be discussed. Students will work on several projects.
Check Times, Location, and Availability

594/EECS 594. Introduction to Adaptive Systems. CS 303 and Math. 425. (3). (Excl). (BS).
Programs and automata that "learn" by adapting to their environment; programs that utilize genetic algorithms for learning. Samuel strategies, realistic neural networks, connectionist systems, classifier systems, and related models of cognition. Artificial intelligence systems, such as NETL and SOAR, are examined for their impact upon machine learning and cognitive science.

Section 001 Complex Adaptive Systems. For Winter Term, 1998, this section is offered jointly with Psychology 541.001. (Holland)
Check Times, Location, and Availability

598/EECS 598. Special Topics in Electrical Engineering and Computer Science. Permission of instructor or advisor. (1-4). (Excl). (BS). May be repeated for credit.
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

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

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.