Computer Engineering Course Description

CENG2010 Digital Logic Design Laboratory

This course aims at providing an intensive hands-on introduction to digital system design using a hardware description language (e.g. VHDL). Students will learn how to design, simulate and debug digital systems through lab exercises. Topics include the basic language syntax, signals/variables/constants declaration, data types, basic operators, concurrent and sequential statements, and structural modelings.
Prerequisite: ELEG2201 or ENGG2020 or equivalent


CENG2440/ESTR2100 Embedded System Design

This course introduces the techniques for building embedded systems such as the use of microprocessors, interfacing memory systems and timing control of digital signals. It also discusses peripheral input/output interfacing methods such as: timer, serial and parallel interfaces, analog-to-digital conversion, polling, interrupt and device driver developments. Assembly language programming will also be introduced: concepts of addressing modes, data manipulation, control flow instructions, programme linkage and relation to high level languages.
Prerequisite: ENGG2020 or 2120


CENG3150 Principles of System Software

Virtual machines. System supports for programme execution: micro-kernels, interrupts and synchronizations, interprocess communications, memory management, protection, portability, fault tolerance techniques and device drivers. Multi-processor system support.
Prerequisite: CSCI2100 or 2520. For 2nd-year entrants, the prerequisite will be waived.


CENG3420 Computer Organization and Design

This course introduces the organization and design of modem computer systems. The scope includes instruction set architecture, performance evaluation, design of arithmetic logic units, datapath and control, pipelining, memory hierarchy, interfacing processors and peripherals, and multi-core processors.
Prerequisite: ENGG2020 or 2120. For 2nd-year entrants, the prerequisite will be waived.
Exclusion: CSCI3420


CENG3430/ESTR3100 Rapid Prototyping of Digital Systems

This course introduces digital prototyping techniques such as the use of a hardware description language for hardware system development, and the methods for interfacing field programmable devices to memory systems and microprocessors. Techniques to build reliable digital systems in the presence of power supply variation, high frequency effects, transmission line effects and noise are also discussed.
Prerequisite: CSCI2510 or ENGG2020 or 2120 or equivalent. For 2nd-year entrants, the prerequisite will be waived.


CENG3470 Digital Circuits

This course examines the issues involved in designing and analysing digital circuits in CMOS technology. Topics include fabrication process, usage of SPICE, transfer characteristics, noise margin, loading effect, propagation delay, fanout analysis, transient current, power dissipation, bistable circuits and memories. A brief introduction to VLSI circuits is also included.
Prerequisite: ENGG2020 and ELEG2110. For 2nd-year entrants, the prerequisite will be waived.


CENG3490 VLSI Design

This course teaches techniques in designing and analysing VLSI circuits. Topics include design rules, layout fundamentals, switch-level simulation, charge sharing, static and dynamic logics, propagation-delay estimates, power considerations, data-path organization, clocking schemes, synchronizers, asynchronous circuits, pads, systolic computation, silicon compiler, high-level synthesis and hardware description languages. Students will design complete IC's using both simple hand-layout programmes and CAD tools.
Prerequisite: CENG3470


CENG4100 Smartphones : Hardware Platform & Application Development

This course teaches the hardware platform and software development of smartphones. The scope includes: (i). Hardware architecture of smartphones, including their key components such as mobile processor, touch screen, graphics, battery, and various sensors; (ii). Application development on smartphones; (iii) Low-power hardware/software design techniques.
Prerequisite: CENG3420 or CSCI3420


CENG4480 Embedded System Development and Applications

This course aims at enhancing students¡¦ skills in developing embedded systems. Advanced techniques in the use of real-time operating systems, interfacing, integration and applications of sensors and actuators for signal analysis and control will be discussed. Project development methods and management skills will be introduced.
Prerequisite: CENG2440 or equivalent. For 2nd-year entrants, the prerequisite will be waived.
Exclusion: CENG3480


CENG5030 Energy Efficient Computing

Low power consumption is an important design concern in modern computing systems. It has direct impact on the battery life of mobile electronic equipment and on the operating speed of computing devices. This course aims at introducing students the basic concepts and modern techniques in designing, modeling and evaluating energy-efficient computing systems. This course will study techniques to improve energy consumption at various design levels will also study representative research papers to introduce the state of the art approaches to energy efficient computing.
Prerequisite: ENGG2020 or ESTR2104 or CENG3420


