Undergraduate Courses

EE460M - Digital System Design using Verilog (Verilog lab manuals)

Fall2018, Fall2017, Spring2017, Spring2016, Spring2015, Spring2014

Hardware implementation of arithmetic and other algorithmic processes; hardware description languages (Verilog); Field Programmable Gate Arrays (FPGAs); state machine charts; microprogramming; floating point arithmetic; and organization, design, simulation, synthesis, and testing of digital systems.

EE360M - Digital System Design using VHDL (VHDL lab manuals)

Spring 2013, Spring 2012, Spring 2011, Spring 2010, Spring 2009, Spring 2008, Spring 2007, Spring 2006, Fall 2005, Spring 2005, Spring 2004, Spring 2003

Hardware implementation of arithmetic and other algorithmic processes; hardware description languages (VHDL); Field Programmable Gate Arrays (FPGAs); state machine charts; microprogramming; floating point arithmetic; and organization, design, simulation, synthesis, and testing of digital systems.

EE316 - Digital Logic Design

Spring 2010, Spring 2011, Fall 2011

Boolean algebra; analysis and design of combinational and sequential logic circuits; state machine design and state tables and graphs; simulation of combinational and sequential circuits; applications to computer design; and introduction to VHDL and field-programmable gate arrays (FPGAs).

EE360N Computer Architecture

Fall 2000, Fall 1999, Spring 1999

This class covers many of the concepts that implement that execution magic, more commonly called computer architecture. We start by learning the machine language that a computer exposes to the user and how one can use that language to express algorithms in the form of machine language (or the more human-readable form of machine language called assembly language) programs. We then learn how a simple hardware-based machine language interpreter (generally called a processor) is structured. We use that as a launching point to explore implementing the processor (in a basic sense), improving the performance and useability of the processor and measuring and understanding tradeoffs between performance, usability and design complexity

EE155 Undergrad Research Seminar

Spring 2011, Fall 2011

This class includes Seminar on various topics of research in electrical and computer engineering.The aim of this class is to introduce ECE students to the main areas of research within the Department of Electrical and computer Engineering; also a conduit to help students find professors for undergrad research, senior project and senior thesis (if applicable).


Graduate Courses

EE382V - Hardware Architecture for Machine Learning

Spring 2020

Machine learning (ML) has become a dominant computing workload. This course provides coverage of architectural techniques to design hardware for training and inference in machine learning systems. Hardware choices for machine learning include CPUs, GPUs, GPU+DSPs, FPGAs, and ASICs. Currently CPUs are used in inferencing tasks while most training is done mostly using GPUs. Tradeoffs in implementing training and inference workloads using these different compute paradigms will be explored. Emerging ML accelerators will be studied. Students will read research papers and complete a major project. Projects can be hardware design projects or characterization/benchmarking/optimization projects.

EE382N - Superscalar Microprocessor Architecture

Fall 2013, Spring 2007, Spring 2006, Fall 2004, Fall 2001, Spring 2000, Spring 1999, Spring 1998, Spring 1997

Computer architects have been striving to improve uniprocessor performance ever since the first stored program computer was designed half a century ago. Superscalar execution is one of the techniques in this avenue and most modern microprocessors employ superscalar issue and other instruction-level parallelism techniques to enhance their performance. In the simplest words, superscalar processors are processors that can issue more than one instruction per cycle. This course deals with the tradeoffs and design considerations in the design of superscalar or instruction level parallel (ILP) microprocessors.

EE382M - Computer Performance Evaluation and Benchmarking

Fall, 2014, Fall 2013, Fall 2009, Fall 2007, Fall 2006, Spring 2005, Fall 2002, Fall 1999, Fall 1998

Evaluating computer architectures have become extremely difficult due to the complexity of the processors and the complexity of the applications that run on the computers. This course will focus on quantitative and analytical characterization of microprocessors, computer systems and applications from general purpose and scientific computing. Several papers from the recent computer architecture, performance evaluation and workload characterization related conferences will be used as course material.

EE382M - Java Processing

Spring 2001

Java is very popular in a wide range of platforms ranging from embedded systems to enterprise servers. Portability across platforms is an important feature of Java and this is made possible by the Java Virtual Machine (JVM). JVMs come in several different forms such as Interpreters, Just-In-Time (JIT) Compilers and hardware Java processors. This course is about the performance impact of Java execution in different modes. The processing engines in many Java systems were designed before the advent of Java. It is not known whether the microarchitectural features in modern processors such as out of order execution, branch prediction, etc are effective for Java applications. Do we need special microarchitectural features in processors to be used as Java engines?

EE382M - E-commerce Processor Architecture

Fall 2000

With the Internet's evolution from being a scientific network to a venue where true business can be done, E-commerce is expected to grow into a $1.4 trillion business in 4 years. E-commerce enables the electronic transfer of procurement, order entry, transaction processing, payment, production, inventory, order tracking, customer support, etc. via the internet. An end-to-end e-business transaction typically involves a dozen or more different software layers, including the front end/portal, shopping carts, network communication, credit card or electronic check transaction, security software layers, etc. These layers may be implemented using cgi-script, Java servlets, Java Beans, XML, CORBA, JINI, etc. Thus e-commerce involves the integration of a variety of software, protocols, and standards: GUIs, Java, cgi, perl, TCP/IP, HTTP, and HTML are just a few of them. It is not known whether the microarchitectural features in modern processors such as out of order execution, branch prediction, etc are effective for E-commerce applications. Do we need special microarchitectural features in processors to be used as servers? What kind of computing is required on the client side? In this course, we will look into E-commerce applications, their characteristics and contemplate on suitable architectural paradigms for them.