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.
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.
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.
Pre-Requisites
There are no college-level prerequisites for this class. However, reviewing the algebra learned in high school will be very useful. No prior programming background is expected nor will this course assign any programming exercises.
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.
Pre-Requisites
This course does not have prerequisites, but CIT 5910 Introduction to Software Development is a co-requisite.
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.
Pre-Requisites
Students in this course are expected to have completed or waived CIT 5910 Introduction to Software Development.
This course is a continuation of CIT 5930 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.
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.
Pre-Requisites
CIT 5920 | Co-requisite: CIT 5940 (Taking concurrently is allowed but taking beforehand is preferred)