Department of Computer Science
Department of Computer Science Join Us Department of Computer Science People Department of Computer Science Research Department of Computer Science Academics Department of Computer Science CS Job Board Department of Computer Science About CS Rice Department of Computer Science Events Department of Computer Science CS Home

Computer Science Courses 100-400

Visit the Registrar's Homepage for Current Course Listings

COMP 100

INTRODUCTION TO COMPUTING AND INFORMATION SYSTEMS

http://www.owlnet.rice.edu/~comp100/

COMP 110

COMPUTATION IN SCIENCE AND ENGINEERING (3) 

http://www.owlnet.rice,edu/~comp110

The course introduces basic techniques for problem solving and visualization using computational environments such as Mathematica and MATLAB. Class will consist of a mixture of traditional lectures held in classrooms and self-paced modules covering topics in science and engineering that will be completed in Symonds II. No previous experience is required or expected. 

COMP 130

ELEMENTS OF ALGORITHMS AND COMPUTATION

Introduction to major topics in computer science, including real-world problems in a variety of areas. Teaches how to design and implement algorithmic solutions in Python and how to experimentally test and evaluate performance of computational systems. Instructor permission required.

COMP 140

COMPUTATIONAL THINKING: AN INTEGRATED INTRODUCTION TO COMPUTATION AND PROBLEM SOLVING

http://www.clear.rice.edu/comp140

An integrated introduction to computation taught by solving real-world problems in audio, video and text processing, physical robotics, control and simulation of complex systems in nature, and swarm intelligence. Technical topics include how to model computational artifacts operating in the world; how to design and implement algorithmic solutions in Python; and how to experimentally test and evaluate performance of computational systems. Open to first-year students.

COMP 160

INTRODUCTION TO COMPUTER GAME CREATION

http://www.clear.rice.edu/comp160/

This class focuses on the mathematics and programming skills necessary to build computer games. math topics will include basic geometric primitives, transformations, texturing, lighting/shading and collision detection. Programming topics will include C# and XNA with students expected to construct two simple games that will be playable on the Microsoft Xbox. Java Experience. Instructor permission required.

COMP 162

INTRODUCTION TO GAME CONTENT CREATION

http://www.owlnet.rice.edu/~comp162

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 182

ALGORITHMIC THINKING

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) 

http://www.owlnet.rice.edu/~comp200

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 201

PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING I (4)

http://www.owlnet.rice.edu/~comp201

Introduction to computing focusing on the principles of object-oriented programming using design patterns coupled with progressively richer subsets of the Java programming language. Program design concepts such as structural and behavioral abstractions are emphasized in building contemporary dynamic software systems. Design Patterns are used as a vocabulary for codifying these abstractions and expressing fundamental computing principles. They are illustrated in the design and implementation of lists, trees and arrays and their associated algorithms that leverage both run-time and parametric polymorphism. The course utilizes UML diagrams for object modeling and unit testing as a part of an incremental, test-driven approach to writing programs. Recommended for Engineering and other non-Comp majors, plus students who have yet not committed to a COMP major. 

COMP 202

PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING II (4)

http://www.owlnet.rice.edu/~comp202/

Continuation of COMP 201 covering advanced object-oriented data structures and their associated algorithms such as lazy evaluation, heaps, self-balancing trees, graphs, sorting, and generative recursion. Applications of Software Engineering principles such as abstract decomposition, decoupling, and command passing to large- and small- scale component-framework systems. Multi-threaded event-driven applications provide compelling illustrations for such principles. Recommended for Engineering majors, non-Engineering students, and potential Computer Science majors. 

COMP 211

PRINCIPLES OF PROGRAM DESIGN (4)

How to systematically design programs in functional and object-oriented languages. Includes inductive data definitions, data-directed program design, test-driven software development, semantic reduction rules, recursive problem decomposition, procedural abstraction, functions as values, tail recursion and loops, object-oriented design patterns, algorithmic efficiency, programming in Scheme and Java.

