University of Utah
Computer Science
CS Course Descriptions
Home | Feedback | Disclaimer
University of Utah

General Catalog Fall 2012
Posted Mar 02, 2012

Disclaimer: The course information below is current as of Mar 02, 2012, 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) Corequisites: MATH 1210 OR MATH 1250 OR MATH 1270 OR AP Calc AB score of 4 or better OR AP Calc BC score of 3 or better
   This course is an Introduction to programming principles and engineering problem solving via computational means using MATLAB and Spreadsheets. This course teaches how to apply programming to solve Engineering problems (e.g., data visualization, stochastic simulation, selected numerical techniques, image manipulation, ...). Students will be taught how to transform real world problems into programs using proper data representations, functions, and control structures. Clean programming practices will be emphasized.

1001  Engineering Computing using MATLAB (1.5) Corequisites: MATH 1210 OR MATH 1250 OR MATH 1270 OR AP Calc AB score of 4 or better OR AP Calc BC score of 3 or better
   This course is a half semester introduction to programming principles and engineering problem solving via computational means using MATLAB and Spreadsheets. This course teaches how to apply programming to solve Engineering problems. Students will be taught how to transform real world problems into programs using proper data representations, functions, and control structures. Clean programming practices will be emphasized.

1020  Introduction to Programming in C++ (3)
   An introduction to essential programming concepts using C++. Laboratory practice required.

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) Fulfills Applied Science.
   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.

1400  Introduction to Computer Science (3)
   Introduction to Computer Science is a course for students who are interested in pursuing a computer science degree but have no background in computing. CS 1400 provides a gentle introduction to the fundamental concepts of computer science. In particular, students learn problem-solving skills and apply them by writing programs in a visual and fun programming environment that is friendly to beginners. Students also study, simulate, and visualize the inner workings of a simple computer.

1410  Introduction to Object-Oriented Programming (4) Prerequisites: "C-" or better in CS 1400 OR Instructor's Consent Corequisites: "C-" or better in (MATH 1210 OR MATH 1250 OR MATH 1270) OR AP Calc AB score of 4 or better OR AP Calc BC score of 3 or better
   The second 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) Corequisites: MATH 1210 OR MATH 1250 OR MATH 1270 OR AP Calc AB score of 4 or better OR AP Calc BC score of 3 or better
   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) Prerequisites: "C-" or better in (CS 1410 OR AP CS-A score of 5) AND (MATH 1210 OR MATH 1250 OR MATH 1270 OR AP Calc AB score of 4 or better OR AP Calc BC score of 3 or better)
   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 Algorithms & Data Structures (4) Prerequisites: "C-" or better in CS 1410 OR AP CS-A score of 5
   This course provides an introduction to the problem of engineering computational efficiency into programs. Students will learn about classical algorithms (including sorting, searching, and graph traversal), data structures (including stacks, queues, linked lists, trees, hash tables, and graphs), and analysis of program space and time requirements. Students will complete extensive programming exercises that require the application of elementary techniques from software engineering.

2950  Independent Study (1 to 4)

2960  Apple Certification (3)
   A hands-on course that provides an intensive and in-depth exploration of troubleshooting on Mac OS X and give entry-level system administrators the skills, tools, and knowledge to implement and maintain a Mac OS X Server-based system. This course is designed to give you a tour of the breadth of functionality of Mac OS X and the best methods for effectively supporting users of Mac OS X systems, and install and configure Mac OS X Server to provide network-based services, such as file sharing, authentication, and printing. Tools for efficiently managing and deploying Mac OS X are also covered. The course is a combination of lectures and hands-on case study exercises that provide practical real-world experience. Special fee includes course materials and two vouchers for certification exams.

2961  Cisco CCNA Level 1 (4)
   In this first of two semesters students learn to use network modules to explain the layers of communications in data networks, design, calculate and apply subnet masks and addresses, build a simple Ethernet network using routers and switches, use Cisco CLI commands to perform basic router and switch configuration and verification, and analyze the operations and feature of the of the transport and network layer protocols, how to configure and verify router interfaces, demonstrate comprehensive RIPv1 configuration skills, design and implement a classless IP addressing scheme for a network, apply the basic RIPv2 configuration commands and evaluate RIPv2 classless routing updates, and identify the characteristics of distance vector routing protocols.

2962  Cisco CCNA Level 2 (4)
   In this second of two semesters students learn to troubleshoot common network problems using the layered model approach, interpret network diagrams, perform and verify initial switch configuration tasks, configure, verify and troubleshoot VLANs, manage IOS configuration files, identify the basic parameters to configure a wireless network and common implementation issues, describe the impact of applications on the network, configure DHCP and DNS on a router, manage ACLs in a network environment, configure a basic WAN serial connection and Frame Relay, configure and verify a PPP connection between routers, and troubleshoot WAN implementation issues. Tuition includes course materials and a voucher to use for the certification exam one time.

2963  Linux Professional Institute Level 1 (3)
   A kickstart for Windows users who want to learn Linux. This course covers installation methods, directory structure and file systems, creating user accounts, and setting file permissions. You will learn basic Unix commands and how to work with files, change settings at the command line, handle remote administration with SSH, and file transfer with SFTP, as well as how to use built-in help resources, including online documentation resources. Also covered is using Linux as a utility to fix problems with Windows workstations, Windows file sharing with Samba, TCP/IP setup, DHCP, time synchronization, print serving, TCP wrappers, Apache web server setup and customization, and FTP. Additional topics include how to automate tasks with Cron and set up a simple mirror-style server that can be used to backup Windows, Linux, and other operating systems. This class is based on Fedora Linux, although the principles may be applied to most distributions. Previous Linux experience is not required. You may also take this class non-credit by registering for Edtec 511-001 and Edtec 512-001. For more information, please call 581-6061. Special fee includes course materials and two vouchers for certification exams.

