Ph.D., Master's

Computer and Information Science

Stephanie Weinrich teaches CIS 1200 at Penn

Reimagining Computer and Information Science

Penn Engineering is the birthplace of the modern computer. It was here that the ENIAC, the world’s first electronic, large-scale, general-purpose digital computer, was developed in 1946. Since this auspicious beginning more than five decades ago, the field of computer science at Penn has been marked by exciting innovations.

With the pace of innovation and technological advancement accelerating ever faster, engineers hold the keys to the next generation’s routine wonders. The Department of Computer and Information Science (CIS) at Penn Engineering is uniquely positioned to propel those future intellectual leaders, entrepreneurs, thinkers and innovators to success.  As an Ivy League institution, and the first university in the nation, The University of Pennsylvania ensures its students a transformative experience.

Many of Penn Engineering’s Computer and Information Science programs are ranked in the Top 20 in the country. Whether students pursue their undergraduate degree or enroll in a graduate program, they receive an extraordinary education that primes them to excel in their field.

The People Who Power the Curriculum

In addition to being dedicated mentors and advocates for students, our faculty members are established researchers and leaders in the fields of Intelligent Systems, Human-Centered Computing, AI, Data Science, and more.

Rajeev Alur

Rajeev Alur

Area of expertise: Formal methods for system design

Students know me for:  Collaboration with doctoral and postdoctoral students and  the course “CIS 2620: Automata, Computability, and Complexity” 

I want to make an impact in: Ensuring society can trust systems powered by AI

Sebastian Angel

Sebastian Angel

Area of expertise: Distributed systems and computer security.

Students know me for: My deep knowledge of dark chocolate and my occasional jokes

I want to make an impact in: The way we build systems and online services.

Surbhi Goel

Surbhi Goel

Area of expertise: Theoretical machine learning

Students know me for: Being an accessible mentor and collaborative researcher

I want to make an impact in: Bridging theory and practice to architect the next generation of machine learning systems 

Classes to Propel You Forward

The goal of the course is to teach fundamental concepts of programming that will enable you to solve interesting, challenging real-world problems with reliable, modular programs that can be tested, extended, shared with others, and combined effectively with other programs. You will learn about data types and data abstraction, how data is represented in memory, how to decompose complex programming problems into manageable subproblems, how and when to use elementary data structures such as arrays, lists, trees, and maps, different approaches to structuring programs (object-oriented, imperative, functional), communication between programs and their environment (basic user interface, input/output, networked communication), and how to test and fix programs (unit testing, debugging).

This course introduces you to math concepts that form the backbone of the majority of computer science. Topics covered include sets, functions, permutations and combinations, discrete probability, expectation, mathematical Induction and graph theory. The goal of the course is to ensure that students are comfortable enough with the math required for the rest of the undergraduate program. CIS 1210 and CIS 3200 and many others heavily rely on concepts taught in this course.

This course investigates algorithms to implement resource-limited knowledge-based agents which sense and act in the world. Topics include, search, machine learning, probabilistic reasoning, natural language processing, knowledge representation and logic. After a brief introduction to the language, programming assignments will be in Python.

In the new era of big data, we are increasingly faced with the challenges of processing vast volumes of data. Given the limits of individual machines (compute power, memory, bandwidth), increasingly the solution is to process the data in parallel on many machines. This course focuses on the fundamentals of scaling computation to handle common data analytics tasks. You will learn about basic tasks in collecting, wrangling, and structuring data; programming models for performing certain kinds of computation in a scalable way across many compute nodes; common approaches to converting algorithms to such programming models; standard toolkits for data analysis consisting of a wide variety of primitives; and popular distributed frameworks for analytics tasks such as filtering, graph analysis, clustering, and classification. Recommended: broad familiarity with probability and statistics, as well as programming in Python.