COMP 215

INTRODUCTION TO PROGRAM DESIGN (4)

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 tot he basics of the Java language itself (including Java syntax and semantics) will be provided.

COMP 221

INTRODUCTION TO COMPUTER SYSTEMS (4)

http://www.owlnet.rice.edu/~comp280/

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.

COMP 280

MATHEMATICS OF COMPUTATION (3)

http://www.owlnet.rice.edu/~comp280/

This course provides an introduction to the use of mathematics in modeling and reasoning about problems in computer science. Topics include logic, proof methods (including mathematical and structural induction), reasoning about recursive and iterative programs, sets, functions and their asymptotic growth, counting, and modular arithmetic. Pre-requisite(s): COMP 210.  Corequisite(s): MATH 102.  Offered Spring. 

COMP 281

HISTORY OF NUMBERS AND GAMES OF CHANCE (3)

Starting with the colorful history of numbers, we discover their use to characterize chance or luck through probability; students will participate in one major project and submit a report-application areas include physics, computer science, sports, finance, etc. The course is accessible to sophomores and juniors in science, engineering or business. Cross-list: ELEC 281, STAT 281.

COMP 290

COMPUTER SCIENCE PROJECTS (1 TO 3) 

Theoretical and experimental investigations under staff direction.  Repeatable for credit. 

COMP 300

SOCIETY IN THE INFORMATION AGE (3)

http://www.owlnet.rice.edu/~comp300/

We will review the remarkable technology of the Information Age and examine some of its effects on businesses and institutions. Information technology is re-shaping the structure of organizations and markets and challenging business leaders to re-think the ways in which businesses will prosper in the years ahead. We will explore these challenges and also speculate about the ways in which advancing information technology might further transform organizations.  Offered Spring.  Instructor(s): Gorry. 

COMP 301

IDENTITY THEFT TO THE iPOD: TECHNOLOGY AND POLITICS IN THE INFORMATION AGE (3)

Information and computing technologies (ICT) have produced sweeping changes in societal, economic and political domains. Examining the relationship between ICT and public policy, this course will cover current issues including computer crime, immigration, intellectual property and online commerce to better understand the intersection of the microchip and democratic society.

COMP 310

ADVANCED OBJECT-ORIENTED PROGRAMMING AND DESIGN (4)

http://www.clear.rice.edu/comp310

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

PROGRAMMING LANGUAGES (4) 

http://www.cs.rice.edu/~javaplt/311/

The design, definition and abstract implementation of programming languages including methods for precisely specifying syntax and semantics.  Pre-requisite(s): COMP 212 or COMP 202.  Offered Spring. 

COMP 312

PRODUCTION PROGRAMMING (4) 

http://www.cs.rice.edu/~javaplt/312/

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 environment used in our core 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.  Pre-requisite(s): COMP 202 and COMP 212.  Offered Spring. 

COMP 314

APPLIED ALGORITHMS AND DATA STRUCTURES (4) 

http://www.owlnet.rice.edu/~comp314

Design analysis of computer algorithms and data structures useful for applied problems. Laboratory assignments will use these techniques in conjunction with advanced programming methods.  Pre-requisite(s): COMP 212 and COMP 280.

COMP 322

PRINCIPLES OF PARALLEL PROGRAMMING (4)

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. Cross-list: ELEC 323.

COMP 326

DIGITAL LOGIC DESIGN (3)

Gates, flip-flops, combinational and sequential switching circuits, registers, logical and arithmetic operations.  Cross-listed with ELEC 326.  Pre-requisite(s): ELEC 220.

COMP 327

INTRODUCTION TO COMPUTER SECURITY (3)

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 360

COMPUTER GRAPHICS (4)

http://www.owlnet.rice.edu/~comp360/

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.  Pre-requisite(s): COMP 212.  Offered Fall. 