2964  Linux Professional Institute Level 2 (3)
   Designed for students looking to develop skills as network administrators. Topics explored in the class include the setup and maintenance of many of the most popular network services available for Linux and Unix today, including servers for DNS, LDAP, Web (HTTP, HTTPS), FTP, SMB (Windows networking), and email (SMTP, POP3, IMAP). Special attention is paid to the concepts needed to implement these services securely, and to the trouble-shooting skills which will be necessary for real-world administration of network services. It also takes a hands on approach to troubleshooting with a break-fix philosophy, 25% lecture, and 75% lab intensive content. Lab tasks let students choose the type of scenarios they would like to tackle, with hints, helps, and solutions to make learning very effective. Individuals need a solid grounding in UNIX concepts and basic systems admin. Fundamentals such as an understanding of Linux filesystem, process management, and ability to manipulate and edit files are required. Solid knowledge of network concepts, and the TCP/IP protocol suite is also assumed. You may also take this class non-credit by registering for Edtec 513-001 and Edtec 514-001. For more information, please call 581-6061. Special fee includes course materials and two vouchers for certification exams. Special fee includes course materials and two vouchers for certification exams.

2965  Special Topics (1.5)

2966  Special Topics (1.5)

3011  Industry Forum (1) Prerequisites: Full Major status in Computer Science OR Computer Engineering
   Meets with CS 3010. Presentations from local and national business leaders discussing issues in computing from industry perspectives, trends in computer science, professionalism, ethics, career readiness, lifelong learning, and contemporary issues. Offered on a graded basis.

3020  Research Forum (1) Prerequisites: Full Major Status in Computer Science OR Computer Engineering
   Research Forum is a course with a format similar to that of CS 3011 Industry Forum, but with a focus on research. Throughout the semester, students will hear from a number of speakers about the kinds of problems that remain unsolved in computer science. The majority of the speakers to be School of computing faculty, with some speakers coming from outside of the university.

3100  Models of Computation (3) Prerequisites: "C-" or better in CS 2100 AND (Full Major status in Computer Science OR Computer Engineering) Fulfills Quantitative Intensive BS.
   Models of sequential computation, including finite-state automata, push-down automata, and Turing machines.

3130  Engineering Probability and Statistics (3) Cross listed as ECE 3530. Prerequisites: Full Major Status in Computer Science OR Computer Engineering OR Electrical Engineering Fulfills Quantitative Intensive BS.
   An introduction to probability theory and statistics, with an emphasis on solving problems in electrical and computer engineering. Topics in probability include discrete and continuous random variables, probability distributions, sums and functions of random variables, the law of large numbers, and the central limit theorem. Topics in statistics include sample mean and variance, estimating distributions, correlation, regression, and hypothesis testing. Engineering applications include failure analysis, process control, communication systems, and speech recognition.

3200  Introduction to Scientific Computing (3)
   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, matrices, and calculus is assumed. Recommended programming experience at the level of CS 2420 and Mathematical background at the level of integral calculus.

3500  Software Practice (4) Prerequisites: Full Major status in Computer Science OR Computer Engineering
   Meets with CS 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) Prerequisites: "C-" or better in CS 3500 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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.

3650  3D Modeling for Video Games and Machinima (3)
   Introduction to asset design and the production pipeline for 3D game engines focusing on characters for Machinima, video games, and animation. Use of advanced graphics software packages that are prominent in the video game industry, demonstrated from the user's point of view and explained from the software engineer's perspective. Project-based class that include short lectures, project demonstrations, and one-on-one training in the lab.

3660  Interactive Machinima (3)
   Project-oriented class covering the skills required to produce Machinima: animations rendered using the 3D graphics engine of a video game. Study of the entire process, from story-boarding through post-production, required to produce an animated short.

3700  Fundamentals of Digital System Design (4) Cross listed as ECE 3700. Prerequisites: "C-" or better in (PHYS 2220 OR AP Physics E&M score of 4 or better) AND (Full Major status in Computer Science OR Computer Engineering) 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. Prerequisites: "C-" or better in (ECE 3700 OR CS 3700) AND (ECE 3810 OR CS 3810) AND (Full Major status in Computer Science OR Computer Engineering)
   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. Prerequisites: Full Major Status in Computer Science OR Computer Engineering OR Electrical Engineering 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) Prerequisites: Full Major status in Computer Science OR Computer Engineering

