PREVIOUS UP NEXT CONTENTS

School of Computing Courses

The number and title of each course is followed by the number of semester hours it carries, the semester(s) during which it is taught (F=fall, S=spring, U=summer), its prerequisites, its corequisites, and any courses with which it is cross-listed.

Where a course has both a 5000- and 6000-level number, the 5000-level version is intended for undergraduate and the 6000-level version for graduate students. The two versions of the class will meet together, but extra work will be expected of graduate students.

Current class schedules and registration information are available on line.

1000 Engineering Computing (3, FS) Coreq: CS 1010, MATH 1210.

An introduction to the use of widely available software tools to solve computational problems in science and engineering. Introductions to numerical and symbolic programming using Maple, and to procedural programming using C. Elementary numerical methods. Emphasis on the entire process of solving problems from science and engineering via computational means.

1010 Introduction to Unix (0.5, FSU)

An introduction to the Unix workstations used in the College of Engineering CADE Lab. Topics include the X Windows system, Unix shell commands, file system issues, text editing with Emacs, accessing the World Wide Web with Netscape, and electronic mail. Self-paced course using online teaching aids.

1020 Introduction to Programming with C++ (3, U)

An introduction to essential programming concepts using C++. This course is more slowly paced and has much less depth than either CS 1000 (an introductory programming course designed for science and engineering majors) or CS 2010 (an introductory programming course designed for computer science and electrical engineering students).

1021 Introduction to Programming with Java (3, FU)

An introduction to essential programming concepts using Java. This course is more slowly paced and has much less depth than either CS 1000 (an introductory programming course designed for science and engineering majors) or CS 2010 (an introductory programming course designed for computer science and electrical engineering students).

2010 Introduction to Computer Science I (4, FS) Coreq: MATH 1210, CS 1010.

The first course required for students intending to major in computer science and computer engineering. Introduction to the engineering and mathematical skills required to effectively program computers, and to the range of issues confronted by computer scientists. Roles of procedural and data abstraction in decomposing programs into manageable pieces. Introduction to object-oriented programming. Extensive programming exercises that involve the application of elementary software engineering techniques.

2020 Introduction to Computer Science II (4, SU) Prereq: CS 2010.

The second course required for students intending to major in computer science and computer engineering. Introduction to the problem of engineering computational efficiency into programs. Classical algorithms (including sorting, searching, and graph traversal) and data structures (including stacks, queues, linked lists, trees, hash tables, and graphs). Analysis of program space and time requirements. Extensive programming exercises that require the application of elementary techniques from software engineering.

2100 Discrete Structures (2, F) Prereq: CS 2010.

Introduction to propostional logic, predicate logic, formal logical arguments, finite sets, functions, relations, inductive proofs, recurrence relations, graphs, and their applications to Computer Science.

3100 Models of Computation (3, S) Prereq: CS 2020, 2100.

Introduction to the mathematical underpinnings of computer science. Methods for describing and reasoning about hardware and software, including predicate logic, recursion, induction, and combinatorics. Models of sequential computation, including finite-state automata, push-down automata, and Turing machines.

3200 Scientific Computation (3, F) Prereq: CS 2020, MATH 2250.

Scientific computation relevant to computer science and engineering; 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).

3500 Software Practice (4, F) Prereq: CS 2020.

Practical exposure to the process of creating large software systems, including requirements specifications, design, implementation, testing, and maintenance. Emphasis on software process, software tools (debuggers, profilers, source code repositories, test harnesses), software engineering techniques (time management, code and documentation standards, source code management, object-oriented analysis and design), and team development practice. Much of the work will be in groups and will involve modifying preexisting software systems.

3510 Advanced Algorithms and Data Structures (3, S) Prereq: CS 2100, CS 3500.

Study of algorithms, data structures, and complexity analysis beyond the introductory treatment from CS 2020. Balanced trees, heaps, hash tables, string matching, graph algorithms, external sorting and searching. Dynamic programming, exhaustive search. Space and time complexity, derivation and solution of recurrence relations, complexity hierarchies, reducibility, NP completeness.

3520 Programming Language Concepts (3, F) Prereq: CS 3510.

Ideas behind the design and implementation of programming languages. Syntactic description; scope and lifetime of variables; runtime stack organization; parsing and abstract syntax; semantic issues; type systems; programming paradigms; interpreters and compilers.

