Enjoy your visit to my website.
COMPSCI 244: Introduction to Embedded Systems and Ubiquitous Computing

Increasing integration of communications, multimedia and processing and relentless digitization of data (including even RF data) continues to expand the scope and complexity of embedded systems. To appreciate these advances, and to productively contribute to future advances of these systems, a critical appreciation of the underlying technology underpinning is a must. The goal of this course is to develop a comprehensive understanding of the hardware and software technol ogies underlying embedded systems, particularly, those using computing elements (processors, DSPs, or ASIPs). The students develop an appreciation of the tech nology capabilities and limitations of the hardware, software components for building embedded systems, and methods to evaluate design tradeoffs between diffe rent technology choices. The course surveys the basic components of embedded and ubiquitous computing systems, including topics such as introduction to digital signal processing, cont rol systems, software for embedded systems, ad-hoc as well as wireless and distributed networked embedded systems, embedded systems security, human interactio n with embedded and ubiquitous systems, as well as special topics on applications of embedded and ubiquitous systems.

COMPSCI 243: High-Performance Architectures and Their Compilers

The goal of the course is to examine the symbiotic relationship between compilers and high-performance computer architectures. Towards this goal, the course analyzes the relationship between computer architecture and program optimization. We will discuss high-performance, Multi-threaded, Multicore, Vector, Superscalar, and VLIW computer architectures. This will include discussions of not only hardware design, but also the code optimizations necessary to maximize the performance of these designs.
COMPSCI 131: Parallel and Distributed Computing

This course is an introduction to parallel and distributed systems and their programming. It examines major concepts involved in creating parallel/distributed software and applications using a collection of independent, communicating single-processor systems. Performance issues in such systems are also covered. Major topics covered in this course are: Hardware parallel and distributed systems; Programming models; OS support; Parallel/Distributed programming and performance; Coordination and Synchronization; Consistency and replication; Transactions.