3991  CE Junior Seminar (0.5) Cross listed as ECE 3991. Prerequisites: Full Major status in Computer Science OR Computer Engineering
   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-Clinic/Pre-Project (1) Cross listed as ECE 3992. Prerequisites: "C-" or better in (ECE 3710 OR CS 3710) AND (CS 3991 OR ECE 3991) AND (Full Major status in Computer Science OR Computer Engineering
   This is the first course in a 2 or 3 semester series. The purpose of this course is to form teams and propose either a self-selected senior project to be completed in CS/ECE 4710, or an ECE clinic which will be completed in the subsequent 2 semesters. The individual option is to find a thesis advisor, and write a thesis proposal. The thesis work will be in CS/ECE 4991 and 4992. During the first half of the course while teams are being formed and while project ideas are being selected the instructor will lecture on the, fundamentals of project planning: scoping, group selection, risk assessment, scheduling, backup planning, strategy, etc. The second half of the course involves student presentations and critique of the written proposals that are in progress. The final result of the course will be an approved project, clinic, or thesis proposal.

4005  Honors Research Practice (3) Prerequisites: "C-" or better in CS 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  Computer Science Internship (1 to 3) Prerequisites: "C-" or better in CS 3505
   The School of Computing Cooperative Education and Internship Program (CEIP) seeks to provide students with practical experience to complement class-oriented learning. In most cases, CEIP experiences will occur at locations removed from campus, with a possibility of being out of state, usually during summer terms. Students will be required to plan four learning objectives to be completed across the 14+ week internship. Students must write a one page paper each week describing current progress, including on topics such as: Ethics, Skills, Information Interview, and Resume. A final paper must be completed describing the entire learning process. Permission from the Director of Undergraduate Studies is required to enroll.

4055  Advanced 3D Character Production (3) Prerequisites: "C-" or better in CS 3650
   Meets with CS 6055. This course is a continuation of learning the character pipeline from CS 3650 3D Character Modeling course. It is an interdisciplinary project driven course. The course curriculum is derived from courses in computer graphics, anatomy, scripting, design, sculpting, mechanics, and drawing. The students will learn professional industry techniques and concepts for UV design, multiple texture map creation, character rigging, blend shapes, posing, and rendering.

4060  Digital Figure Sculpting (3)
   Meets with CS 6060. This is an interdisciplinary project driven course blending graphics technology and realistic human figure sculpting. The course curriculum is derived from courses in computer graphics, anatomy, scripting, design, sculpting, mechanics, and drawing. The students will learn complex graphics systems and techniques used professionally in the entertainment arts and engineering industry including 3D printing.

4150  Algorithms (3) Prerequisites: "C-" or better in CS 2100 AND (Full Major status in Computer Science OR Computer Engineering) Fulfills Quantitative Intensive BS.
   Study of algorithms, data structures, and complexity analysis beyond the introductory treatment from CS 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.

4190  Programming Challenges (2) Prerequisites: Instructor Consent
   The course is a hands-on seminar for practicing advanced problem solving and programming skills in a mildly competitive atmosphere. Students work in teams to study strategies for problem decomposition, algorithm design and selection, and techniques for minimizing programming errors. An emphasis is placed on rapid development of accurate software solutions for problems found in real-world programming, interview exams, and programming competitions.

4230  Parallel Programming (3) Prerequisites: CS 4400 AND (Full Major Status in Computer Science OR Computer Engineering)
   This course is a comprehensive exploration of parallel programming paradigms, examining core concepts, focusing on subset of widely available contemporary parallel programming models, and providing context with a small set of parallel algorithms. In the last few years, this area has been the subject of significant interest due to a number of factors. The advent of multi-core microprocessors has made parallel computing available to the masses. At the high end, major vendors of large-scale parallel systems, including IBM, Cray, and Sun, have recently introduced new parallel programming languages designed for applications that exploit tens of thousands of processors. Embedded devices can also be through of a small multiprocessors. The convergence of these distinct markets offers an opportunity to finally provide application programmers with a productive way to express parallel computation. The course is structured a lectures, homework, programming assignments and a final project. Students will perform four programming projects to express algorithms using selected parallel programming models and measure their performance. The final project will consist of teams of 2-3 students who will implement codes by combining multiple programming models. Recommended experience in C programming or equivalent.

4400  Computer Systems (4) Prerequisites: "C-" or better in CS 3810 Fulfills Quantitative Intensive BS.
   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  Senior Capstone Project (3) Prerequisites: "C-" or better in CS 3505 AND Full Major Status in Computer Science AND Instructor's Consent
   This course is the capstone experience for graduating Computer Science seniors. It involves the development of significant software systems by small, self-selected student teams, with emphasis on applying sound, disciplined software engineering practice. Projects are defined and selected at the beginning of the semester, after which progress is demonstrated through documentation, meetings, and demos. The class culminates in a Demo Day at which students present their projects to faculty, students and project sponsors.

4510  EAE Senior Project I (3) Prerequisites: "C-" or better in CS 3505 AND Full Major Status in Computer Science AND Instructor's Consent
   Provides EAE students with a venue to test and explore the skills they have learned throughout their academic careers and to provide them with guidance in abstracting their experience. Working in multidisciplinary groups, students will follow an industrial model while building a video game from the ground up. Course staff acts as technical and creative producers on the project, while students fill all engineering, creative, and administrative positions. Games will be similar in scope and design to those found on current generation console download services, such as Xbox Live or the Play Station Network.

4515  EAE Senior Project II (3) Prerequisites: "C-" or better in CS 4510 AND Instructor's Consent
   Provides EAE students with a venue to test and explore the skills they have learned throughout their academic careers and to provide them with guidance in abstracting their experience. Working in multidisciplinary groups, students will follow an industrial model while building a video game from the ground up. Course staff acts as technical and creative producers on the project, while students fill all engineering, creative, and administrative positions. Games will be similar in scope and design to those found on current generation console download services, such as Xbox Live or the Play Station Network.

4540  Web Software Architecture (3) Prerequisites: "C-" or better in CS 3500 AND (Full Major status in Computer Science OR Computer Engineering)
   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) Prerequisites: "C-" or better in CS 3505 AND (Full Major status in Computer Science OR Computer Engineering)
   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.

4640  Image Processing Basics (3) Cross listed as BIOEN 4640. Prerequisites: Full Major status in Computer Engineering
   This course is an introduction to digital image processing. Simply put, image processing is the study of any algorithm that takes an image as input and produces an image as output. Digital images are ubiquitous in today's world, and the number of images available on the internet is exploding. Images are an important form of data in many fields. Examples include microscopy in biology, MRI and CT in medicine, satellite imagery in geology and agriculture, fingerprint and face images in security and many others. Digital image processing is vital in fully harnessing the information in all of this data. Practically every digital image your see today has undergone some form of image processing. Even point-and-shoot digital cameras have a dedicated image processing microchip that performs simple image processing tasks immediately after a photograph is taken. In this course you will learn the basic algorithms of image processing, including image enhancement, filtering, feature detection, geometric transforms, color processing, and compression. The goals of this course are to give you the understanding of how image processing algorithms work and what algorithms to apply to a given problem, and also the foundation necessary to develop your own image processing algorithms.