CENG5050 Hardware for Human Machine Interface

This course teaches topics in designing hardware for human machine interface. Principles and applications of sensors like pressure, light, sound, motion and electromagnetic transducers are introduced. Computer interfacing techniques for signal sampling, amplification, filtering, classification and interpretation are also discussed. Design examples may include Electroencephalography (EEG) signal analysis, human motion capturing, music signal interpretation and production. Functioning and control of actuators will also be studied.
Prerequisite: CENG2440 or ESTR2100


CENG5270 EDA for Physical Design of Digital Systems

This course aims to present the fundamental concepts and algorithms applied in Design Automation (CAD) of VLSI circuits. The scope will include various areas in Physical Design of digital systems, including circuit partitioning, FPGA technology mapping, floorplanning, placement, routing, compaction and interconnect optimization.
Prerequisite: CSCI2100 or ENGG2020 or ESTR2102 or ESTR2104


CENG5271 EDA for Logic Design of Digital Systems

The scope of this course focuses on logic design of digital systems. Fundamental theory and techniques applied in logic synthesis of Electronic Design Automation (VLSI CAD) process are introduced. Topics include advanced Boolean algebra, related graph and BDD algorithms, two-level (SOP) and multi-level (Boolean networks) logic representations and optimization, sequential logic optimization, retiming, rewiring, FPGA design flow, etc. Hands on experience on the Berkeley ESPRESSO/SIS/ABC platform will be learned through class exercises.
Prerequisite: CSCI2100 and ENGG2020
Exclusion: CENG5330


CENG5410/ENGG5101 Advanced Computer Architecture

This course is designed to present an overview of some advanced computer architectures and their underlying design principles. Issues discussed will include scalability and performance evaluation. The underlying technologies such as processor and memory hierarchy, cache and shared memory, and advanced pipelining techniques will be presented. Examples of high performance vector processors, multicomputers and massive parallel processors will be compared. Some novel architectures such as VLIW, fault tolerant systems and data flow machines will also be elaborated.
Prerequisite: CSCI3420
Course Exclusion(s): CMSC5708


CENG5420 Computer Arithmetic Hardware

This course aims at introducing the fundamental theories and core techniques for speeding up the computer arithmetic operation. Topics include: signed number representation, redundant/residue number system, fast adder designs, high-radix multipliers, tree/array multipliers, high-radix dividers, division by convergence, floating point arithmetic, square-root computation, CORDIC algorithm, arithmetic by table lookup, low-power arithmetic, fault-tolerant arithmetic.
Prerequisite: ENGG2020 or ESTR2104 or CENG3420


CENG5430 Architectures and Algorithms for Parallel Processing

This course aims at introducing the architectures and algorithms developed for parallel processing. Topics include: (I) models and complexity of parallel processing, shared-memory algorithms, circuit modeling of parallel systems, (II) sorting and routing algorithms for 2D mesh, torus, hypercubes, and other networks; (III) coordination, data access and system robustness issues; (IV) implementation aspects on shared-memory MIMD, message-passing MIMD, and data-parallel SIMD machines.
Prerequisite: ENGG2020 or ESTR2104 or CENG3420


CENG5440 Network-on-Clips for Many-Core Systems

This course aims to introduce the concept of networks-on-chip and provide in-depth evaluations for various design approaches and related applications. Traditional communication architectures, such as buses or wires, fail to support the increasing traffic demand and power utilization. How to connect individual cores or devices, and how to provide efficient communication between the cores become critical challenges. This course mainly focuses on interconnect networks design, which aims to transfer the maximum amount of information within the time, cost and power consumption, so as not to bottleneck the many-core system. The course will also provide in-depth exploration on current on-chip network researches. These include, optical on-chip communication, wireless/RF and surface-wave transmission, and design methods for 3-D on-chip networks. Impacts of the newly introduced interconnects, operation efficiency of many-core, memories and overall systems will be discussed and evaluated as well.
Prerequisite: CSCI3420 or CENG3420