| Disclaimer: The
course information below is current as of Sep 28, 2006, is intended for
informational purposes only, and does not constitute a legal contract
between the University of Utah and any person or entity.
This Web document is updated twice a year, on or about the first day
of registration for Fall and Spring semesters.
1000 Engineering Computing (3)
Co-requisite: CP SC 1010 and 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 representation, 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) Co-requisite: CP SC 1010 and MATH 1210.
This is a half semester class that meets with CP SC 1000.
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.
1010 Introduction to Unix (0.5)
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)
An introduction to essential programming concepts using C++.
Laboratory practice required.
1021 Introduction to Programming in Java
(3)
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)
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) Fulfills
Social/Behavioral Science Exploration.
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.
1060 Explorations in Computer Science (3)
Computing touches every aspect of modern society. The artifacts of
computing-hardware, software, and networks-have transformed commerce,
communications, educations, entertainment, government, medicine,
transportation, and many other disciplines. This course presents an
overview of how computers work. It will cover fundamental scientific and
engineering principles behind computers, how those principles are put to
use in modern computers, and how computers make the internet, web, work
processing, graphics, animation ,and other applications possible. As
part of this course you will not only get to use current technology but
will also be exposed to the great ideas that were and are needed to
provide the technical solutions that have allowed computers to transform
the way we live and work and will to continue this transformation into
the future. The aim of the course is to present this material in a way
that assumes no background in computer technology beyond the ability to
use a computer to send e-mail, browse the web, and write papers.
1410 Introduction to Computer Science I
(4) Co-requisite: CP SC 1010 and MATH 1210.
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.
1960 Special Topics (1 to 4)
2000 Introduction to Program Design in C (4)
Co-requisite: CP SC 1010 and MATH 1210.
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) Prerequisite:
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) Prerequisite: 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.
2950 Independent Study (1 to 4)
2960 Special Topics (1 to 4)
3100 Models of Computation (3)
Prerequisite: CP SC 2420 and 2100. Fulfills Quantitative Intensive BS.
Models of sequential computation, including finite-state automata,
push-down automata, and Turing machines.
3200 Introduction to Scientific Computing
(3) Prerequisite: CP SC 2420 and 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) Prerequisite:
CP SC 2420.
Meets with CP SC 5010. 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)
Prerequisite: CP SC 3500.
Meets with CP SC 5020. 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) Cross listed as ECE 3700. Prerequisite: CP SC 2000 or 1410 and PHYS
2220. Fulfills Quantitative Intensive BS.
Techniques for reasoning about, designing, minimizing, and
implementing digital circuits and systems. Combinational (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) Cross
listed as ECE 3710. Prerequisite: ECE/CP SC 3700 and 3810.
Working in teams, students employ the concepts of digital logic
design and computer organization to design, implement and test a
computing system. Interface IO devices and develop associated
software/firmware. Extensive use of CAD and software tools.
3810 Computer Organization (4) Cross
listed as ECE 3810. Prerequisite: CP SC 2000 or 2420. Fulfills
Quantitative Intensive BS.
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.
3960 Special Topics (1 to 4)
3991 CE Junior Seminar (0.5) Cross listed
as ECE 3991. Prerequisite: Computer Engineering major status.
Presentations from faculty and industry representatives to discuss
trends in computer engineering, professionalism, ethics, the impact of
engineering in global and societal context, lifelong learning, and
contemporary issues.
3992 Computer Engineering
Pre-Thesis/Pre-Project (0.5) Cross listed as ECE 3992. Prerequisite:
ECE/CP SC 3710 and 3991 and Computer Engineering major status.
Co-requisite: CP SC 5780.
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
presentation 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)
Prerequisite: CP SC 3500 and Admission to Computer Science Honors Track.
Techniques for identifying a Computer Science research problem,
literature review, research execution, and preparation for publication.
4010 Teaching Introductory Computer Science
(1) Prerequisite: Permission of instructor required.
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 a credit up to
three times.
4100 Advanced Algorithms and Data Structures
(4) Prerequisite: CP SC 2100 and 2420. Fulfills Quantitative Intensive
BS.
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) Prerequisite: CP
SC 3500, CP SC/ECE 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)
Prerequisite: CP SC 3505 and 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)
Prerequisite: 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) Prerequisite: 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) Cross listed as ECE 4710. Prerequisite: CP SC/ECE 3710, 3992, 5780.
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 idea 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 to 4)
4960 Special Topics (1 to 4)
4961 Special Topics (1 to 4)
4962 Special Topics (1 to 4)
4963 Special Topics (1 to 4)
4964 Special Topics (1 to 4)
4970 Computer Science Bachelor's Thesis
(3) Prerequisite: CP SC senior standing.
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) Cross listed as ECE 4991. Prerequisite: ECE/CP SC 3992 and approved
senior thesis proposal.
Students work on an original senior thesis project under the
direction of their approved thesis advisor. This course along with
ECE/CP SC 4992 substitute for ECE/CP SC 4710 (Computer Engineering
Senior Project) for students who have chosen to do a thesis.
4992 Computer Engineering Senior Thesis II
(2) Cross listed as ECE 4992. Prerequisite: ECE/CP SC 4991.
Students work on 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 ECE/CP SC 4991 substitute
for ECE/CP SC 4710 (Computer Engineering Senior Project) for students
who have chosen to do a thesis.
4999 Computer Science Honors Thesis/Project
(3) Prerequisite: Senior Standing in the Computer Science or University
Honors Track.
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 (4) Prerequisite:
CP SC 2420 and permission of instructor.
Meets with CP SC 3500. This course is for graduate students from
departments other than 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)
Prerequisite: CP SC 5010 and permission of intructor.
Meets with CP SC 3505. This course is for graduate students in
departments other than School of Computing. 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.
5100 Foundations of Computer Science (3)
Prerequisite: CP SC 3100 and 4100.
Meets with CPSC 6100. A survey of topics in theoretical computer
science, focusing on computability and complexity. Turing machine,
decidability, relative computability, recursion theorem,
non-deterministic TMs, complexity measures, time and space hierarchies,
P and NP, NP-completeness, program specification and verification.
Undergraduate students only.
5300 Artificial Intelligence (3)
Prerequisite: CP SC 3505.
Meets with CP SC 6300. 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. Undergraduate
students only.
5310 Robotics (3) Cross listed as ME EN
5220. Prerequisite: CP SC 1000 and MATH 2250 and PHYS 2210.
Meets with CP SC 6310 and ME EN 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 Computer Vision (3) Prerequisite: CP
SC 3505 and MATH 2210 and 2270.
Meets with CP SC 6320. 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. Undergraduate Students only.
5340 Natural Language Processing (3)
Prerequisite: CP SC 3505.
Meets with CP SC 6340. 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. Undergraduate Students only.
5350 Machine Learning (3) Prerequisite: CP
SC 3505. Recommended Prerequisite: CP SC 5300.
Meets with CP SC 6350. 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. Undergraduate Students only.
5460 Operating Systems (4) Prerequisite:
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) Prerequisite: CP SC 3100 and 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) Prerequisite:
CP SC 4100 and 4400.
Meets with CP SC 6480. 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. Undergraduate Students
only.
5510 Programming Language Concepts (3)
Prerequisite: 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) Prerequisite: 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) Prerequisite: CP
SC 3500.
Meets with CP SC 6530. 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. Undergraduate students only.
5540 Human/Computer Interaction (3)
Prerequisite: CP SC 3500.
Meets with CP SC 6540. Fundamentals of input/output devices, user
interfaces, and human factors in the context of designing interactive
applications. Undergraduate students only.
5600 Introduction to Computer Graphics (3)
Prerequisite: CP SC 3500 and 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) Prerequisite: CP SC 3500, MATH 2250, Admission to CS honors track.
Honors version of CP SC 5600.
5610 Interactive Computer Graphics (3)
Prerequisite: CP SC 5600.
Meets with CP SC 6610. 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. Undergraduate students only.
5630 Scientific Visualization (3)
Prerequisite: CP SC 3505 and either CP SC 3200 or 6210 or MATH 5600.
Meets with CP SC 6630. 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. Undergraduate students only.
5710 Digital VLSI Design (4) Prerequisite:
CS/ECE 3700.
Meets with ECE/CS 6710. Basic concepts of the design of digital
CMOS integrated circuits. Course topics include static and dynamic
properties of MOS circuits, composite layout of CMOS circuits, modeling
of transistors for stimulation, and commonly encountered CMOS circuit
structures. Students complete design, composite layout, and simulation
of a simple integrated circuit using computer-aided design tools.
5720 Analog Integrated Circuit Design (3)
Cross listed as ECE 5720. Prerequisite: ECE 3110.
Meets with ECE/CP SC 6720. 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. Undergraduate students only.
5740 Computer-Aided Design of Digital Circuits
(3) Cross listed as ECE 5740. Prerequisite: CP SC/ECE 3700 and CP SC
4100.
Meets with ECE/CP SC 6740. Introduction to theory and algorithms used
for computer-aided synthesis of digital integrated circuits. Topics
include algorithms and representations for Boolean optimization,
hardware modeling, combinational logic optimization, sequential logic
optimization, and technology mapping. Undergraduate students only.
5745 Testing and Verification of Digital
Circuits (3) Cross listed as ECE 5745.
Study of failure and fault models in digital circuits,
stuck-at-faults, transition faults, transistor faults,
combinational/sequential circuit ATPG, FSM testing, design fault test,
LFSR and BIST, equivalence checking, BDDs, BMDs, canonical
representations of Boolean functions.
5750 Synthesis and Verification of
Asynchronous VLSI Systems (3) Cross listed as ECE 5750.
Prerequisite: CP SC/ECE 3700 and CP SC 3505.
Meets with ECE/CP SC 6750. 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. Undergraduate students only.
5780 Embedded System Design (4) Cross
listed as ECE 5780. Prerequisite: ECE/CP SC 3810 and either CP SC 2000
or 4400.
Meets with CP SC/ECE 6780. 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.
5785 Advanced Embedded Systems (3) Cross
listed as ECE 5785. Prerequisite: CP SC/ECE 5780 and 6780.
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 system.
5830 VLSI Architecture (3) Cross listed as
ECE 5830. Prerequisite: CP SC/ECE 3700 and 3810.
Meets with ECE/CP SC 6830. 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. Undergraduate students only.
5940 Seminar (1 to 3)
5950 Independent Study (1 to 4)
5960 Special Topics (1 to 4)
5961 Special Topics (1 to 4)
5962 Special Topics (1 to 4)
5963 Special Topics (1 to 4)
5964 Special Topics (1 to 4)
5965 Special Topics (1 to 4)
5966 Special Topics (1 to 4)
5967 Special Topics (1 to 4)
5968 Special Topics (1 to 4)
5969 Special Topics (1 to 4)
6020 Conducting, Publishing, and Presenting
Early-Career Research (3) Prerequisite: Graduate standing in CP SC.
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 departmental 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)
Prerequisite: CP SC 3100 and 4100.
Meets with CP SC 5100. Graduate students only. Extra work required.
6110 Formal Methods for System Design (3)
Prerequisite: 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)
Prerequisite: CP SC 3200 and 3505 and 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.
Undergraduate students only.
6220 Advanced Scientific Computing II (3)
Prerequisite: 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 Computing and
Parallelization (3) Prerequisite: Programming in C/C++.
Overview of parallel computing; processors, communications topologies
and languages. Use of workstation network as parallel computers. Design
of parallel programs: data composition, load balancing, communications
and synchronization. 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)
Prerequisite: CP SC 3505.
Meets with CP SC 5300. Graduate students only. Extra work required.
6310 Robotics (3) Cross listed as ME EN
6220. Prerequisite: CP SC 1000 and MATH 2250 and PHYS 2210.
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. Meets with CP SC 5310
and ME EN 5220.
6320 Computer Vision (3) Prerequisite: CP
SC 3505 and MATH 2210 and 2270.
Meets with CP SC 5320. Graduate students only. Extra work required.
6340 Natural Language Processing (3)
Prerequisite: CP SC 3505.
Meets with CP SC 5340. Graduate students only. Extra work required.
6350 Machine Learning (3) Prerequisite: CP
SC 3505. Recommended Prerequisite: CP SC 5300/6300.
Meets with CP SC 5350. Graduate students only. Extra work required.
6360 Virtual Reality (3) Prerequisite: 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) Prerequisite: CP SC 1020 and MATH 2250.
Geometric computation is the study 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. Topics to be
covered are spatial subdivision and model hierarchies, model
intersection, distance queries and distance fields, medial axis
computations, configuration space, and motion planning.
6380 Multi-agent Systems (3) Prerequisite:
Knowledge of Matlab or C, data structures, processes, language syntax.
Covers fundamental notions of (1) software agents, including
autonomy, communication, persistence, and intelligence; (2) multi-agent
systems, including communication standards, cooperation, competition,
and coordination. Methods will be applied to a practical application.
6460 Operating Systems (4) Recommended
Prerequisite: CP SC 3510 and 3810.
Graduate students only. Extra work required.
6470 Advanced Topics in Compilation (3)
Prerequisite: 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) Prerequisite:
CP SC 4100 and 4400.
Meets with CP SC 5480. Graduate students only. Extra work required.
6490 Network Security (3) Prerequisite: 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 standard will be used for case studies.
6510 Functional Programming (3)
Prerequisite: CP SC 3100 and 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) Prerequisite: CP
SC 3500.
Meets with CP SC 5530. Graduate students only. Extra work required.
6540 Human/Computer Interaction (3)
Prerequisite: CP SC 3500.
Meets with CP SC 5540. Graduate students only. Extra work required.
6610 Interactive Computer Graphics (3)
Prerequisite: CP SC 5600.
Meets with CP SC 5610. Graduate students only. Extra work required.
6620 Advanced Computer Graphics II: Ray
Tracing (3) Prerequisite: 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)
Prerequisite: CP SC 3505 and (3200 or 6210 or MATH 5600).
Meets with CP SC 5630. Graduate students only. Extra work required.
6640 Image Processing (3) Cross
listed as BIOEN 6640. Prerequisite: CP
SC 2420 and MATH 2250.
An introductory course in processing grey-scale and color image.
Covers both mathematical fundamentals and implementation. Introduces
students to basic principles of processing digital signals and how those
principles apply to images. Topics include sampling theory, transforms,
and filtering. Also covers basic image processing problems including
enhancement, reconstruction, segmentation, feature detection, and
compression.
6670 Computer-Aided Geometric Design I (3)
Prerequisite: MATH 2210 and 2250 and CP SC 3505 Co-requisite: 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) Prerequisite: CP SC 6670.
Project based upon material covered in CP SC 6670.
6710 Digital VLSI Design (4) Cross listed
as ECE 6710. Recommended Prerequisite: CP SC 3700
Basic concepts of the design of digital CMOS integrated circuits.
Course topics include static and dynamic properties of MOS circuits,
composite layout of CMOS circuits, modeling of transistors for
simulation, and commonly encountered CMOS circuit structures. Students
complete design, composite layout, and simulation of a simple integrated
circuit using computer-aided design tools.
6712 Digital IC Projects Testing (1) Cross
listed as ECE 6712. Prerequisite: CP SC/ECE 6710.
This course is designed for students who fabricated an integrated
circuit in CP SC/ECE 6710 or 6770. Students will test their chips
independently and report on the experimental results.
6720 Analog Integrated Circuit Design (3)
Cross listed as ECE 6720. Prerequisite: ECE 3110.
Meets with ECE/CP SC 5720. Graduate students only. Extra work
required.
6721 Analog Integrated Circuits Lab (1)
Cross listed as ECE 6721. Co-requisite: ECE/CP SC 6720.
Optional lab that accompanies ECE/CP SC 5720/6720. Students will test
and characterize transistors, circuits, and systems on modern CMOS
chips.
6722 Analog IC Projects Testing (1) Cross
listed as ECE 6722. Co-requisite: ECE/CP SC 6720.
This course is designed for students who fabricated an integrated
circuit in ECE/CP SC 5720/6720. Students will test their chips
independently and report on the experimental results.
6740 Computer-Aided Design of Digital Circuits
(3) Cross listed as ECE 6740. Prerequisite: ECE/CP SC 3700 and CP SC
4100.
Meets with ECE/CP SC 5740. Graduate students only. Extra work
required.
6745 Testing and Verification of Digital
Circuits (3) Cross listed as ECE 6745.
Study of failure and fault models in digital circuits,
stuck-at-faults, transition faults, transistor faults,
combinational/sequential circuit ATPG, FSM testing, design fault test,
LFSR and BIST, equivalence checking, BDDs, BMDs, canonical
representations of Boolean functions.
6750 Synthesis and Verification of
Asynchronous VLSI Systems (3) Cross listed as ECE 6750.
Prerequisite: CP SC/ECE 3700 and CP SC 3505.
Meets with ECE/CP SC 5750. Graduate students only. Extra work
required.
6760 Modeling and Analysis of Biological
Networks (3) Cross listed as ECE 6760, BIOEN 6760. Prerequisite:
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
(4) Cross listed as ECE 6770. Prerequisite: CP SC/ECE 6710 and
instructor permission.
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) Cross listed as ECE
6780. Prerequisite: ECE/CP
SC 3810 and either CP SC 2000 or 4400.
Meets with ECE/CP SC 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.
6785 Advanced Embedded Systems (3) Cross
listed as ECE 6785. Prerequisite: CP SC/ECE 5780 and 6780.
Meets with CP SC 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 system.
6810 Computer Architecture (3) Cross
listed as ECE 6810. Prerequisite: CP SC/ECE 3810.
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) Cross listed as
ECE 6830. Prerequisite: CP SC/ECE 3700 and 3810.
Meets with ECE/CP SC 5830. Graduate students only. Extra work
required.
6930 Seminar (1 to 3)
6931 Seminar (1 to 3)
6932 Seminar (1 to 3)
6933 Seminar (1 to 3)
6934 Seminar (1 to 3)
6935 Seminar (1 to 3)
6936 Seminar (1 to 3)
6937 Seminar (1 to 3)
6938 Seminar (1 to 3)
6939 Seminar (1 to 3)
6940 Seminar (1 to 3)
6941 Seminar (1 to 3)
6942 Seminar (1 to 3)
6943 Seminar (1 to 3)
6944 Seminar (1 to 3)
6950 Independent Study (1 to 4)
6960 Special Topics (1 to 4)
6961 Special Topics (1 to 4)
6962 Special Topics (1 to 4)
6963 Special Topics (1 to 4)
6964 Special Topics (1 to 4)
6965 Special Topics (1 to 4)
6966 Special Topics (1 to 4)
6967 Special Topics (1 to 4)
6968 Special Topics (1 to 4)
6969 Special Topics (1 to 4)
6970 Master's Thesis Research (1 to 12)
6980 Faculty Consultation: Master's (1 to
12)
7010 Writing Research Proposals (3)
Prerequisite: Graduate standing in CP SC.
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 are required of all
participants.
7120 Information-Based Complexity (3)
Prerequisite: CP SC 3200 and MATH 2270 and 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) Prerequisite: CP SC
6210 or MATH 5600 or 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. Whenever
possible in their areas of research, students are given projects that
lead to publishable research articles.
7250 Advanced Topics in Scientific Computing
(3) Prerequisite: 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) Cross listed as
ME EN 7230. Prerequisite: CP SC 5310/6310 or ME EN 5220/6220.
Covers the kinematics, dynamics, and control of robotic manipulators.
Projects that involve controlling robots will be an integral part of the
course.
7320 System Identification for Robotics
(3) Prerequisite: 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)
Prerequisite: CP SC 5460 and 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)
Prerequisite: CP SC 3100 and 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)
Prerequisite: CP SC 2420 and MATH 2250.
An introductory course in processing grey-scale and color images
that covers both mathematical fundamentals 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)
Prerequisite: CP SC 6620 and 6670 and MATH 5010.
Using camera and sensor simulation along with physical simulation to
generate realistic synthetic images.
7810 Advanced Computer Architecture (3)
Cross listed as ECE 7810. Prerequisite: CP SC/ECE 6810.
Investigation of issues in the design of modern microprocessors, with
an in-depth treatment of current research topics in the field. The
course is driven by the discussion of seminal papers in the fields.
7820 Parallel Computer Architecture (3)
Cross listed as ECE 7820. Prerequisite: ECE/CP SC 6810.
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.
7930 Advanced Seminar (1 to 3)
7931 Advanced Seminar (1 to 3)
7932 Advanced Seminar (1 to 3)
7933 Advanced Seminar (1 to 3)
7934 Advanced Seminar (1 to 3)
7935 Advanced Seminar (1 to 3)
7936 Advanced Seminar (1 to 3)
7937 Advanced Seminar (1 to 3)
7938 Advanced Seminar (1 to 3)
7939 Advanced Seminar (1 to 3)
7940 Seminar (1 to 3)
7941 Advanced Seminar (1 to 3)
7942 Advanced Seminar (1 to 3)
7943 Advanced Seminar (1 to 3)
7944 Advanced Seminar (1 to 3)
7950 Independent Study (1 to 4)
7960 Special Topics (1 to 4)
7961 Special Topics (1 to 4)
7962 Special Topics (1 to 4)
7963 Special Topics (1 to 4)
7964 Special Topics (1 to 4)
7965 Special Topics (1 to 4)
7966 Special Topics (1 to 4)
7967 Special Topics (1 to 4)
7968 Special Topics (1 to 4)
7969 Special Topics (1 to 4)
7970 Ph.D. Dissertation Research (1 to 12)
7980 Faculty Consultation: Ph.D. (1 to 12)
7990 Continuing Registration: Ph.D. (0)
|