John Wiederhold's Classes


Computer and Information Systems

Computer Engineering


CMP12A - Introduction to Programming

An introductory programming course where students learn programming and documentation skills, as well as software design methodologies. Introduces students to computers, compilers, and editors, and they are expected to write medium-sized programs. Topics include, but are not limited to procedures and functions, conditionals and loop control structures, static and dynamic memory manipulations, and text processing.

Prior experience with Athena/UNIX helpful, and some prior programming experience strongly recommended (such as course 1, 2, or Computer Engineering 3). This course is required for computer engineering and computer and information sciences. (General Education Code: IN.) A. Pang, C. McDowell


CMP12B - Introduction to Data Structures

Teaches students to implement common data structures and the associated algorithms with each data structure, through progressively difficult exercises. Topics include big "O" notation; pointers, recursion (induction), and dynamic allocation; linked lists and list processing; stacks, queues, binary trees and binary search trees; simple sorting techniques and simple search techniques. ANSI C programming is introduced. Prior experience with Athena/UNIX is assumed.

Prerequisite: course 12A. Enrollment limited to 150. (General Education Code: IN.) The Staff


CMP101 - Abstract Data Types

Focuses on the notions of abstract data types, and the distinction between an abstract data type and an implementation of that data type. Common algorithms associated with particular implementations of each abstract data type are discussed, together with their complexity analysis using asymptotic (big "O") notation. The covered abstract data types and implementations include: priority queues, dictionaries, disjoint sets, heaps, balanced trees, and hashing. Topics include sorting and searching techniques, basic graph algorithms, and algorithm design techniques. The course includes several programming assignments which assume familiarity with ANSI C and UNIX.

Prerequisites: course 12B, Computer Engineering 16, Mathematics 11B or 11G, and Mathematics 12 or 17. Enrollment limited to 150. A. Van Gelder, D. Helmbold


CMP104A - Fundamentals of Compiler Design I

An introduction to the basic techniques used in compiler design. Topics include compiler structure, symbol tables, regular expressions and languages, finite automata, lexical analysis, context-free languages, LL(1), recursive descent, LALR(1), and LR(1) parsing; and attribute grammars as a model of syntax-directed translation. Students use compiler building tools to construct a working compiler.

Prerequisites: course 101 and Computer Engineering 12C. W. Dai


CMP109 - Advanced Programming

An introduction to object-oriented techniques of programming using the C++ language. Extensive practice using a computer to solve problems, including a variety of data- structure algorithms.

Prerequisite: course 12A or 60N; Note: courses 12A or 60N taken prior to spring 1994 would not adequately prepare a student for 109; in this case some programming experience with C is required. C. McDowell


CMP111 - Introduction to Operating Systems

Fundamental principles of operating systems: process synchronization, deadlocks, memory management, resource allocation, scheduling, storage systems, and study of several operating systems. A major programming project will be required.

Prerequisites: courses 101 and Computer Engineering 12C. C. McDowell, D. Long


CMPE12C - Introduction to Computer Organization

Introduction to organization of computer systems, system software, and machine-level programming. Processor organization, instruction sets; memory organization, addressing; machine data structures; number representation; compilers, interpreters, assemblers, debuggers, linkers, loaders. Examples of different computer systems. A study of assembly language, including extensive programming assignments on a microcomputer. Includes two- hour laboratory, a supportive sequence of experiments related to the lecture material.

Prerequisite: Computer and Information Sciences 12A. A. Brandwajn, J. Garcia-Luna


CMPE16 - Applied Discrete Mathematics

An introduction to applications of discrete mathematical systems. Topics include sets, functions, relations, partial orders, graphs, trees, switching algebra, first order predicate calculus, mathematical induction, permutations, combinations, summation, and recurrences. Examples are drawn from computer science and computer engineering.

M. Schlag, T. Larrabee


CMPE100 - Logic Design

Boolean algebra, logic minimization, finite state machine design, sequential circuits, common logic elements, programmable logic devices, and an introduction to system level design. The electrical behavior of circuits including open-collector and three state outputs, propagation delay, logic levels, and fanout.

Prerequisite: course 16; previous or concurrent enrollment in course 100L required. J. Ferguson, T. Larrabee, The Staff


CMPE100L - Logic Design Laboratory

Laboratory sequence illustrating topics covered in course 100. One two-hour laboratory session per week. Weekly laboratory assignments which require the use of the oscilloscopes, TTL circuits, computer-aided design and simulation tools, and programmable logic.

Prerequisite: course 16; previous or concurrent enrollment in course 100 required. J. Ferguson, T. Larrabee, The Staff


CMPE108 - Probability Theory and Data Compression

Probabilities, random variables, information theory, Bernoulli trials, Markov models, statistical data compression, Huffman codes, arithmetic codes, run-length codes, Ziv-Lempel codes. Common distributions. Adaptation to the statistics of the data. Data context modeling, transform and predictive coding. Programming of data compression algorithms in the C language. Knowledge of C language and UNIX required.

Prerequisites: course 16, Computer and Information Sciences 12B, and Mathematics 11B. G. Langdon, Jr.


CMPE110 - Computer Architecture

High performance computer architecture, including examples of current approaches and the effect of technology and software. Instruction set design and RISC, cache and virtual memory, pipelining, SIMD (array and vector) processors, MIMD multiprocessors, interconnection schemes, performance.