COMP 370

EVOLUTIONARY BIOINFORMATICS (3)

Large accessible data sets have opened new frontiers in evolutionary biology, and many fields. Learn to write computer programs to test hypotheses and discover patterns in diverse data. Understand the most common strategies in evolutionary bioinformatics, including dynamic programming, hidden Markov models, and graphical algorithms. No previous programming experience required. Biosciences Group B. Cross-list: EBIO 333. Recommended Prerequisite(s): MATH 101 and MATH 102.

COMP 381

ICT DESIGNS FOR A SUSTAINABLE WORLD (3)

Information and Communication Technologies (ICT) have tremendous economic benefits, yet at an increasing cost to society with sustainability emerging as the major challenge. After an introduction, students will work on design projects based on ICT at the nexus of engineering, sciences and medicine. Cross-list: CHBE 381.

COMP 390

COMPUTER SCIENCE PROJECTS (1 TO 3)

See COMP 290.  Instructor permission required.  Repeatable for Credit.  Offered Fall and Spring. 

COMP 400

THEORETICAL COMMUNICATION IN COMPUTER SCIENCE (1)

http://www.clear.rice.edu/comp400/

An introduction to technical communication in computer science. Includes oral, written, and visual presentations. Primarily for upper-level computer science undergraduates.

COMP 402

PRODUCTION PROGRAMMING (4)

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 407

ALGORITHMIC VERIFICATION (3)

An introduction of the fundamental techniques of algorithmic verification, including temporal logics, enumerative and symbolic model checking, and delaing with the state-explosion problem.

COMP 409

LOGIC IN COMPUTER SCIENCE (3)

http://www.cs.rice.edu/~vardi/comp409/ 

Set theoretical concepts. Propositional and first-order logic. Soundness and completeness, incompleteness, undecidability. Logical issues in computer science.  Pre-requisite(s): COMP 201 or COMP 210 and COMP 280.  Offered Fall. 

COMP 410

SOFTWARE ENGINEERING METHODOLOGY (4)

http://www.owlnet.rice.edu:/~comp410

Recommended prerequisite(s): COMP 312 or COMP 314. 

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.  Pre-requisite(s): COMP 202 or COMP 212.  Recommended pre-requisites: COMP 312 or COMP 314.  Offered Spring.  Instructor: Wong. 

COMP 411

ADVANCED PROGRAMMING LANGUAGES  (4)

http://www.cs.rice.edu/~taha/teaching/03S/411/

The design, definition and abstract implementation of programming languages including methods for precisely specifying syntax and semantics.  Pre-requisite(s): (COMP 202 or COMP 212) and COMP 280 and COMP 311.  Offered Spring. 

COMP 412

COMPILER CONSTRUCTION  (4)

http://www.owlnet.rice.edu/~comp412/

Topics in the design of programming language translators, including parsing, run-time storage management, error recovery, code generation and optimization.  Pre-requisite(s): COMP 314 or COMP 320.  Offered Fall.    

COMP 413

DISTRIBUTED PROGRAM CONSTRUCTION (4)

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 415

REAL-WORLD SOFTWARE DEVELOPMENT (4) 

http://www.owlnet.rice.edu/~comp415/

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 420

INTRODUCTION TO DISTRIBUTED COMPUTER SYSTEMS (4)

Introduction to advanced operating systems and distributed systems.  The course covers concepts, architecture, algorithms, protocols and implementation focusing on distribution, scale, robustness in the face of failure, and security.  Pre-requisite(s): COMP 421.  Not offered Fall and Spring.

COMP 421

OPERATING SYSTEMS AND CONCURRENT PROGRAMMING (4)

http://www.owlnet.rice.edu/~comp421/

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.  Cross-listed with ELEC 421.  Pre-requisite(s): (COMP 212 and COMP 202) and COMP 320.  Offered Spring. 

COMP 422

