Build your Computer Science Skill Set

Penn Engineering’s accelerated MCIT Online degree combines Ivy League quality with the flexibility of a virtual experience. 

Designed specifically for students who are new to computer science, MCIT Online offers the same innovative curriculum and high-quality teaching as Penn’s on-campus program. Regardless of what you studied as an undergraduate, motivated students will build a strong foundation in computer science and gain real-world coding skills.

Core courses and electives blend computer science theory and applied, project-based learning. You’ll use real-world tools and environments such as TensorFlow and Amazon Cloud, and you’ll have ongoing access to Penn Engineering faculty and TAs through live office hours and discussion forums. 

“Working with an instructional designer improved the way I teach my courses on campus. Since incorporating some of the online learning methodologies into my course, I found I am connecting with students more than I have in years.”
Susan Davidson
Susan Davidson
  • Weiss Professor, Computer and Information Science Department
READ FULL PROFILE
“My course teaches two of the most popular programming languages in the world to people who have never coded before. After taking my course, students have the ability to create a desktop or mobile app, or use the concepts in fields such as data science and visualization.”
Brandon Krakowsky
Brandon Krakowsky
  • Lecturer, Computer and Information Science Department
  • Research and Education Director at the Wharton School
READ FULL PROFILE
“Teaching in this program has been incredibly rewarding. I am blown away by how motivated our students are, especially given that many of them are working full time and taking classes at the same time.”
Boon Thau Loo
Boon Thau Loo
  • RCA Professor, Computer and Information Science Department
  • Associate Dean for Graduate Programs
  • Director, Distributed Systems Laboratory
READ FULL PROFILE

Degree Requirements

To earn a master’s degree, you’ll complete ten courses – six core courses and four electives. All courses are fully online, and there are no required real-time sessions.

Core Courses

We recommend that you take the core courses in sequential order, but it is not required. You must take CIT 591 in your first semester and complete four core courses before registering for electives.

CIT 591 Introduction to Software Development

This course is an introduction to fundamental concepts of programming and computer science for students who have little or no experience in these areas. Students learn how to read and write to files, connect to databases, and use regular expressions to parse text. This course includes substantial programming assignments in both Python and Java, and teaches techniques for test-driven development and debugging code.

View Full Course Description

CIT 591 Introduction to Software Development

Course Offerings
Course Creators
  • Brandon Krakowsky
No Pre-Requisites
Course Description

This course is an introduction to fundamental concepts of programming and computer science for students who have little or no experience in these areas. Includes an introduction to programming using Python, where students are introduced to core programming concepts like data structures, conditionals, loops, variables, and functions. Also provides an introduction to basic data science techniques using Python. The second half of this course is an introduction to object-oriented programming using Java, where students are introduced to polymorphism, inheritance, abstract classes, interfaces, and advanced data structures. Students will also learn how to read and write to files, connect to databases, and use regular expressions to parse text. This course includes substantial programming assignments in both Python and Java, and teaches techniques for test-driven development and debugging code.

CIT 592 Mathematical Foundations of Computer Science

This course introduces students 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 most of the CIS electives.

View Full Course Description

CIT 592 Mathematical Foundations of Computer Science

Course Offerings
Course Creators
  • Val Tannen
No Pre-Requisites
Course Description

This course introduces students 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 most of the CIS electives.

CIT 593 Introduction to Computer Systems

This course provides an introduction to fundamental concepts of computer systems and computer architecture. Students learn the C programming language and an instruction set (machine language) as a basis for understanding how computers represent data, process information, and execute programs.

View Full Course Description

CIT 593 Introduction to Computer Systems

Course Offerings
Course Creators
  • Dr. Tom Farmer
Pre-Requisites

This course does not have prerequisites, but CIT 591 is a co-requisite.

Course Description

This course provides an introduction to fundamental concepts of computer systems and computer architecture. Students learn the C programming language and an instruction set (machine language) as a basis for understanding how computers represent data, process information, and execute programs.

CIT 594 Data Structures & Software Design

This course focuses on data structures, software design, and advanced Java. The course starts off with an introduction to data structures and basics of the analysis of algorithms. Important data structures covered include arrays, lists, stacks, queues, trees, hash maps, and graphs. The course also focuses on software design and advanced Java topics such as software architectures, design patterns, and concurrency.

View Full Course Description

CIT 594 Data Structures & Software Design

Course Offerings
Course Creators
  • Raphael Rubin
Pre-Requisites

Students in this course are expected to have completed or waived CIT 591.

Course Description

This course focuses on data structures, software design, and advanced Java. The course starts off with an introduction to data structures and basics of the analysis of algorithms. Important data structures covered include arrays, lists, stacks, queues, trees, hash maps, and graphs. The course also focuses on software design and advanced Java topics such as software architectures, design patterns, and concurrency.