3700 Fundamentals of Digital System Design (4, S) Prereq: CS 2010, PHYCS 2220. Crosslisted with EE 3700.

Techniques for minimizing logic functions and designing common combinational circuits such as decoders, selectors, and adders. Synchronous and asynchronous sequential circuits, state diagrams, Mealy and Moore circuits, state minimization and assignment. Use of software tools for design, minimization, simulation, and schematic capture. Implementation with MSI, LSI, and field programmable gate arrays. Laboratory included.

3710 Computer Design Laboratory (3, F) Prereq: CS/EE 3700, CS/EE 3810. Crosslisted with EE 3710.

Student groups design, build, and test a programmable device such as a computer or calculator.

3720 Analog & Digital Interfacing with Microprocessors & Microcontrollers (4, S) Prereq: CS/EE 3700. Crosslisted with EE 3720.

Fundamentals of digital-to-analog (D-to-A) and analog-to-digital (A-to-D) circuits, relays, stepper motors, and digital switches. Interfacing digital and analog circuits to computers and micro-controllers. Laboratory included.

3810 Computer Architecture (4, F) Prereq: CS 2020. Crosslisted with EE 3810.

An in-depth study of computer architecture and design, from digital logic to operating systems, including topics such as pipelining, memory systems, parallel and serial communication, and interrupts. Performance measures and compilation issues. Computer architectures including RISC, CISC, stack, and parallel.

4500 Software Engineering Laboratory (3, S) Prereq: CS 3510 or CS 4510, senior standing in CS.

Development of significant software systems by small student groups, with emphasis on applying sound, disciplined software engineering practice.

4510 Software Engineering (3, F) Prereq: Senior standing in CS.

Fundamentals of software engineering, including requirements, specifications, design, implementation, testing, and maintenance. Emphasis includes: software process, software engineering techniques (code and documentation standards, source code management, object-oriented analysis and design), and team development practice. (This course will be offered during Fall 1999 and will then be discontinued. It is intended for students who completed the CS 354-355-356 sequence under quarters; CS 3500 and CS 4510 may not both be taken for credit.)

4710 Computer Engineering Senior Project (3, F) Prereq: CS/EE 3710, CS/EE 3720. Crosslisted with EE 4710.

Students design microcomputer system that includes RAM, EPROM, and I/O devices. Capstone project for computer engineering majors. Formal written reports, one or more oral presentations. (Not offered Fall 1999.)

4950 Independent Study (Arr.)

4960 Special Topics (Arr.)

The following special topics courses are currently scheduled for the 1999-2000 academic year. Contact the faculty member in charge for details.

4970 Bachelor's Thesis (3) Prereq: Permission of instructor, senior standing in CS.

Only students who have previously worked with a faculty member in a research group may register for Bachelor's Thesis credit, and then only with the permission of the faculty member. An undergraduate thesis is a publication-quality description of work done in previous semesters. At a minimum a thesis must be published as a technical report; ideally, it should be submitted to a conference or journal. A Bachelor's Thesis is intended as an alternative to the senior Software Engineering Laboratory for students who are headed for graduate school.

4999 Honors Thesis/Project (3) Prereq: Restricted to students in the Honors Program working on their Honors degree.

5010 Software Practice (4, F) Prereq: CS 2020 and permission of instructor.

This course is for graduate students from departments other than Computer Science. Practical exposure to the process of creating large software systems, including requirements specifications, design, implementation, testing, and maintenance. Emphasis on software process, software tools (debuggers, profilers, source code repositories, test harnesses), software engineering techniques (time management, code and documentation standards, source code management, object-oriented analysis and design), and team development practice. Much of the work will be in groups and will involve modifying preexisting software systems.

5020 Advanced Algorithms and Data Structures (3, S) Prereq: CS 5010 and permission of instructor.

This course is for graduate students from departments other than Computer Science. Study of algorithms, data structures, and complexity analysis beyond the introductory treatment from CS 2020. Balanced trees, heaps, hash tables, string matching, graph algorithms, external sorting and searching. Dynamic programming, exhaustive search. Space and time complexity, derivation and solution of recurrence relations, complexity hierarchies, reducibility, NP completeness.

5100/6100 Foundations of Computer Science (3, F) Prereq: CS 3100, CS 3510.