4710  Computer Engineering Senior Project (3) Cross listed as ECE 4710. Prerequisites: "C-" or better in (CS 3992 OR ECE 3992) AND (CS 5780 OR ECE 5780) AND (Full Major Status in Computer Science OR Computer Engineering)
   This is the capstone team project course for Computer Engineering majors who do not choose to do a thesis or an ECE clinic. The CS/ECE 3992 teams remain intact and the goal is too build and demonstrate the project that was proposed and approved in CS/ECE 3992. Students in this class do not meet in a classroom setting. Each team will meet with the instructor once each week for approximately 1 hour to discuss progress and/or problems as well as demonstrate scheduled milestone results. At the end of the term students are expected to demonstrate their entire operational project to an open house crowd of interested faculty and students. Friends and family are also welcome to attend. A final written report is also turned in which documents the details of all aspects of the project.

4950  Independent Study (1 to 4)

4960  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

4961  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

4962  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

4963  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

4964  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

4970  Computer Science Bachelor's Thesis (3) Prerequisites: Instructor's Consent
   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. Prerequisites: "C-" or better in (ECE 3992 OR CS 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/CS 4992 substitute for ECE/CS 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. Prerequisites: "C-" or better in (ECE 4991 OR CS 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/CS 4991 substitute for ECE/CS 4710 (Computer Engineering Senior Project) for students who have chosen to do a thesis.

4999  Computer Science Honors Thesis/Project (3) Prerequisites: Departmental Consent
   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) Prerequisites: "C-" or better in CS 2420 AND Instructor's Consent
   Meets with CS 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) Prerequisites: "C-" or better in CS 5010 AND Instructor's Consent
   Meets with CS 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.

5040  Teaching Introductory Computer Science (1) Prerequisites: Instructor's Consent
   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.

5100  Foundations of Computer Science (3) Prerequisites: "C-" or better in (CS 3100 AND CS 4150) AND Full Major status in Computer Science OR Computer Engineering
   Meets with CS 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.

5130  Computational Statistics (3) Prerequisites: Full Major Status in Computer Science Or Computer Engineering
   Meets with CS 6130. This is a course in fundamental statistical techniques used in computer science, with special emphasis on methods occurring in computer graphics and scientific visualization. Basic elements of probability theory will be reviewed, but the focus will be on understanding and computing statistics in applications that arise in our graphics and visualization curriculum.

5150  Advanced Algorithms (3) Prerequisites: "C-" or better in CS 4150 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 6150. Design and analysis of algorithms. Greedy algorithms, dynamic programming, divide and conquer. Asymptotic analysis and recurrence relations. Graph algorithms and network flows. Computational complexity and intractability. NP-hardness and beyond. Approximation algorithms.

5160  Computational Geometry (3) Prerequisites: "C-" or better in (CS 4150 OR CS 5150) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 6160. Study of algorithms for geometric objects (points, lines, surfaces). Topics include: convex hulls, Voronoi diagrams and Delaunay Triangulations, range searching, nearest neighbors, all in low and high dimension. Geometric duality, linear programing, path planning. may include some of: geometric approximations and core sets, VC-dimension, basic meshing and geometry processing.

5300  Artificial Intelligence (3) Prerequisites: "C-" or better in (CS 3505 AND (CS 3130 OR ECE 3530) AND CS 4150) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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. Prerequisites: "C-" or better in ((MATH 2250 OR MATH 2270) AND PHYS 2210 OR AP Physics C: Mech score of 4 or better) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in (CS 3505 AND (MATH 2270 OR MATH 2250)) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in CS 3505 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in CS 3505 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in CS 4400 AND (Full Major status in Computer Science OR Computer Engineering)
   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) Prerequisites: "C-" or better in (CS 3100 AND CS 4400) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 6470. 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) Prerequisites: "C-" or better in (CS 4150 AND CS 4400) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in CS 3500 AND (Full Major status in Computer Science OR Computer Engineering)
   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.

5530  Database Systems (3) Prerequisites: "C-" or better in CS 3500 AND (Full Major status in Computer Science OR Computer Engineering)
   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) Prerequisites: "C-" or better in CS 3500 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 6540. Fundamentals of input/output devices, user interfaces, and human factors in the context of designing interactive applications. Undergraduate students only. Knowledge of fundamental computer science principles and basic elements of computer graphics is assumed.

5600  Introduction to Computer Graphics (3) Prerequisites: "C-" or better in (CS 3500 AND (MATH 2250 OR MATH 2270)) AND (Full Major status in Computer Science OR Computer Engineering)
   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) Prerequisites: "C-" or better in (CS 3500 AND (MATH 2250 OR MATH 2270)) AND Admissions to Computer Science Honors Track AND (Full Major status in Computer Science OR Computer Engineering)
   Honors version of CS 5600.

5610  Interactive Computer Graphics (3) Prerequisites: "C-" or better in CS 5600 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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) Prerequisites: "C-" or better in (CS 3505 AND (CS 3200 OR CS 6210 OR MATH 5600)) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS 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.

5650  Visual Perception from a Computer Graphics and Visualization Perspective (3)
   Meets with CS 6650. Computer graphics produces images intended to be seen by people, yet relatively few practitioners in the field know much about the specifics of human vision. This course provides an introduction to human visual perception from the perspective of computer graphics and visualization, though it is also relevant to perceptual psychologists using computer graphics to generate experimental stimuli, directly investigating the perceptual effectiveness of some aspects of computer graphics, or interested in perceptual topics relevant to the information content of images but not included in most standard vision science references. In addition to material included in most standard visual perception classes, this course covers perception of material properties, illumination, the perception of pictorial space, image statistics, perception and action, and spatial cognition.

