Andrew DeOrio


Creative Process (UARTS 250)
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

Computer Software

Progamming and Introductory Data Structures (EECS 280)
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.
Complete course materials
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)
Concepts surrounding web systems, applications, and internet scale distributed systems. Topics covered include client/server protocols, security, information retrieval and search engines, scalable data processing, and fault tolerant systems. The course has substantial projects involving development of web applications and web systems.

Computer Hardware

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)
February 2013
How to Give a Bad Lecture with a Tablet
Invited talk at The University of Michigan Enriching Scholarship Conference
May 2013