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.
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. (This course is half of
a semester in length, and is offered twice during the fall and spring
semesters and once during the summer.)
1020 Introduction to Programming (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).
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. 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. Selected
topics from discrete math that underlie computer science. Extensive
programming exercises that involve the application of elementary
software engineering techniques.
2020 Introduction to Computer Science II (4, FS) Prereq: CS 2010.
The second course required for students intending to major
in computer science. 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. Selected
topics from discrete math that underlie computer science. Extensive
programming exercises that require the application of elementary
techniques from software engineering. (Not offered Fall 1998.)
2030 Introduction to Computer Science III (2, F) Prereq: CS 202.
Material from the new CS 2010-CS 2020 sequence that
could not be covered in the old CS 201-CS 202 sequence. This will
include some elementary concepts from discrete math, some of the more
advanced data structures and algorithms, and algorithm analysis.
(This course will be offered once during the fall semester of 1998,
and it will not be taught thereafter. It must be taken by all new
Computer Science and Computer Engineering majors at that time.)
3100 Models of Computation (3, S) Prereq: CS 2020.
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. Models
of concurrent computation, including Petri nets and communicating
sequential processes.
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 Algorithms and Data Structures (3, S) Prereq: 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. (Not offered Fall 1998.)
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. (Not offered Fall 1998.)
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. (Offered Fall 1998, Spring 2000, and
every spring semester thereafter. 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. Includes a two-hour
laboratory scheduled during the first week of class.
4500 Software Engineering Laboratory (3, S) Prereq: CS 3500 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 1998 and 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 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. (Offered Spring
1999, Fall 2000, and every fall semester thereafter.)
4950 Independent Study (Arr.)
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 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/62120 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 semester, beginning in Fall 1998.)
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. 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.
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.
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, beginning Fall 1999.)
5460/6460 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/6470 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.
5520/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.
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.
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, beginning in Fall 1999.)
5710/6710 Advanced Integrated Circuit Design I (3, F) Prereq: CS/EE 3700. Crosslisted with EE 5710/6710.
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.
5720/6720 Advanced Integrated Circuit Design II (3, S) Prereq: CS/EE 5710/6710, EE 2100. Crosslisted with EE 5720/6720.
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.
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, beginning Fall 1998.)
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, beginning 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, beginning Spring 2000.)
5940 Seminar (1-3)
Current topics in computer science. May be repeated for credit.
5950 Independent Study (Arr.)
5960-5964/6960-6964 Special Topics (Arr.)
The following special topics courses are currently scheduled for the
1998-99 academic year. Contact the faculty member in charge for details.
- CS 5960/6960 Advanced Compilers (3, F). Prof. Hsieh.
- CS 5962 Computers and Law (2, F). Prof. Hollaar.
- CS 5963 Advanced Manufacturing (2,F). Prof. Drake.
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.)
6110 Formal Methods for System Design (3, S) Prereq: CS 5100/6100 and CS 5520/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, beginning Spring 2000.)
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, beginning in Spring 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, beginning Spring 1999.)
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, beginning Spring 1999.)
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, beginning Spring 2000.)
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,
beginning Spring 2000.)
6930-6944 Seminar (1-3)
Current topics in Computer Science. May be repeated for credit.
6950 Independent Study (Arr.)
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, beginning Spring 1999.)
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. (Not offered 1998-99.)
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, beginning
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, beginning Spring 2000.)
7970 PhD Dissertation Research (Arr.)
7980 Faculty Consultation PhD (Arr.)
7990 Continuing Registration: Ph.D. (Arr.)