Undergraduate Course Catalog
Effective Term
Requirement or Grouping
Listings Per Page
Subject
  or   Department
Show Descriptions Show Course Guide Term Links For Past Two Years
Note: For descriptions of classes each term, see the LSA Course Guide
   Page 1 of 1, Results 1 - 58 of 58   
Courses in CoE Electrical Engineering and Computer Science

Electrical Engineering

Electrical Engineering provides students with a fundamental background in the basic theoretical concepts and technological principles of modern electrical engineering. A flexible curriculum allows students to emphasize a wide variety of subject areas within the field, including: analog and digital circuits, communication systems, control systems, electromagnetics, integrated circuit (microprocessor) design, signal processing, microelectromechanical devices, solid state electronics, and optics and photonics. Common efforts of electrical engineers include making systems and components smaller, faster, more energy efficient, and less costly, designing systems for the generation, storage and distribution of energy, and developing algorithms for extraction of information from signals.

Computer Science

Computer science is an integral part of our lives, shaping virtually everything from the objects around us to the ways in which we communicate, travel, work, and play. And the computer revolution has just begun – computer science is now a key enabler for discovery and innovation in most other fields of endeavor, making it an incredibly relevant course of study. The potential for creativity and impact in areas such as medicine, health care, entertainment, the performing arts, education, transportation, security, and the environment is enormous.

LSA credit

LSA Course Catalog are eligible for LSA credit; all other EECS courses (as listed in the CoE Bulletin) are considered non-LSA courses. Most EECS courses in the Electrical Engineering academic minor count as non-LSA credits. LSA students may use a maximum of 20 credits of non-LSA course work toward the total 120 credits required for the degree.

Prior Programming Experience

EECS 280 assumes prior programming experience using decision constructs, iteration, functions, basic I/O, and simple arrays in C/C++. Many students interested in Computer Science or Computer Engineering will have had such experience in high school coursework. Engineering students who do not place out of ENGR 101 should take ENGR 101 first, and LSA students who lack prior programming experience should take EECS 183 before taking EECS 280.

EECS Department Grade Policy

Grades of C or better must be achieved in all courses taken to satisfy requirements.

Electrical Engineering and Computer Science (EECS)
EECS 101. Thriving in a Digital World
(4). (MSA). (BS). May not be repeated for credit. May not be taken by students enrolled in the College of Engineering or who are majoring in Computer Science or Informatics.

From mobile apps to bitmaps, this course explores computational technologies and how they impact society and our everyday lives. Topics include: social networks, creative computing, algorithms, security, and digital privacy. Traditional computer programming is not a primary focus. Instead, mobile applications will be created using a novel visual programming environment.

EECS 182 / SI 182. Building Applications for Information Environments
(4). (MSA). (BS). May not be repeated for credit. F, W.

Fundamental programming skills in the context of end-user software applications using a high-level language, such as Ruby or Python. Rapid design of a variety of information-oriented applications to gather, analyze, transform, manipulate, and publish data. Applications drawn from statistics, pattern matching, social computing and computer games.

EECS 183. Elementary Programming Concepts
(4). (MSA). (BS). May not be repeated for credit. Credit is granted for only one course among EECS 183 or ENGR 101. Credit is granted for only one of ENGR 151 and EECS 183. Not intended for Engineering students (who should take ENGR 101), nor for Computer Science majors in LSA who qualify to enter EECS 280. F, W, Sp.

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. Not intended for Engineering students (who should take ENGR 101), nor for CS majors in LSA who qualify for EECS 280.

EECS 203. Discrete Math
MATH 115 or 116 or 119 or 120 or 121 or 156 or 176 or 185 or 186 or 295 or 296 or 215 or 255 or 285 with a grade of at least C or better. (Prerequisites enforced at registration.) (4). (MSA). (BS). May not be repeated for credit. F, W.

