Previous Courses |
|
Computer Networks
This course covers fundamental concepts and systems aspects of computer networks. Topics include a review of the layered Internet architecture and encompass router design, lookup and classification algorithms, scheduling algorithms, congestion control, wireless protocols, and network security. Computer networks are the fabric that connects our information society. To achieve the ubiquity, scalability, and performance of today's Internet, numerous problems needed to be solved. In this course the fundamental concepts that are behind current computer networks are explored. A number of different techniques that can be employed to investigate and solve such research problems are studied. The main goal of this course is to get exposed to a broad range of topics that are interesting for research in the networking area. |
|
Adv. Wireless Topics
This course presents a broad overview of the technical as well as business aspects of mobile computing and wireless communications. Instead of one narrow topic, this course covers the major building blocks of mobile computing and wireless communications. (mobile applications, mobile computing platforms, wireless networks, architectures, security, and management). The role of wireless Internet and Mobile IP is reviewed and the mobile computing platforms are examined with a discussion of wireless middleware, wireless gateways, mobile application servers, WAP, i-mode, J2ME, BREW, Mobile Internet Toolkit, and Mobile Web Services. The wireless networks are discussed next with a review of wireless communication principles, wireless LANs with emphasis on 802.11 LANs, Bluetooth, wireless sensor networks, UWB (Ultra Wideband), cellular networks ranging from 1G to 5G, wireless local loops, FSO (Free Space Optics), satellites communications, and deep space networks. |
|
|
|
|
|
|
|
|
High Level Synthesis
This course presents modern approaches to logic design and verification of digital circuits, including necessary background material in Boolean Logic, Finite State Machines, Decision Diagrams, and satisfiability (SAT) algorithms. The first part of the course covers high-level and architectural synthesis of designs described using hardware description languages (HDL). The second part covers, the fundamentals of Boolean algebra, logic function representations, and basic algorithms. The third part is devoted to Logic Synthesis, concentrating mostly on multi-level synthesis; and novel synthesis methods based on BDD representation and AIG graphs. The last part of the course is devoted to Verification, including simulation-based validation, functional test generation, and formal methods (equivalence checking and model checking). |
|
Reconfigurable Computing
This
course explores reconfigurable computers that can be quickly customized at the hardware level to perform exactly the computation required in hardware, overcoming the fixed hardware configurations found in many contemporary microprocessors. The state-of-the-art in reconfigurable computing both from a hardware and software perspective are investigated. A detail review is done of the basic building blocks of most reconfigurable computers, the field-programmable gate arrays (FPGAs). The characteristics of FPGA VLSI architecture such as the organization of device logic and interconnection resources are examined to quantify hardware limitations. As a final step, special focus is given to architecture for existing multi-FPGA systems and on compilation techniques for mapping applications described in a hardware description language to reconfigurable hardware. |
|
|
|
Homework's
& Projects |
I've been Teaching Assistant of this course, so I had to remove my solutions - Just in case. |
|
|
|
|
|
Computer Algorithm
Introduction
to the design and analysis of computer
algorithms and basic data structures. Specific
topics include: methods for analyzing algorithm
complexity, fundamental algorithmic strategies
(greedy methods, branch-and-bound, dynamic
programming, simulated annealing, etc.);
classical data structures; graph algorithms
(graph traversal, network flows, cuts and
matching); combinatorial algorithms and
mathematical optimization techniques (linear
programming, ILP, duality), and their
relationship to graph theoretical approach. The
theory will be illustrated with practical
examples from Physical Design Automation of VLSI
circuits and systems. |
|
Advance VLSI Design
This
course explores the design of large-scale
digital systems using application-specific
integrated circuit(ASIC) and field programmable
gate array (FPGA) technologies. State of the art
CAD tools are used to take design specifications
from a high level in HDL down to a layout level
design. Recent advancements due to Moore's law
have resulted in significant challenges in
physical design, including interconnection,
power consumption, reliability and verification.
These challenges will be explored at a
fundamental level as well as solutions in modern
CAD tools from Cadence, Synopsys, Xilinx and
Altera. Both ASIC and FPGA solutions will be
explored and the economic, performance, power
and flexibility tradeoffs will be studied for
each technology. |
|
|
|
|
|
|
|
Computer Architecture
The
Textbook: D.A.
Patterson and J.L. Hennessy, Computer
Architecture: A Quantitative Approach, 3rd
edition, Morgan-Kaufmann, 2002.
I. Introduction
II. Performance Analysis (Ch.1 +)
III. Processor Design: Pipelining (App.A, Ch.3-4)
IV. Memory Design: Memory Hierarchy, Cache Memory, Secondary Memory (Ch.5)
V. Storage Systems and Input/Output (Ch.7)
VI. Vector Computers (App.G)
|
|
Control Systems
The
Textbook: C.
T. Chen, Linear
Systems Theory and Design, Oxford,
1999.
The
objective of this course is to
provide a basic understanding of linear systems and the methodologies that are used to analyze and model such systems. Provide the necessary background for advanced material in systems, control and communications.
|
|
VLSI Design
The
course cover basic theory and techniques of VLSI
design in CMOS technology.
Lecture topics include: CMOS devices and
circuits, fabrication process, chip layout,
combinational and sequential logic, static and
dynamic logic structures, simulation and
testing, system-level design, interconnect,
timing issues, memory design, and design
methodologies. Use of semi-custom design
techniques for random logic and finite state
machine synthesis, and full-custom design for
regular structures such as data-path and memory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|