INTRODUCTION TO PARALLEL COMPUTING

http://www.owlnet.rice.edu/~comp422/

Fundamentals of parallel computing including abstract models for parallel computation, parallel computer architectures, parallel algorithms, and data structures, programming models and methods, mapping and scheduling computation, analyzing computations for correctness and efficiency, and applications to science and engineering. Includes an extensive programming component.

COMP 424

MOBILE AND EMBEDDED SYSTEM DESIGN AND APPLICATION

http://www.ruf.rice.edu/~mobile/elec424/

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. Cross-list: ELEC 424.

COMP 425

COMPUTER SYSTEMS ARCHITECTURE (4)

http://www.owlnet.rice.edu/~comp425/

Design of advanced uniprocessor system architecture and basics of parallel architectures. Advanced pipelining, including dynamic scheduling and precise interrupt handling. Advanced techniques for exploiting instruction level parallelism, including superscalar and VLIW architectures. Case studies of several recent high-performance microprocessors. Vector processors. Memory system design--techniques to improve cache performance, virtual memory systems, main memory enhancements. I/O systems--disk arrays and graphical interfaces. An overview of parallel computers.  Cross-listed with ELEC 425.  Pre-requisite(s): (COMP 320 or ELEC 320) and ELEC 326.  Offered Fall. 

COMP 429

INTRODUCTION TO COMPUTER NETWORKS (4)

http://www.cs.rice.edu/~eugeneng/teaching/s06/comp429/429.html

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.  Cross-listed with ELEC 429.  Pre-requisite(s): (STAT 310 or ELEC 331), and (COMP 202 or COMP 212). 

COMP 430

INTRODUCTION TO DATABASE SYSTEMS (4)

http://www.owlnet.rice.edu/~comp430/

Query Introduction to relational database systems, SQL programming, Database application programming, and Database design.  Pre-requisite(s): (COMP 202 or COMP 212) and COMP 280.

COMP 435

ELECTION SYSTEMS, TECHNOLOGIES, AND ADMINISTRATION (3)

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. This course will consider three questions: how do individual voters interact with the voting technology, how are voting technologies engineered to be accurate and secure, and how do the social aspects of voting fulfill democratic goals for elections? A central requirement for this course will be group research projects, many operating in our community, built around the November election. Cross-list: POLI 420, PSYC 420.

COMP 440

ARTIFICIAL INTELLIGENCE (4)

http://www.owlnet.rice.edu/~comp440/

Techniques for simulating intelligent behavior by machine, problem solving, game playing, pattern perceiving, theorem proving, semantic information processing, and automatic programming.  Cross-listed with ELEC 440.  Pre-requisite(s): (COMP 212 or COMP 202) and COMP 280.  Offered Fall. 

COMP 446

MOBILE DEVICE APPLICATIONS (3) 

http://comp446.com

As connected smartphones and tablets such as the iPhone and iPad become more popular, updated programming models and design concepts are required to take advantage of their capabilities. COMP/ELEC 446 will consider programming models including natively running applications, web services and mobile tailored web pages. We will explore applications primarily on the Apple iPhone, iPod and iPad but will briefly cover Google Android and Microsoft Windows Phone. We will also 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. Curriculum centers around and teaches iOS and code (iPhone/iPad); however final projects may also be completed in any major mobile system if the student has a foundation in Eclipse (Android) or Visual Studio (WP). Cross-list: ELEC 446. Recommended Prerequisite(s): Basic understanding of an Object Oriented Language highly desired.

COMP 450

ALGORITHMIC ROBOTICS (4)

http://www.owlnet.rice.edu/~comp450/

An introduction to computing object motion in application domains such as robotics, manufacturing, animation, and pharmaceutical drug design. Topics covered include motion planning in known and partially known environments, uncertainty, manipulation, and assembly planning.  Pre-requisite(s): (COMP 202 or COMP 212) and COMP 314.  Offered Fall. 

