This is a class where students are encouraged, in an interdisciplinary way, to explore their own creativity. Faculty with training in Architecture, Visual Arts, Music and Engineering will teach students their own approaches to creativity within their fields, and encourage students to find their own approaches (in and out of their current stated disciplines). Students will be expected and encouraged to explore creativity without thinking about disciplinary boundaries. Students will have short 2-week "workshops" with each faculty member, as well as work on a Final Project, either on their own, or in an interdisciplinary team of their own creation.
Provost's Teaching Innovation Prize, "Opening Students' Minds Through Interdisciplinary 'Making'". Awarded to the faculty of UARTS 250: Creative Process, 2017.
Five faculty teams awarded Provost's Teaching Innovation Prize -- The University Record
"One of the University's Most Intriguing Classes" -- The Michigan Daily
Progamming and Introductory Data Structures
Computer science fundamentals, with programming in C++. Build an image processing program, a game of Euchre, a web backend, and a machine learning algorithm.
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 280 Becomes Third Largest Course at U-M
Data Structures and Algorithms (EECS 281)
Introduction to 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.
Object Oriented and Advanced Programming (EECS 381)
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.
Web Systems (EECS 485)
A wholistic course of modern web systems and technologies, covering front end and back end. Build an Instagram clone in the first half of the semester, and a Google clone in the second.
Introduction to Computer Organization (EECS 370)
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. Datapath and control for multiple implementations of a processor. Performance evaluation, pipelining, caches, virtual memory, input/output.
Computer Architecture (EECS 470)
Basic concepts of computer architecture and organization. Computer evolution. Design methodology. Performance evaluation. Elementary queuing models. CPU architecture instruction sets. ALU design. Hardware and micro-programmed control. Nanoprogramming. Memory hierarchies. Virtual memory. Cache design. Input-output architectures. Interrupts and DMA. I/O processors. Parallel processing. Pipelined processors. Multiprocessors.
Are They Getting It? Low-Stakes Ways to Assess Student Learning
Invited seminar at The University of Michigan Center for Research on Learning and Teaching (CRLT)
How to Give a Bad Lecture with a Tablet
Invited talk at The University of Michigan Enriching Scholarship Conference