CIT 595 Computer Systems Programming

This course is a continuation of CIT 593 and introduces students to fundamental concepts in computing systems. The course will use the C program language, and will develop your knowledge on C system calls, and libraries for process/thread creation and manipulation, synchronization, and network communication.

View Full Course Description

CIT 595 Computer Systems Programming

Course Offerings
Course Creators
Pre-Requisites

CIT 593

Course Description

This course is a continuation of CIT 593 and introduces students to fundamental concepts in computing systems. The course is divided into two parts. The first half of the course introduces important concepts in modern operating systems: processes, scheduling, caching, and virtual memory. The second half of the course provides an introduction to fundamental concepts in the design and implementation of networked systems, their protocols, and applications. The course will use the C program language, and will develop your knowledge on C system calls, and libraries for process/thread creation and manipulation, synchronization, and network communication.

CIT 596 Algorithms & Computation

This course focuses primarily on the design and analysis of algorithms. It begins with sorting and searching algorithms and then investigates graph algorithms. In order to study graph algorithms, general algorithm design patterns like dynamic programming and greedy algorithms are introduced. A section of this course is also devoted to understanding NP-Completeness.

View Full Course Description

CIT 596 Algorithms & Computation

Course Offerings
Course Creators
  • Sampath Kannan
Pre-Requisites

CIT 592 | Co-requisite: CIT 594 (Taking concurrently is allowed but taking beforehand is preferred)

Course Description

This course focuses primarily on the design and analysis of algorithms. It begins with sorting and searching algorithms and then investigates graph algorithms. In order to study graph algorithms, general algorithm design patterns like dynamic programming and greedy algorithms are introduced. A section of this course is also devoted to understanding NP-Completeness.

Elective Options

You’ll complete four graduate-level electives. Here are the options: 

CIS 515 Fundamentals of Linear Algebra & Optimization (Math for Machine Learning)

There are hardly any machine learning problems whose solutions do not make use of linear algebra. This course places emphasis on linear regression, data compression, support vector machines and more, which will provide a basis for further study in machine learning, computer vision, and data science.

View Full Course Description

CIS 515 Fundamentals of Linear Algebra & Optimization (Math for Machine Learning)

Course Offerings
  • Not Offered
Course Creators
  • Jean Gallier
  • Jocelyn Quaintance
Pre-Requisites

Calculus (Chapters 8, 9, 10, and 48 of Schaum’s Outlines of Calculus fifth edition by Frank Ayers and Elliott Mendelssohn) Suggested: Undergraduate course in linear algebra (helpful but not required), Chapters 1 through 3 of Schaums Outline of Linear Algebra, fourth version by Seymour Lipschitz and Marc Lipson

Course Description

There are hardly any machine learning problems whose solutions do not make use of linear algebra. This course presents tools from linear algebra and basic optimization that are used to solve various machine learning and computer science problems. It places emphasis on linear regression, data compression, support vector machines and more, which will provide a basis for further study in machine learning, computer vision, and data science. Both theoretical and algorithmic aspects will be discussed, and students will apply theory to real-world situations through MATLAB projects.

CIS 521 Artificial Intelligence

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.

View Full Course Description

CIS 521 Artificial Intelligence

Course Offerings
Course Creators
  • Chris Callison-Burch
Pre-Requisites

CIT 591, CIT 592, and CIT 594

Course Description

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.

CIS 545 Big Data Analytics

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.

View Full Course Description

CIS 545 Big Data Analytics

Course Offerings
Course Creators
  • Zachary G. Ives
Pre-Requisites

CIT 591 (Introduction to Software Development) or equivalent programming experience; Broad familiarity with probability and statistics, as well as programming in Python; Additional background in statistics, data analysis (e.g., in Matlab or R), and machine learning is helpful (example: ESE 542)

Course Description

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.

CIS 547 Software Analysis

This course provides a rigorous and hands-on introduction to the field of software analysis – a body of powerful techniques and tools for analyzing modern software, with applications to systematically uncover insidious bugs, prevent security vulnerabilities, automate testing and debugging, and improve our confidence that software will behave as intended.

View Full Course Description

CIS 547 Software Analysis

Course Offerings
  • Not Offered
Course Creators
  • Mayur Naik
Pre-Requisites

CIT 592, CIT 594, CIT 595. Specifically: Assignments involve programming in C++ using the LLVM compiler infrastructure. Lectures and exams presume basic knowledge of algorithms (e.g. graph traversal and asymptotic analysis) and basic background in logic (e.g. set theory and boolean algebra).

Course Description