Introduction to the mathematical foundations of computer science. Topics covered include: prepositional and predicate logic, set theory, function and relations, growth of functions and asymptotic notation, introduction to algorithms, elementary combinatorics, and graph theory, and discrete probability theory.

EECS 270. Introduction to Logic Design
ENGR 101 or EECS 183 with a grade of at least C. (Prerequisites enforced at registration.) (4). (MSA). (BS). May not be repeated for credit. F, W, Sp.

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.

EECS 280. Programming and Introductory Data Structures
One of: EECS 182 or 183, or ENGR 101 or 151. (Prerequisites enforced at registration.) MATH 115. (4). (MSA). (BS). May not be repeated for credit. No credit granted to those who have completed or are enrolled in EECS 283. F, W.

Techniques and algorithm development and effective programming, top-down analysis, structured programming, testing, and program correctness. Program language syntax and static and 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.

EECS 281. Data Structures and Algorithms
EECS 280 and 203 with a grade of at least C. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Introduction to the algorithm analysis and O-notation; Fundamental data structures including lists, stacks, queues, priority queues, hash tables, binary trees, search trees, balanced, trees, and graphs; searching and sorting algorithms; recursive algorithms; basic graph algorithms; introduction to greedy algorithms and divide and conquer strategy. Several programming assignments.

EECS 282. Information Systems Design and Programming
(EECS 182 or EECS 183 or ENGR 101) and MATH 115. (4). (MSA). (BS). May not be repeated for credit. W.

Techniques for algorithm development and programming. Learning a programming language, such as Java, which is suitable for designing enterprise-scale information systems; data structures including stacks, queues, trees and dictionaries; recursion; program complexity; object-oriented design; handling exceptions, debugging, and testing; introduction to database design with JDBC and SQL.

EECS 285. A Programming Language or Computer System
Some programming knowledge required. (2). (BS). May not be repeated for credit.

EECS 370. Introduction to Computer Organization
EECS 203 or 270 with a grade of at least C; and EECS 280 or 283 with a grade of at least C. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Basic concepts of computer organization and hardware. Instructions executed by a processor and how to use these instructions in simple assembly-language programs. Stored-program concept. Data-path and control for multiple implementations of a processor. Performance evaluation, pipelining, caches, virtual memory, input/output.

EECS 373. Design of Microprocessor Based Systems
EECS 370 and 270 with a grade of at least C; and junior standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

The principles of hardware and software microcomputer interfacing; digital logic design and implementation. Experiments with specially designed laboratory facilities. The introduction to digital development equipment and logic analyzers. Assembly language programming.

EECS 376. Foundations of Computer Science
EECS 280 and 203 with a grade of at least C. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

An introduction to computation theory: finite automata, regular languages, pushdown automata, context-free languages, Turing machines, recursive languages and functions, and computational complexity.

EECS 381. Object Oriented and Advanced Programming
EECS 281. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. W.

Programming techniques in Standard C++ for large-scale, complex, or high-performance software. Encapsulation, automatic memory management, exceptions, generic programming with templates and function objects, Standard Library algorithms and containers. Using single and multiple inheritance and polymorphism for code reuse and extensibility; basic design idioms, patterns, and notation.

EECS 382. Internet-Scale Computing
EECS 281 or 282 with a grade of at least C. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F.

Systems-level programming techniques and concepts for the design of software systems: computer memory model; pointer safety; concurrent programming and using threads; coding vulnerabilities and secure coding; network programming and remote procedure calls; reading/writing objects to disk; client-server and distributed systems. No C++ background assumed. Programming lab in C++.

EECS 398. Special Topics
Permission of instructor. (1 - 4). (BS). May be repeated for credit.

EECS 427. Very Large Scale Integrated Design I
EECS 270 and 312 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Design techniques for rapid implementation of very large scale integrated (VLSI) circuits. MOS technology and logic. Structured design. Design rules, layout procedures. Design aids: Layout, design rule checking, logic and circuit simulation. Timing. Testability. Architectures for VLSI. Projects to develop and lay out circuits.

