Courses in Computer Science
(Division 353)

100/EECS 100. Introduction to Computing Systems. (4). (Excl). (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).

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. This course will introduce students to computers. It 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). (NS). (BS).

This is an introductory course for students who desire a good working knowledge of basic programming techniques using a high-level language. The course is suitable for non-concentrators in Computer Science and Computer Engineering. Introduction to a high-level programming language, top-down analysis, and structured programming. Basic searching and sorting techniques. No previous experience in computing or programming is assumed. Students will write and debug several computer programs.

210/EECS 210. Electrical Engineering I. Math. 116. (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.

270/EECS 270. Introduction to Logic Design. CS 100. (4). (Excl). (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). (NS). (BS).

Techniques and algorithm development and effective programming, top-down analysis, structured programming, testing, and program correctness. Program language syntax and static runtime 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).
Section 001 C Language.
This course is for students who already know how to program in some language other than C. It is a 14-lecture 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.

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

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 these concepts to various areas of computer science and 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 micro-programmed 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 and 0-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.

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.

470/EECS 470. Computer Architecture. CS 370. (4). (Excl). (BS).

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

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

482/EECS 482. Introduction to Operating Systems. CS 370 and 380. (4). (Excl). (BS).

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

486/EECS 486. Object-Based Software Development. CS 380. (3). (Excl). (BS).

Object-based programming concepts such as data and program abstraction, decomposition of large systems into reusable objects, and inheritance. Programming projects will be done in an object-based language such as Ada. Comparative studies will be made of languages such as C++, Objective C, Eiffel, and Smalltalk that support object-based programming.

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.

489/EECS 489. Computer Networks. CS 482. (3). (Excl). (BS).

Hardware and software architectures employed in building modern computer networks. Emphasis is placed on architectural and design considerations over actual implementation issues. Tradeoffs in network architectures and in understanding what choices are available. Software problems assigned.

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.

500. Special Study. Graduate or undergraduate concentration in Computer Science; and permission of instructor. (1-6). (Excl). (INDEPENDENT). May be repeated for credit.
Tutorial Lecture Series in System Science. Prerequisite: Graduate standing.
Students are introduced to the frontiers of System Science research. 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 System Science.

Section 001 Communications.
Section 002 Control.
Section 003 Signal Processing.

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.

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.

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.

584/EECS 584. Advanced Database Systems. CS 484. (3). (Excl). (BS).

Advanced topics and research areas in information and database systems. Distributed database technology: transaction processing, reliability, data allocation, and query processing. Object oriented, deductive, client-server, and heterogeneous databases. Emerging areas, such as main memory databases, data mining, and parallel databases. Case studies of commercial and experimental systems. Group projects.

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.

592/EECS 592. Advanced Artificial Intelligence. CS 492, or permission of instructor. (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 work on several projects.

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.

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.


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.