Advanced examination of fundamental ideas behind algorithms, complexity analysis, mathematical logics, elementary computability, and concurrency formalisms.

5210/6210 Advanced Scientific Computing I (3) Prereq: CS 3200, CS 3510, MATH 3160.

An introduction to existing classical and modern numerical methods and their algorithmic development and efficient implementation. Topics include: numerical linear algebra, interpolation, approximation methods and parallel computation methods for nonlinear equations, ordinary differential equations, and partial differential equations. (Offered every third semeser; next scheduled offering Fall 2000.)

5300/6300 Artificial Intelligence (3, F) Prereq: CS 3510.

Introduction to field of artificial intelligence, including heuristic programming, problem-solving, search, theorem proving, question answering, machine learning, pattern recognition, game playing, robotics, computer vision.

5310/6310 Robotics (3, F) Prereq: CS 1000, MATH 2250, PHYCS 2220. Crosslisted with ME 5220/6220.

The mechanics of robots, comprising kinematics, dynamics, and trajectories. Planar, spherical, and spatial transformations and displacements. Representing orientation: Euler angles, angle-axis, and quaternions. Velocity and acceleration: the Jacobian and screw theory. Inverse kinematics: solvability and singularities. Trajectory planning: joint interpolation and Cartesian trajectories. Statics of serial chain mechanisms. Inertial parameters, Newton-Euler equations, D'Alembert's principle. Recursive forward and inverse dynamics.

5320/6320 Computer Vision (3, S) Prereq: CS 3510, MATH 2210, MATH 2270.

Basic pattern-recognition and image-analysis techniques, low-level representation, intrinsic images, ``shape from'' methods, segmentation, texture and motion analysis, and representation of 2-D and 3-D shape.

5340/6340 Natural Language Processing (3, S) Prereq: CS 3510; CS 5300/6300 recommended.

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 include story understanding, fact extraction, and information retrieval.

5350/6350 Machine Learning (3, F) Prereq: CS 3510; CS 5300/6300 recommended.

Techniques for developing computer systems that can acquire new knowledge automatically or adapt their behavior over time. Topics include concept learning, decision trees, evaluation functions, clustering methods, explanation-based learning, language learning, cognitive learning architectures, connectionist methods, reinforcement learning, genetic algorithms, hybrid methods, and discovery. (Offered alternate years; next scheduled offering Fall 1999.)

5460 Operating Systems (3, F) Prereq: CS 3510, CS/EE 3810.

Characteristics, objectives, and issues concerning computer operating systems. Hardware/software interactions, process management, memory management, protection, synchronization, resource allocation, file systems, security, and distributed systems. Extensive systems programming.

5470 Compiler Principles and Techniques (3, S) Prereq: CS 3510, CS/EE 3810, CS 3100.

Lexical analysis, top-down and bottom-up parsing, symbol tables, internal forms and intermediate languages, runtime environments, code generation, code optimization, semantic specifications, error detection and recovery. Use of software tools for lexical analysis and parsing.

5480/6480 Data Communications and Networks (3, F) Prereq: CS 3510, CS/EE 3810.

A comprehensive study of the principles and practices of data communication and networks. Topics include: transmission media, data encoding, local and wide area networking architectures, internetwork and transport protocols (e.g., IPv4, IPv6, TCP, UDP, RPC, SMTP), networking infrastructure (e.g., routers, nameservers, gateways), network management, distributed applications, network security, and electronic commerce. Principles are put into practice via a number of programming projects.

5530/6530 Database Systems (3, F) Prereq: CS 3510.

Representing information about real world enterprises using important data models including the entity-relationship, relational and object-oriented approaches. Database design criteria, including normalization and integrity constraints. Implementation techniques using commercial database management system software. Selected advanced topics such as distributed, temporal, active, and multi-media databases.

5540/6540 Human/Computer Interaction (3, F) Prereq: CS 3510.

Fundamentals of input/output devices, user interfaces, and human factors in the context of designing interactive applications. (Not offered Fall 1999.)

5600/6600 Computer Graphics I (3, F) Prereq: CS 3510, MATH 2250.

Basic display techniques, display devices, vector generation, display processors. Homogeneous coordinates, transformations, and clipping in 2-D. Graphics systems, interactive graphics. Introduction to raster graphics. Some elements of photography as related to computer graphics.

5610/6610 Computer Graphics II (3, S) Prereq: CS 5600/6600.

