# Computer Engineering

CE 303. Linear Systems (Discrete) — (3 units)

*Prerequisite: EE 309 Linear Systems (Continuous).*

Analysis of discrete systems with discrete inputs, Z-transform and Fourier analysis, convolution and state variable techniques.

CE 420. Digital Circuit Design — (4 units: 3 guided instruction/1 lab)

*Prerequisites: EE 309 Linear Systems (Continuous), EE 310 Electronics I.*

Non-linear devices and their input-output relationships, design of memory elements and logic gates, design techniques, e.g. TTL, PMOS, CMOS, DTL, etc., introduction to VLSI.

CE 430. Computer Design — (3 units)

*Prerequisite: ENGR 307 Introduction to Logic Design.*

General-purpose digital computers, hardware modules, control and arithmetic units, computer organization, and introduction to fault analysis.

CE 440. Microprocessor Systems Design — (4 units: 3 guided instruction/1 lab)

*Prerequisite: ENGR 307 Introduction to Logic Design.*

Introduction to the architecture, hardware, and software of a variety of microprocessors, including advanced RISC microprocessors. Major emphasis is a design project. The course will present microprocessor architecture, memory hierarchy, and pipelining. The Intel 80X86 and Motorola 68000 processors will be covered with emphasis on addressing modes and instruction sets. Various RISC processors will also be covered.

CE 504. Knowledge-Based Systems — (3 units)

*Prerequisites: ENGR 307 Introduction to Logic Design, EE 415 Analysis of Probabilistic Systems or consent of instructor, Ability to program in C, C++ or any other computer programming language.
*This course covers the study and use of knowledge-based systems from an applied approach. Cognitive science and formal logic are highlighted throughout. The course starts with an overview of intelligent systems and concludes with a hands-on intelligent system created as a class product. This course will address knowledge-based systems technology that involves fuzzy systems theory, neural network theory, artificial intelligence principles, and expert system development methodologies.

CE 505. Discrete Communication Systems — (3 units)

*Prerequisites: Graduate Standing, working knowledge of CE 303 Linear Systems (Discrete) or equivalent.*

The course consists of random processes, information sources and source coding, analog signal transmission and reception, digital transmission through an additive white Gaussian noise (AWGN) channel, digital PAM transmission through bandlimited AWGN channels, digital transmission via carrier modulation, channel capacity and coding, and spread-spectrum communication systems.

CE 506. Digital Systems Structure — (3 units)

*Prerequisite: Graduate standing.*

Design of various components of a modern digital computer, e.g. Adders, Subtractors, Multipliers, etc., ICs, arithmetic algorithms.

CE 507. Random Processes — (3 units)

*Prerequisites: Graduate Standing, EE 415 Analysis of Probabilistic Systems.*

This course introduces random variables and processes, ergodicity, stationary, spectra of random processes, estimation, filtering and prediction of systems to engineers and scientists. Appropriate emphasis on data analysis, statistical computations and applications of engineering will be stressed in the course.

CE 508. Switching Theory I — (3 units)

*Prerequisites: Graduate Standing, ENGR 307 Introduction to Logic Design.*

Switching functions and their design, arrays and coding schemes, multiple value logic.

CE 509. Switching Theory II — (3 units)

*Prerequisite: CE 508 Switching Theory I.*

Advanced topics in continuation of Switching Theory I, reliability, hazards, synchronization, etc.

CE 510. Fault Tolerant Systems — (3 units)

*Prerequisites: Graduate standing and at least two graduate/senior level courses in digital electronics and CE 508 Switching Theory I.
*Testing for testability of digital systems, diagnostic tests and remedies for sequential logic, examples.

CE 511. Microprocessor Applications — (3 units)

*Prerequisites: Graduate Standing, a senior-level course in microprocessors.*

Microprocessor based systems, design and development of system architecture and peripherals.

CE 512. Verilog HDL — (3 units)

*Prerequisites: Graduate Standing, ENGR 307 Introduction to Logic Design, a course in sequential logic design, CE 430 Computer Design*

Introduction to Hardware Description Languages (HDLs). Comparison of HDLs. History of Verilog HDL. Verilog language elements: identifiers, data types. Verilog expressions: operands, operators. Gate level modeling using built-in primitives. Creating user-defined primitives. Verilog design using the following modeling constructs: data flow modeling, behavioral modeling, and structural modeling. Combinational logic design using Verilog modeling constructs. Sequential logic design (including state machines) using Verilog modeling constructs. Verification of designs using test benches for simulation. Analyzing simulation waveforms and binary output. The best way to learn Verilog is to design modules and then simulate them; therefore, there will be ten homework assignments, seven laboratories, and one CPU design project. The project will use a pipelined RISC architecture. All will be done using the Verilog simulator.

CE 530. Advanced Computer Design — (3 units)

*Prerequisite: ENGR 307 Introduction to Logic Design or equivalent, Graduate Standing.*

The course presents a contemporary approach to Computer Design. The student will study systems architecture, computer organization, logic unit operation, computer arithmetic and pipelining.