Rice UniversityWebsiteAcademic Catalog
Computer ScienceDepartment Website
Majors
Courses
source 1source 2COMP 100: Introduction to Computing and Information Systems (3)
An introduction to organizing, analyzing, and presenting information using databases and spreadsheets. No programming involved, and no computing background expected.
COMP 105: Ap/Oth Credit Computer Science (3) special
This course provides credit for students who have successfully completed approved examinations, such as Advanced Placement exams. This credit counts toward the total credit hours required for graduation.
COMP 140: Computational Thinking (4) intro
An introduction to computational problem solving designed to give an overview of computer science using real-world problems across a broad range of disciplines. Students learn how to think about these problems and how to structure effective solutions to them using computation. No programming knowledge is required or expected; students learn how to implement their solutions in Python. If you register for fully online section, you must have a webcam and you must take the exams in person.
COMP 160: Introduction to Game Programming in Python (4) intro
This class covers the basics of Python Programming with a focus on building simple games in a web-based environment. The class includes an introduction to event-driven programming and trains the students in the specifics of a Python GUI system designed to support creating to support creating applications that run in a web browser. This course is limited to first-year students only. Continuing Students may register with an approved Special Registration Form.
COMP 162: Introduction to Game Content Creation (3) graphics
Explore how modern game content is created, and how it interacts with the underlying technology. Beginning with an explanation of how games are developed and what role content plays in the process, the class will learn to use 3D Studio Max, Photoshop, and game-native scripting as they create working content for an established game project.
COMP 180: Principles of Computing (4) intro
This class is designed for non-majors interested in a broader understanding of Computer Science and focuses on intermediate-level programming in Python as well as the basics of discrete math. The class concludes with an introduction to the process of Algorithmic Thinking. Note that COMP 180 cannot be substituted for COMP 182 as a pre-requisite for upper level CS classes. Instructor Permission Required.
COMP 182: Algorithmic Thinking (4) algs
Algorithms are the engines of a great majority of systems, natural and artificial alike. This course introduces algorithmic thinking as a discipline for reasoning about systems, taming their complexities, and elucidating their properties. Algorithmic techniques, along with their correctness and efficiency, will be taught through reasoning about systems of interactions, such as markets, that are ubiquitous in our highly connected world.
COMP 200: Elements of Computer Science (3)
Broad introduction to major topics in computer science. Includes algorithms, mathematical models of computation, machine organization and design, programming languages, communication, and artificial intelligence. This course is intended for majors outside of Science and Engineering.
COMP 215: Introduction to Program Design (4) intro
This course covers the principles of programming and program design. The course is organized around a number of individual programming assignments that fit together to complete a significant, real-world application. Each assignment emphasizes one or more of the basic principles of software design, including: encapsulation, abstraction, test-driven development, and functional and object-oriented programming. The Java programming language will be used. An introduction to the basics of the Java language itself (including Java syntax and semantics) will be provided.
COMP 222: Intro to Computer Organization (4) sys
This course introduces students to the organization of computer systems in order that they gain an understanding of how a computer system executes their programs. Students will learn how to write small-scale programs in C, how to read the translation of those programs into assembly language, and how those programs are executed at the machine level. Specific topics covered will include data representation at the machine level, static versus dynamic memory allocation, instruction set architecture and the encoding of instructions in memory, linking relocatable object files to create executable files, pipelining within the processor, and caching within the memory system.
COMP 238: Special Topics (14) special
Topics and credit hours vary each semester. Contact department for current semester's topic(s). Repeatable for Credit.
COMP 290: Computer Science Projects (13) special
Theoretical and experimental investigations under staff direction. Credit cannot be received for both COMP 290 and COMP 390. Instructor Permission Required. Equivalency: COMP 390. Repeatable for Credit.
COMP 300: Society in the Information Age (3) impact
We will review the remarkable technology of the Information Age and examine its effects on the ways in which we live, work and think about the world around us. We will consider, for example, how the pervasive use of computers and networks is changing our ideas about property, privacy, authority, social relations, knowledge and identity. And we will discuss what further changes we might see as technology continues to advance.
COMP 301: Computer Ethics (3) impact
Given their growing power in the twenty-first century, computer scientists have duties both to society and their own profession to wield that power wisely and responsibly. In this discussion-and reflection-oriented course students will apply fundamentals of moral philosophy and social responsibility to current issues in computer science.
COMP 310: Advanced Object-Oriented Programming and Design (4) softeng
Discover how state-of-the-art object-orient programming and design techniques can create globe-spanning software systems that are both flexible and scalable. Learn how software design patterns are used in multiple programming paradigms. Explore highly decoupled systems with dynamically configurable behaviors. Highly recommended for anyone interested in building large systems and software engineering.
COMP 311: Functional Programming (4) pls
An introduction to concepts, principles, and approaches of functional programming. Functional programming is a style of programming where the key means of computation is the application of functions to arguments (which themselves might be functions). This style of programming has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in many modern contexts such as web services, multicore programming, and cluster computing. Course work consists of a series of programming assignments in the Scala programming language and various library extensions such as Apache Spark.
COMP 312: Intro to Programming Languages (3) pls
This course explores the design landscape of programming languages and compilers, with the primary goal of giving students skills and knowledge that will help them as practitioners. After completing the course, students should be able to evaluate the tradeoffs between different programming languages, choose the language that is best-suited to a given task, write code using the functional programming paradigm, and learn new languages more quickly. Specific topics covered include lexical and syntactic analysis, type systems, variable scopes and bindings, control flow structures, and functional programming. Case studies from modern programming languages will be used to illustrate a range of abstractions and design choices.
COMP 318: Concurrent Program Design (4) softeng
Modern software systems are typically complex, event-driven, and require coordination across multiple components. Such systems require careful design to ensure that they uphold best practices in software design while supporting concurrency. This course will introduce principles of designing large-scale concurrent software and give students practice implementing these principles in the context of large-scale, highly concurrent software systems. Topics covered will include concurrency vs. parallelism, concurrency concepts and mechanisms, and principles of software design including encapsulation, composition, decoupling, and accessibility.
COMP 321: Introduction to Computer Systems (4) sys
This course introduces computer systems from the programmer's perspective. Topics include data representation, the compilation process, and system-level programming concepts such as interrupts and concurrency. Formerly COMP 221.
COMP 322: Principles of Parallel Programming (4) sys
Fundamentals of parallel programming: abstract models of parallel computers, parallel algorithms and data structures, and common parallel programming patterns including task parallelism, undirected and directed synchronization, data parallelism, divide-and-conquer parallelism, and map-reduce. Laboratory assignments will explore these topics through the use of parallel extensions to the Java language.
COMP 323: Introduction to Mathematical Cryptography (3) math
The course introduces students to modern cryptographic techniques, focusing mainly on mathematical tools. The course covers topics such as Diffie-Hellman key exchange, the ElGamal public key crypto system, integer factorization and RSA, and elliptic curves and lattices in cryptography
COMP 326: Digital Logic Design (3) sys
Study of gates, flip-flops, combinational and sequential switching circuits, registers, logical and arithmetic operations, introduction to the Verilog hardware description language
COMP 327: Introduction to Computer Security (3) sys
This elective course covers a wide variety of topics in computer security, including hands-on experience with breaking software and engineering software to be harder to break. For example, students will perform buffer overflow attacks and exploit web application vulnerabilities, while also learning how to defend against them. Grades will be based on a series of in-class projects
COMP 330: Tools and Models for Data Science (3) ai
This course is an introduction to modern data science. Data science is the study of how to extract actionable, non-trivial knowledge from data. The proposed course will focus both on the software tools used by practitioners of modern data science, as well as the mathematical and statistical models that are employed in conjunction with such software tools. On the tools side, we will cover the basics of relational database systems, as well as modern systems for distributed computing based on MapReduce. On the models side, the course will cover standard supervised and unsupervised models for data analysis and pattern discovery. Can be taken concurrently with COMP 215
COMP 340: Statistical Models and Algorithms for Data Science (4) ai
The course is an intermediate level course in data science for students at the sophomore level with some experience in programming and background in mathematics (calculus). The course teaches students to “do” data science in Python using six modules to illustrate fundamental data science operations, data cleaning, model exploration, model formulation, model visualization, model communication
COMP 341: Practical Machine Learning for Real World Applications (3) ai
This course teaches practical skills for using machine learning models. Students will learn how to apply ML algorithms to real world problems from data collection to the final step of reporting findings. Topics covered include: data augmentation, bias detection, feature engineering, efficient tuning and training, model interpretation, and data storytelling.
COMP 360: Computer Graphics (4) graphics
2D graphics techniques including fast line and curve drawing and polygon filling. 3D graphics problems including representation of solids, shading, and hidden surface elimination. Fractals, graphics standards.
COMP 361: Geometric Modeling (4) graphics
Exploration of curves and surfaces (e.g. parametric form, implicit form, and conversion between forms), the representation of solid (e.g., wireframes, octrees, boundary representations, and constructive solid geometry), and applications (e.g., graphics, motion planning, simulation, and finite element mesh generation.
COMP 380: Practical Problem-Solving (3) algs
We introduce algorithms, algorithmic techniques, and some discrete math with a decidedly practical bent. This will improve anyone’s programming skills, but with specific application towards programming contests and programming-oriented job interviews. This also provides optional additional preparation for COMP 382. Features both individual and small-group exercises in a hands-on class.
COMP 382: Reasoning About Algorithms (4) algs
Writing algorithms is fun, but how are you sure that the algorithm you wrote is flawless? Are there computing tasks for which it is impossible to produce an efficient algorithm, or, for that matter, any algorithm? To answer these questions, you have to learn to perform mathematical reasoning about algorithmic problems and solutions COMP 382 is an introduction to such reasoning techniques. Topics covered would include elementary logic, analysis of the correctness and efficiency of algorithms, and formal computational models like finite automata and Turning machines. On the way, you are also going to learn some new algorithm design techniques.
COMP 390: Computer Science Projects (13) special
Theoretical and experimental investigations under staff direction.
COMP 402: Production Programming (4) softeng
This course focuses on the principles and practices of test-driven software development, which have been popularized under the banner of 'Extreme Programming.' To provide students with practical experience, the course engages students in the development of open source production programs written in JAVA or C#. The DRJAVA programming courses was developed by students in this course. Some of the major topics covered in course lectures include design patterns for controlling concurrency and refactoring transformations to improve legacy code.
COMP 403: Reasoning and Software (3) pls
Our reliance on software of all forms is increasing by the day. As a result, it is more important than ever to ensure that programs function correctly and cannot be exploited by hostile adversaries. The field of formal methods takes on this challenge, developing algorithms and programming methodologies that can be used to formally reason about what happens when software executes on arbitrary inputs, often without actually executing the program. Such reasoning can be used, for example, to identify subtle bugs and vulnerabilities in programs, or to give mathematical proofs of program correctness. This is a hands-on introduction to the field of formal methods. In this class, you will learn the theoretical foundations of these systems; you will also implement a series of systems that can be used to reason about the correctness of C programs.
COMP 405: Advanced Topics in Object-Oriented Design (4) softeng
A topics-driven exploration of cutting-edge object oriented design issues and concepts including mutable recursive data frameworks, design patterns for sorting, parsing and games, service-oriented architectures and cloud computing. Detailed knowledge and practice in abstract structure and behavioral representations, delegation model programming, design patterns and Java are required.
COMP 408: Verified Programming (3) pls
The course will explore the mathematical underpinnings of reliable software. The students will learn how to use proof assistants to construct software along with a machine-checkable proof of its correctness. Basic concepts of logic, functional programming, static type systems and deductive verification will be covered.
COMP 409: Advanced Logic in Computer Science (3) math
Logic has been called 'the calculus of computer science'. The argument is that logic plays a fundamental role in computer science, similar to that played by calculus in the physical sciences and traditional engineering disciplines. Indeed, logic plays an important role in areas of Computer Science as disparate as artificial intelligence (automated reasoning), architecture (logic gates), software engineering (specification and verification), programming languages (semantics, logic programming), databases (relational algebra and SQL), algorithms (complexity and expressiveness), and theory of computation (general notions of computability).
COMP 410: Software Engineer Methodology (4) softeng
COMP 410 is a pure discovery-based learning course designed to give students real-life, hands-on training in a wide variety of software engineering issues that arise in creating large-scale, state-of-the-art software systems. The class forms a small software development 'company' that works to deliver a product to a customer. The topics encountered include and are not limited to, dealing with new technologies (e.g. C#, .NET, distributed computing), advanced object-oriented programming and design, interacting with customers, problem specification and tasking, individual and group communications, human resource management, group leadership, testing, integration and documentation. Traditional development cycle methodologies will be compared to recent, 'agile' techniques.
COMP 411: Principles of Programming Languages (4) pls
The design, definition and abstract implementation of programming languages including methods for precisely specifying syntax and semantics.
COMP 412: Compiler Construction for Undergraduate Students (4) pls
Topics in the design of programming language translators, including parsing, run-time storage management, error recovery, code generation and optimization.
COMP 413: Distributed Program Construction (4) sys
This course focuses on modern principles for the construction of distributed programs, with an emphasis on design patterns, modern programming tools, and distributed object systems. The material will be applied in a substantial software design/construction project.
COMP 414: Optimization: Algorithms, Complexity and Approximations (3) algs
The main focus of the course will be on smooth optimization techniques, with applications in machine learning and artificial intelligence. The course will introduce the basics of algorithms on continuous optimization, starting from the classical gradient descent algorithm in convex optimization, towards more sophisticated approaches in non-convex scenarios. The course will explore the fundamental theory, algorithms, complexity and approximations in nonlinear optimization.
COMP 415: Real-World Software Development (4) softeng
Experience real customers, software, and situations. The class will be contracted by an industrial customer to design build, and deliver a product. Negotiate to finalize specifications, updates, and delivery schedules Encounter real-life issues such as team management, intellectual property, and vagueness and specification changes while developing a state-of-the-art software application.
COMP 416: Genome-Scale Algorithms and Data Structures (3) algs
Since the advent of Sanger Sequencing in 1977, computer scientists have devised algorithms and software tools to interpret and analyze DNA sequences. The field of bioinformatics focuses on computational approaches to solving biological questions. This course serves both as an introduction to widely used algorithms in bioinformatics and a software design course. The class involves a semester-long software design and implementation project, emphasizing design patterns and high-performance computing. No prior knowledge of biology is assumed nor required.
COMP 417: Advanced Operating Systems and Security (3) sys
In this seminar, we will investigate advanced topics in the design and implementation of operating systems, including: OS structure (including Web Browsers), concurrency and synchronization, memory management, file systems and storage, virtual machines, and information protection. We will explore both fundamental and hot topics through reading, discussing, and presenting key research findings. This course will also cover methods for critiquing, writing, and presenting research findings through a course long project.
COMP 418: IoT Programming And Data Analysis (4) sys
This course is an introduction to the Internet of Things (IoT). It will present the tools and techniques needed to develop complex IoT applications that encompass interaction with the physical world and data analysis across the IoT computing infrastructure. The topics range from programming microcontrollers (e.g., Arduino) and single-board computers (e.g., Raspberry Pi) to IoT automation and the efficient analysis of real-time IoT data.
COMP 420: Introduction to Distributed Computer Systems (4) sys
Introduction to distributed computer systems. The course covers concepts, architecture, algorithms, protocols, and implementation, focusing on distribution, scale, robustness in the face of failure, and security.
COMP 421: Operating Systems and Concurrent Programming (4) sys
Introduction to the design, construction, and analysis of concurrent programs with an emphasis on operating systems, including filing systems, schedulers, and memory allocators. Specific attention is devoted to process synchronization and communication within concurrent programs.
COMP 422: Parallel Computing (4) sys
COMP 422 is an undergraduate version of this course. COMP 422 students will have four programming assignments. COMP 534 students will have five. As part of their assignments, both COMP 422 and COMP 534 students will analyze the scalability and parallel efficiency of parallel programs they write. COMP 534 students will additionally use tools to qualify the root causes of scaling losses in their programs and document their findings.
COMP 423: Intro to Math Cryptography (3) math
The course introduces students to modern cryptographic techniques, focusing mainly on mathematical tools. The course covers topics such as Diffie-Hellman key exchange, the ElGamal public key crypto system, integer factorization and RSA, and elliptic curves and lattices in cryptography.
COMP 424: Mobile and Embedded System Design and Application (4) sys
ELEC 424 introduces mobile and embedded system design and applications to undergraduate students and provides them hands-on design experience. It consists of three interlearning parts: lectures, student project, and student presentations.
COMP 425: Computer Systems Architecture (4) sys
Evolution of key architecture concepts found in advanced uniprocessor systems. Fundamental and advanced pipelining techniques and associated issues for improving processor performance.
COMP 427: Introduction to Computer Security (3) sys
This elective course covers a wide variety of topics in computer security, including hands-on experience w/breaking software & engineering software to be harder to break.
COMP 429: Introduction to Computer Networks (4) sys
Network architectures, algorithms, and protocols. Local- and Wide-area networking. Intra- and inter-domain routing. Transmission reliability. Flow and congestion control. TCP/IP. Multicast. Quality of Service. Network Security - Networked applications.
COMP 430: Introduction to Database Systems (3) sys
Introduction to relational and other database systems, SQL programming, Database application programming, and Database design.
COMP 431: Web Development (3) sys
In this project-based course, students create multi-user Web applications involving all aspects of application development from front-end and back-end programming to interfacing client-server communications technologies. Class time includes discussions of topics in Web development, structural frameworks, test driven development, and time for students to develop their Web applications.
COMP 432: Database System Implementation (34) sys
This course covers database management system architecture, query processing and optimization, transaction processing, concurrent control and recover, storage, indexing structures and related topics. Students will build a database system from the ground up. Students who have not had an introductory database course should enroll for 4 credits: all others should enroll for 3 credits.
COMP 435: Election Systems, Technologies, and Administration (3) impact
This multidisciplinary course will consider how elections are conducted to enhance participation, to accurately measure the will of the electorate, and to be sufficiently rigorous to convince all parties that the results are legitimate. This course will consider the design and evaluation of election technologies, ranging from voter registration through the polling booth and vote tabulation.
COMP 436: Secure and Cloud Computing (3) sys
What is “cloud computing?” How do we build cloud-scale systems and components that are secure against malicious attacks, and scale to millions of users? Many of today’s services run inside the cloud – a set of geographically distributed data centers running heterogeneous software stacks.
COMP 440: Artificial Intelligence (4) ai
This is a foundational course in artificial intelligence, the discipline of designing intelligent agents. The course will cover the design and analysis of agents that do the right thing in the face of limited information and computational resources. The course revolves around two main questions: how agents decide what to do, and how they learn from experience. Tools from computer science, probability theory, and game theory will be used. Interesting examples of intelligent agents will be covered, including poker playing programs, bots for various games (e.g. WoW), DS1 -- the spacecraft that performed an autonomous flyby of Comet Borrely in 2001, Stanley -- the Stanford robot car that won the Darpa Grand Challenge, Google Maps and how it calculates driving directions, face and handwriting recognizers, Fedex package delivery planners, airline fare prediction sites, and fraud detectors in financial transactions.
COMP 441: Large-Scale Machine Learning (3) ai
Learning from large dataset is becoming a ubiquitous phenomena in all applications spanning robotics, medical decisions, internet, communication, biology, etc. Designed to give senior UG students a thorough grounding in the theory and algorithms needed for research and practical applications in machine learning for modern massive datasets. Topics draw from machine learning, classical statistics, algorithms and information theory.
COMP 442: Reinforcement Learning (3) ai
This course introduces students to reinforcement learning (RL), a general and impactful machine learning paradigm for solving sequential decision-making problems and designing autonomous agents. The course will cover both classical and recent algorithms for reinforcement learning (including deep RL) and imitation learning (including inverse RL). Through the assignments and final project, students will get hands-on experience in applying reinforcement learning algorithms to solve problems inspired by real-world applications. The course will conclude with an overview of open problems and ongoing research in reinforcement learning.
COMP 446: Mobile Device Applications (4) sys
Connected mobile devices require updated programming models and design concepts to take advantage of their capabilities. We will explore applications primarily on the Apple iPhone and iPad but will also cover smart watches, Google Android and intelligent voice assistants like Amazon Echo and Google Home. We will briefly touch on the development of web services to support mobile applications. The course culminates with a large project taking up most of the second half of the semester. Although the curriculum centers around and teaches iOS and Xcode, final projects may be completed in any major mobile system including Android and Alexa, etc.
COMP 447: Introduction to Computer Vision (3) ai
An introduction to the basic concepts, algorithms and applications in computer vision. Topics include: image processing pipelines, low-level vision/image processing methods such as filtering and edge detection, mid-level vision topics such as segmentation and feature detection, and high-level vision tasks such as object recognition and face recognition with neural networks. The course will involve programming and implementing basic computer vision algorithms in Python.
COMP 448: Concrete Mathematics (3) math
Concrete mathematics is a blend of continuous and discrete mathematics. Major topics include sums, recurrences, integer functions, elementary number theory, binomial coefficients, generating functions, discrete probability and asymptotic methods.
COMP 449: Applied Machine Learning and Data Science Projects (4) ai
In this project-based course, student teams will complete semester-long data science research or analysis projects selected from a variety of disciplines and industries. Students will also learn best practices in data science.
COMP 450: Algorithmic Robotics (4) ai
Robots have fascinated people for generations. Today, robots are built for applications as diverse as exploring remote planets, de-mining war zones, cleaning toxic waste, assembling cars, inspecting pipes in industrial plants and mowing lawns. Robots are also interacting with humans in a variety of ways: robots are museum guides, robots assist surgeon sin life threatening operations, and robotic cars can drive us around. The field of robotics studies not only the design of new mechanisms but also the development of artificial intelligence frameworks to make these mechanism useful in the physical world, integrating computer science, engineering, mathematics and more recently biology and sociology, in a unique way. This class will present fundamental algorithmic advances that enable today’s robots to move in real environments and plan their actions. It will also explore fundamentals of the field of Artificial Intelligence through the prism of robotics. The class involves a significant programming project.
COMP 451: Design and Analysis of Cyber-Physical Systems (4) sys
This course is an introduction to cyber-physical systems, engineering artifacts in which computational components interact with and typically control physical components. Some common examples of cyber-physical systems include robots, Segways and lane-departure warning, LDW, systems in automobiles.
COMP 458: Quantum Computing Algorithms (3) algs
Quantum computing is an emerging field with the potential to revolutionize various industries, including cryptography, scientific computation, optimization, and machine learning. Quantum Computing Algorithms is a course designed to introduce students to the foundations and practical algorithms of quantum computing from a systems perspective to equip them for the evolving technological landscape. The course will first refresh students on required mathematical concepts in linear algebra, probabilities, and statistics. Students will also learn about fundamental quantum principles, including superposition, entanglement, reversibility, interference, and circuits. The course will then delve into advanced quantum algorithms, especially variational and parameterized codes, including search, optimization, machine learning, and quantum simulation. Students will gain hands-on experience with Python-based quantum programming languages, Cirq and Tensorflow Quantum, to program current quantum computers.
COMP 459: Machine Learning with Graphs (3) ai
This course will overview both traditional and more recent graph-based machine learning algorithms. Graphs show up in machine learning in many forms. Oftentimes, the input data can be naturally represented as a graph, such as for relational learning tasks applied to social networks and graph kernels applied to chemical data. Other times, graphs are just a framework to express some intrinsic structure in the data, such as for graphical models and non-linear embedding. In both cases, recent advances in representation learning (or graph embedding) and deep learning have generated a renewed interest in machine learning on graphs. At the end of the course, students are expected to be able to: (1) identify the appropriate graph-based machine learning algorithm for a given problem; (2) extend existing algorithms to solve new related problems; and (3) recognize some of the key research challenges in the field. The course will be a mixture of lectures, a research paper presentation, homework assignments (including programming), and a hands-on class project.
COMP 460: Advanced Computer Game Creation (4) capstone
This project-based class involves teams of 2-4 CS and Visual Arts students designing and building computer games suitable for Xbox Live Arcade using C# and XNA.
COMP 461: Senior Design in a Robotized World (4) capstone
Robots are now a wide spectrum of various embodiments, e.g., humanoids, dogs, industrial arms, drones, and self-driving cars, and they are rapidly merging themselves into our society. While we are not fully ready to welcome them, yet, we are more than certain that we need to work with them in ways that we did not know before. On the one hand, we are still challenged by many technical problems to enable robots to be more dexterous and robust. On another hand, in a time where resources are connected and networked, we need to design novel systems to manage different robots, share the robots, or even make them autonomously and adaptively build teams. In this senior design course, we will develop team-based projects and will look into a robotized future with our imaginations: we will either solve problems that are technically going to enhance the robot skills, or address problems that will make future robots more useful and more organized in the real world. Background in robotics is not required. In our creative projects, your efforts in developing core robot algorithms, databases, machine learning systems, web applications, mobile apps, LLM models, or anything else that can be useful, will together make this robotized world a better place.
COMP 462: Fundamentals of Robotic Manipulation (3) ai
Robots, as seen in many different forms, can help people in various application scenarios to improve the efficiency, safety, and quality of task executions. In particular, those robots which can physically interact with the world possess essential skills, called manipulation, to engage themselves more comprehensively in the real-world tasks. This course will introduce both fundamental and the state-of-the-art knowledge that enable robots to manipulate in our world. Topics including robot motions, kinematics, dynamics, simulation and ROS, hand and grasping, prehensile and nonprehensile manipulation, robot control, and interactive estimation, will be covered. Significant programming projects are involved to facilitate converting the textbook knowledge to solid hands-on experiences.
COMP 463: Computer Graphics (4) graphics
2D graphics techniques including fast line and curve drawing and polygon filling. 3D graphics problems including representation of solids, shading, and hidden surface elimination. Fractals, graphics standards.
COMP 474: Computational Genomics for Microbial Forensics (3) algs
This course covers computational approaches, including algorithms (divide and conquer, greedy, randomized) and data structures (suffix arrays, suffix trees, de bruijn graphs) that have served as the foundation for computational analyses and real-time tracking of infectious diseases. The course is organized into four themed modules, and each module features several seminal computational advances leading to real-world applications spanning the past three decades. The students prepare written summaries of each computational advance, as well as prepare in-class presentations, to both reinforce learning and embed communication into the class. The course also features quizzes (on Canvas) and a midterm and final exam to assess learning of the key computational concepts covered in this course.
COMP 480: Probabilistic Algorithms and Data Structure (4) algs
This course will be ideal for someone wanting to build a strong foundation in the theory and practice of algorithms for processing Big-Data. We will discuss advanced data structures and algorithms going beyond deterministic setting and emphasize the role of randomness in getting significant, often exponential, improvements in computations and memory.
COMP 481: Automata, Formal Languages, and Computability (3) theory
Finite automata, regular expressions, regular languages, pushdown automata, context-free languages, Turing machines, recursive languages, computability, and solvability. It is strongly recommended that students complete three semesters of Mathematics before enrolling in this course.
COMP 485: Fundamentals of Medical Imaging I (3) science
This course will introduce basic principles of image acquisition, formation and processing of several medical imaging modalities such as X-Ray, CT, MRI, and US that are used to evaluate the human anatomy. The course also includes visits to a clinical site to gain experience with the various imaging modalities covered in class.
COMP 486: Fundamentals of Medical Imaging II (3) science
This course focuses on functional imaging modalities used specifically in nuclear medicine such as Gamma cameras, SPECT, and PET imaging. The course will introduce the basic principles of image acquisition, formation, processing and the clinical applications of these imaging modalities and lays the foundations for understanding the principles of radiotracer kinetic modeling. A trip to a clinical site in also planned to gain experience with nuclear medicine imaging.
COMP 487: Computational Complexity (3) theory
In Computational Complexity we study the computational resources (time, space, communication, etc.) that are required to solve computational problems via various computational needs. Specifically, we are interested in classifying computational problems with classes of other problems that require similar amount of resources to solve.
COMP 490: Computer Science Projects (14) special
Theoretical and experimental investigation under staff direction. Instructor Permission Required. Repeatable for Credit.
COMP 491: Computer Science Teaching (3) special
A combination of in-service teaching and a seminar. Department Permission Required. Repeatable for Credit.
COMP 496: Rtg Cross-Training in Data Sci (1) talks
A seminar course to introduce students to topics in Data Science at the interface between Statistics and Computer Science. Students participate in the process of preparing, delivering and critiquing talks. Topics change each semester.
COMP 498: Introduction to Robotics (3) ai
The course will provide the student with a mathematical introduction to many of the key ideas used in today's intelligent robot systems. The focus of the course is on the analysis and control of manipulators. The course will also give an overview of common approaches to building intelligent robot systems.
MATH 101: Single Variable Calculus I (3) math
Limits, continuity, differentiation, integration, and the Fundamental Theorem of Calculus.
MATH 102: Single Variable Calculus II (3) math
Continuation of MATH 101. Includes further techniques of integration, as well as infinite sequences and series, Taylor polynomials and Taylor series, parametric equations, arc length, polar coordinates, complex numbers, and Fourier polynomials.
MATH 105: Ap/Oth Credit in Calculus I (3) math
Provides transfer credit based on student performance on approved examinations in calculus
MATH 106: Ap/Oth Credit in Calculus II (3) math
Provides transfer credit based on student performance on approved examinations in calculus, such as the BC Calculus Advanced Placement exam or the International Baccalaureate higher-level calculus exams.
MATH 111: Calculus: Differentiation (3) math
Study of calculus, forming with MATH 112 a version of MATH 101/102 that does not cover infinite series. MATH 111 covers functions, limits, continuity, and derivatives and their applications.
MATH 112: Calculus: Integration and Its Applications (3) math
Continuation of the study of calculus from MATH 111. Integration, the Fundamental Theorem of Calculus, techniques of integration and applications.
MATH 212: Multivariable Calculus (3) math
Calculus of multiple variables. Vectors, partial derivatives and gradients, double and triple integrals, vector fields, line and surface integrals, Green's theorem, Stokes's theorem, and Gauss's theorem.
MATH 232: Honors Multivariable Calculus (3) math
Calculus of several variables (partial derivatives and gradients, double and triple integrals, vector fields, line and surface integrals, Green's theorem, Stokes's theorem, Gauss's theorem). Content is similar to that of MATH 212, but MATH 232 will use linear algebra to extend results to R^n. There will also be an emphasis on rigorous mathematical arguments.
CMOR 302: Matrix Analysis (3) math
Equilibria and the solution of linear systems and linear least squares problems. Eigenvalue problem and its application to solve dynamical systems. Singular value decomposition and its application.
CMOR 303: Matrix Analysis Data Science (3) math
Solution of linear systems and linear least squares problems. Eigenvalue problem and singular value decomposition. Introduction to gradient based methods. Applications to data science.
STAT 310: Probability and Statistics (3) math
Probability and the central concepts and methods of statistics including probability, random variables, distributions of random variables, expectation, sampling distributions, estimation, confidence intervals, and hypothesis testing
STAT 311: Honors Probability and Mathematical Statistics (3) math
Probability and the central concepts and methods of statistics including probability, random variables, distributions of random variables, expectation, sampling distributions, estimation, confidence intervals, and hypothesis testing. Advanced topics (not covered in STAT 310 or STAT 315) include the modeling stochastic phenomena and asymptotic statistical theory. Intended for students wishing to understand more rigorous statistical theory and for those contemplating a BS degree in Statistics or graduate school in statistical science.
STAT 312: Prob & Stat for Engineers (3) math
Probability and the central concepts and methods of statistics including probability, distributions of random variables, expectation, sampling distributions, estimation, confidence intervals, and hypothesis testing. Examples are predominantly from civil and environmental engineering.
STAT 315: Statistics for Data Science (4) math
An introduction to mathematical statistics and computation for applications to data science. Topics include probability, random variables expectation, sampling distributions, estimation, confidence intervals, hypothesis testing and regression. A weekly lab will cover the statistical package, R, and data projects.
MATH 354: Honors Linear Algebra (3) math
Vector spaces, linear transformations and matrices, theory of systems of linear equations, determinants, eigenvalues and diagonalizability, inner product spaces; and optional material chosen from: dual vector spaces, spectral theorem for self-adjoint operators, Jordan canonical form. Content is similar to that of MATH 355, but with more emphasis on theory. The course will include instruction on how to construct mathematical proofs. This course is appropriate for potential Mathematics majors and others interested in learning how to construct rigorous mathematical arguments.
MATH 355: Linear Algebra (3) math
Systems of linear equations, matrices, vector spaces, linear transformations, determinants, inner products, eigenvalues and eigenvectors, and the Spectral Theorem for real symmetric matrices
ELEC 303: Random Signals in Electrical Engineering Systems (3) engr
An introduction to probability theory and statistics with applications to electrical engineering problems in signal processing, communications and control; probability spaces, conditional probability, independence, random variables, distribution and density functions, random vectors, signal detection and parameter estimation