Representations of 3-D objects, polygons, 3-D 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.

5630/6630 Scientific Visualization (3) Prereq: CS 3510; CS 3200 or CS 5210 or MATH 5600.

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. (Offered every third semester; next scheduled offering Spring 2000.)

5710/6710 Advanced Integrated Circuit Design I (3, F) Prereq: CS/EE 3700. Crosslisted with EE 5710/6710.

Introduction to basic concepts of the design of CMOS integrated circuits for students with a wide range of backgrounds. Static and dynamic properties of CMOS circuits, composite layout of CMOS circuits, and modeling of transistors for use in SPICE simulations. Commonly encountered CMOS circuits. Introduction to CMOS analog/digital circuits. Students complete design, composite layout, and digitization of a simple integrated circuit using computer-aided design tools.

5720/6720 Advanced Integrated Circuit Design II (3, S) Prereq: CS/EE 5710/6710, EE 2100. Crosslisted with EE 5720/6720.

Design of mixed signal (analog/digital) CMOS integrated circuits. Fundamental building blocks for analog circuits, including the basic principles of opamp, current mirror and comparator design. Basics of discrete-time signals and filters. Implementation of switched capacitor circuits and discussions of various implementations of D/A and A/D converters, oversampled converters and phase locked loops.

5740/6740 Computer-Aided Design of Digital Circuits (3, F) Prereq: CS/EE 3700, CS 3510. Crosslisted with EE 5740/6740.

Introduction to theory algorithms used for computer-aided synthesis of digital integrated circuits. Topics include algorithms and representations for Boolean optimization, hardware modeling, combination logic optimization, sequential logic optimization and technology mapping. (Offered alternate years; next scheduled offering Fall 2000.)

5750/6750 Synthesis and Verification of Asynchronous VLSI Systems (3, S) Prereq: CS/EE 3700, CS 3510. Crosslisted with EE 5750/6750

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. (Offered alternate years; next scheduled offering Spring 2000.)

5810/6810 Advanced Computer Architecture (3, F) Prereq: CS/EE 3700, CS/EE 3810. Crosslisted with EE 5810/6810.

Principles of modern high performance computer and micro architecture: static vs. dynamic issues, pipelining, control and data hazards, branch prediction and correlation, cache structure and policies, cost-performance and physical complexity analyses.

5830/6830 VLSI Architecture (3, S) Prereq: CS/EE 3710, CS/EE 3810.

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. (Offered alternate years; next scheduled offering Spring 2001.)

5940 Seminar (1-3)

Current topics in computer science. May be repeated for credit.

5950 Independent Study (Arr.)

5960-5964 Special Topics (Arr.)

The following special topics courses are currently scheduled for the 1999-2000 academic year. Contact the faculty member in charge for details.

6010 Writing Research Proposals (2, S)

Fundamental aspects of writing computer science research proposals, including thesis, dissertation, and grant proposals. Form, style, substance, and marketing of effective proposals will be considered. Emphasis is placed on developing and presenting clear and compelling ideas. Substantial writing and class presentations is required of all participants. (This is a half-semester course.)

6020 Writing Research Papers (2, S)

This course involves the presentation of research that has been published (or accepted for publication) to the department. The student must give a one-hour presentation of the research in the paper to the entire department (preferably in a colloquium slot). It must be taken as soon as possible following acceptance of the paper for publication. May only be taken once for credit, and must be taken in the first three years of graduate school.

6110 Formal Methods for System Design (3, S) Prereq: CS 5100/6100 and CS 6520.

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 automated theorem proving. Examples selected from the areas of superscalar CPU design, parallel processor memory models, and synchronization and coordination protocols. (Offered alternate years; next scheduled offering Fall 1999.)

6220 Advanced Scientific Computing II (3) Prereq: CS 5210/6210 or MATH 5600.

A study of the numerical solution of two and three dimensional partial differential equations that 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. (Offered every third semester; next scheduled offering Fall 1999.)

6360 Virtual Reality (3, S) Prereq: CS 5310/6310.

Human interfaces: visual, auditory, haptic, and locomotory displays; position tracking and mapping. Computer hardware and software for the generation of virtual environments. Networking and communications. Telerobotics: remote manipulators and vehicles, low-level control, supervisory control, and real-time architectures. Applications: manufacturing, medicine, hazardous environments, and training. (Offered alternate years; next scheduled offering Spring 2001.)