This course provides a rigorous and hands-on introduction to the field of software analysis — a body of powerful techniques and tools for analyzing modern software, with applications to systematically uncover insidious bugs, prevent security vulnerabilities, automate testing and debugging, and improve our confidence that software will behave as intended. Topics covered include dynamic analysis, random testing, automated test generation, dataflow analysis, constraint solving, type inference, and symbolic execution. Lectures present software analysis concepts and algorithms in a language-independent manner, while weekly programming labs involve realizing them concretely in C++ using the LLVM compiler infrastructure. This course will enable you to become a better software engineer or security analyst by learning a rich repertoire of software analysis ideas and know-how to apply them to specific scenarios in practice.

CIS 549 Wireless Communications for Mobile Networks and Internet of Things

Portfolio Building Course

Study today’s state-of-the-art wireless technology (4G LTE), next-generation wireless technology (5G NR), Wi-Fi technologies and the Internet of Things. You’ll build a simple IoT service with an IoT client device emulator and a real IoT server platform on the Internet.

View Full Course Description

CIS 549 Wireless Communications for Mobile Networks and Internet of Things

Portfolio Building Course
Course Offerings
Course Creators
  • Bongho Kim
Pre-Requisites

CIT 593 and CIT 595

Course Description

This course covers today’s state-of-the-art wireless technology 4G LTE, the next-generation wireless technology, 5G NR, and Wi-Fi technologies. Internet of Things (IoT) and the network slicing technologies in the 4G and 5G mobile networks, which are the parts of the main drivers for 5G, and the Docker container and Kubernetes will be also covered. Students will use an end-to-end LTE and Wi-Fi application performance simulation platform to analyze network protocols and analyze the impact on end-to-end application performance over the wireless network. Students will also build a simple IoT service with an IoT client device emulator and a real IoT server platform on the Internet. The course starts with the fundamental wireless technology background and networking topics with hands-on projects to help students build a foundation for the course, and the course includes contemporary research paper readings, assignments to utilize the simulation platform and implementation projects. The simulation platform provides network protocol stacks and base source code.

CIS 550 Database & Information Systems

Structured information is the lifeblood of commerce, government, and science today. This course provides an introduction to the broad field of information management systems, covering a range of topics relating to structured data, from data modeling to logical foundations and popular languages, to system implementations.

View Full Course Description

CIS 550 Database & Information Systems

Course Offerings
Course Creators
  • Susan Davidson
Pre-Requisites

CIT 591, CIT 592 | Knowledge of Javascript & Web Development (HTML, CSS) is recommended. | Recommended Corequisite: CIT 596

Course Description

Structured information is the lifeblood of commerce, government, and science today. This course provides an introduction to the broad field of information management systems, covering a range of topics relating to structured data, from data modeling to logical foundations and popular languages, to system implementations. We will study the relational data model; SQL; database design using the Entity-Relationship model and relational design theory; transactions and updates; efficient storage of data; indexes; query execution and query optimization; and “big data” and NoSQL systems.

CIS 551 Computer & Network Security

This is an introduction to topics in the security of computer systems and communication on networks of computers. The course covers four major areas: fundamentals of cryptography, security for communication protocols, security for operating systems and mobile programs, and security for electronic commerce.

View Full Course Description

CIS 551 Computer & Network Security

Course Offerings
Course Creators
  • Faculty TBA
Pre-Requisites

CIT 592 (Mathematical Foundations of Computer Science); CIT 593 (Intro to Computer Systems); CIT 595 (Computer Systems Programming)

Course Description

This is an introduction to topics in the security of computer systems and communication on networks of computers. The course covers four major areas: fundamentals of cryptography, security for communication protocols, security for operating systems and mobile programs, and security for electronic commerce. Sample specific topics include: passwords and offline attacks, DES, RSA, DSA, SHA, SSL, CBC, IPSec, SET, DDoS attacks, biometric authentication, PKI, smart cards, S/MIME, privacy on the Web, viruses, security models, wireless security, and sandboxing. Students will be expected to display knowledge of both theory and practice through written examinations and programming assignments.

CIS 553 Networked Systems

This course provides an introduction to fundamental concepts in the design and implementation of networked systems, their protocols, and applications. Topics to be covered include: Internet architecture, network applications, addressing, routing, transport protocols, peer-to-peer networks, software-defined networks, and distributed systems.

View Full Course Description

CIS 553 Networked Systems

Course Offerings
Course Creators
  • Boon Thau Loo
Pre-Requisites

CIT 594 (Data Structures & Software Design); CIT 595 (Computer Systems Programming); Understanding of basic probability. Course projects require knowledge of C/C++

Course Description

This course provides an introduction to fundamental concepts in the design and implementation of networked systems, their protocols, and applications. Topics to be covered include: Internet architecture, network applications, addressing, routing, transport protocols, peer-to-peer networks, software-defined networks, and distributed systems. The course involves regular quizzes, two large group-based networked systems implementation projects, and two written exams.

