PREVIOUS UP NEXT CONTENTS

Computer Science Courses

Current class schedules and registration information are available on line.

100 Engineering Computing (4) Qtr: AWS
Prereq: Math 111; Coreq: Physics 221, CS 110

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.

101 Programming with FORTRAN (3) Qtr: Su
Prereq: Math 106; Coreq: CS 110

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.)

102 Programming with C++ (3) Qtr: A
Preq: Math 105; Coreq: CS 110

An introduction for non-majors to programming using the high-level language C++. Emphasis on laboratory practice and structured problem-solving techniques.

110 Introduction to Unix (1) Qtr: AWSSu

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.

120 Programming with C (4) Qtr: Su
Prereq: Math 105, programming experience; Coreq: CS 110

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.

201 Introduction to Computer Science I (4) Qtr: AWS
Prereq: programming experience; Coreq: CS 110, Math 111

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++.

202 Introduction to Computer Science II (4) Qtr: WSSu
Prereq: CS 201

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++.

300 Discrete Structures (3) Qtr: A
Prereq: CS 202

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.

354 Software Fundamentals: Algorithms and Data Structures (4) Qtr: A
Prereq: CS 202 and proficiency in C++ programming

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.

355 Software Fundamentals: Programming Language Structure (4) Qtr: W
Prereq: CS 354

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.

356 Software Fundamentals: Object-Oriented Software Engineering (4) Qtr: S
Prereq: CS 355

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++.

361 Hardware Fundamentals: Digital Design (4) Qtr: A
Prereq: CS 202, Physics 222.

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.

362,363 Hardware Fundamentals: Computer Architecture and Design (4,3) Qtr: W,S
Prereq: CS 361

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.

367 Computer Design Laboratory (3) Qtr: S
Coreq: CS 363

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.

375 Defect Prevention Software Engineering (3) Qtr: A
Prereq: CS 202

Study of a software engineering process for producing high quality software with increased productivity. Techniques for preventing the introduction of defects during software development.

376 Scientific Computation (3) Qtr: A
Prereq: Math 252, CS 202

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).

431 Introduction to Computer Graphics (4) Qtr: A
Prereq: CS 356

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).

432 Computer-aided Geometric Modeling (4) Qtr: W
Prereq: CS 431

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.

433 Computer Graphics Applications Programming (4) Qtr: S
Prereq: CS 432

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.

451,452,453 Software Engineering Laboratory (3,3,3) Qtr: A,W,S
Prereq: CS 356, CS 363, Writing 301, standing as senior in CS Department

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.

501 Algorithm and Data Structure Design (4) Qtr: A
Prereq: Programming experience in C++ and permission of instructor. May be taken only by graduate students from other departments.

The design of algorithms and data structures to efficiently solve common classes of programming problems. Introduction to the complexity analysis of algorithms. Laboratory exercises.

502 Programming Language Concepts (4) Qtr: W
Prereq: CS 501 and permission of instructor. May be taken only by graduate students from other departments.

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.

503 Object-oriented Software Engineering (4) Qtr: S
Prereq: CS 502 and permission of instructor. May be taken only by graduate students from other departments.

Introduction to object-oriented programming and its role in software engineering.

505 Introduction to Theoretical Computer Science (3) Qtr: W
Prereq: CS 300 or graduate standing.

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.

506 Operating Systems (3) Qtr: A
Prereq: CS 356, CS 363

Characteristics, objectives and issues concerning computer operating systems. Process manipulation, synchronization, memory management, name management, protection, resource allocation, system Modeling, pragmatic issues.

507 Compiler Principles and Techniques (3) Qtr: S
Prereq: CS 355, CS 362, CS 505

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.

508 Data Communications and Networks (3) Qtr: W
Prereq: CS 354, CS 363

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.

509 Parallel Programming (3) Qtr: W
Prereq: CS 356 and Math 507, or consent of instructor

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.)

511 Programming Languages (4) Qtr: S
Prereq: CS 356, CS 505, CS 507 (CS 507 is a corequisite for graduate students)

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.

512 Algorithms (3) Qtr: S
Prereq: CS 354

Graduate-level survey of algorithm design and analysis.

513 Database Systems (4) Qtr: A
Prereq: CS 356

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.)

520 Architectures and Algorithms for Scientific Computing (3) Qtr: W
Prereq: CS 354, Math 353

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.)

521 Fundamentals of Scientific Computing (3) Qtr: A
Prereq: CS 354, Math 251, Math 252, or permission of instructor

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.

522 Advanced Methods in Scientific Computing (3) Qtr: W
Prereq: CS 521 or Math 560, Math 353

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.

523 Scientific Visualization (3) Qtr: S
Prereq: CS 354, Math 353.

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.

531 Introduction to Robotics (3) Qtr: A
Prereq: CS 202, Math 252

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.

