**181/EECS 181. Introduction to Computer Systems. *** Credit
is granted for only one course among CS 181, Engin. 103, and Engin.
104. (4). (NS). *

Computer Science 181 is meant for students in the liberal arts and related areas with little or no background in computing systems who wish to become computer literate. Lectures cover general computing topics: hardware, networks, operating systems, programming, history and social issues. Students get hands-on experience in the laboratories using software packages for text processing (MacWrite), databases (FileMaker Pro), and spreadsheets (Excel); students also sign on the central computing system to send and receive electronic messages and to participate in an electronic conference. Assignments include three major projects. The course pack contains an outline of lecture notes, selected articles on social issues, and tutorials on laboratory topics.

**183/EECS 183. Elementary Programming Concepts. *** (4).
(NS). *

This is an introductory course for students who do not plan to concentrate in computer science or engineering. The course is designed to give students a good fundamental knowledge of programming techniques in a high-level language. Suggested as a prerequisite for CS 280 for students whose programming background is not strong. Students who know how to program, but want to learn Pascal as a means of getting into 280 should not take 183, but Engineering 104 instead. Introduction to a high-level programming language, top-down design, and structured programming. Basic searching and sorting techniques. Basic data structures; arrays and records; introduction to pointers and dynamic data structures. No previous experience in computing or programming is assumed. Students will write and debug several computer programs. Computer Usage: five or six assignments are given, each requiring the student to write and debug programs using THINK Pascal on the Macintosh microcomputer.

**216/EECS 216. Circuit Analysis. *** Prior
or concurrent enrollment in Math. 216. (4). (Excl). *

Resistive circuit elements; mesh and node analysis, network theorems; network graphs and independence; energy storage elements; one- and two-time-constant circuits; phasors and a.c. steady-state analysis; complex frequency and network functions; frequency response and resonance. Lecture and laboratory.

**270/EECS 270. Introduction to Logic Design. *** (4).
(Excl). *

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 183 or 284 or Engineering 104, or by placement test in PASCAL). Two credits granted to those
who have completed CS 283. (4). (NS). *

The goals of this course include concepts of information representation, algorithms, processes and processors, syntax, semantics, data structures and grammar. Students learn the basics of programming style, debugging, error control, computational correctness, and program verification. Prerequisites include advanced algebra and first term calculus, and computer literacy (knowledge of Pascal). Topics include techniques of algorithm development and effective programming in Pascal and in the C language, 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. *** (1). (Excl).
Section 001 – Pascal. * This course is for students who already
know how to program in some language other than Pascal. It is
a 14-lecture one-credit mini-course which will focus on preparing
students for CS 280, the first required programming course for
Computer Science concentrators, but is suitable for anyone wanting
to learn to program in Pascal. Topics will range from basic Pascal
control structures (IF, CASE, WHILE, REPEAT, and FOR loops; PROCEDURES
and FUNCTIONS) through the use of data structures such as arrays, strings, records, pointers and linked lists. (Ford-Holevinski)

*Section 002 – C. * This course is for students who already
know how to program in some language other than C. It is a 14-lecture
one-credit mini-course which will focus on covering the fundamentals
of the C language. Topics will range from basic C control structures
(if, switch, while, do while, for, and functions) through the
use of basic data structures such as arrays, strings, structures, pointers and linked lists. We will cover as many of the standard
C library functions as possible. ANSI standard C is utilized.
(Ford-Holevinski)

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

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

**370/EECS 370. Introduction to Computer Organization.
*** CS 270 and CS 280. (4). (Excl). *

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 micro-programmed computer. Lecture and laboratory.

**380/EECS 380. Data Structures and Algorithms. *** CS
280 and CS 303. (4). (NS). *

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

**381/EECS 381. Systems Programming. *** CS
380. (4). (Excl). *

Design and implementation of basic systems programming tools
and infrastructure. Topics to be covered include assembly language
programming, assemblers, macro processors, linkers and loaders, and I/0 drivers, * etc., *and programming projects will
involve the design and implementation of such systems. Students
will also write some programs in assembly language.

**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 217 or 513. One credit granted to those who have completed
Math. 417. (3). (Excl). *

