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 undergraduates, and the 6000-level version is for
honors and graduate students. The two versions of the class will meet
together, but extra work will be expected of honors and graduate
students.
Courses that have only 6000-level numbers may be taken by graduate and
advanced undergraduate students.
Some elective classes are not offered every year. Check the on-line
schedule or the Computer Science advisor to see which classes will be
offered in upcoming semesters.
1000 Engineering Computing (3,FS) Coreq: CP SC 1010, MATH 1210.
Introduction to programming principles and engineering problem
solving via computational means using MATLAB (during the first half of
the semester) and C (during the second half of the semester).
Decomposition of programs into data representations, functions, and
control structures. Clean programming practices are emphasized. The
MATLAB portion of the course focuses on the implementation of
physically-based models, data visualization via plotting, and selected
numerical techniques. The C portion of the course introduces basic
syntax and special features of the language for engineering
implementations.
1001 Engineering Computing using MATLAB (1.5,FS) Coreq: CP SC 1010, MATH 1210.
Introduction to programming principles and engineering problem
solving via computational means using MATLAB. Decomposition of
programs into data representations, functions, and control structures.
Focus on the implementation of physically-based models, data
visualization via plotting, and selected numerical techniques. Clean
programming practices are emphasized. (This is a half-semester course
that meets with CP SC 1000.)
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, and electronic mail. Self-paced course
using online teaching aids.
1020 Introduction to Programming in C++ (3,U)
An introduction to essential programming concepts using
C++. Laboratory practice.
1021 Introduction to Programming in Java (3,FU)
An introduction to essential programming concepts using
Java. Laboratory practice emphasizes object-oriented techniques and
web-based application design.
1040 Creating Interactive Web Content (3,FS)
Introduction to the essentials of web page design and object-oriented
programming through the use of HTML and JavaScript to create
interactive web pages. It is appropriate for any student who is
comfortable using a computer to write a paper and browse the Web.
This is a 100% online course that can be completed on any computer
equipped with a recent version of most web browsers.
1050 Computers in Society (3,FS) Social/Behavioral Science
Exploration Course
Survey of the social issues that surround the increasingly
pervasive roles that computers play in society. Topics include
privacy of personal information, encryption and interception of
communications, risks posed by unreliable computer systems,
freedom of speech in cyberspace, intellectual property as it
relates to downloadable media, computer-based crime, and
computers in the workplace. Case studies will focus on
computer-related issues of current public interest. No
background in computer technology is required or assumed beyond
the ability to use a computer to send e-mail, browse the web,
and write papers.
1410 Introduction to Computer Science I (4,FS) Coreq: MATH 1210, CP SC 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.
2000 Introduction to Programming in C (4,F) Coreq: MATH 1210, CP SC 1010.
Introduction to essential programming concepts using C.
Decomposition of programs into functional units; control structures;
fundamental data structures of C; recursion; dynamic memory
management; low-level programming. Some exposure to C++. Laboratory
practice. (Intended for non-CS/CE majors).
2100 Discrete Structures (3,F) Prereq: CP SC 1410.
Introduction to propositional logic, predicate logic, formal logical
arguments, finite sets, functions, relations, inductive proofs,
recurrence relations, graphs, and their applications to Computer
Science.
2420 Introduction to Computer Science II (4,SU) Prereq: CP SC 1410.
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.
3100 Models of Computation (3,F) Quantitatively Intensive B.S.\
Course. Prereq: CP SC 2420, CP SC 2100.
Models of sequential computation, including finite-state automata,
push-down automata, and Turing machines.
3200 Scientific Computation (3,S) Prereq: CP SC 2420, MATH 2250.
Scientific computation relevant to computational science and
engineering, with emphasis on the process of modeling, simulation,
visualization and evaluation. Possible topics related to the four
areas include: (modeling) continuous and statistical modeling;
(simulation) solving and linear and non-linear systems,
interpolation and approximation, numerical differential equations;
(visualization) scalar and vector field visualization techniques;
(evaluation) connection of results back to case-studies of interest
from areas such as physics, biology, etc. Basic knowledge of
programming, linear algebra, and differential equations is assumed.
3500 Software Practice I (4,F) Prereq: CP SC 2420.
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.
3505 Software Practice II (3,S) Prereq: CP SC 3500.
An in-depth study of traditional software development (using UML) from
inception through implementation. The entire class is team-based, and will
include a project that uses an agile process.
3700 Fundamentals of Digital System Design (4,S) Quantitatively
Intensive B.S. Course. Prereq: CP SC 1410 or CP SC 2000, PHYCS 2220. Crosslisted with EL EN 3700.
Techniques for reasoning about, designing, minimizing and
implementing digital circuits and systems. Combinatorial (logic and
arithmetic) and sequential circuits are covered in detail leading up to
the design of complete small digital systems using finite state
machine controllers. Use of computer-aided tools for design,
minimization, and simulation of circuits. Laboratory is included
involving circuit implementation with MSI, LSI, and field programmable
gate arrays.
3710 Computer Design Laboratory (3,F) Prereq: CP SC/EL EN 3700, CP SC/EL EN 3810. Crosslisted with EL EN 3710.
Working in teams, students employ the concepts of digital logic
design and computer organization to design, implement, and test a
computing system. Interface I/O devices and develop associated
software/firmware. Extensive use of CAD and software tools.
3810 Computer Organization (4,F) Quantitatively Intensive B.S. Course. Prereq: CP SC 2420 or CP SC 2000. Crosslisted with EL EN 3810.
An in-depth study of computer architecture and design, including
topics such as RISC and CISC instruction set architectures, CPU
organizations, pipelining, memory systems, input/output, and
parallel machines. Emphasis is placed on performance measures and
compilation issues.
3950 Independent Study (1-4)
3960 Special Topics (1-4)
Special topics courses are taught every year. Check the on-line schedule
for a current listing of offerings.
3991 Computer Engineering Junior Seminar (0.5,F) Prereq: CE major status. Crosslisted with EL EN 3991.
Presentations from faculty and industry representatives to discuss
trends in computer engineering, professionalism, ethics, the impact of
engineering in global and societal contexts, lifelong learning, and
contemporary issues.
3992 Computer Engineering Pre-Thesis/Pre-Project (1,S) Prereq: CP SC/EL EN 3710 and 3991, CE major status; Coreq: CP SC/EL EN 5780. Crosslisted with EL EN 3992.
Fundamentals of project planning (scoping, group selection, risk assessment,
scheduling, backup planning, strategy, etc.) are covered in the first half of
the course. The second half involves student presentations and critique of
proposals in progress. The final result of the course will be an approved
project or thesis proposal.
4005 Honors Research Practice (3,S) Prereq: CP SC 3500 and admission to CS Honors track.
Techniques for identifying a Computer Science research problem, literature
review, research execution, and preparation for publication.
4010 Teaching Introductory Computer Science (1,FS) Prereq: Permission of instructor.
Issues confronted by undergraduate teaching assistants in
introductory computer science courses, including leading lab sections,
conducting office hours, grading assignments, communicating with
students. Each student must currently be an undergraduate teaching
assistant in the School of Computing. May be taken for credit up to
three times.
4100 Advanced Algorithms and Data
Structures (4,S) Quantitatively Intensive B.S. Course. Prereq: CP SC 2100, CP SC 2420.
Study of algorithms, data structures, and complexity analysis beyond
the introductory treatment from CP SC 2420. 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. Laboratory
practice.
4400 Computer Systems (4,F) Prereq: CP SC 3500, CP SC 3810.
Introduction to computer systems from a programmer's point of view.
Machine level representations of programs, optimizing program
performance, memory hierarchy, linking, exceptional control flow,
measuring program performance, virtual memory, concurrent
programming with threads, network programming.
4500 Software Engineering Laboratory (3,S) Prereq: CP SC 3505, senior standing in Computer Science.
Development of significant software systems by small
student groups, with emphasis on applying sound, disciplined software
engineering practice.
4540 Web Software Architecture (3,S) Prereq: CP SC 3505.
Software architectures, programming models, and programming
environments pertinent to developing web applications. Topics include
client-server model, multi-tier software architecture, client-side
scripting (JavaScript), server-side programming (Servlets and
JavaServer Pages), component reuse (JavaBeans), database connectivity
(JDBC), and web servers.
4550 Simulation (3,F) Prereq: CP SC 3505.
Basic simulation modeling, modeling complex systems, basic
probability and statistics for simulation, building valid simulations,
random numbers, and output data analysis. Both discrete event and
continuous simulation may be covered.
4710 Computer Engineering Senior Project (3,F) Prereq: CP SC/EL EN 3710, 3992, and 5780. Crosslisted with EL EN 4710.
This is the capstone project course for Computer Engineering majors who do
not choose to do a thesis. Projects are done in groups and are of the
student's choosing. Classroom sessions are devoted to improving presentation
skills and serve as peer reviews of the ideas and work done to date. Multiple
in-progress oral presentations are required as is a final written project
report and a final oral presentation.
4950 Independent Study (1-4)
4960-4964 Special Topics (1-4)
Special topics courses are taught every year. Check the on-line schedule
for a listing of offerings.
4970 Computer Science Bachelor's Thesis (3) Prereq: Senior standing in computer science.
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.
4991 Computer Engineering Senior Thesis I (2,F) Prereq: CP SC/EL EN 3992 and approved senior thesis proposal. Crosslisted with EL EN 4991.
Students work on original senior thesis project under the direction
of their approved thesis advisor. This course along with CP SC/EL EN 4992
substitute for CP SC/EL EN 4710 (Computer Engineering Senior Project) for
students who have chosen to do a thesis.
4992 Computer Engineering Senior Thesis II (2,S) Prereq: CP SC/EL EN 4991. Crosslisted with EL EN 4992.
Students work on an original senior thesis project under the
direction of their approved thesis advisor, make an oral
presentation at the annual student technical conference, and prepare
and submit their senior thesis for approval. This course along with
CP SC/EL EN 4991 substitute for CP SC/EL EN 4710 (Computer Engineering Senior
Project) for students who have chosen to do a thesis.
4999 Computer Science Honors Thesis/Project (3) Prereq: Upper-division Communications/Writing, senior status the CS Honors Program.
An honors 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.
5010 Software Practice I (4,F) Prereq: CP SC 2420 and permission of instructor.
This course is for graduate students from
other than the School of Computing. 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 Software Practice II (3,S) Prereq: CP SC 5010 and permission of instructor.
A more in-depth study of traditional software development (using UML) from
inception through implementation. The entire class is team-based, and will
include a project that uses an agile process.
5100 Foundations of Computer Science (3,S) Prereq: CP SC 3100, CP SC 4100.
A survey of topics in theoretical computer science,
focusing on computability and complexity. Turing machines, decidability,
relative computability, recursion theorem, non-deterministic TMs, complexity
measures, time and space hierarchies, P and NP, NP-completeness, program
specification and verification. Undergraduates only.
5300 Artificial Intelligence (3,S) Prereq: CP SC 3505.
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. Undergraduates only.
5310 Robotics (3,F) Prereq: CP SC 1000, MATH 2250, PHYCS 2210. Crosslisted with ME EN 5220.
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.
Undergraduates only.
5320 Computer Vision (3,F) Prereq: CP SC 3505, 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. Undergraduates only.
5340 Natural Language Processing (3,F) Prereq: CP SC 3505.
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. Undergraduates only.
5350 Machine Learning (3,F) Prereq: CP SC 3505; CP SC 5300 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. Undergraduates
only.
5460 Operating Systems (4,F) Prereq: CP SC 4400.
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 (4,S) Prereq: CP SC 3100, CP SC 4400.
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 Computer Networks (3,F) Prereq: CP SC 4100, CP SC 4400.
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, name servers,
gateways), network management, distributed
applications, network security, and electronic commerce. Principles
are put into practice via a number of programming projects. Undergraduates
only.
5510 Programming Language Concepts (3,F) Prereq: CP SC 3500.
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.
5520 Anatomy of a Modern Programming Language (3,S) Prereq: CP SC 5510.
Requirements, challenges, and techniques for designing a modern
programming language, currently focusing on Java as a case study.
Syntactic and lexical issues, semantic specification, modularity
concepts, support for object-oriented programming, types and
subtypes, type safety and security, portability, compilability,
dynamic linking and loading, program evolvability, use of meta
data (reflection), multi-threading, native code generation and
linkage, generic types, persistence.
5530 Database Systems (3,F) Prereq: CP SC 3500.
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. Undergraduates
only.
5540 Human/Computer Interaction (3,F) Prereq: CP SC 3500.
Fundamentals of input/output devices, user interfaces, and
human factors in the context of designing interactive applications.
Undergraduates only.
5600 Introduction to Computer Graphics (3,S) Prereq: CP SC 3500, MATH 2250.
Basic display techniques, display devices, and graphics systems.
Homogeneous coordinates, transformations, and clipping.
Introduction to lighting models. Introduction to raster graphics
and hidden-surface removal.
5605 Honors Introduction to Computer Graphics (3,S) Prereq: CP SC 3500, MATH 2250, CS Honors status.
Honors version of CP SC 5600.
5610 Interactive Computer Graphics (3,F) Prereq: CP SC 5600.
Interactive 3D computer graphics, polygonal representations of 3-D
objects. Interactive lighting models. Introduction to interactive
texture mapping, shadow generation, image-based techniques such as
stencils, hidden-line removal, and silhouette edges. Introduction
to image-based rendering, global illumination, and volume
rendering. Undergraduates only.
5630 Scientific Visualization (3,F) Prereq: CP SC 3505; CP SC 3200 or CP SC 6210 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. Undergraduates only.
5720 Analog Integrated Circuit Design (3,S) Prereq: EL EN 3110. Crosslisted with EL EN 5720.
Design of analog and mixed-signal CMOS integrated circuits. Fundamental
building blocks for analog circuits, including the basic principles of op amp,
current mirror, and comparator design. The basics of sample-and-hold circuits.
Students complete integrated circuit design, simulation, layout, and
verification using computer-aided design tools. Undergraduates only.
5740 Computer-Aided Design of Digital Circuits (3,S) Prereq: CP SC/EL EN 3700, CP SC 4100. Crosslisted with EL EN 5740.
Introduction to theory and 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. Undergraduates only.
5750 Synthesis and Verification of Asynchronous VLSI Systems (3) Prereq: CP SC/EL EN 3700, CP SC 3505. Crosslisted with EL EN 5750.
Introduction to systematic methods for the design of asynchronous VLSI
systems from high-level specifications to efficient, reliable circuit
implantations. Topics include specification, protocols, graphical
representations, synthesis, optimization using timing information, and
verification. Undergraduates only.
5780 Embedded System Design (4,S) Prereq: CP SC/EL EN 3810, CP SC 2000 or 4400. Crosslisted with EL EN 5780.
Introduction to issues in embedded system design using microcontrollers.
Topics include: microcontroller architecture, memory interfacing, serial and
parallel I/O interfacing, analog interfacing, interrupt synchronization, and
embedded software. Undergraduates only.
5785 Advanced Embedded Systems (4,F) Prereq: CP SC/EL EN 5780. Crosslisted with EL EN 5785.
This class is about building reliable and efficient embedded systems, with a
bias toward software issues and a bias toward whole-system issues. Students
complete several projects in C running on ARM-based embedded development
boards. The course covers a number of special topics such as embedded
software architectures, digital signal processing, feedback control, real-time
scheduling, verification and validation, wired and wireless embedded networks,
and safety-critical embedded systems. Undergraduates only.
5830 VLSI Architecture (3,S) Prereq: CP SC/EL EN 3700, CP SC/EL EN 3810. Crosslisted with EL EN 5830.
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. Undergraduates only.
5950 Independent Study (1-4)
5960-5969 Special Topics (1-4)
Special topics courses are taught every year. Check the on-line schedule
for a listing of offerings.
6020 Conducting, Publishing, and Presenting Early-Career
Research (3) Prereq: Graduate standing in Computer Science.
This is an independent study offering designed to encourage beginning
graduate students to conduct, publish, and present original research
early in their graduate careers. A graduate student can earn credit
for CP SC 6020 by having a first-authored paper accepted for publication
in a top-tier journal or conference and by subsequently presenting
the published work in a one-hour research colloquium.
The research must be conducted while a graduate student at Utah; the
paper must be accepted within two years of enrolling in the graduate
program; the journal or conference must be approved by the student's
graduate committee; the colloquium must be presented as soon as
possible after the acceptance of the paper; and the student must
complete these requirements and register for CP SC 6020 within three
years of enrolling in the graduate program. CP SC 6020 may not be
repeated for credit.
6100 Foundations of Computer Science (3,S) Prereq: CP SC 3100, CP SC 4100.
Graduate and honors students only. Extra work required.
6110 Formal Methods for System Design (3,S) Prereq: CP SC 5100/6100.
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.
6210 Advanced Scientific Computing I (3,F) Prereq: CP SC 3200, CP SC 3505, MATH 3150.
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.
6220 Advanced Scientific Computing II (3,S) Prereq: CP SC 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.
6230 High Performance Parallel Computing (3,S) Prereq: Programming in C/C++.
Overview of parallel computing; processors, communications topologies and
languages. Use of workstation networks as parallel computers. Design of
parallel programs: data composition, load balancing, communications and
synchronisation. Distributed memory and shared memory programming modules;
MPI, PVM, threads. Performance models and practical performance
analysis. Case studies of parallel applications.
6300 Artificial Intelligence (3,S) Prereq: CP SC 3505.
Graduate and honors students only. Extra work required.
6310 Robotics (3,F) Prereq: CP SC 1000, MATH 2250, PHYCS 2210. Crosslisted with ME EN 6220.
Graduate and honors students only. Extra work required.
6320 Computer Vision (3,S) Prereq: CP SC 3505, MATH 2210, MATH 2270.
Graduate and honors students only. Extra work required.
6340 Natural Language Processing (3,F) Prereq: CP SC 3505.
Graduate and honors students only. Extra work required.
6350 Machine Learning (3,F) Prereq: CP SC 3505; CP SC 5300/6300 recommended.
Graduate and honors students only. Extra work required.
6360 Virtual Reality (3,S) Prereq: CP SC 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.
6370 Geometric Computation for Motion Planning (3,F) Prereq: CP SC 1020, MATH 2250.
Geometric computation is the study of practical algorithms for solving
queries about geometric properties of computer models and relationships
between computer models. Robot motion planning uses these algorithms to
formulate safe motion through a modeled environment. In addition, algorithms
for geometric computation are used in computer animation, simulation,
computer-aided design, haptics, and virtual reality. Topics to be covered in
this course are spatial subdivision and model hierarchies, model
intersection, distance queries and distance fields, medial axis
computations, configuration space, and motion planning. The course will rely
on lectures, readings, and projects to provide understanding of current
practices in the field.
6380 Multiagent Systems (3,S) Prereq: knowledge of programming, data structures, processes, language syntax,
and either Matlab or C.
Covers fundamental notions of (1) software agents, including: autonomy,
communication, persistence, and intelligence; and (2) multiagent systems,
including: communication standards, cooperation, competition and coordination.
Methods will be applied to a practical application (usually in Matlab or C).
6470 Advanced Topics in Compilation (3,F) Prereq: CP SC 5470.
Compilation of modern languages. Optimization techniques, register
allocation and instruction scheduling, garbage collection,
exception handling. Linkers and late-stage compilation and
optimization.
6480 Computer Networks (3,F) Prereq: CP SC 4100, CP SC 4400.
Graduate and honors students only. Extra work required.
6490 Network Security (3,S) Prereq: CP SC 5480/6480.
Comprehensive introduction to the principles and practices of network
security, especially Internet Security. Topics to be covered include:
cryptography, authentication, access control, web security,
denial-of-service, digital pests, anonymity, and intrusion detection.
Existing network security standards will be used for case studies. Includes
laboratory practice.
6510 Functional Programming (3,F) Prereq: CP SC 3100, CP SC 5510.
Practical programming with functional language (e.g., Scheme, ML,
Haskell) and functional techniques (e.g., fold operators,
continuation-passing style, monads, parametric polymorphism). No
previous experience with functional language is required. Course work
includes writing programs, presenting programs in class, and critiquing
peer programs.
6530 Database Systems (3,F) Prereq: CP SC 3500.
Graduate and honors students only. Extra work required.
6540 Human/Computer Interaction (3,F) Prereq: CP SC 3500.
Graduate and honors students only. Extra work required.
6610 Interactive Computer Graphics (3,F) Prereq: CP SC 5600.
Graduate and honors students only. Extra work required.
6620 Ray Tracing (3,S) Prereq: CP SC 5610/6610.
Introduction to ray-tracing. Intersection methods for 3-D objects,
reflection and refraction. Introduction to surface and solid
texturing. Introduction to continuous-tone pictures and the
aliasing problem. Special effects such as soft shadows,
depth-of-field, motion-blur, and indirect lighting.
6630 Scientific Visualization (3,F) Prereq: CP SC 3505; CP SC 3200 or CP SC 6210 or MATH 5600.
Graduate and honors students only. Extra work required.
6670 Computer-Aided Geometric Design I (3,F) Prereq: MATH 2210, MATH 2250, CP SC 3505; Coreq: CP SC 5600.
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.
6680 Computer-Aided Geometric Design II (3) Prereq: CP SC 6670.
Project based on material covered in CP SC 6670.
6710 Digital VLSI Design (4,F) Prereq: CP SC/EL EN 3700. Crosslisted with EL EN 6710.
Introduction to basic concepts of the design of CMOS integrated circuits.
Static and dynamic properties of CMOS circuits, composite layout of CMOS
circuits, and modeling of transistors. Commonly encountered CMOS circuits.
Students complete design, composite layout, and simulation of an integrated
circuit project using computer-aided design tools.
6712 Digital IC Projects Testing (1,F) Prereq: CP SC/EL EN 6710. Crosslisted with EL EN 6712.
This course is designed for students who fabricated an integrated circuit
in CP SC/EL EN 6710 or 6770. Students will test their chiips independently
and report on the experimental results.
6720 Asynchronous Integrated Circuit Design (3,S) Prereq: EL EN 3110. Crosslisted with EL EN 6720.
Graduate and honors students only. Extra work required.
6721 Analog Integrated Circuits Lab (1,S) Coreq: CP SC/EL EN 6720. Crosslisted with EL EN 6721.
Optional lab that accompanies CP SC/ECE 5720/6720. Students will test and
characterize transistors, circuits, and systems on modern CMOS chips.
6722 Analog Integrated Circuits Project Testing (1,F) Prereq: CP SC/EL EN 6720. Crosslisted with EL EN 6722.
This course is designed for students who fabricated an integrated circuit in
CP SC/ECE 5720/6720. Students will test their chips independently and report
on the experimental results.
6740 Computer-Aided Design of Digital Circuits (3,S) Prereq: CP SC/EL EN 3700, CP SC 4100. Crosslisted with EL EN 6740.
Graduate and honors students only. Extra work required.
6750 Synthesis and Verification of Asynchronous VLSI Systems (3,F) Prereq: CP SC/EL EN 3700, CP SC 3505. Crosslisted with EL EN 6750.
Graduate and honors students only. Extra work required.
6760 Modeling and Analysis of Biological Networks (3,F) Prereq: Background in molecular or cell biology or formal modeling..
Introduction to methods for modeling and analyzing biological
networks such as genetic regulatory networks, metabolic networks, and
signal transduction networks. A particular emphasis will be given to
methods inspired by models used by engineers for circuit analysis. Other
topics include: stochastic analysis using Monte Carlo methods,
differential equation models, Bayesian network models, flux balance
analysis, learning methods, pathway databases, and synthesized gene
circuits.
6770 Advanced Digital VLSI Systems Design (3) Prereq: CP SC/EL EN 6710 and instructor permission. Crosslisted with EL EN 6770.
This course addresses advanced issues in VLSI design, covering the following
topics: design methodologies and IP design, CMOS circuit scaling, advanced
logic circuit styles, noise sources and signal integrity in digital design,
design techniques for dynamic and static power reduction, power supply issues,
interconnect analysis, clocking and synchronization, process variation, and
performance verification. Students are expected to complete a substantial
design project as part of the course, which involves extensive use of CAD
tools.
6780 Embedded System Design (4,S) Prereq: CP SC/EL EN 3810, CP SC 2000 or 4400. Crosslisted with EL EN 6780.
Graduate students only. Extra work required.
6785 Advanced Embedded Systems (4,F) Prereq: CP SC/EL EN 5780/6780. Crosslisted with EL EN 6785.
Graduate students only. Extra work required.
6810 Computer Architecture (3,F) Prereq: CP SC/EL EN 3810. Crosslisted with EL EN 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.
6830 VLSI Architecture (3,S) Prereq: CP SC/EL EN 3700, CP SC/EL EN 3810. Crosslisted with EL EN 6830.
Graduate and honors students only. Extra work required.
6960-6969 Special Topics (1-4)
Special topics courses are taught every year. Check the on-line schedule
for a listing of offerings.
7010 Writing Research Proposals (2,S) Prereq: Graduate standing in Computer Science.
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.)
7120 Information-Based Complexity (3) Prereq: CP SC 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.
7240 Sinc Methods (3,S) Prereq: CP SC 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.
7250 Advanced Topics in Scientific Computing (3,F) Prereq: CP SC 6220.
In-depth study of research topics of current interest in scientific
computing. Topics will typically have been surveyed in CP SC 6210 and
6220. This course can be repeated for credit since the focus will be
changed from semester to semester.
7310 Advanced Robotics (3) Prereq: CP SC 5310/6310 or ME EN 5220/6220. Crosslisted with ME EN 7230.
Covers the kinematics, dynamics, and control
of robotic manipulators. Projects controlling robots will be an
integral part of the course.
7320 System Identification for Robotics (3) Prereq: CP SC 5310/6310 or ME EN 5220/6220.
Modeling and identification of the mechanical properties of robots and
their environments. Review of probability and statistics. Parametric versus
nonparametric estimation. Linear least squares parameter estimation, total
least squares, and Kalman filters. Nonlinear estimation and extended Kalman
filters. State estimation. Specific identification methods for kinematic
calibration, inertial parameter estimation, and joint friction modeling.
7460 Distributed Operating Systems (3) Prereq: CP SC 5460, CP SC 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.
7520 Programming Language Semantics (3,S) Prereq: CP SC 3100, CP SC 5510.
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.
7640 Image Processing (3,S) Prereq: CP SC 2420, MATH 2250.
An introductory course in processing grey-scale and color images that
covers both mathematical funadmentals and implementation. It introduces
students to the basic principles of processing digital signals and how
those principles apply to images. These fundamentals include sampling
theory, transforms, and filtering. The course also covers a series of basic
image-processing problems including enhancement, reconstruction,
segmentation, feature detection, and compression. Assignments include
several projects with software implementations and analysis of real data.
7650 Realistic Image Synthesis (3,F) Prereq: CP SC 6620, CP SC 6670, MATH 5010.
Using camera and sensor simulation along with physical simulation to
generate realistic synthetic images.
7810 Advanced Computer Architecture (3,S) Prereq: CP SC/EL EN 6810. Crosslisted with EL EN 7810.
Issues in the design of modern microprocessors, with emphasis on
current research topics in the field. Offered in alternate years.
7820 Parallel Computer Architecture (3,S) Prereq: CP SC/EL EN 6810. Crosslisted with EL EN 7820.
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 in alternate years.
7960-7969 Special Topics (1-4)
Special topics courses are taught every year. Check the on-line schedule
for a listing of offerings.