| PREVIOUS | UP | NEXT | CONTENTS |
Current class schedules and registration information are available on line.
An introduction to the use of a variety of widely available software tools to solve problems in science and engineering. Symbolic computation using Maple, introduction to procedural programming using C or Fortran. Emphasis on hands-on experimentation. Examples drawn from disciplines of science and engineering.
An introduction for non-majors to programming using the high-level language FORTRAN. Emphasis on laboratory practice and structured problem-solving techniques. (Not offered 1997-98.)
An introduction for non-majors to programming using the high-level language C++. Emphasis on laboratory practice and structured problem-solving techniques.
An introduction to the Unix operating system in a workstation environment. Topics include the X Windows system, Unix shell commands, file system issues, text editing with Emacs, electronic mail, and filters and pipes. Emphasis on hands-on laboratory practice.
An introduction for non-majors to programming using the high-level language C. Emphasis on laboratory practice and structured problem-solving techniques. This class is not recommended for students with no previous experience in high level language programming.
The first course required for students intending to major in computer science. Students should have programming experience in a language such as Pascal or C. An introduction to the engineering skills required to effectively program computers and to the range of issues confronted by computer scientists. The role of procedural abstraction and data abstraction in decomposing programs into manageable pieces. Extensive programming exercises in C++.
The second course required for students intending to major in computer science. An introduction to the problem of engineering computational efficiency into programs. Classical algorithms (including sorting and searching) and data structures (including stacks, queues, linked lists, sets, trees, and graphs). Analysis of program space and time requirements. Extensive programming exercises in C++.
An introduction to formal logical arguments, finite sets, relations, functions, graphs, semi-groups, groups, elementary Boolean logic, and their applications to Computer Science. Elementary logic.
Data-structure implementation concepts; memory management; abstract datatypes; execution-time measurement and analysis; sorting algorithms; relationship between choice of data structures and implementation efficiency of set and graph algorithms; derivation and solution of recurrence relations; algorithm design principles; reducibility among problem classes. Laboratory exercises.
Syntax and semantics of programming languages. Use of a language with higher-order procedures as a descriptive and interpretive base for studying semantic issues. Laboratory exercises.
Detailed examination of object-oriented (O-O) programming language concepts including abstract data types, visibility control, subclasses, dynamic function binding, static type checking, single and multiple inheritance, templates, and exceptions. Software engineering methodologies, including O-O design, abstract classes, and O-O software reuse and re-engineering. Current topics in O-O systems, such as framework-based libraries and O-O databases. Programming practice with C++.
Number representations, Boolean algebra, minimization of logic functions, design of combinational circuits and arithmetic circuits, design of synchronous sequential circuits and finite state machines, state minimization and assignment, system timing disciplines and asynchronous sequential circuits. Includes a two-hour laboratory that is scheduled during the first week of class.
An in-depth two-quarter study of computer architecture and design. Performance measures, parallel and serial communication, hardwired and microprogrammed control. Computer organizations including stack architectures, RISC machines, register issues, memory systems, and parallel processors. Hardware-software interface organization including operating system issues, interrupts, and compilation issues. CS362 includes a two-hour laboratory that is scheduled during the first week of class.
Laboratory for Computer Engineering students to be taken in conjunction with CS 363. Class is project-oriented with groups of students designing, building and testing a programmable device such as a computer or a calculator.
Study of a software engineering process for producing high quality software with increased productivity. Techniques for preventing the introduction of defects during software development.
Survey of scientific computation relevant to Computer Science, Chemical Engineering and Engineering in general. Topics covered include floating point arithmetic, systems of linear equations (direct and iterative techniques), nonlinear equations (univariate and multivariate), interpolation and differentiation (divided differences), integration (mechanical and Gaussian quadratures, optimal quadratures), approximation by spline functions (natural splines and B-splines, optimality of splines).
Introductory concepts in 3D including vector graphics, raster graphics and interactive methods. Laboratory stresses graphics environmental issues - operating systems, programming languages and realtime interaction. Use of graphics in Computer-Aided Design (CAD).
Basic techniques for generating computer models of mechanical parts. Solid primitive Modeling and sculptured surface modeling. Case studies using Modeling operations. Experience with standard geometric Modeling packages.
Course includes developing a computer graphics application package based on standard graphics functions as well as attributes of a graphical user interface. Experience in applying interactive computer graphics techniques to industrial problems.
All three classes must be completed to receive credit. This series of classes teaches the fundamentals of software engineering - system requirements definition, project planning, design, documentation, implementation, verification, validation, and maintenance. Classes are project-oriented with emphasis being placed on the development of significant software systems by small groups of programmers rather than by individuals.
The design of algorithms and data structures to efficiently solve common classes of programming problems. Introduction to the complexity analysis of algorithms. Laboratory exercises.
Functional, imperative, and object-oriented programming styles. The role of language design issues such as orthogonality, parameter passing mechanisms, and type systems in determining the character of a language. The role of abstraction in designing and understanding programs. Techniques for defining the meanings of programs. Laboratory exercises.
Introduction to object-oriented programming and its role in software engineering.
Survey of discrete mathematical concepts relevant to Computer Science. Sets, relations, functions, propositional calculus, predicate calculus, graphs, partial orders, equivalence relations. Finite state-machines, regular expressions, languages, grammars, Turing machines, partial recursive functions, and other simple computation models.
Characteristics, objectives and issues concerning computer operating systems. Process manipulation, synchronization, memory management, name management, protection, resource allocation, system Modeling, pragmatic issues.
Top-down and bottom-up parsing, lexical analyzers, symbol tables, internal forms and intermediate languages, code generation, code optimization, semantic specifications, error detection and recovery, comparison of methods. Use of software tools for lexical analysis and parsing.
Principles of data communications and networks, including data transmission, data encoding, low-level protocols such as HDLC, circuit and packet switching, local area networks, high-level protocols such as TCP/IP and X.25, applications protocols such as ftp and mail, and remote procedure calls.
Examination of three models of parallel programming: (i) coroutines (non-pre-emptively scheduled shared memory threads), (ii) asynchronously interleaved tasks (pre-emptively scheduled shared memory threads), and (iii) message-based distributed computing (non-shared memory multiprocessing). Study of appropriate abstractions, language constructs, and program development methodologies for each of the three models. Examination of three principal application areas: (i) discrete state simulation, with emphasis on object-oriented modeling, (ii) client-server paradigms, with emphasis on resource management by operating systems, and (iii) distributed simulation, with emphasis on deadlock avoidance and ``time warp'' methods. (Not offered 1997-98.)
Study of programming paradigms and the ideas behind modern programming languages. Functional, object-oriented, and logic programming. Lambda calculus, type systems, modularity, high-level control structures.
Graduate-level survey of algorithm design and analysis.
Modeling of real world structures and their mapping into relational, network, and hierarchic schemata; the design and implementation of database systems including integrity, security and concurrency control; programming experience on a commercial database system using both data definition and data manipulation languages. Coverage ranges from proven practical techniques to current research activities. (Not offered 1997-98.)
An introduction to algorithms and architectures for the solution of large scale computational problems in science and engineering. Topics include analysis of parallel algorithms including performance issues and scalability, models of parallel computers, basic communication operations, direct and iterative numerical algorithms, overview of individual high performance architectures, and the relationship between parallel algorithms and architectures. (Not offered 1997-98.)
An introduction to existing classical and modern numerical methods and their algorithmic development and efficient implementation. Topics include: numerical linear algebra, interpolation, approximation methods, parallel computation methods for nonlinear equations, ordinary differential equations, and partial differential equations.
A study of the numerical solution of two and three dimensional partial differential equations which arise in science and engineering problems. Topics include: finite difference methods, finite element methods, boundary element methods, multigrid methods, mesh generation, storage optimization methods, and adaptive methods.
An introduction to the techniques and tools needed for the visual display of data. Students will explore many aspects of visualization, using a ``from concepts to results'' format. The course begins with an overview of the important issues involved in visualization, continues through an overview of graphics tools relating to visualization, and ends with instruction in the utilization and customization of a variety of scientific visualization software packages.
Basic robotics, including, position and velocity sensing, actuators, control theory, robot coordinate systems, robot kinematics, differential motions and the Jacobian, path control, kinetics, force control and compliance, robot vision, multisensor integration and robot programming languages.
An introduction to the field of artificial intelligence, including selected topics from the following: heuristic programming, problem solving, search, theorem proving, question answering, machine learning, pattern recognition, game playing, robotics, computer vision, philosophical and social issues.
Computational models and methods for understanding written text. Introduction to syntactic analysis, semantic analysis, discourse analysis, knowledge structures, and memory organization. A variety of approaches are covered, including conceptual dependency theory, connectionist methods, and statistical techniques. Applications studied include information retrieval, machine translation, and speech recognition.
Basic pattern recognition techniques and image analysis techniques, including, low-level representation, intrinsic images, "shape from" methods, segmentation, texture analysis, motion analysis, and the representation of 2-D and 3-D shape.
Project-oriented class for the design of an LSI circuit using high level design tools. Use of high-level CAD tools such as PPL. Two-student teams design, lay out, and simulate a complete integrated circuit. Teams must conduct design reviews, give progress reports, and prepare final written reports. All projects must meet criteria for MOSIS tiny chips and are submitted for fabrication at MOSIS if students agree to test the parts when they are returned.
Introduction to basic concepts of the design of CMOS integrated circuits for students with a wide range of backgrounds. Static and dynamic properties of MOS circuits, composite layout of CMOS circuits, and modeling of transistors for use in SPICE simulations. Commonly encountered CMOS circuits. Students complete design, composite layout, and digitization of a simple integrated circuit using computer-aided design tools.
Advanced course on the fabrication and design of GaAs MESFET integrated circuits. Concepts for design using GaAs MESFETS rather than CMOS. Discussion of a number of GaAs MESFET logic families; detailed study of DCFL design. Traditional JFET models for the GaAs MESFET transistor; advanced models such as the Hyperbolic Tangent model. Noise margins in DCFL and SCFL circuits. Introduction to design concepts for GaAs Heterojunction Bipolar Transistor (HBT) circuits.
Laboratory course featuring testing of chips designed during CS 542 (autumn quarter) and fabricated at MOSIS (winter quarter). Operational details of the Tektronix LV500 tester leading to actual tests on student chips. Written report required.
Introduction to systematic methods for the design of asynchronous VLSI systems from high-level specifications to efficient, reliable circuit implementations. Topics include specification, controller synthesis, optimization using timing information, technology mapping, data path design, and verification.
Introduction to theory and algorithms used for computer-aided synthesis of digital integrated circuits. Topics include algorithms and representations for Boolean optimization, hardware modeling, combinational logic optimization, sequential logic optimization, and technology mapping.
Interfacing digital and analog circuits. Computer interfacing to PCs. Fundamentals of digital-to-analog (D-to-A) and analog-to-digital (A-to-D) circuits. Basic interfacing with relays, stepper motors, and digital switches.
Microprocessors and their interfaces, control logic design, memory devices, interrupt systems, DMA protocols, I/O systems. Cache memory systems, memory management units, digital signal processors, coprocessors, parallel processing systems, additional industry standards. This is a project class that involves the design of a microcomputer system that includes RAM, EPROM, and I/O devices. Formal written reports, as well as one or more oral presentations related to the project, are required.
Topics introduced in the 361-363 sequence are discussed in greater depth, as well as current research issues in computer architecture and machine organization. Topics include: Instruction set design and analysis, high-level language computer architecture, support for operating systems, interleaved memory systems and caches, pipelined systems, branch prediction strategies.
Hardware and architectural issues of parallel systems design and analysis. Array processors, associative processors, multiprocessors, systolic arrays, data flow computers, interconnection networks, scheduling techniques.
The z-transform; design of frequency selective, linear time-invariant filters using pole-zero placement; structures for implementing finite impulse response (FIR) and infinite impulse response (IIR) filters; discrete Fourier transform (DFT); fast algorithms for DFT and convolution; design of FIR and IIR filters.
Project-based study of a variety of topics related to VLSI systems. Use of field programmable gate arrays to design, implement, and test a VLSI project.
Current topics in computer science. Topics will be announced. The following offerings are scheduled for 1997-98. Contact the instructor for details.
573 Machine Learning (3) Qtr: S Prof. Riloff.
575 Computers and Law (Arr.) Qtr: S Prof. Hollaar.
575 Natural Language Processing (Arr.) Qtr: W Prof. Riloff.
577 High Performance Computer Architecture (Arr.) Qtr: W Prof.\ Davis.
579 Advanced Modeling and Manufacturing (4) Qtr: A Prof. Drake.
579 Legal Protection of Computer Software (3) Qtr: W Prof.\ Hollaar.
Special reading and/or projects. May be repeated for credit.
Current topics in computer science. Topics will be announced. May be repeated for credit.
Practical distributed operating systems concepts from basics through the state of the art. Topics include interprocessor communication, remote procedure call (RPC) systems, multicast primitives, distributed shared memory, distributed file systems, portable computing, software fault tolerance, distributed databases, and process checkpointing. Work includes individual oral presentations, a group project, and a written research report.
Properties of various classes of formal languages, the grammars which generate them, and the abstract machines which can accept them. Relevance to the syntactic structure and parsing of programming languages discussed. (Not offered 1997-98.)
Study of methods for formally specifying and verifying computing systems. Specific techniques include explicit state enumeration, implicit state enumeration, automated decision procedures for first-order logic, and modern theorem-proving techniques. Examples selected from the areas of superscalar CPU design, parallel processor memory models, various distributed (e.g. coherence) protocols, and security, all highly relevant to ongoing research in the Department of Computer Science.
Analysis of time and memory requirements of algorithms for sorting, set manipulation, graph analysis, matrix operations, arithmetic, Fourier transforms, and pattern matching. NP complete problems. Complexity hierarchies.
Kinematics, dynamics, and control of robots and prosthetic systems. Solving dynamics, inverse kinematics for linkage systems in real-time, control stratagems for robotic systems. Laboratory included.
Theory and algorithms used for computer-aided verification of
real-time hardware systems; strong emphasis on gaining experience with
existing verification tools. Topics include both finite and
-automata based methods, binary decision diagrams, and
real-time verification.
Basic display techniques, display devices, vector generation, display processors. Homogeneous coordinates, transformations and clipping in 2D. Graphics systems, interactive graphics. Introduction to raster graphics. Some elements of photography as related to computer graphics.
Representations of 3D objects, polygons, 3D visualization techniques, hidden line and hidden surface removal, polygon clipping, continuous tone pictures, color displays, lighting models, the aliasing problem. Some fundamentals of photographing computer generated gray-scale images.
A project course offering more detailed treatment of topics selected from those covered in CS 652. Study of most recent developments in computer graphics. Further photographic studies.
Introduction to current concepts and issues in CAGD systems with emphasis on freeform surface design concepts. Development of the mathematics of freeform curve and surface representations including Coons patches, Bezier method, B-splines, triangular interpolants, and their geometric consequences. Classical surface geometry. Issues such as local and global design tradeoffs and explicit and parametric tradeoffs are addressed. Subdivision and refinement as techniques in modeling. Understanding of current production capabilities as compared to advanced research is developed by laboratory experiments with current CAD systems.
Current topics in computer science. Topics will be announced. The following offerings are scheduled for 1997-98. Contact the instructor for details.
672 Virtual Environments and Teleoperation (3) Qtr: S Prof.\ Hollerbach.
673 Vision/Robotics Laboratory (Arr.) Qtr: S Prof. Thompson
673 Robot Calibration (Arr.) Qtr: W Prof. Hollerbach.
674 Computational and Numerical Methods for Inverse Problems (Arr.) Qtr: A Prof. Johnson.
Current topics in computer science. Topics will be announced. May be repeated for credit.
Special reading and/or projects. May be repeated for credit.
Current topics in computer science. Topics will be announced. May be repeated for credit.
Special reading and/or projects. May be repeated for credit.
| PREVIOUS | UP | NEXT | CONTENTS |