COMP 460

ADVANCED COMPUTER GAME CREATION  (4)

http://www.owlnet.rice.edu/~comp460

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. For CS students, Comp 160 or Comp 360 is recommended as a prerequisite. For Visual Arts students, previous experience in drawing using Photoshop is suggested. Cross-list: ARTS 460.

COMP 470

FROM SEQUENCE TO STRUCTURE: AN INTRODUCTION TO COMPUTATIONAL BIOLOGY (4) 

This course is a modern introduction to problems in computational biology spanning sequence to structure. The course has three modules: the first introduces statistical techniques in sequence analysis; the second covers statistical machine learning techniques for understanding experimental data generated in computational biology; and the third introduces problems in the structure of complex biomolecules.  Cross-listed with STAT 470.  Pre-requisite(s): COMP 280 and COMP 210 and STAT 310.  Offered Spring.  Instructor(s): Kavraki; Subramanian; Guerra, Kimmel. 

COMP 481

AUTOMATA, FORMAL LANGUAGES, AND COMPUTABILITY (3)

http://www.cs.rice.edu/~nakhleh/COMP481/

Finite automata, regular expressions, regular languages, pushdown automata, context-free languages, Turing machines, recursive languages, computability, and solvability.  Pre-requisite(s): COMP 314 and COMP 280.  Offered Spring. 

COMP 482

DESIGN AND ANALYSIS OF ALGORITHMS (3)

http://www.owlnet.rice.edu/~comp482/

Methods for designing and analyzing computer algorithms and data structures. The focus of this course will be on the theoretical and mathematical aspects of algorithms and data structures.  Cross-listed with ELEC 420.  Pre-requisite(s): COMP 314, or permission of instructor.  Offered Fall. 

COMP 485

FUNDAMENTALS OF MEDICAL IMAGING I  (3)

Fundamentals of various medical imaging modalities (e.g., x-ray, CT, and MRI) used to identify the anatomy of human organs, as well as other modalities (e.g. PET, SPECT, fMRI, and MEG) specifically developed to identify the function of the brain. Cross-listed with BIOE 485, ELEC 485.  Pre-requisite(s): MATH 211 and MATH 212.

COMP 486

FUNDAMENTALS OF MEDICAL IMAGING II   (3)

This course is directed towards graduate and senior undergraduate students interested in acquiring an in depth knowledge of Positron Emission Tomography (PET). The course will focus on PET physical principles, image formation, and processing. The course will also cover the various correction techniques used to quantify PET images as well as lay the foundations for understanding tracer kinetic modeling. A field trip to MD Anderson's PET facility will be organized to provide the students with hands on experience of PET imaging and data analysis. The use of PET imaging in various medical applications will also be covered.  Cross-listed with BIOE 486, ELEC 486.  Pre-requisite(s): ELEC 485 or BIOE 485 or COMP 485.    

COMP 490

COMPUTER SCIENCE PROJECTS (1 TO 4)

Theoretical and experimental investigations under staff direction.  Instructor permission required.  Repeatable for Credit.  Offered Fall and Spring.

COMP 491

COMPUTER SCIENCE TEACHING (3)

A combination of in-service teaching and a seminar.  Instructor permission required.  Repeatable for Credit.  Offered Fall and Spring.   

COMP 498

INTRODUCTION TO ROBOTICS (3)

http://www.owlnet.rice.edu/~mech498/

Introduction to the kinematics, dynamics, and control of robot manipulators and to applications of artificial intelligence and computer vision in robotics.  Cross-listed with ELEC 498, MECH 498.  Limited enrollment.  Offered Spring.  Instructor(s): O’Malley.

View courses 500-800



© Copyright 2014  Rice University  
Mailing Address: PO Box 1892, MS-132, Houston TX 77251-1892
Physical Address: 3122 Duncan Hall, 6100 Main Street, Houston TX 77005


Rice University Computer Science