533 Artificial Intelligence (3) Qtr: A
Prereq: CS 355 or consent of instructor

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.

534 Natural Language Processing (3) Qtr: W
Prereq: CS 356 or consent of instructor

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.

537 Introduction to Computer Vision (3) Qtr: W
Prereq: CS 356, Math 252

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.

542 Integrated Circuit Design Techniques (4) Qtr: A
Prereq: CS 363 or EE 221 or consent of instructor

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.

543 Fundamentals of Integrated Circuit Design (4) Qtr: W
Prereq: CS 542 or consent of instructor

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.

544 Advanced VLSI Theory and Design (3) Qtr: S
Prereq: CS 542 or consent of instructor

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.

545 Testing of Integrated Circuits (1) Qtr: S
Prereq: Receipt of a circuit from MOSIS or design during CS 542.

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.

547 Asychronous VLSI System Design (3) Qtr: A
Prereq: CS/EE 361 or consent of instructor. Cross-listed as EE 547.

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.

548 Computer Aided Design of Digital Circuits (3) Qtr: A
Prereq: CS/EE 361 and CS 354 or consent of instructor. Cross-listed as EE 548.

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.

550 Digital and Analog Interfaces (3) Qtr: A
Prereq: EE 230, CS/EE 361, CS/EE 362

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.

551,552 Microprocessor Design Laboratory (3,3) Qtr: W,S
Prereq: CS/EE 363, CS/EE 550

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.

561 Advanced Computer Organization (3) Qtr: A
Prereq: CS 363 (CS 506 and 507 recommended)

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.

562 Introduction to Parallel Computer Organization (3) Qtr: S
Prereq: CS 561

Hardware and architectural issues of parallel systems design and analysis. Array processors, associative processors, multiprocessors, systolic arrays, data flow computers, interconnection networks, scheduling techniques.

567 Digital Signal Processing (4) Qtr: A
Prereq: EE 323

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.

568 VLSI Architectures (3) Qtr: W
Prereq: CS 356, CS 367, CS 542

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.

570-579 Topics in Computer Science (Arr)
Prereq: Consent of instructor.

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.

590 Independent Study (Arr.)
Prereq: Consent of instructor

Special reading and/or projects. May be repeated for credit.

591-599 Seminar (Arr.)
Prereq: Consent of instructor

Current topics in computer science. Topics will be announced. May be repeated for credit.

606 Advanced Operating Systems (3) Qtr: W
Prereq: CS 506 (CS 508 strongly recommended)

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.

610 Formal Languages (4) Qtr: W
Prereq: CS 505, CS 507

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.)

611 Formal Methods for System Design (3) Qtr: A
Prereq: CS 505 (CS 511 recommended)

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.

612 Computational Complexity (3) Qtr: W
Prereq: CS 505

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.

628 Robot Dynamics and Control (4) Qtr: W
Prereq: CS 531; ME 521, 531, or equivalent. Cross-listed as ME 628.

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.

649 Real-Time Hardware Verification (3) Qtr: S
Prereq: CS/EE 363 and CS/EE 548 or consent of instructor. Cross-listed as EE 649.

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 tex2html_wrap_inline1796 -automata based methods, binary decision diagrams, and real-time verification.

651 Computer Graphics (3) Qtr: A
Prereq: CS 356, Math 252, linear algebra

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.

652 Computer Graphics (3) Qtr: W
Prereq: CS 651

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.

653 Computer Graphics (3) Qtr: S
Prereq: CS 652

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.

667,668,669 Computer-Aided Geometric Design (3,3,3) Qtr: A,W,S
Prereq: CS 453 or graduate standing; Coreq: CS 651 (for 667 only)

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.

670-679 Advanced Topics in Computer Science (Arr.)
Prereq: Consent of instructor.

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.

680-689 Seminar (Arr.)
Prereq: Consent of instructor

Current topics in computer science. Topics will be announced. May be repeated for credit.

690 Independent Study (Arr.)
Prereq: Consent of instructor

Special reading and/or projects. May be repeated for credit.

697 Thesis Research: Master's (Arr.)
Prereq: Consent of instructor

698 Research Consultation: Master's (3)
Prereq: Consent of instructor

780-789 Seminar (Arr.)
Prereq: Consent of instructor

Current topics in computer science. Topics will be announced. May be repeated for credit.

790 Independent Study (Arr.)
Prereq: Consent of instructor

Special reading and/or projects. May be repeated for credit.

797 Thesis Research: Ph.D. (Arr.)
Prereq: Consent of instructor

798 Research Consultation: Ph.D. (Arr.)
Prereq: Consent of instructor

799 Continuing Registration: Ph.D. (0)
Prereq: Consent of instructor


PREVIOUS UP NEXT CONTENTS

webmaster@cs.utah.edu