5660  Physics-based Animation (3) Prerequisites: "C-" or better in CS 5600 AND CS 3505
   Meets with CS. 6660. Physics-based simulation techniques have revolutionized special effects in film and video games, creating extremely realistic effects while allowing unprecedented artistic control and avoiding dangerous situations. this course will explore physics-based simulation methods for computer animation of a wide variety of phenomena and materials including rigid and deformable solids, cloth, liquids, and explosions. Students will be introduced to numerical methods, physical models, data structures, and theoretical results that form the building blocks of these methods. To gain hands-on experience, students will implement basic simulators for several phenomena.

5665  Character Animation (3) Prerequisites: "C-" or better in CS 5600 AND CS 3505
   Meets with CS 6665. Characters are one of the most important components of films and video games. Creating natural looking motion for virtual character is an area of very active research in the computer animation and graphics communities. This course will explore the problem of animating characters and a variety of the approaches that have been proposed. This course will be very technical in nature and will involve several programming assignments.

5710  Digital VLSI Design (4) Cross listed as ECE 5710. Prerequisites: "C-" or better in (CS 3700 OR ECE 3700) AND (Full Major status in Computer Science OR Computer Engineering)
   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. Prerequisites: "C-" or better in ECE 3110 AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with ECE/CS 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. Prerequisites: "C-" or better in (CS 3700 OR ECE 3700) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with ECE/CS 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. Prerequisites: Full Major status in Computer Science OR Computer Engineering
   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. Prerequisites: "C-" or better in (CS 3700 OR ECE 3700) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with ECE/CS 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. Prerequisites: "C-" or better in ((CS 3810 OR ECE 3810) AND (CS 2000 OR CS 4400)) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with CS/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 Software (3) Cross listed as ECE 5785. Prerequisites: "C-" or better in (CS 5780 OR ECE 5780 OR CS 6780 OR ECE 6780) AND (Full Major status in Computer Science OR Computer Engineering)
   This course is about designing and implementing reliable and efficient embedded software, with a bias toward whole-system issues. Students must be proficient in C programming, and complete a number of embedded programming projects in C. The course covers topics including embedded software architectures, digital signal processing, feedback control, real-time scheduling, verification and validation, embedded network protocols, and issues in creating safety-critical embedded systems.

5789  Embedded Systems and Kinetic Art (3) Prerequisites: Full Major Status in Computer Science OR Computer Engineering
   This is a project based course that meets with a corresponding course in the Art department (Kinetic Sculpture, ART 4455). the goal is to work on interdisciplinary teams to create kinetic art projects. Kinetic art contains moving parts or depends on motion, sound, or light for its effect. The kinetic aspect is often regulated using microcontrollers connected to motors, actuators, transducers, and sensors that enable the sculpture to move and react to its environment. Students will explore interfacing of embedded systems with sensors and actuators of all sorts, along with real-time/interactive programming techniques and interrupt driven system design. They will also explore physical and conceptual aspects of machine-making as an artistic process.

5830  VLSI Architecture (3) Cross listed as ECE 5830. Prerequisites: "C-" or better in ((CS 3700 OR ECE 3700) AND (CS 3810 OR ECE 3810)) AND (Full Major status in Computer Science OR Computer Engineering)
   Meets with ECE/CS 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)

5955  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5956  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5957  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5958  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5959  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5960  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5961  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5962  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5963  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5964  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5965  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5966  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5967  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5968  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

5969  Special Topics (1 to 4) Prerequisites: Full Major status in Computer Science OR Computer Engineering

6020  Conducting, Publishing, and Presenting Early-Career Research (3) Prerequisites: Graduate Status 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 CS 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.

6050  3D Modeling for Video Games, Animation, and Machinima (3) Prerequisites: Graduate Standing OR Instructor's Consent
   Meets with CS 3650. This course is an interdisciplinary project driven course blending graphic technology and character modeling for video games, animation, and machinima. The course curriculum is derived from courses in computer graphics, anatomy, scripting, mechanics, and drawing. The students will learn complex graphic systems and techniques used professionally in the entertainment arts and engineering industry. Students will write a paper on data structures or algorithms used in graphics software systems.

6055  Advanced 3D Character Production (3) Prerequisites: CS 6050
   Meets with CS 4055. This course is a continuation of learning the character pipeline from CS 6050 3D Character Modeling course. It is an interdisciplinary project driven course. The course curriculum is derived from courses in computer graphics, anatomy, scripting, design, sculpting, mechanics, and drawing. The students will learn professional industry techniques and concepts for UV design, multiple texture map creation, character rigging, blend shapes, posing, and rendering. Students will write a paper on data structures or algorithms used in the graphics software systems.

6060  Digital Figure Sculpting (3) Prerequisites: Graduate Standing OR Instructor's Consent
   Meets with CS 4060. This is an interdisciplinary project driven course blending graphics technology and realistic human figure sculpting. The course curriculum is derived from courses in computer graphics, anatomy, scripting, design, sculpting, mechanics, and drawing. The students will learn complex graphics systems and techniques used professionally in the entertainment arts and engineering industry including 3D printing. Students will write a paper on data structures or algorithms used in graphics software systems.

6070  EAE:MGS Game Design I (3) Prerequisites: Admission to EAE:MGS
   This is the first in a three part series of seminars designed to educate students about the video game industry, common practices within the industry with an emphasis on how games are designed and produced. This course focuses on a ludological approach to games, focusing on game mechanics. Students will read works covering game history, ludology, as well as current practices in game development. Game mechanics, production processes, and game theory will be the core content of the class. Students will both learn about and write pitches in addition to other types of pre-production documentation.

