Teaching
 

I mainly teach three courses in the ECE department: ECE201/401, ECE404, and ECE114. (For these courses, we make heavy use of Blackboard courseware system.)

A detailed introduction to principles and practices of modern high-end microprocessor design. The textbook is the popular “Computer Architecture: A Quantitative Approach (4Ed)


Topics covered: 

1. Computer design concepts, principles, and quantitative methodologies
of design evaluation

2. Instruction set design

3. Advanced processor pipelining

4. Software and hardware exploitation of instruction-level parallelism

5. Memory hierarchy design

6. Multiprocessor issues

  1. 7.Storage and interconnection


This course is required for the computer engineering concentration. For students seeking to do research with me (MS thesis, project, or REU), taking this course and getting an A is often a prerequisite.

 

This course is meant to be a follow-up of ECE401 in which we will provide in-depth discussions of the design and implementation issues in the processor core microarchitecture, and a much expanded discussion on multiprocessor issues including cache coherence, memory consistency models, and interconnect.

We will not follow any one specific textbook, but will cover some material from both “Parallel Computer Architecture: A Hardware/Software Approach” by Culler and Singh and “Principles and Practices of Interconnection Networks” by Dally and Towles. We will of course rely on literature for recent development.

This is a lab-heavy intro-to-intermediate level course on programming. Modern day engineering disciplines often require computer programming to carry out simulation, modeling, data gathering, analysis, and so on. The goal of this class is to combine the central and fundamental part of knowledge and training from several computer science courses to help foster a productive and effective programming methodology

ECE404: High-Performance Microprocessor Based Systemshttp://www.ece.rochester.edu/courses/ECE404shapeimage_6_link_0
ECE114: Introduction to Computers and Programminghttp://www.ece.rochester.edu/courses/ECE114/shapeimage_7_link_0
ECE 201/401: Advanced computer architecturehttp://www.ece.rochester.edu/courses/ECE201/shapeimage_8_link_0

In addition to object-oriented programming (OOP) philosophy, principles, and mechanisms, and data structures, which are the main focus of the course, we will also discuss briefly computer organization, architecture, operating systems. We will be using “Small C++ How to Program” by Deitel & Deitel, or the more complete version.