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.