(Division 353)

**100/EECS 100. Introduction to Computing Systems. *** (4).
(MSA). (BS). *

How a computer works, from the machine level to high level programming. Circuits, instructions, memory, data. Assembly language. Binary arithmetic, data types, data structures. Translation of high level languages. The C programming language: data structures, control, iteration, recursion. Basic algorithm analysis.

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

Introduces students to computers. Focuses on software, hardware, and social impact of computers. Elementary programming concepts, software packages and applications, word processing, data communications, information management, input-output, data entry, computer hardware components and storage devices, microcomputers, and ethics in computing. Programming assignments using a personal computer. Term paper required.

**183/EECS 183. Elementary Programming Concepts. *** This
course is not intended for computer science concentrators or computer
engineering concentrators. (4). (MSA). (BS). *

Introduction to a high level programming language, top down analysis, and structured programming. Basic searching and sorting techniques. No previous experience in computers or programming is assumed. Students will write and debug several computer programs.

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

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

**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. Credit will not be given for the C mini course to students who have taken EECS 280.

**303/EECS 303. Discrete Structures. *** Math.
115. (4). (MSA). (BS). *

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

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

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

**398/EECS 398. Special Topics. *** Permission
of instructor. (1-4). (Excl). *

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

**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 Mathematics 419.

**426/EECS 426. Fundamentals of Electronic Computer-Aided
Design. *** CS 280 and senior standing. (3). (Excl).
(BS). *

Course will address, in roughly equal proportion: (1) modeling, simulation, and verification at various abstraction levels; (2) behavioral and logic synthesis; and (3) placement and routing. Emphasis will be on understanding the underlying techniques and algorithms of these various CAD areas rather than on the use of specific CAD tools.

**442/EECS 442. Computer Vision. *** CS 303
and CS 380. (3). (Excl). (BS). *

Computational methods for the recovery, representation, and application of visual information. Topics from image formation, binary images, digital geometry, similarity and dissimilarity detection, matching, curve and surface fitting, constraint propagation and relaxation labeling, stereo, shading texture, object representation and recognition, dynamic scene analysis, and knowledge based techniques. Hardware/software techniques.

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

**476/EECS 476. Foundations of Computer Science. *** CS
280 and 303 or equivalent. (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.

**477/EECS 477. Introduction to Algorithms. *** CS
380. (3). (Excl). (BS). *

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.

**478/EECS 478. Switching and Sequential Systems. *** CS
270 and CS 303, and senior or graduate standing. (3). (Excl).
(BS). *

An introduction to the theory of switching networks and sequential systems. Switching functions and realizations, threshold logic, fault detection, connectedness and distinguishability, equivalence and minimality, state identification, system decomposition.

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

**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 multitasking environment.

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

**484/EECS 484/IOE 484. Database Management Systems.
*** CS 380 or IOE 373. (3). (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.

**487/EECS 487. Interactive Computer Graphics. *** CS
380 or IOE 373, and senior standing. (3). (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.

**492/EECS 492. Introduction to Artificial Intelligence.
*** CS 380. (4). (Excl). (BS). *

Basic artificial intelligence methods using LISP. Topics covered include search, rule-based systems, logic, constraint satisfaction, and knowledge representation.

**505/EECS 505/Math. 562/Aero. 577/IOE 511. Continuous
Optimization Methods. *** Math. 217, 417 or 419. (3).
(Excl). (BS). *

See Mathematics 562.

**543/EECS 543. Knowledge-Based Systems. *** CS
492 and permission of instructor. (3). (Excl). (BS). *

Techniques and principles for developing application software
based on explicit representation and manipulation of domain knowledge, as applied to computer vision, robotic control, design and manufacturing, diagnostics, autonomous systems, * etc. * Topics include:
identifying and representing knowledge, integrating knowledge-based
behavior into complex systems, reasoning, and handling uncertainty
and unpredictability.

**571/EECS 571. Principles of Real-Time Computing. *** CS
470 and CS 482 or permission of instructor. (3). (Excl). (BS). *

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.

**574/EECS 574. Theoretical Computer Science I. *** CS
476. (4). (Excl). (BS). *

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.

**583/EECS 583. Programming Languages. *** CS
476 and CS 483. (4). (Excl). (BS). *

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

**589/EECS 589. Raster Graphics-Principles and Applications.
*** CS 487. (3). (Excl). (BS). *

A detailed account of modern raster-based computer graphics. Topics include solid area scan conversion, color theory and application, hidden surface elimination, shading, highlights, animation, painting, and standardized graphics software.

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

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.