EECS 441. Mobile App Development for Entrepreneurs
Senior standing, EECS 281, EECS 370, and at least four credit hours of Upper Level Electives in either Computer Science or Computer Engineering. (3). (BS). May not be repeated for credit.

Best practices in the software engineering of mobile applications and best practices of software entrepreneurs in the design, production and marketing of mobile apps. Students will engage in the hands-on practice of entrepreneurship by actually inventing, building, and marketing their own mobile apps.

EECS 442. Computer Vision
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) EECS 281 or EECS 398, Winter 2005, section 001 or Graduate Standing. (4). (BS). May not be repeated for credit. F (Alternate years).

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 relaxation labeling, stereo, shading texture, object representation and recognition, dynamic scene analysis, and knowledge based techniques. Hardware, software techniques.

EECS 470. Computer Architecture
EECS 270 and 370 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Basic Concepts of computer architecture and organization. Computer evolution. Design methodology. Performance evaluation. Elementary queuing models. CPU architecture instruction 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.

EECS 475. Introduction to Cryptography
EECS 203 or MATH 312 or MATH 412; and EECS 183 or ENGR 101 or 104 or EECS 280 or 283; each with a grade of at least C or better; or Graduate standing. (Prerequisites enforced at registration.) EECS 203 or MATH 312/412 and EECS 183/280. (4). (BS). May not be repeated for credit. F. (Alternating Years).

Covers fundamental concepts, algorithms, and protocols in cryptography. Topics: ancient ciphers, Shannon theory, symmetric encryption, public key encryption, hash functions, digital signatures, key distribution. Highlights AES, RSA, Discrete Log, Elliptic Curves. Emphasizes rigorous mathematical study in terms of algorithmic complexity. Includes necessary background from algorithms, probability, number theory, and algebra.

EECS 477. Introduction to Algorithms
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) EECS 281 or EECS 398, Winter 2005, Section 001 or Graduate Standing. (4). (BS). May not be repeated for credit. F.

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.

EECS 478. Logic Circuit Synthesis and Optimization
EECS 270 and 203 with a grade of at least C; and senior or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

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.

EECS 480. Logic and Formal Verification
EECS 281; and EECS 376 or EECS 270; each with a grade of at least C; or Graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. W. (Alternating Years).

An introduction to current methodologies for verifying computer systems. Topics covered include logic and theorem proving; transition systems; temporal logic and the mu-calculus; modeling sequential and concurrent systems; model checking methods; binary decision diagrams; and controlling state explosion. Students will complete a project using current model checking technology.

EECS 481. Software Engineering
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

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

EECS 482. Introduction to Operating Systems
EECS 370 and 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Operating system design and implementation: multi-tasking; concurrency and synchronization; inter-process communication; deadlock; scheduling; resource allocation; memory and storage management; input-output; file systems; protection and security. Students write several substantial programs dealing with concurrency and synchronization in a multi-task environment, with file systems, and with memory management.

EECS 483. Compiler Construction
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) EECS 281 or EECS 398, Winter 2005, section 001 or Graduate Standing. (4). (BS). May not be repeated for credit. F.

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.

EECS 484. Database Management Systems
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

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, integrity, normalization, access methods, query optimization, transaction management and currency control and recovery.

EECS 485. Web Database and Information Systems
EECS 281 OR EECS 382, and a major in EECS OR Informatics; OR graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. W.

Concepts surrounding Web information system, including client/server systems, security, XML, information retrieval and search engines, and data replication issues. Includes substantial final project involving development of a database-backed web site.

EECS 487. Interactive Computer Graphics
EECS 281 with a grade of at least C; and senior or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Computer graphics hardware, line drawing, rasterization, anti-aliasing, graphical user interface (GUI), affine geometry, projective geometry, geometric transformation, polygons, curves, splines, solid models, lighting and shading, image rendering, ray tracing, radiosity, hidden surface removal, texture mapping, animation, virtual reality, and scientific visualization.