6071  EAE: MGS Game Design II (3) Cross listed as FILM 6702. Prerequisites: CS 6070
   Game design is the very core of the game development process. While the term "game designer" appears in various forms of game writing, design is frequently an eclectic and collaborative process. All participants in the EAE MGS study game design, so that they may both have an opportunity to participate in the creative direction of games and so that they can better understand the design process. Additionally, game design is a burgeoning academic field, and scholarly inquiry into both praxis and theory are now available to those interested in game design.

6072  EAE:MGS Game Design III (3) Prerequisites: CS 6071
   Focusing on the final stages of game design and production this course will incorporate the ludological and narrative approaches to games discussed in the previous two semesters to explore and analyze the game design and content aspects of specific genres of games. Students will learn about genre development, traditions, and trajectories. Students will learn how to conduct and write a postmortem in addition to a game critique.

6080  EAE:MGS Game Projects I (3) Prerequisites: Admission to EAE:MGS
   In this semester, the focus is rapid prototyping. Given a set of criteria, pitch a game and develop a prototype of the game, resulting in a better more refined game pitch and prototype. Teams will be made up of at least one producer, artist, and engineer. Four or five games will be prototyped using a variety of game engines and techniques.

6081  EAE: MGS Game Projects II (3) Cross listed as FILM 6712. Prerequisites: CS 6080
   Game Projects II is the second in the EAE:MGS game project sequence. Where the first section focused primarily on rapid prototyping, the second begins the two section team-based major game project. Students will work in teams to pitch, prototype, and begin development of their capstone game project. Instructors will meet regularly with students to both offer advice and criticism as the game progresses.

6082  EAE:MGS Game Projects III (3) Prerequisites: CS 6081
   This is the third in a series of three directed game development wrokshops. This is the second semester of the game project begun in Game Projects II.

6090  EAE:MGS Game Eng I (3) Prerequisites: Admissions to EAE:MGS
   Students will learn selected topics as applied to building a game engine. Topics will include: professional programming practices for games using C++, mathematics for games, data structures and algorithms for games, asset database systems, game pipeline processes, design patterns common to industry, and debugging systems used in the industry.

6091  EAE: MGS Game Engineering II (3) Prerequisites: CS 6090
   This course is a continuation of Game Engineering I (CS 6090) and will be project driven. Students will learn selected topics by dissecting given game engines and applying the to the game engine build in CS 6090. Topics will include: high performance computing, GPU/parallel programming, low-level algorithm analysis, and cross platform development, and memory management.

6092  EAE:MGS Game Engineering III (3) Prerequisites: CS 6091
   This course is a continuation of Game Engineering II (CS6091). Topics will include: code optimization, hardware, I/O devices, technical project management, game project architecture, industry standards and norms, shader programming, and networks for games.

6095  EAE: MGS Internship (9) Prerequisites: CS 6072 AND CS 6082 AND CS 6092
   During the final semester of the EAE:MGS, students will do an internal or external internship.

6100  Foundations of Computer Science (3) Prerequisites: CS 3100 AND CS 4150
   Meets with CS 5100. Graduate students only. Extra work required.

6110  Formal Methods for System Design (3) Prerequisites: CS 5100 OR CS 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.

6130  Computational Statistics (3) Prerequisites: Graduate Standing OR Instructor's Consent
   Meets with CS 5130. This is a course in fundamental statistical techniques used in computer science, with special emphasis on methods occurring in computer graphics and scientific visualization. Basic elements of probability theory will be reviewed, but the focus will be on understanding and computing statistics in applications that arise in our graphics and visualization curriculum.

6150  Advanced Algorithms (3) Prerequisites: CS 4150
   Meets with CS 5150. Graduate and Honors students only. Extra work required.

6160  Computational Geometry (3) Prerequisites: CS 4150 OR CS 5150
   Meets with CS 5160. Graduate and Honors students only. Extra work required.

6210  Advanced Scientific Computing I (3) Prerequisites: CS 3200 AND CS 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.

6220  Advanced Scientific Computing II (3) Prerequisites: CS 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  Parallel Computing and High Performance Computing (3) Prerequisites: 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.

6235  Parallel Programming for Many-Core Architectures (3)
   This courses examines an important trend in high-performance computing, the use of special-purpose hardware originally designed for graphics and games to solve general-purpose computing problems. Such graphics processing unites (GPUs) have enormous peak performance for arithmetically-intensive computations, and at relatively low cost as compared to their general-purpose counterparts with similar performance levels. Technology trends are driving all microprocessors towards multiple core designs, and therefore, techniques for parallel programming represent a rich area of recent study. Students in the course will learn how to develop scalable parallel programs targeting the unique requirements for obtaining high performance on GPUs. We will compare and contrast parallel programming for GPUs and conventional multi-core microprocessors. The course will largely consist of small programming assignments, and a larger term project to be presented to the class. Several of these projects from the past three years' classes were presented in conferences, workshops and poster sessions, and contributed to Masters and PhD research. As this course combines hands-on programming and a discussion of research in the area, it is suitable for Masters students and PhD students who wish to learn how to write parallel applications or are engaged in research in related areas.

6300  Artificial Intelligence (3) Prerequisites: CS 3505
   Meets with CS 5300. Graduate students only. Extra work required.

6310  Robotics (3) Cross listed as ME EN 6220. Prerequisites: CS 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  3D Computer Vision (3) Prerequisites: CS 3505 AND MATH 2270
   Meets with CS 5320. Introduction to fundamental problems of 3D Computer Vision and main concepts and techniques to solve those. Discussion of analysis methodologies and techniques to extract and model 3D information acquired via passive or active sensors, including multiple cameras, range sensors, structured light and 3D from camera motion. Methodologies include camera calibration, epipolar and multi-view geometry, shape from shading, photometric stereo, optical flow, camera motion, silhouettes, and object tracking, implementation of image, processing and vision method in programming projects.

