The Online Graduate Certificate from Penn Engineering Online is a for-credit credential that will produce an academic transcript and paper certificate. To earn a certificate, students can take a maximum of four (4) course units. Two of these four course units may be double-counted from your Penn Engineering graduate degree program.

Students may earn a maximum of two certificates. No course may be triple counted, i.e., counted for more than two credentials.

While most individuals will complete the Online Graduate Certificate program within one year, students may choose to extend their studies. In this case, all Certificate requirements must be met within a maximum of two years.

*Note: Degree students will receive first priority for course registration.

Software Systems Online Graduate Certificate Courses

CIS 5470 Software Analysis

CIS 5470

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. 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.

Pre-Requisites

CIT 5920 Mathematical Foundations of Computer Science, CIT 5940 Data Structures & Software Design, CIT 5950 Computer Systems Programming. 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).

CIS 5490 Wireless Communications for Mobile Networks and Internet of Things

CIS 5490

Wireless Communications for Mobile Networks and Internet of Things

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.

Pre-Requisites

CIT 5930 Introduction to Computer Systems and CIT 5950 Computer Systems Programming

CIS 5510 Computer & Network Security

CIS 5510

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. 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.

Pre-Requisites

CIT 5920 Mathematical Foundations of Computer Science; CIT 5930 Intro to Computer Systems; CIT 5950 Computer Systems Programming

CIS 5530 Networked Systems

CIS 5530

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. The course involves regular quizzes, two large group-based networked systems implementation projects, and two written exams.

Pre-Requisites

CIT 5950 Computer Systems Programming; Data structures and basic probability. Course projects require knowledge of C/C++.

CIS 5550 Internet and Web Systems

CIS 5550

Internet and Web Systems

This course focuses on the issues encountered in building Internet and Web systems, such as scalability, interoperability, consistency, replication, fault tolerance, and security. We will examine how services like Google or Amazon handle billions of requests from all over the world each day, (almost) without failing or becoming unreachable. We will study how to collect massive-scale data sets, how to process them, and how to extract useful information from them, and we will have a look at the massive, heavily distributed infrastructure that is used to run these services (and similar cloud-based services) today.

An important feature of the course is that we will not just discuss issues and solutions but also provide hands-on experience, using web search as our case study. There will be several substantial implementation projects throughout the semester, each of which will focus on a particular component of the search engine, such as frontend, storage, crawler, or indexer. The final project will be to build a Google-style search engine, and to deploy and run it on the cloud.

Notice that this is NOT a course on web design, or on web application development! Instead of learning how to use a web server such as Apache or a scalable analytics system such as Spark, we will actually build our own little web server, and a little mini-“Spark”, from scratch. As a side effect, you will learn about some aspects of large-scale software development, such as working with APIs and specifications, thinking about modularity, reading other people’s code, managing versions, and debugging.

Pre-Requisites

CIT 5950 Computer Systems Programming. Suggested: CIS 5470 Software Analysis, CIS 5490 Wireless Communications for Mobile Networks and Internet of Things, CIS 5510 Computer & Network Security, CIS 5530 Networked Systems, or CIT 5820 Blockchains & Cryptography (or any course that has students write a substantial program)

DATS 5750 Cloud Technologies Practicum (.5 CU)

DATS 5750

Cloud Technologies Practicum (.5 CU)

Cloud computing is the heart of modern digital applications. This course provides practical, hands-on knowledge and understanding of distributed computing principles to design and develop applications that utilize public clouds such as Google Cloud, Amazon Web Services, Azure, etc. The course will cover cloud infrastructure services for computing, storage, networking, data analytics, machine learning, and modern application development. Students will learn to architect and implement complex applications utilizing different cloud infrastructure components to engineer robust, scalable solutions across practical industry use cases.

 

WATCH COURSE PREVIEW HERE

Pre-Requisites

CIT 5910, CIT 5920, CIT 5930, CIT 5940, and CIT 5950

EAS 5830 Blockchains (.5 CU)

EAS 5830

Blockchains (.5 CU)

This course introduces the technology that powers blockchains like Bitcoin and Ethereum. We will cover the key cryptographic tools that enable blockchains – collision-resistant hash functions and digital signature schemes. We’ll learn about the architecture of different blockchains, their consensus mechanisms, economics and how to interact with them. The assignments in this course are primarily coding-based. We will learn to read and write from the blockchain using Python libraries and write our own smart contracts in Solidity. 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.

Coding languages: Python, Solidity

WATCH COURSE PREVIEW HERE

Pre-Requisites

CIT 5910, CIT 5920