EECS 489. Computer Networks
EECS 482 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. W.

Protocols and architecture of computer networks. Topics include client-server computing, socket programming, naming and addressing, media access protocols, routing and transport protocols, flows 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.

EECS 492. Introduction to Artificial Intelligence
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

EECS 493. User Interface Development
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) EECS 281 or EECS 398, Winter 2005, Section 001 or Graduate Standing. (4). (BS). May not be repeated for credit. W.

Concepts and techniques for designing computer system user interfaces to be easy to learn and use, with an introduction to their implementation. Task analysis, design of functionality, display and interaction design, and usability evaluation. Interface programming using an object-oriented application framework. Fluency in a standard object-oriented programming language is assumed.

EECS 494. Computer Game Design and Development
EECS 281 with a grade of at least C; or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F.

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, use interfaces, artificial intelligence, game SDK's, networking, multi-player games, game development environments, commercialization of software.

EECS 496. Major Design Experience-Professionalism
Senior or Above. (Prerequisites enforced at registration.) (2). (BS). May not be repeated for credit. F, W.

Design principles for multidisciplinary team projects, team strategies, entrepreneurial skills, ethics, social and environmental awareness, and life long learning.

EECS 497. Major Design Projects
Senior or graduate standing. (Prerequisites enforced at registration.) (4). (BS). May not be repeated for credit. F, W.

Professional problem-solving methods developed through intensive group studies. Normally, one significant design project is chosen for entire class requiring multiple EECS disciplines and teams. Use of analytic, computer, design, and experimental techniques where applicable are used. Projects are often interdisciplinary allowing non-EECS seniors to also take the course (consult with instructor).

EECS 498. Special Topics
Permission of instructor. (1 - 4). (BS). May be repeated for credit.

Topics of current interest selected by faculty.

EECS 499. Advanced Directed Study
Senior or graduate standing. (Prerequisites enforced at registration.) Senior standing in EECS. (1 - 4). (BS). (INDEPENDENT). May be repeated for credit.

This course provides an opportunity for undergraduate students to work on substantial research problems in EECS or areas of special interest such as design problems.

EECS 530 / APPPHYS 530. Electromagnetic Theory I
PHYSICS 438 or EECS 330. (3). (BS). May not be repeated for credit. F.

EECS 540 / APPPHYS 540. Applied Quantum Mechanics
Permission of instructor. (3). (BS). May not be repeated for credit. F.

EECS 541 / APPPHYS 541. Applied Quantum Mechanics II
APPPHYS 540. (3). (BS). May not be repeated for credit.

EECS 543. Knowledge-Based Systems
EECS 281 and graduate standing, or permission of instructor. (3). (BS). May not be repeated for credit. F.

Techniques and principles for developing application software based on explicit representation and manipulation of domain knowledge, as applied to areas such as pattern matching, problem-solving, automated planning, and natural-language processing. Discussion of major programming approaches used in the design and development of knowledge-based systems.

EECS 545. Machine Learning
EECS 492. (3). (BS). May not be repeated for credit. W, odd years.

EECS 567 / MECHENG 567 / MFG 567. Introduction to Robotics
Graduate standing or permission of instructor. (3). (BS). May not be repeated for credit. W.

Introduction to the central topics in robotics, including geometry, kinematics, differential kinematics, dynamics, and control of robot manipulators. The mathematical tools required to describe spatial motion of a rigid body will be presented in full. Motion planning including obstacle avoidance is also covered.

EECS 570. Parallel Computer Architecture
EECS 470. (4). (BS). May not be repeated for credit. F.

Architecture for explicit parallelism. Multithreaded processors, small- and large- scale multiprocessor systems. Shared-memory coherence and consistency. Effect of architecture on communication latency, bandwidth, and overhead. Latency tolerance techniques. Interconnection networks. Case studies. Term projects.