CIS 581 Computer Vision & Computational Photography

This is an introductory course to computer vision and computational photography. This course will explore four topics: 1) image feature detection, 2) image morphing, 3) image stitching, and 4) deep learning related to images. This course is intended to provide a hands-on experience with interesting things to do on images/pixels.

View Full Course Description

CIS 581 Computer Vision & Computational Photography

Course Offerings
Course Creators
  • Jianbo Shi
Pre-Requisites

CIT 591, CIT 592, CIT 593 and CIT 594. Students may take CIT 595 and/or CIT 596 concurrently with this elective.

Course Description

This is an introductory course to computer vision and computational photography. This course will explore four topics: 1) image feature detection, 2) image morphing, 3) image stitching, and 4) deep learning related to images. This course is intended to provide a hands-on experience with interesting things to do on images/pixels. The world is becoming image-centric. Cameras are now found everywhere: in our cell phones, automobiles, and even in medical surgery tools. In addition, computer vision technology has led to innovations in areas such as movie production, medical diagnosis, biometrics, and digital library. This course is suited for students with any engineering background who have a basic understanding of linear algebra and programming, along with plenty of imagination.

CIT 520 Intro to Robotics

This course presents the fundamental kinematic, dynamic, and computational principles underlying most modern robotic systems. The main topics of the course include: rotation matrices, homogeneous transformations, manipulator forward kinematics, manipulator inverse kinematics, Jacobians, path and trajectory planning, sensing and actuation, and feedback control.

View Full Course Description

CIT 520 Intro to Robotics

Course Offerings
Course Creators
  • Vijay Kumar
Pre-Requisites

Students should have knowledge of simple geometry and trigonometry (triangle inequalities, sine, cosine), previous exposure to linear algebra (matrices and vectors), calculus (differentiation, integration) physics (basics mechanics), and previous programming experience.

Course Description

The rapidly evolving field of robotics includes systems designed to replace, assist, or even entertain humans in a wide variety of tasks. Recent examples include human-friendly robot arms for manufacturing, interactive robotic pets, medical and surgical assistive robots, and semi-autonomous search-and-rescue vehicles. This course presents the fundamental kinematic, dynamic, and computational principles underlying most modern robotic systems. The main topics of the course include: rotation matrices, homogeneous transformations, manipulator forward kinematics, manipulator inverse kinematics, Jacobians, path and trajectory planning, sensing and actuation, and feedback control. The material is reinforced with hands-on lab exercises involving a robotic arm.

CIT 582 Blockchains & Cryptography

Introducing the fundamentals of cryptography and distributed systems that underpin modern blockchain platforms — including collision-resistant hash functions, digital signatures and classical consensus algorithms and examining the architecture of modern blockchain platforms, and develop tools to analyze and interact with them in Python.

View Full Course Description

CIT 582 Blockchains & Cryptography

Course Offerings
Course Creators
  • Brett Falk
  • Mohammad Javad Amiri
Pre-Requisites

CIT 591 and CIT 592

Course Description

Blockchains or Distributed Ledger Technology (DLT) provide a novel method for decentralizing databases in the presence of mutually distrustful or malicious agents. The promise of DLTs has attracted billions of dollars in investments, yet the true potential of these systems remains unclear.

This course introduces students to the fundamentals of cryptography and distributed systems that underpin modern blockchain platforms — including collision-resistant hash functions, digital signatures and classical consensus algorithms. From there, we will examine the architecture of modern blockchain platforms, and develop tools to analyze and interact with them in Python.

At the end of this course, students should understand the power and limitations of blockchain technology, and be able to develop software that interacts with current blockchain platforms.

ESE 542 Statistics for Data Science: An Applied Machine Learning Course

Learn a broad range of statistical and computational tools to analyze large datasets through a solid foundation of data science, statistics and machine learning to make data-driven predictions via statistical modeling and inference. Using case studies and hands-on exercises, practice and increase data analysis skills using Python to extract meaningful information from large datasets.

View Full Course Description

ESE 542 Statistics for Data Science: An Applied Machine Learning Course

Course Offerings
Course Creators
Pre-Requisites

CIT 592, Programming background, Basic Probability

Course Description

In this course, students will learn a broad range of statistical and computational tools to analyze large datasets. This course provides a solid foundation of data science, statistics and machine learning to make data-driven predictions via statistical modeling and inference. Using case studies and hands-on exercises, the student will have the opportunity to practice and increase their data analysis skills using Python. The objective of these case studies is to identify and implement appropriate modeling and analysis techniques in order to extract meaningful information from large datasets.

Try Before You Apply

Not sure if MCIT Online is for you? Try an open-enrollment course or specialization to find out what to expect.

Computational Thinking for Problem Solving

View Open Course

Introduction to Programming with Python and Java

View Credential