Prerequisites: Mathematics 12 or 17 and course 12C. G. Langdon, Jr., J. Ferguson, R. Hughey


CMPE121 - Microprocessor System Design

The design and use of microprocessor-based systems. Covers microprocessor and microcontroller architecture, programming techniques, bus and memory organization, DMA, timing issues, interrupts, peripheral devices, serial and parallel communication, and interfacing to analog and digital systems. Offered in alternate quarters.

Prerequisites: courses 12C, 100, and 100L; previous or concurrent enrollment in course 121L required. J. Ferguson, R. Hughey, P. Chan


CMPE121L - Microprocessor System Design Laboratory

Laboratory sequence illustrating topics covered in course 121. One two-hour laboratory session per week. Students design, build, program, debug, document, and demonstrate a microprocessor-based system. Offered in alternate quarters.

Prerequisites: courses 12C, 100, and 100L; previous or concurrent enrollment in course 121 required. J. Ferguson, R. Hughey, P. Chan


CMPE123 - Advanced Microprocessor System Design

Students, alone or in teams of two or three, define a microprocessor-based design project which they implement. Class time is spent in technical discussions and ongoing design reviews. A formal presentation and demonstration of each project is required at the end of the quarter. Students must also concurrently enroll in course 123L.

Prerequisites: courses 121, 121L, 170, 170L, and 185; students enrolling concurrently in 185 need to request a permission code. J. Ferguson, P. Mantey, M. Schlag, P. Chan


CMPE123L - Advanced Microprocessor System Design Laboratory

Laboratory sequence illustrating topics in course 123. One 4-hour laboratory session per week. Students, alone or in teams of two or three, design, build, and operate a microprocessor-controlled project. The project involves software control and an analog interface to the environment. Students must concurrently enroll in course 123.

Prerequisites: courses 121, 121L, 170, 170L, and 185; students enrolling concurrently in 185 need to request a permission code. J. Ferguson, P. Mantey, M. Schlag, P. Chan


CMPE152 - Computer Networks

Addresses issues arising in organizing communications among autonomous computers. Network models and conceptual layers. Internetworking. Characteristics of transmission media. Switching techniques (packet switching, circuit switching, cell switching). Elements of probability theory as it applies to networks. Medium access control (MAC) protocols and local area networks. Error control strategies and link-level protocols. Routing algorithms for bridges and routers. Congestion control mechanisms. Transport protocols. Application of concepts to practical wireless and wireline networks and standard protocol architectures.

Prerequisites: course 100/100L and Computer and Information Sciences 101. A. Varma, J. Garcia-Luna


CMPE170 - Circuits, Devices, and Systems

Introduction to the physical basis and mathematical models of electrical components and circuits. Circuit theorems. Constant and sinusoidal inputs. Natural and forced response of linear circuits. Introduction to circuit/network design, maximum power transfer, analog filters, system compensation. Elementary electronics: devices, linear models, amplifiers, feedback. Nonlinear elements and devices.

Prerequisites: Physics 5C and 5N or 6C and 6N, and Mathematics 14 or 17; previous or concurrent enrollment in course 170L required. P. Mantey, The Staff


CMPE170L - Circuits, Devices, and Systems Laboratory

Laboratory sequence illustrating topics covered in course 170. One two-hour laboratory session per week.

Prerequisites: Physics 5C and 5N or 6C and 6N, and Mathematics 14 or 17; previous or concurrent enrollment in course 170 required. P. Mantey, The Staff


CMPE172 - Linear and Nonlinear Circuits

Kirchhoff's laws. Tellegen's theorem. Linear and nonlinear resistive elements. Linear, nonlinear, passive, and active circuits. First- and second-order linear and nonlinear dynamic circuits (including switching, triggering, and memory circuits). General network analysis. Sinusoidal steady-state analysis. Laplace transform. Natural frequencies and network functions such as poles, zeros, stability, and convolution. Sparse tableau analysis and modified nodal analysis. Introduction to numerical methods for computer aided analysis: Gaussian Elimination and LU decomposition, Newton-Raphson algorithm, forward and backward Euler method and Trapezoidal method.

Prerequisites: courses 170 and 170L; previous or concurrent enrollment in course 172L required. W. Dai, P. Mantey


CMPE172L - Linear and Nonlinear Circuits Laboratory

Laboratory sequence illustrating topics covered in course 172, mainly using circuit simulators such as SPICE. One two-hour laboratory session per week.

Prerequisites: courses 170 and 170L; previous or concurrent enrollment in course 172 required. W. Dai, P. Mantey


CMPE185 - Technical Writing for Computer Engineers

Writing by engineers and computer scientists, not to general audiences, but to engineers, engineering managers, and technical writers. Exercises include job application and resume, in-code documentation, algorithm description, naive-user documentation, library puzzle, survey article, proposal, progress report, formal technical report, and oral presentation. Ability to read Pascal or C is assumed. Courses such as Computer and Information Sciences 12A or 60G or 60N are sufficient and recommended for students lacking Pascal or C reading ability.

Prerequisites: satisfaction of C (composition) general education requirement; course 16 or Computer and Information Sciences 12B. Enrollment limited to 45. (General Education Code: W.) K. Karplus, T. Larrabee


Last modified 20 December, 1995 (04:24:25 PM).