EECS 574. Computational Complexity
EECS 376 or graduate standing. (4). (BS). May not be repeated for credit. F.

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.

EECS 575. Advanced Cryptography
EECS 203 or equivalent. EECS 574 recommended. (4). (BS). May not be repeated for credit. W.

A rigorous introduction to the design of cryptosystems and to cryptanalysis. Topics include cryptanalysis o classical cryptosystems; theoretical analysis of one-way functions; DES and differential cryptanalysis; the RSA cryptosystem; EIGamal, elliptic, hyper elliptic and hidden monomial cryptosystems; attacks on signature schemes, identification schemes and authentication codes; secret sharing; and zero knowledge.

EECS 579. Digital Systems Testing
Graduate standing. (4). (BS). May not be repeated for credit. F.

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.

EECS 582. Advanced Operating Systems
EECS 482/EQ. (4). (BS). May not be repeated for credit. W.

EECS 583. Advanced Compilers
EECS 281 and 370 (EECS 483 is also recommended). (4). (BS). May not be repeated for credit. F.

In-depth study of compiler backend design for high-performance architectures. Topics include control-flow and data-flow analysis, optimization, instruction scheduling, register allocation. Advanced topics include memory hierarchy management, instruction-level parallelism, predicated and speculative execution. The class focus is processor-specific compilation techniques, thus familiarity with both computer architecture and compilers is recommended.

EECS 584. Advanced Database Systems
EECS 484 or permission of instructor. (4). (BS). May not be repeated for credit. F.

Advanced topics and research issues in database management systems. Distributed databases, advanced query optimization, query processing, transaction processing, data models and architectures. Data management for emerging application areas, including bioinformatics, the internet, OLAP, and data mining. A substantial course project allows in-depth exploration of topics of interest.

EECS 586. Design and Analysis of Algorithms
EECS 281. (4). (BS). May not be repeated for credit. W.

Design of algorithms for non-numeric 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.

EECS 587. Parallel Computing
EECS 281; graduate standing. (4). (BS). May not be repeated for credit. F.

The development of programs for parallel computers. Basic concepts such as speedup, load balancing, latency, system taxonomies. Design of algorithms for idealized models. Programming on parallel systems such as shared or distributed memory machines, networks. Grid computing. Performance analysis. Course includes a substantial term project.

EECS 588. Computer and Network Security
EECS 482 or 489; or graduate standing. (4). (BS). May not be repeated for credit. F.

Survey of advanced topics and research issues in computer and network security. Topics will be drawn from a variety of areas of such as mandatory and discretionary security policies, secure storage, security darnels, trust management, preventing software vulnerabilities, applied cryptography, network security.

EECS 589. Advanced Computer Networks
EECS 489. (4). (BS). May not be repeated for credit. W.

EECS 592. Advanced Artificial Intelligence
EECS 492 or permission of instructor. (4). (BS). May not be repeated for credit. W.

EECS 594. Introduction to Adaptive Systems
EECS 203, and MATH 425 or STAT 425. (3). (BS). May not be repeated for credit. W.

Programs and automata that "learn" by adapting to their environment; programs that utilize genetic algorithms and 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.

EECS 595 / LING 541 / SI 561. Natural Language Processing
Senior standing. (Prerequisites enforced at registration.) (3). (BS). May not be repeated for credit. F.

This course is an introduction to computational and linguistic concepts and techniques for modeling and analyzing natural language. Topics include finite-state machines, part of speech tagging, context-free grammars, syntax and parsing, unification grammars and unification-based parsing, language and complexity, semantics, discourse and dialogue modeling, natural language generation, and machine translation.

EECS 598. Special Topics
Permission of instructor or counselor. (1 - 4). (BS). May be repeated for credit. F, W, Sp/Su, Sp, Su.

College of Literature, Science, and the Arts 500 S. State Street, Ann Arbor, MI  48109 © 2012 Regents of the University of Michigan