6330  Introduction to Robot Control (3) Cross listed as ME EN 6230. Prerequisites: CS 6130 AND ME EN 6200
   Meets with ME EN 5230. Control of serial robot manipulators is examined. Topics include control system fundamentals, sensors and actuators, joint level control, centralized control, operational space control, and force control. Projects provide hands on experience controlling a serial link manipulator.

6340  Natural Language Processing (3) Prerequisites: CS 3505
   Meets with CS 5340. Graduate students only. Extra work required.

6350  Machine Learning (3) Prerequisites: CS 3505 AND (CS 5300 OR CS 6300)
   Meets with CS 5350. Graduate students only. Extra work required.

6360  Virtual Reality (3) Prerequisites: CS 5310 OR CS 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) Cross listed as ME EN 6225. Prerequisites: CS 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) Prerequisites: 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) Prerequisites: CS 4400
   Graduate students only. Extra work required.

6470  Compiler Principles and Techniques (3) Prerequisites: (ECE 3700 OR CS 3700) AND CS 4150
   Meets with CS 5470. 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.

6475  Advanced Compilers (3) Prerequisites: CS 6470 OR equivalent
   Compilation of modern languages. Optimization techniques, register allocation and instruction scheduling, garage collection, exception handling. Linkers and late-stage compilation and optimization.

6480  Advanced Computer Networks (3) Prerequisites: CS 4150 AND CS 4400
   Meets with CS 5480. Graduate students only. Extra work required.

6490  Network Security (3) Prerequisites: CS 5480 OR CS 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) Prerequisites: CS 3100 AND CS 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) Prerequisites: CS 3500
   Graduate-level course on the design and implementation of (relational) database system kernels, as well as other large-scale data management techniques. Reviews the relational data model (including relational algebra) and relational query language: SQL. Examines in depth file organization, database storage, indexing and hashing, query evaluation and optimization, transaction processing, concurrency control and recovery, database integrity and security (if schedule allows). In addition to the study of relational database kernels, this course also investigates latest development in other large-scale data management techniques, e.g., streaming algorithms, the MapReduce framework (in particular, the Hadoop system), and other IO efficient techniques (if time permits). Students will participate in a semester-long project and build a mini-database system by implementing several core modules in a relational database system. There might also be projects on other large scale data management techniques, such as sketching, MapReduce-based projects, etc., if time allows. In summary, this course is about the principles of designing and implementing database kernels, as well as other relevant large data management techniques. Please note that this is NOT a course on building database applications and introduction to database systems, i.e., we will not cover in this course how to build a database application (e.g., ER design, schema refinement, functional dependency, and database application development). Such topics will be covered in CS 5530.

6540  Human/Computer Interaction (3) Prerequisites: CS 3500
   Meets with CS 5540. Graduate students only. Extra work required.

6600  Mathematical Foundations of Computer Graphics and Visualization (3) Prerequisites: Graduate Standing OR Instructor's Consent
   Algorithms and techniques in geometric modeling, computer graphics, visualization, image processing, computer vision, robotics, and computation geometry rely on many of the same fundamental approaches. This course provides an overview of such methodologies along with application examples and strengthens the students' grasp of underlying mathematical concepts. Students will continue to build on these foundations in their other graduate classes and in their research. Emphasis is given to breadth of topics to provide a foundation from which discipline specific techniques and methodologies can advance.

6610  Interactive Computer Graphics (3) Prerequisites: CS 5600
   Meets with CS 5610. Graduate students only. Extra work required.

6620  Advanced Computer Graphics II: Ray Tracing (3) Prerequisites: CS 5610 OR CS 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) Prerequisites: CS 3510 AND (CS 3200 OR CS 5210 OR CS 6210 OR MATH 5600)
   Meets with CS 5630. Graduate students only. Extra work required.

6640  Introduction to Digital Image Processing (3) Cross listed as BIOEN 6640. Prerequisites: CS 2420 AND MATH 2250
   This is an introductory course in processing grey-scale images. This course will cover both mathematical fundamentals and implementation. It will introduce students to the basic principles of processing digital signals and how those principles apply to images. These fundamentals will include sampling theory, transforms and filtering. The course will also cover a series of basic image-processing problems including enhancement, reconstruction, segmentation, feature detection, and compression. Assignments will include several projects with implementations and analysis of real data.

6650  Visual Perception from a Computer Graphics and Visualization Perspective (3)
   Meets with CS 5650. Computer graphics produces images intended to be seen by people, yet relatively few practitioners in the field know much about the specifics of human vision. This course provides an introduction to human visual perception from the perspective of computer graphics and visualization, though it is also relevant to perceptual psychologists using computer graphics to generate experimental stimuli, directly investigating the perceptual effectiveness of some aspects of computer graphics, or interested in perceptual topics relevant to the information content of images but not included in most standard vision science references. In addition to material included in most standard visual perception classes, this course covers perception of material properties, illumination, the perception of pictorial space, image statistics, perception and action, and spatial cognition.

6660  Physics-based Animation (3)
   Meets with CS 5660. Physics-based simulation techniques have revolutionized special effects in film and video games, creating extremely realistic effects while allowing unprecedented artistic control and avoiding dangerous situations. this course will explore physics-based simulation methods for computer animation of a wide variety of phenomena and materials including rigid and deformable solids, cloth, liquids, and explosions. Students will be introduced to numerical methods, physical models, data structures, and theoretical results that form the building blocks of these methods. To gain hands-on experience, students will implement basic simulators for several phenomena.

