CPE-COMPUTER
ENGINEERING -- 2003-05 Catalog
Computer Engineering Program
CPE
100 Computer Engineering Orientation
(1) (CR/NC)
Introduction
to the computer engineering discipline. Success skills and curricular
information. Career paths and opportunities. Professional aspects of
engineering and computer science. Interaction with upper division students,
alumni, faculty and staff. Introduction to computer software and hardware.
Credit/No Credit grading only. 1 lecture.
CPE
101 Fundamentals of Computer Science I
(4)
(Also
listed as CSC 101)
Basic
principles of algorithmic problem solving and programming using methods of
top-down design, stepwise refinement and procedural abstraction. Basic control
structures, data types, and input/output. Introduction to the software
development process: design, implementation, testing and documentation. The
syntax and semantics of a modern programming language. 3 lectures, 1
laboratory. Prerequisite: MATH 118 (or equivalent) with a grade of C- or
better, and basic computer literacy (CSC 100 or CSC 111 or equivalent).
CPE
102 Fundamentals of Computer Science II
(4)
(Also listed as CSC 102)
Basic
design, implementation, testing, and documentation of object-oriented software.
Introduction to classes, interfaces, inheritance, algorithms (sort, search,
recursion), data structures, abstract data types (lists, stacks, queues), file
I/O, exceptions, and graphical user interfaces. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 101 with a C- grade or better and either MATH 141 or MATH
221 with a C- grade or better.
CPE
103 Fundamentals of Computer Science
III (4)
(Also listed as CSC 103)
Continuation
of material from CPE 102: abstract data types specification and implementation,
the analysis of algorithms and the software development process. Introduction
to a specific high level design notation. Recursive algorithms. Software design
case studies and practice. Software testing and program verification. 3
lectures, 1 laboratory. Prerequisite: CPE 102 with a C- grade or better and CSC
141 with a C- grade or better.
CPE
109 Accelerated Introduction to
Computer Science (5) (Also listed as CSC 109)
Accelerated
coverage of the material in CPE 101, CPE 102, and CPE 103. 4 lectures, 1
activity. Corequisite: CSC 141, significant background in computer science, and
consent of instructor.
CPE
129 Digital Design (3) (Also listed as
EE 129)
Number
systems, Boolean algebra, Boolean functions, and minimization. Analysis and
design of combinational logic circuits. Feedback circuits. Analysis and design
of sequential logic circuits. Applying Hardware Description Language (HDL) to
synthesize digital logic circuits in Programmable Logic Devices (PLDs). 3
lectures. Prerequisite: An orientation course in student’s major (EE 111/151
for EE students, CPE/CSC 101 for CPE students), CPE/CSC 101. Concurrent: CPE
169.
CPE
169 Digital Design Laboratory (1) (Also
listed as EE 169)
Experiments
to analyze and design combinational and sequential logic circuits with discrete
ICs and PLDs. Introduction to laboratory equipment such as the logic state
analyzer for testing circuits. Introduction to a hardware description language
for logic simulation and design. 1 laboratory. Prerequisite: An orientation
course in student’s major (EE 111/151 for EE students, CPE/CSC 101 for CPE
students), CPE/CSC 101. Concurrent: CPE 129.
CPE
200 Special Problems for Undergraduates
(1–2)
Individual
investigation, research, studies, or surveys of selected problems. Total credit
limited to 4 units, with a maximum of 2 units per quarter. Prerequisite:
Consent of CPE Director.
CPE
205 Software Engineering I (4) (Also
listed as CSC 205)
Introduction
to the software lifecycle. Methods and tools for the analysis, design, and
specification of large software systems. Project planning, documentation,
communication, and time/cost estimates. Group laboratory project. Graphical
User Interface Design. Technical presentation methods. Software design case
studies. 3 lectures, 1 laboratory. Prerequisite: CPE/CSC 103 with a grade of C-
or better or CPE/CSC 109 and CSC 141, with a grade of C- or better.
CPE
206 Software Engineering II (4) (Also
listed as CSC 206)
Continuation
of the software lifecycle. Methods and tools for the implementation,
integration, testing and maintenance of large software systems. Software
development and test environments. Software quality assurance. Group laboratory
project. Technical presentation methods and practice. 3 lectures, 1 laboratory.
Prerequisite: CPE/CSC 205.
CPE
229 Computer Design and Assembly
Language Programming (3) (Also listed
as EE 229)
Design
and implementation of digital computer circuits via CAD tools for programmable
logic devices (PLDS). Basic computer design with its data path components and
control unit. Introduction to assembly language programming of an off-the-shelf
RISC-based microcontroller. 3 lectures. Prerequisite: CPE 129/169. Concurrent:
CPE 269.
CPE
250 Systems Programming (4) (Also
listed as CSC 250)
C
programming language from a system programming perspective. Standard C language
including operators, I/O functions, and data types in the context of system
functions. Unix commands, shell scripting, file system, editors. 3 lectures, 1
laboratory. Prerequisite: CSC/CPE 103 or CSC/CPE 109, EE/CPE 229.
CPE
269 Computer Design and Assembly
Language Programming Laboratory (1) (Also listed as EE 269)
Experiments
to design and test digital computer circuits and systems with programmable
logic devices (PLDs). Design projects to implement a basic computer with data
path components and control. Assembly language programming projects for an
off-the-shelf RISC-based microcontroller. 1 laboratory. Prerequisite: CPE 129/169.
Concurrent: CPE 229.
CPE
270 Computer Graphics Applications (4)
(Also listed as CSC 270)
Use
of common graphics applications packages. Business graphics, figure editing,
animation and image editing, photorealistic image generation, scientific visualization
and multimedia. 2 lectures, 2 activities.
CPE
305 Individual Software Design and
Development (4)
(Also listed as CSC 305)
Practical
software development skills needed for construction of mid-sized
production-quality software modules, using the CSC upper division programming
language. Topics include inheritance, exceptions, and memory and disk-based
dynamic data structures. Students must complete an individual programming
project of mid-level complexity. 3 lectures, 1 laboratory. Prerequisite:
CSC/CPE 103.
CPE
315 Computer Architecture (4) (Also
listed as CSC 315)
In-depth
study of the instruction set architecture and hardware design of a specific
CPU. Introduction to pipelines, input/output and multi-processors. Computer
abstractions and performance measurement. 3 lectures, 1 laboratory.
Prerequisite: CPE 103, CPE 229.
CPE
316 Micro Controllers and Embedded
Applications (4) (Also listed as CSC 316)
Introduction
to micro controllers and their applications as embedded devices. Hardware/software
tradeoffs, micro controller selection, use of on-chip peripherals, interrupt
driven real-time operation, A/D conversion, serial and parallel communications,
watch-dog timers, low power operation and assembly language programming
techniques. 3 lectures, 1 laboratory. Prerequisite: CPE/CSC 315 or CPE/EE 329.
CPE
329 Programmable Logic and
Microprocessor-Based Systems Design (4) (Also listed as EE 329)
Design, implementation and testing of programmable
logic microproces-sor-based systems. Hardware/software tradeoffs (such as
timing analysis and power considerations), system economics of programmable
logic and microprocessor-based system design. Interfacing hardware components
(such as ADCs/DACs, sensors, transducers). 3 lectures, 1 laboratory. Prerequisite:
EE 307/347.
CPE
336 Microprocessor System Design (4)
(Also listed as EE 336)
Introduction
to microcontrollers and integrated microprocessor systems. Emphasis on the
Intel 8051 and Motorola 68HC11 families and derivatives. Hardware/software
trade-offs, system economics, and functional configurations. Interface design,
real-time clocks, interrupts, A/D conversion, serial and parallel
communications, watch-dog timers, low power operation, and assembly language
programming techniques. Architecture and design of sampled data and digital
control systems. Case studies of representative applications. 3 lectures, 1
laboratory. Prerequisite: CPE/EE 129/169.
CPE
350 CPE Capstone Preparation (1)
Definition
and specification of a system to be constructed in CPE 450; requirements
elicitation techniques, research and data gathering methods; project planning,
time and budget estimating; project team organization. Ethics and
professionalism. 1 laboratory. Prerequisite: CPE/EE 329 and CPE/CSC 316; either
or both may be concurrent.
CPE
353 Systems Programming for Software
Engineers (4)
(Also listed as CSC 353)
Introduction
to assembly language and C programming; use of linkers and loaders; I/O and
systems level programming; interrupt handlers. Technical elective credit not
allowed for CSC/CPE majors. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE
103.
CPE
365 Introduction to Database Systems
(4)
(Also listed as CSC 365)
Basic
principles of database management systems (DBMS) and of DBMS application
development. DBMS objectives, systems architecture, database models with
emphasis on Entity-Relationship and Relational models, data definition and
manipulation languages, the Structured Query Language (SQL), database design,
application development tools. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE
103.
CPE
366 Database Modeling, Design and Implementation
(4) (Also listed as CSC 366)
The
database modeling problem. Database modeling levels: external, conceptual,
logical and physical. Database models: entity-relationship, relational,
object-oriented, semantic, and object-relational. Normal forms. Distributed
database design. Functional analysis of database applications and transaction
specification, design, and implementation. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 365.
CPE
369 Distributed Computing I (4) (Also
listed as CSC 369)
Introduction
to distributed computing paradigms and protocols: interprocess communications,
group communications, the client-server model, distributed objects, and
Internet protocols. Emphasis on distributed software above the operating system
and network layers. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103.
CPE
400 Special Problems for Advanced
Undergraduates (1–2)
Individual
investigation, research, studies, or surveys of selected problems. Total credit
limited to 4 units, with a maximum of 2 units per quarter. Prerequisite:
Consent of CPE coordinator.
CPE
402 Software Requirements Engineering
(4)
(Also listed as CSC 402)
Software
requirements elicitation, analysis and documentation. Team process
infrastructure and resource estimation to support appropriate levels of
quality. Software architectural design. 3 lectures, 1 laboratory. Prerequisite:
CPE/CSC 206, CPE/CSC 305.
CPE
405 Software Construction (4) (Also listed as CSC 405)
Design
and construction of sizeable software products. Technical management of
software development teams. Software development process models, software design, documentation,
quality assurance during development, software unit and integration testing;
CASE tools, development environments, test tools, configuration management. 3
lectures, 1 laboratory. Prerequisite: CPE/CSC 402.
CPE
406 Software Deployment (4) (Also
listed as CSC 406)
Deployment
of a sizeable software product by a student team. Software maintenance and
deployment economic issues. Management of deployed software: version control,
defect tracking and technical support. 3 lectures, 1 laboratory. Prerequisite:
CPE/CSC 405.
CPE
415 Microcomputer Systems (4)
Recent
advances in microcomputer architectures. RISC, parallel processing advances,
and component communication. 3 lectures, 1 laboratory. Prerequisite: CPE 316.
CPE
427 Digital Computer Subsystems (3)
(Also listed as EE 427)
Design
of components and subsystems in digital computers. Use of modern techniques and
devices (CPLDs and FPGAs) in implementation. Consideration given to cost/speed
tradeoffs. Implementation of a basic digital computer using pre-designed
subsystems. 3 lectures. Prerequisite: EE 307/347. Concurrent: CPE/EE 467.
CPE
430 Programming Languages II (4) (Also
listed as CSC 430)
Regular
languages and finite automata. Table-driven lexical analysis. Recognition of
reserved words. Symbol table construction. Parsing: top-down (LL) and bottom-up
(LR). Table-driven versus recursive descent parsing. Context-free languages and
pushdown automata. 3 lectures, 1 laboratory. Prerequisite: CSC 330 and CSC 445.
CPE
431 Programming Languages III (4) (Also
listed as CSC 431)
Intermediate
translation forms. Runtime representations. Generation of object code by
compilers. Local optimization: constant propagation, folding, common
subexpression removal. Global optimization, invariant code removal, operator
strength reduction. Register allocation. 3 lectures, 1 laboratory. Prerequisite:
CPE 430.
CPE
434 Compilers – Hardware/Software
Interface (4)
(Also listed as CSC 434)
Block
structured programming languages, their design and implementation via
retargetable compilers, with emphasis on code generation for a variety of
contemporary computer architectures. 3 lectures, 1 laboratory. Prerequisite:
CPE 205 and CPE 315.
CPE
435 Introduction to Object Oriented
Design Using Graphical User Interfaces (4) (Also listed as CSC 435)
Principles
of object-oriented design, with emphasis on use of these principles in the
design of graphical interfaces. Comparison and contrasting of two major
object-oriented languages and their corresponding GUI class libraries.
Language-independent object-oriented design methods, and application of these
methods in the construction of a GUI-based project. 3 lectures, 1 laboratory.
Prerequisite: CPE 103 or equivalent and CPE 305.
CPE
438 Digital Computer Systems (3) (Also
listed as EE 438)
Design
of computer ALU's, microprogram controllers, memory systems, and I/0
controllers. Use of LSI components in CPU design. Microprogram and nanoprogram
development. 3 lectures. Prerequisite: CPE 427 or consent of instructor.
CPE
439 Computer Peripheral Interfacing (3)
(Also listed as EE 439)
Design
of the more common computer peripherals with the emphasis on the controller and
interfacing aspects. Use of microprocessors and/or LSI controller chips in the
design of intelligent peripherals. 3 lectures. Prerequisite: CPE/EE 329, or
consent of instructor.
CPE
448 Bioinformatics Algorithms (4) (Also
listed as CSC 448)
Introduction
to the use of computers to solve problems in molecular biology. The algorithms,
languages, and databases important in determining and analyzing nucleic and
protein sequences and their structure. 3 lectures, 1 laboratory. Prerequisite:
Consent of instructor or the following: CSC/CPE 103 or BIO 447 and senior
standing.
CPE
450 CPE Capstone Project (4)
Team-based
design, construction and deployment of an embedded system that includes a
custom-built computer. Technical management of product development teams.
Technical documentation, configuration management, quality assurance,
integration and systems testing. Professionalism. 3 lectures, 1 laboratory.
Prerequisite: CPE 350.
CPE
453 Introduction to Operating Systems
(4)
(Also listed as CSC 453)
Introduction
to sequential and multiprogramming operating systems; kernel calls, interrupt
service mechanisms, scheduling, files and protection mechanisms, conventional
machine attributes that apply to operating system implementation, virtual
memory management, and I/O control systems. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 315 and either CSC/CPE 250 or CSC/CPE 353.
CPE
454 Implementation of Operating Systems
(4)
(Also listed as CSC 454)
Design
and implementation of multiprogramming kernels, systems programming
methodology, interprocess communications, synchronization, device drivers and
network access methods. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 453.
CPE
459 Real-Time Systems (4) (Also listed
as CSC 459)
Analysis
and synthesis of robust real-time systems including embedded systems, real-time
architectures, and programming, parallel processing, specification techniques,
algorithms for guaranteeing stringent timing constraints. Understanding of the
trade-offs between robustness and response times of time-critical systems. 3
lectures, 1 laboratory. Prerequisite: CSC/CPE 315.
CPE
461, 462 Senior Project (3) (2)
Selection
and completion of an individual or team project in laboratory environment.
Project results are presented in a formal report. CPE 461: 3 laboratories. CPE
462: 2 laboratories. Prerequisite: CPE 450.
CPE
464 Introduction to Computer Networks
(4)
(Also listed as CSC 464)
Computer
network architectures; communications protocol standards; services provided by
the network; historical and current examples presented. 3 lectures, 1
laboratory. Prerequisite: CSC/CPE 250 and CSC/CPE 315.
CPE
465 Advanced Computer Networks (4)
(Also listed as CSC 465)
Advanced
topics in computer networks; greater detail of protocol standards and services
provided by the network; focus on current industry and research topics. 3
lectures, 1 laboratory. Prerequisite: CSC/CPE 464 and CSC/CPE 453.
CPE
467 Digital Computer Subsystems
Laboratory (1)
(Also listed as EE 467)
Introduction
to industrial grade CAD tools. Design and implementation of digital computer
subsystems using SPLDs, CPLDs, and FPGAs. 1 laboratory. Prerequisite: CPE/EE
307/347. Concurrent: CPE/EE 427.
CPE
468 Database Management Systems
Implementation (4)
(Also listed as CSC 468)
Data
structures and algorithms used in the implementation of database systems.
Implementation of data and transaction managers: access methods interfaces,
concurrency control and recovery, query processors and optimizers. Introduction
to implementation of distributed database systems. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 365.
CPE
469 Distributed Computing II (4) (Also
listed as CSC 469)
Continued
exploration of topics in distributed computing in greater depth, with emphasis
on object-based and component-based software development. Introduction to
fault-tolerance and distributed algorithms. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 369.
CPE
470 Selected Advanced Topics (1–4)
Directed
group study of selected topics for advanced students. Open to undergraduate and
graduate students. Class schedule will list topic selected. Total credit
limited to 8 units. 1 to 4 lectures. Prerequisite: Consent of instructor.
CPE
471 Introduction to Computer Graphics
(4)
(Also listed as CSC 471)
Graphics
hardware and primitives. Modeling and rendering, geometric transforms,
hidden-surface removal, the graphics pipeline, scan-conversion and graphics
applications. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 205 or CSC/CPE
250.
CPE
473 Advanced Rendering Techniques (4)
(Also listed as CSC 473)
Illumination
models, reflectance, absorption, emittance, Gouraud shading, Phong shading,
raytracing polyhedra and other modeling primitives, coherence, acceleration methods,
radiosity, form factors, advanced algorithms. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 471.
CPE
474 Computer Animation (4) (Also listed
as CSC 474)
Basic
and advanced algorithms for generating sequences of synthetic images.
Interpolation in time and space, procedural and keyframe animation, particle
systems, dynamics and inverse kinematics, morphing and video. 3 lectures, 1
laboratory. Prerequisite: CSC/CPE 471.
CPE
475 Multimedia Tool Development (4)
(Also listed as CSC 475)
Algorithms
and techniques for creating multimedia applications. Topics include audio and
video compression techniques, multimedia network architectures, synchronization
of audio and video, multimedia toolkits, user interfaces and file systems. 3
lectures, 1 laboratory. Prerequisite: CSC/CPE 471.
CPE
477 Computer Vision (4) (Also listed as
CSC 477)
Fundamental
issues in computer vision. Convolution, edge detection and image segmentation.
Pattern classification methods and neural networks. Stereoscopic vision and
optical flow. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 and MATH 206.
CPE
480 Artificial Intelligence (4) (Also
listed as CSC 480)
Programs
and techniques that characterize artificial intelligence. Programming in a high
level language. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 and CSC
141.
CPE
481 Knowledge Based Systems (4) (Also
listed as CSC 481)
In-depth
treatment of knowledge representation, utilization and acquisition in a
programming environment. Emphasis on the use of domain-specific knowledge to
obtain expert performance in programs. 3 lectures, 1 laboratory. Prerequisite:
CSC/CPE 480.
CPE
484 User-Centered Interface Design and
Development (4)
(Also listed as CSC 484)
Introduction
to the importance of user-centered principles in the design of good interfaces
and effective human-computer interaction. Topics include: study of human
characteristics affected by interface design, effective requirements data
collection and analysis, user-centered approaches to software engineering, and
evaluation of interface and interaction quality. 3 lectures, 1 laboratory.
Prerequisite: Junior standing and CSC/CPE 205.
CPE
485 Cooperative Education Experience
(6) (CR/NC)
Part-time
work experience in business, industry, government, and other areas of student
career interest. Positions are paid and usually require relocation and
registration in course for two consecutive quarters. Formal report and
evaluation by work supervisor required. Credit/No Credit grading only. Total
credit limited to 16 units. Prerequisite: Sophomore standing and consent of
instructor.
CPE
487 Graphical User Interface Systems
(4)
(Also listed as CSC 487)
Further
study of graphical user interface (GUI) programming systems. Structure of tools
and underlying systems to build such interfaces. Human factors including
considerations of good and bad interfaces. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 435.
CPE
488 Performance Analysis (4) (Also
listed as CSC 488)
Statistical
and mathematical techniques for modeling and analyzing the performance of
computer and communication systems. Tools and techniques for measuring
performance of operational systems. Theory and methodologies for the design,
procurement and evaluation of systems. Introduction to elementary concepts of discrete
event simulation. 3 lectures, 1 laboratory. Prerequisite: STAT 321 or consent
of instructor.
CPE
495 Cooperative Education Experience
(12) (CR/NC)
Full-time
work experience in business, industry, government, and other areas of student
career interest. Positions are paid and usually require relocation and
registration in course for two consecutive quarters. Formal report and
evaluation by work supervisor required. Credit/No Credit grading only. Total
credit limited to 16 units. Prerequisite: Sophomore standing and consent of
instructor.
CPE
520 Computer Architecture (4) (Also
listed as CSC 520)
Comparative
study and design of multiprocessor, dataflow, RISC, high level language and
other new computer architectures. VLSI processor design techniques. 3 seminars,
1 laboratory. Prerequisite: CPE 315 and graduate standing, or consent of
instructor.
CPE
564 Computer Networks: Research Topics
(4)
(Also listed as CSC 564)
Exploration
of advanced topics in emerging computer networking technologies; focus on
leading edge computer network research topics. 3 lectures, 1 laboratory.
Prerequisite: CSC/CPE 464 and graduate standing, or consent of instructor.
CPE
580 Artificial Intelligence (4) (Also
listed as CSC 580)
Current
research in the field of artificial intelligence with emphasis on cooperative
agents, distributed agents, and decision making in complex, concurrent
environments. AI programming in a distributed environment. 3 lectures, 1
laboratory. Prerequisite: CPE 481.