Student Experience

A Curriculum for Computer Science Success

The MCS@Rice curriculum has been designed to meet the interests of our students and the demands of employers. The topics and courses were carefully selected not only to span important areas of computer science but also to focus on the data science skills that are highly sought after in the modern industry.

The core course curriculum covers the following topics:

Computer Systems

Systems Software

Modern computer systems are designed and implemented in a layered fashion, wherein each layer builds upon those beneath it, providing abstractions for processing, memory, and I/O that are progressively more abstracted from the hardware and easier to use than those of the underlying layers. While this layered architecture has made building systems easier, it has also made understanding their behavior and performance more difficult. Every layer from the managed run-time environments used by modern programming languages to the hypervisor play a role in processor scheduling, memory management, and I/O, making it oftentimes difficult to pinpoint which layer of the system is interacting poorly with a program.

This class will teach students about the fundamental characteristics of the abstractions for processing, memory, and I/O at each layer of a modern computer system, so that they might understand the functionality provided by each layer, and instruct them on the use of modern debugging, profiling, and tracing tools, so that they are equipped to characterize the behavior and performance of their programs.

Cybersecurity

Many modern web services, such as Facebook or YouTube, rely on a set of computers that coordinate across a network. A networked system raises unique challenges, not the least of which is security. As applications can send messages to or receive messages from other remote applications, it is important to ensure that such network-facing programs are secure, even if parts of the system may not be trustworthy. This course will teach the concepts, architecture, and implementation of network applications that have high security assurance in the presence of threats. We will cover typical attacks, such as denial-of-service, remote exploits, as well as security practices that developers can adopt to address these challenges.

Data Science

Databases

This course is an introduction to relational and other (NoSQL) database systems, SQL programming, and database design. This course will teach students how to understand trade-offs in database design, to create well-designed databases, and to develop proficiency in effectively managing data in a database. The course is focused on developing skills as a database designer and power-user. It also includes discussions of database implementation details to enable students to understand underlying system functionality and how that impacts decisions a database designer makes.

Machine Learning

Machine learning is the process of automatically inferring a function from a set of data. In essence, machine learning techniques seek to automate the inductive learning process that humans do so well. Furthermore, the availability of large training sets combined with significant computing power has made machine learning an extremely important body of knowledge across a large range of application domains. A small sample of some of the application domains include robotics, medicine, speech/facial recognition, and driving autonomous vehicles. This course will focus on providing a foundational understanding of modern algorithms in machine learning, focusing on practical applications.

Big Data

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 course will focus on software tools used by practitioners of modern data science, the mathematical and statistical models that are employed in conjunction with such software tools and the applications of these tools and systems to different problems and domains. In particular, this class explores the use of these tools and models in the analysis of “big” data, that is datasets that are too large to be analyzed on a typical personal computer.

Data Visualization

Data is being generated by humans and algorithms at an astounding rate. Having the ability to analyze and interpret this data visually is a key technique for coping with this explosion. This class will cover the basic ways that various types of data can be visualized and what properties distinguish useful visualizations from not so useful ones. The class will use Python as both the primary tool for processing the data as well creating visualizations of this data. To enhance the students’ depth of knowledge, the class will also cover some of the geometric algorithms used to create advanced visualizations.

Statistics for Computing and Data Science

Probability and statistics are essential tools in computer science and data science. They are at the heart of areas such as efficiency analysis of algorithms and randomized algorithms and central to fields like bioinformatics, social informatics, and, of course, machine learning. Furthermore, probability and statistics are essential for data science, as they are the foundation for quantifying uncertainty and assessing support for hypotheses and derived models.  This course covers topics in probability and statistics, including probability and random variables, basic stochastic processes, basic descriptive statistics, and various methods for statistical inference and measuring support.

Principles of Algorithms and Software

Software Construction

This course focuses on modern principles for the construction of large-scale programs, with an emphasis on design patterns, modern programming tools, and team management. The material will be applied in a substantial software design/construction project. The course has a significant oral and written communication component where students will be required to document and present their software design.

Programming Languages and Design

This course covers important concepts of programming languages that are critical to understanding and constructing software artifacts. These concepts will be studied in the context of multiple programming paradigms, including functional and object-oriented programming. By using different paradigms, you will learn to think more deeply than in terms of a single approach or the syntax of one language. This course aims to provide a framework for understanding how to use language constructs effectively and how to design correct and elegant programs in any language.

Algorithms

Algorithms are the recipes that underlie all computations executed by a computer. Designing new algorithms, proving their correctness, and analyzing their computational requirements are three foundational tasks in all areas of computer science. This course covers all these three aspects of algorithms. Topics covered include growth of functions, asymptotic notation and analysis, graphs and their properties, graph exploration, graph algorithms, greedy algorithms, divide-and-conquer algorithms, dynamic programming, NP-Completeness, and heuristic search algorithms.

To me, having Rice on my resume represents not just technical proficiency, but a passion for the discipline of computer science. I'm consistently impressed by Rice's excellence in both CS instruction and research.

J. Draper

2014

Having Rice on my resume confers a degree of rigor and thoughtfulness. Employers know that I have a background that has prepared me for anything

M. Chatfield

2015

You can bank on your Rice CS degree. For 35 years, it has been an incredible investment for me. I’ve met alumni from other schools and found they were all missing something. Rice has one of the best CS programs in the country.

S. Polk

1988

Our Graduates Get Jobs

When it comes to building a career in computer science, Rice on your resume means something. Our program teaches students rigorous, graduate-level thinking, and our graduates are well prepared for today's dynamic career marketplace. You’ll find Rice graduates at disruptive tech companies in Silicon Valley, leading the evolution of the petrochemical industry in Texas, and wherever computer science is making an impact on people’s lives.

Here's a few of the companies that look to Rice for qualified candidates:

AirBnB, Amazon, BP, Chevron, Cisco, eBay, Epic, Expedia, ExxonMobil, Facebook, FactSet, GE, Google, Halliburton, HP, IBM, Indeed, Intel, JP Morgan Chase, LinkedIn, Lockheed Martin, Microsoft, National Instruments, NVIDIA, Oracle, Salesforce, Schlumberger, Shell, Square, Tableau, TI, Two Sigma, Uber, VMware, Yahoo

Details Form