See Mathematics 419.

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

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

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

Basic concepts of computer architecture and organization. Computer evolution. Design methodology. Performance evaluation. Elementary queuing models. CPU architecture. Introductions sets. ALU design. Hardwired 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). *

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

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

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

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. WL:1

**482/EECS 482. Introduction to Operating Systems. *** CS
370 and 381. (4). (Excl). *

Operating system functions and implementations: multitasking; 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.

**483/EECS 483. Compiler Construction. *** CS
370 and 381. (4). (Excl). *

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 473. (3). (Excl). *

Concepts and methods in the definition and management of large integrated data bases for organizational information systems. Functions and objectives of existing file and data management will be considered and methods of analyzing proposals for new data management software will be studied; database administration, database design, and data security problems.

**487/EECS 487/IOE 478. Interactive Computer Graphics.
*** CS 380 or IOE 373, and senior standing. (3). (Excl). *

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

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

**493/EECS 493/IOE 437. User Interface Design and Analysis.
*** CS 481. (3). (Excl). *

Current theory and design techniques concerning how user interfaces for computer systems should be designed to be easy to learn and use. Focus on cognitive factors, such as the amount of learning required, and the information-processing load imposed on the user, rather than ergonomic factors.

**500. Special Study. *** Graduate or undergraduate
concentration in Computer Science; and permission of instructor.
(1-6). (Excl). (INDEPENDENT). May be repeated for credit. *

Students are introduced to the frontiers of System Science research. Sections 001, 002, and 003 are devoted, respectively, to Communications, Control, and Signal Processing. The tutorials are delivered by leaders of the respective research fields, invited from academia and industry. The presentations are self-contained and accessible to all graduate students in Systems Science.

**572/EECS 572. Digital Computer Arithmetic. *** CS
470 or CS 370, and CS 478. (3). (Excl). *

Classification and structure of finite number systems and arithmetic including weighted, redundant and signed digit classes of number systems. Theory of modern high-speed computer arithmetic including fast carry logic, multiplier recoding and SRT division. Case studies of general and special purpose arithmetic processors.

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

Formal grammars, recursive functions, logic, complexity theory.

**577/EECS 577. Reliable Computing Systems. *** CS
280 and 478. (3). (Excl). *

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. WL:1

**583/EECS 583. Programming Languages and Compilers.
*** CS 476 and CS 483; or permission of instructor. (4).
(Excl). *

A survey of the theory, implementation, and support of modern
programming languages. Topics include introduction to mathematical
foundations of programming languages, semantics of programming
languages, advanced compiler optimization, compilation of modern
and special purpose programming languages * (e.g., *logic
programming or functional languages), tools for compiler construction, type systems, program verification, and run-time support. LS&A
Honors Students may take either Computer Science 483 or 583, but
not both.

**585/EECS 585. Object-Oriented Databases. *** CS
484 and permission of instructor. (3). (Excl). *

Topics to be selected from areas such as: theory of relational databases, dependencies, operators, normal forms, representational systems, relational languages. Principles of object-oriented database management systems: inheritance, encapsulation, and polymorphism; implementation issues. Knowledge based and rule based systems. Extensible database systems. Parallel database systems. Logic systems. Multi-media systems.

**587. Parallel Algorithms. *** CS 380. (3).
(Excl). *

The design and analysis of efficient algorithms for parallel computers. Fundamental problem areas, such as sorting, matrix manipulation, and graph theory, are considered for a variety of parallel architectures. Simulation of architecture by another.

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

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.

**592/EECS 592. Advanced Artificial Intelligence. *** CS
492, or permission of instructor. (4). (Excl). *

Advanced topics in artificial intelligence. Issues in knowledge representation, knowledge based systems, problem solving, planning and other topics will be discussed. Students work on several projects.

**595/EECS 595/Ling. 541. Natural Language Processing.
*** Senior standing. (3). (Excl). *

See Linguistics 541. (DeGraff)

**598/EECS 598. Special Topics in Electrical Engineering
and Computer Science. *** Permission of instructor or
advisor. (1-4). (Excl). May be repeated for credit. *

Topics of current interest in electrical engineering and computer science. Lectures, seminar or laboratory.

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.