98-99 LS&A Bulletin

Courses in Computer Science (Division 353)

100/EECS 100. Introduction to Computing Systems. Intended for concentrators in computer science, computer engineering, and electrical engineering. (4). (MSA). (BS).
A rigorous introduction to hardware, software, and theory. How a computer works, from machine level to high level programming. Circuits, instructions, memory, data representation. Machine language assembler. Binary arithmetic, data types and structures. Translation of high level languages. Selection, iteration, subprograms, recursion. Basic algorithm analysis.

181/EECS 181. Introduction to Computer Systems. 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).
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 concentrators whose goal is computer literacy.

183/EECS 183. Elementary Programming Concepts. 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).
Fundamental concepts and skills of programming in a high level language. Flow of control: selection, iteration, 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.

198/EECS 198. Special Topics in Computer Science. (1). (Excl).
Topics of current interest in Computer Science. Hands-on experience.

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.

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. Transient analysis of circuits. Introduction to diode and transistor circuits. Amplifiers, limiters, filters and logic circuits. Laboratory experience with electrical signals and circuits.

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 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. Introduction to the C language.

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).
Covers the fundamentals of a programming language such as C, Pascal, LISP, SNOBOL, Prolog, or Modula-2; or a system such as UNIX. Programming problems assigned. Specific languages or systems to be offered are announced in advance. Each section of the course covers a different language.

285/EECS 285. A Programming Language or Computer System. (2). (Excl).
A course covering a complex computer system or programming language. Programming problem are assigned. Specific languages or systems offered are announced in advance.

303/EECS 303. Discrete Structures. Math. 115. (4). (MSA). (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 is 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 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 and 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.

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).
Finite dimensional linear spaces and matrix representations of linear transformations. Bases, subspaces, determinants, eigenvectors, and canonical forms. Structure of solutions of systems of linear equations. Applications to differential and difference equations. The course provides more depth and content than Math. 417. Math 513 is the proper election for students contemplating research in mathematics.

442/EECS 442. Computer Vision. CS 380. (4). (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. 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. (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. (4). (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. 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 of testing.

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

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 objects in an object-oriented language currently standard in industry.

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.

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.

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.

493/EECS 493. User Interface Design and Analysis. CS 481. (3). (Excl). (BS).
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.

494/EECS 494. Computer Game Design and Development. CS 380. (4). (Excl).
Concepts and methods for the design and development of computer games. Topics include: history of games, 2D graphics and animation, sprites, 3D animation, binary space partition trees, software engineering, game design, interactive fiction, user interfaces, artificial intelligence, game SDK's, networking, multi-player games, game development environments, commercialization of software.

499(500)/EECS 499. Directed Study. Senior standing in EECS. (1-4). (Excl). (INDEPENDENT).
Individual study of selected topics in Electrical Engineering and Computer Science. May include experimental investigation or library research.

505/EECS 505/Math. 562/Aero. 577/IOE 511. Continuous Optimization Methods. Math. 217, 417, or 419. (3). (Excl). (BS).
Survey of continuous optimization problems. Unconstrained optimization problems: undirectional search techniques including conjugate directions and gradient and variable metric methods. Constrained optimization problems: unconstrained techniques including penalty and barrier methods and constraint techniques including methods of feasible directions, gradient projection method, and linear constraint methods. Practical applications are emphasized.

506/EECS 506. Computing System Evaluation. CS 183 or 280, and CS 370 and EECS 501. (3). (Excl). (BS).
Theory and application of analytic methods for evaluating the performance of reliability of computing systems. Measures of performance, reliability, and performability. Reliability evaluation: classification and representation of faults, stochastic process models, coherent systems. Performance evaluation: Markovian queueing models, networks of queues. Unified performance-reliability evaluation.

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.

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.

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 are also studied.

547/EECS 547. Cognitive Architecture. CS 492. (3). (Excl). (BS).
Survey of architectures of symbolic systems in artificial intelligence. Architectures such as blackboards, production systems, logic systems, reflective systems, discovery systems, and learning systems. Also integrated cognitive architectures such as ACT*, SOAR, MRS, and EURISKO.

570/EECS 570. Parallel Computer Architecture. CS 470. (3). (Excl). (BS).
Pipelining and operation overlapping, SIMD and MIMD architectures, numeric and non-numeric applications, VLSI, WSI architectures for parallel computing, performance evaluation. Case studies and term projects.

571/EECS 571. Principles of Real-Time Computing. CS 470 and CS 482. (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).
Formal grammars, recursive functions, logic, complexity theory.

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.

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.

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.

581/EECS 581. Software Engineering Tools. CS 481 or equivalent programming experience. (3). (Excl). (BS).
Fundamental areas of software engineering including life cycle paradigms, metrics, and tools. Information hiding architecture, modular languages, design methodologies, incremental programming, and very high level languages.

582/EECS 582. Advanced Operating Systems. CS 482. (4). (Excl). (BS).
Course discusses advanced topics and research issues in operating systems. Topics are 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.

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 essential details, a formal specification method is introduced. Current programming paradigms are examined; their potentials and compatibility are assessed. e.g., the question why functional languages become imperative when the "go public" is discussed.

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.

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.

588/EECS 588/IOE 578/ME 551. Geometric Modeling. CS 487 or ME 454. (3). (Excl). (BS).
Individual or group study of topics in geometric modeling and computer graphics. Geometric data structures for curves, surfaces, and volume parameterization, and topological data structures for vertices, edges, faces and bodies. Algorithms for set operations. Euler operations and deformations. Design and experimentation with geometric modeling facilities.

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

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 are 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 plans 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 cognition 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.


University of Michigan | College of LS&A | Student Academic Affairs | LS&A Bulletin Index


Copyright © 1998
The Regents of the University of Michigan, Ann Arbor, MI 48109 USA
1.734.764.1817 (University Operator)