6665  Character Animation (3) Prerequisites: CS 5665
   Meets with CS 5665. Characters are one of the most important components of films and video games. Creating natural looking motion for virtual character is an area of very active research in the computer animation and graphics communities. This course will explore the problem of animating characters and a variety of the approaches that have been proposed. This course will be very technical in nature and will involve several programming assignments.

6670  Computer-Aided Geometric Design I (3) Prerequisites: MATH 2210 AND MATH 2250 AND CS 3510 Corequisites: CS 5600 OR CS 6600
   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) Prerequisites: CS 6670
   Project based upon material covered in CS 6670.

6710  Digital VLSI Design (4) Cross listed as ECE 6710. Prerequisites: CS 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. Prerequisites: CS 6710 OR ECE 6710
   This course is for students who have designed and fabricated a digital integrated circuit in ECE/CS 5710, 6710, or 6770. Students will learn to use the chip testing equipment. They will test their chips for functionality, performance, and power and report on their results.

6720  Analog Integrated Circuit Design (3) Cross listed as ECE 6720. Prerequisites: ECE 3110
   Meets with ECE/CS 5720. Graduate students only. Extra work required.

6721  Analog Integrated Circuits Lab (1) Cross listed as ECE 6721. Prerequisites: ECE 5720 OR CS 5720 OR ECE 6720 OR CS 6720
   Optional lab that accompanies ECE/CS 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. Corequisites: ECE 6720 OR CS 6720
   This course is designed for students who fabricated an integrated circuit in ECE/CS 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. Prerequisites: ECE 3700 OR CS 3700
   Meets with ECE/CS 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. Prerequisites: ECE 3700 OR CS 3700
   Meets with ECE/CS 5750. Graduate students only. Extra work required.

6760  Modeling and Analysis of Biological Networks (3) Cross listed as ECE 6760, BIOEN 6760. Prerequisites: Background in molecular or cell biology or formal modeling
   Introduction to methods for modeling, analysis, and design of genetic circuits. A particular emphasis will be given to methods inspired by those used by engineers for circuit analysis. Other topics include: learning methods such as Bayesian analysis, differential equation models, stochastic analysis using Monte Carlo methods, reaction-based and logical abstraction, and synthetic genetic circuit design.

6770  Advanced Digital VLSI Systems Design (4) Cross listed as ECE 6770. Prerequisites: (CS 5710 OR ECE 5710) OR (CS 6710 OR ECE 6710) AND Instructor Consent
   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. Prerequisites: (ECE 3810 OR CS 3810) AND (CS 2000 OR CS 4400)
   Meets with ECE/CS 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. Graduate students only. Extra work required.

6785  Advanced Embedded Software (3) Cross listed as ECE 6785. Prerequisites: (ECE 5780 OR ECE 6780) OR (CS 5780 OR CS 6780)
   Meets with CS 5785. This course is about designing and implementing reliable and efficient embedded software, with a bias toward whole-system issues. students must be proficient in C programming, and complete a number of embedded programming projects in C. the course covers topics including embedded software architectures, digital signal processing, feedback control, real-time scheduling, verification and validation, embedded network protocols, and issues creating safety-critical embedded systems.

6810  Computer Architecture (3) Cross listed as ECE 6810. Prerquisites: ECE 3810 OR CS 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. Prerequisites: (CS 3700 OR ECE 3700) AND ECE 3810
   Meets with ECE/CS 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)

6945  Graduate Internship (0.5 to 3)
   The training is designed to provide the student with an opportunity to gain actual employment experience in their chosen profession. Its purpose is to "round out" or complement the students academic work. This internship experience is directly related to the students major and is commensurate with his/her educational level.

6950  Independent Study (1 to 4)

6955  Special Topics (1 to 4)

6956  Special Topics (1 to 4)

6957  Special Topics (1 to 4)

6958  Special Topics (1 to 4)

6959  Special Topics (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) Prerequisites: Graduate Status 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 are required of all participants.

7120  Information-Based Complexity (3) Prerequisites: CS 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) Prerequisites: CS 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. Whenever possible in their areas of research, students are given projects that lead to publishable research articles.

7250  Advanced Topics in Scientific Computing (3) Prerequisites: CS 6220
   In-depth study of research topics of current interest in scientific computing. Topics will typically have been surveyed in CS 6210 and 6220. This course can be repeated for credit since the focus will be changed from semester to semester.

7310  Robot Mobility and Manipulation (3) Cross listed as ME EN 7230. Prerequisites: (CS 5310 OR CS 6310) OR (ME EN 5220 OR ME EN 6220)
   Modeling and control of static and dynamic characteristics of manipulation and mobility are introduced. Case studies highlight classical approaches and students will independently explore contemporary topics in a course project.

7320  System Identification for Robotics (3) Prerequisites: (CS 5310 OR CS 6310) OR (ME EN 5220 OR ME EN 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) Prerequisites: CS 5460 AND (CS 5480 OR CS 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) Prerequisites: CS 3100 AND CS 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  Advanced Image Processing (3) Prerequisites: CS 2420 AND MATH 2250
   In-depth study of advanced methods and research topics of current interest in image processing and analysis. Covers PDEs, shape representations, deformable models (snakes, level sets), statistical shape analysis, scale-space and registration. Focus and list of topics might change from semester to semester.

7650  Realistic Image Synthesis (3) Prerequisites: CS 6620 AND CS 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. Prerequisites: CS 6810 OR 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. Prerequisites: CS 6810 OR ECE 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)


Home | Feedback | Disclaimer
This page was updated on Mar 02, 2012

U of U Class Schedules| Student Affairs Home Page| U of U Home Page

This web program is provided by Administrative Computing Services.
Please send comments or questions to webmaster@acs.utah.edu.

)