6520 Programming Languages and Semantics (3, S) Prereq: CS 3520.

Examination of the formal and pragmatic ideas behind programming language design. Imperative, functional, logic, object-oriented, and multi-paradigm languages. Lambda calculus, fixpoints, type systems, and predicate logic. Denotational semantics and models of concurrency.

6620 Image Synthesis (3, S) Prereq: CS 5610/6610, CS 6670 MATH 5010.

Using camera and sensor simulation along with physical simulation to generate realistic synthetic images. (Offered alternate years; next scheduled offering Spring 2000.)

6670 Computer-Aided Geometric Design I (3, F) Prereq: MATH 2210, MATH 2250, CS 3510; Coreq: CS 5600/6600.

6680 Computer-Aided Geometric Design II (3, S) Prereq: CS 6670.

Introduction to current concepts and issues in CAGD systems with emphasis on free- form surface design; mathematics of free-form curve and surface representations, including Coons patches, Bezier method, B-splines, triangular interpolants, and their geometric consequences; classical surface geometry; local and global design tradeoffs and explicit and parametric tradeoffs; subdivision and refinement as techniques in modeling; current production capabilities compared to advanced research. Laboratory experiments with current CAD systems. (Offered alternate years; next scheduled offering 2000-2001 academic year.)

6770 Advanced Digital VLSI Systems Design (3, S) Prereq: CS/EE 5710/6710. Crosslisted with EE 6770.

Full custom, high speed, high performance CMOS circuit design issues, methodologies, and techniques. Failure modes, modeling techniques, testing, clock skew analysis, clock distribution, power analysis, power line distribution, electrical rules checking, megacell design flow, and other important design issues.

6820 Parallel Computer Architecture (3, S) Prereq: CS/EE 5810/6810. Crosslisted with EE 6820.

Architecture, design, and analysis of parallel computer systems: vector processing, data vs. control concurrency, shared memory, message passing, communication fabrics, case studies of current high performance parallel systems. (Offered alternate years; next scheduled offering Spring 2001.)

6930-6944 Seminar (1-3)

Current topics in Computer Science. May be repeated for credit.

6950 Independent Study (Arr.)

6960-6964 Special Topics (Arr.)

The following special topics courses are currently scheduled for the 1999-2000 academic year. Contact the faculty member in charge for details.

6970 Masters Thesis Research (Arr.)

6980 Faculty Consultation Masters (Arr.)

7120 Information-Based Complexity (3, S) Prereq: CS 3200, MATH 2270, MATH 3210.

Analysis of optimal computational methods for continuous problems. Introduction to the general worst case theory of optimal algorithms, linear problems, and spline algorithms as well as selected nonlinear problems. Examples include optimal integration, approximation, nonlinear zero finding, and fixed points. (Offered alternate years; next scheduled offering Spring 2000.)

7240 Sinc Methods (3) Prereq: CS 5210/6210 or MATH 5600 or MATH 5610.

Sinc methods for solving difficult computational problems, such as partial differential and integral equation problems, that arise in science and engineering research. Emphasis on parallel computation. Applications vary, depending on participants in the class. Students are given projects--whenever possible in their areas of research--that lead to publishable research articles. (Offered alternate years; next scheduled offering Spring 2000.)

7310 Advanced Robotics (3, S) Prereq: CS/ME 5310/6310 5220/6220. Crosslisted with ME 7230.

This course covers the kinematics, dynamics, and control of robotic manipulators. Projects controlling robots will be an integral part of the course. (Offered alternate years; next scheduled offering Spring 2000.)

7460 Advanced Operating Systems (3) Prereq: CS 5460/6460, CS 5480/6480.

Practical distributed operating systems concepts from basics through the state of the art. Topics include interprocess communication, client-server systems, distributed shared memory, distributed file systems, distributed databases, portable computing, software fault tolerance, and wide-area (e.g. web) applications. Work includes individual oral presentations, a group project, and a written research report. (Offered alternate years; next scheduled offering Spring 2000.)

7970 PhD Dissertation Research (Arr.)

7980 Faculty Consultation PhD (Arr.)

7990 Continuing Registration: Ph.D. (Arr.)


PREVIOUS UP NEXT CONTENTS


Department of Computer Science Departmental Handbooks