144 courses with the subject CIS, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CIS 0099Undergraduate Research/Independent Study
An opportunity for the student to become closely associated with a professor (1) in a research effort to develop research skills and techniques and/or (2) to develop a program of independent in-depth study in a subject area in which the professor and student have a common interest. The challenge of the task undertaken must be consistent with the student's academic level. To register for this course, the student must submit a detailed proposal, signed by the independent study supervisor, to the SEAS Office of Academic Programs (111 Towne) no later than the end of the "add" period. Prerequisite: A maximum of 2 c.u. of CIS 0099 may be applied toward the B.A.S. or B.S.E. degree requirements.
The primary goal of this course is to introduce computational methods of interacting with data. In this course, students will be introduced to the IPython programming environment. They will learn how to gather data, store it in appropriate data structures and then either write their own functions or use libraries to analyze and then display the salient information in that data. Data will be drawn from a variety of domains, including but not limited to travel, entertainment, politics, economics, biology etc.
Visual studies and the humanities more generally have thought about and modeled seeing of artworks for many centuries. What useful tools can machine learning develop from databases of art historical images or other datasets of visual culture? Can tools from machine learning help visual studies ask new questions? When put together, what can these fields teach us about visual learning, its pathways, its underlying assumptions, and the effects of its archives/datasets? Class project teams will ideally be composed of both humanities majors and engineering majors who will develop datasets and/or ask important questions of datasets, in addition to thinking and writing more generally about how computer vision could help in teaching and analyzing visual art. We are looking for a variety of students from different majors and schools to bring their diverse skill sets to the course. No programming knowledge is required. The course offers an example-based introduction to machine learning, so no prior knowledge of machine learning is required.
CIS 110(1 c.u., credit given for the A or AB exam, but not both)
Waiver for ECON 001 (no credit) Waiver for ECON 002 (no credit) ENGL Free (1 c.u., does not fulfill the Major or Writing Requirements) ENGL Free (1 c.u., does not fulfill the Major or Writing Requirements)
or CIS 1200 Programming Languages and Techniques I NRSC/PHYS Theoretical and Computational 1 5585/NGG 5940 Neuroscience Independent Research in BE, BIOL, CIS, COGS, NRSC, PHYS, or 1 other relevant major l At the 399X or 499X level
Have you ever wondered why sharing music and video generates such political and legal controversies? Is information on your PC safe and should law enforcement be able to access information you enter on the Web? Will new devices allow tracking of your every move and every purchase? CIS 1250 is focused on developing an understanding of existing and emerging technologies, along with the political, societal and economic impacts of those technologies. The technologies are spread across a number of engineering areas and each of them raise issues that are of current concern or are likely to be a future issue. 1 Course Unit
How do minds work? This course surveys a wide range of answers to this question from disciplines ranging from philosophy to neuroscience. The course devotes special attention to the use of simple computational and mathematical models. Topics include perception, learning, memory, decision making, and language. The course shows how the different views from the parent disciplines interact and identifies some common themes among the theories that have been proposed. The course pays particular attention to the distinctive role of computation in such theories and provides an introduction to some of the main directions of current research in the field. It is a requirement for the BA in Cognitive Science, the BAS in Computer and Cognitive Science, and the minor in Cognitive Science, and it is recommended for students taking the dual degree in Computer and Cognitive Science.
CIS 1600Mathematical Foundations of Computer Science
What are the basic mathematical concepts and techniques needed in computer science? This course provides an introduction to proof principles and logics, functions and relations, induction principles, combinatorics and graph theory, as well as a rigorous grounding in writing and reading mathematical proofs.
This Freshman Seminar is designed to be a very introductory exposition about Quantum Computation and Quantum Information Science. There are no formal physics, mathematics, or computer science prerequisites. It is meant primarily for freshmen in SAS and Wharton, who have an itch to learn about a beautiful subject that intrinsically unites quantum physics, computation, and information science. The structure of the course will be lecture-based using small-team based exercises for evaluation. The enrollment will be limited to 20 students. Freshmen standing.
This course will provide an introduction to programming in C++ and is intended for students who are already experienced with programming in C and in object-oriented languages such as Java. C++ provides programmers with a greater level of control over machine resources and is commonly used in situations where low level access or performance are important. This course will cover the features and abstractions that C++ provides to write code that is both safe and performant. This course recommends students to have completed CIS 1200 and CIS 2400. Not Offered Every Year 0-0.5 Course Units
Python is an elegant, concise, and powerful language that is useful for tasks large and small. Python has quickly become a popular language for getting things done efficiently in many in all domains: scripting, systems programming, research tools, and web development. This course will provide an introduction to this modern high-level language using hands- on experience through programming assignments and a collaborative final application development project. Not Offered Every Year 0-0.5 Course Units
Students must take CIS 1200 before taking CIS 1902.
CIS 1903Go Programming
Go is an open source programming language created by Google designed for speed, efficiency and infrastructure. While Go is particularly proficient at concurrent systems programming, it has a variety of uses and has been gaining popularity in a variety of fields, including graphics, mobile applications and machine learning. Go is simple, fast and is continuing to rapidly grow in industry. In this course, we will cover what makes Go so unique and apply it to practical, real world situations. Topics covered will include concurrency and parallelism, goroutines and channels, web scraping, and other popular industry Go applications. Not Offered Every Year 0-0.5 Course Units
Students must take CIS 1100 before taking CIS 1903.
CIS 1904Introduction to Haskell Programming
Haskell is a high-level, purely functional programming language with a strong static type system and elegant mathematical underpinnings. It is being increasingly used in industry by organizations such as Facebook, AT&T, and NASA, along with several financial firms. We will explore the joys of functional programming, using Haskell as a vehicle. The aim of the course will be to allow you to use Haskell to easily and conveniently write practical programs. Evaluation will be based on regular homework assignments and class participation. Not Offered Every Year 0-0.5 Course Units University of Pennsylvania Catalog 1445
Students must take CIS 1200 before taking CIS 1904.
CIS 1905Rust Programming
Rust is a new, practical, community-developed systems programming language that "runs blazingly fast, prevents almost all crashes, and eliminates data ra (rust-lang.org). Rust derives from a rich history of languages to create a multi-paradigm (imperative/functional), low-level language that focuses on high-performance, zero-cost safety guarantee in concurrent programs. It has begun to gain traction in industry, showing a recognized need for a new low-level systems language. In this course, we will cover what makes Rust so unique and apply it to practical systems programming problems. Topics covered will include traits and generics; memory safety (move semantics, borrowing, and lifetimes); Rust's rich macro system; closures; and concurrency. Evaluation is based on regular homework assignments as well as a final project and class participation. Prerequisite: CIS 1200 Recommended additional Not Offered Every Year 0-0.5 Course Units
CIS 2400 or exposure to C or C++ Students must take CIS 1200 before taking CIS 1905.
CIS 1911Using and Understanding Unix and Linux
Unix, in its many forms, runs much of the world's computer infrastructure, from cable modems and cell phones to the giant clusters that power Google and Amazon. This half-credit course provides a thorough introduction to Unix and Linux. Topics will range from critical basic skills such as examining and editing files, compiling programs and writing shell scripts, to higher level topics such as the architecture of Unix and its programming model. The material learned is applicable to many classes, including CIS 2400, CIS 3310, CIS 3410, CIS 3710, and CIS 3800. Not Offered Every Year 0-0.5 Course Units
Students must take CIS 1100 before taking CIS 1911.
CIS 1912DevOps
DevOps is the breaking down of the wall between Developers and Operations to allow more frequent and reliable feature deployments. Through a variety of automation-focused techniques, DevOps has the power to radically improve and streamline processes that in the past were manual and susceptible to human error. In this course we will take a practical, hands-on look at DevOps and dive into some of the main tools of DevOps: automated testing, containerization, reproducibility, continuous integration, and continuous deployment. Throughout the semester we build toward an end-to-end pipeline that takes a webserver, packages it, and then deploys it to the cloud in a reliable and quickly-reproducible manner utilizing industry-leading technologies like Kubernetes and Docker. Evaluation is based on homework assignments and a final group project. Not Offered Every Year 0-0.5 Course Units
What does Sudoku have in common with debugging, scheduling exams, and routing shipments? All of these problems are provably hard -- no one has a fast algorithm to solve them. But in reality, people are quickly solving these problems on a huge scale with clever systems and heuristics! In this course, we'll explore how researchers and organizations like Microsoft, Google, and NASA are solving these hard problems, and we'll get to use some of the tools they've built! Not Offered Every Year 0-0.5 Course Units 2026-27 Catalog | Generated 08/03/26
Students must take CIS 1210 before taking CIS 1921.
CIS 1951iOS Programming
This project-oriented course is centered around application development on current iOS mobile platforms. The first half of the course will involve fundamentals of mobile app development, where students learn about mobile app lifecycles, event-based programming, efficient resource management, and how to interact with the range of sensors available on modern mobile devices. In the second half of the course, students work in teams to conceptualize and develop a significant mobile application. Creativity and originality are highly encouraged! Prerequisite: CIS 1200 or previous programming experience.Not Offered Every YearPrerequisites: Students must take CIS 1200 before taking CIS 1951. 0-0.5 Course Units
This project-oriented course is centered around application development on current Android mobile platforms. The first half of the course will involve fundamentals of mobile app development, where students learn about mobile app lifecycles, event-based programming, efficient resource management, and how to interact with the range of sensors available on modern mobile devices. In the second half of the course, students work in teams to conceptualize and develop a significant mobile application. Creativity and originality are highly encouraged! Prerequisite: CIS 1200 or previous programming experience. Not Offered Every Year 0-0.5 Course Units
The Unreal Engine is a state of the art tool for computer graphics creation. It provides an unparalleled number of rendering, physics, and design tools for developers. The Unreal Engine has become a staple in numerous fields from video games to films to health care to physical simulation to geospatial processing. This course will explore the application of Unreal Engine specifically in the development of 3D video games. Taking this class will foster proficiency in use of the engine, understanding of common practices and techniques in video game creation, and linear algebra and C++ in a game context. The course is recommended for computer science students interested in video game development, or prospective students to the Computer Graphics and Game Technology program. Not Offered Every Year CIS 1953. 0-0.5 Course Units
Students must take CIS 1200 and CIS 2400 before taking
CIS 1961Ruby on Rails Web Development
This course will teach the fundamentals of developing web applications using Ruby on Rails, a rapid-development web framework developed by Basecamp, and adopted by companies like Airbnb, GitHub, Bloomberg, CrunchBase, and Shopify. The first part of the course will focus on Ruby, the language that powers Rails. Along the way, students will also pick up essential skills such as git, bash, HTML and CSS. The second part will focus on Rails, the web framework and will include all topics required to develop and deploy production-ready modern web applications with Rails. Throughout the course, students will be working on a web application project of their own choosing. Upon completion of the course, this application will be deployed and made accessible to the public. Not Offered Every Year 0-0.5 Course Units 2026-27 Catalog | Generated 08/03/26
Students must take CIS 1200 before taking CIS 1961.
CIS 1962JavaScript Programming
This course provides an introduction to modern web development frameworks, techniques, and practices used to deliver robust client side applications on the web. The emphasis will be on developing JavaScript programs that run in the browser. Topics covered include the JavaScript language, web browser internals, the Document Object Model (DOM), HTML5, client-side app architecture and compile-to-JS languages like (Coffeescript, TypeScript, etc.). This course is most useful for students who have some programming and web development experience and want to develop moderate JavaScript skills to be able to build complex, interactive applications in the browser. Not Offered Every Year 0-0.5 Course Units
This course will be used for 'pilot versions' of new CIS courses of this type that the department is planning to offer. A given course will be offered as CIS 1990 at most twice; after this, it will be assigned a permanent course number. 0-0.5 Course Units
Blockchain or Distributed Ledger Technology (DLT) provides a decentralized method of information sharing between parties that do not trust each other. Instead the trust is in the underlying cryptographic algorithms. This practical introductory course provides experience with the fundamentals of cryptography (codes and ciphers, symmetric and asymmetric encryption, public and private keys, hashes, and zero knowledge proofs) - as it is applied to implementing a blockchain solution. This course covers the basics of a distributed ledger, how it is built, used, and secured. Methods of ensuring consensus - from proof-of- work to proof-of-stake will be explored and analyzed. Students will have both written and practical assignments to build and deploy components of a blockchain solution.
CIS 2500Software Development with AI Coding Agents
This course examines software development in an era where AI agents can generate code at scale. Students learn to work at higher levels of abstraction, focusing on ethics, architecture, specification, rapid prototyping, and verification. Through hands-on projects, students develop skills in navigating unfamiliar codebases, writing robust test suites, reviewing AI-generated code, refactoring, and managing technical debt in rapidly evolving systems. Furthermore, students will learn how to select the best agents for particular tasks and how to document and share important lessons to improve their workflow over time.
This course explores questions fundamental to computer science such as which problems cannot be solved by computers, can we formalize computing as a mathematical concept without relying upon the specifics of programming languages and computing platforms, and which problems can be solved efficiently. The topics include finite automata and regular languages, context-free grammars and pushdown automata, Turing machines and undecidability, tractability and NP-completeness. The course emphasizes rigorous mathematical reasoning as well as connections to practical computing problems such as test processing, parsing, XML query languages, and program verification.
Machine learning is the study of algorithms (e.g. gradient descent) that learn functions (e.g. deep networks) from experience (e.g. data). Behind this simple statement is a lot of mathematical scaffolding: statistics for handling data, optimization for understanding learning algorithms, and linear algebra to create expressive models. This course provides the background to be able to understand mathematical concepts commonly used in machine learning. Topics include continuous probability, parametric distributions, and concentration inequalities from statistics; inner product spaces, functional analysis and Hilbert spaces from linear algebra; and multivariate calculus, Taylor’s theorem, and convexity from optimization.
Can you check if two large documents are identical by examining a small number of bits? Can you verify that a program has correctly computed a function without ever computing the function? Can students compute the average score on an exam without ever revealing their scores to each other? Can you be convinced of the correctness of an assertion without ever seeing the proof? The answer to all these questions is in the affirmative provided we allow the use of randomization. Over the past few decades, randomization has emerged as a powerful resource in algorithm desgin. This course would focus on powerful general techniques for designing randomized algorithms as well as specific representative applications in various domains, including approximation algorithms, cryptography and number theory, data structure design, online algorithms, and parallel and distributed computation. Not Offered Every Year 1 Course Unit
This introductory course will present basic principles of robotics with an emphasis to computer science aspects. Algorithms for planning and perception will be studied and implemented on actual robots. While planning is a fundamental problem in artificial intelligence and decision making, robot planning refers to finding a path from A to B in the presence of obstacles and by complying with the kinematic constraints of the robot. Perception involves the estimation of the robots motion and path as well as the shape of the environment from sensors. In this course, algorithms will be implemented in Python on mobile platforms on ground and in the air. No prior experience with Python is needed but we require knowledge of data structures, linear algebra, and basic probability. Not Offered Every Year MATH 2400) before taking CIS 3900. 1 Course Unit
The purpose of this course is to introduce undergraduate students in computer computer science and engineering to quantum computers (QC) and quantum information science (QIS). This course is meant primarly for juniors and seniors in Computer Science. No prior knowledge of quantum mechanics (QM) is assumed. Enrollment is by permission of the instructor.
or CIS 4110 CIS Senior Thesis or ESE 4510 Senior Design Project II - EE and SSE or MEAM 4460 Mechanical Engineering Design Projects or BE 4960 Senior Design Project or MSE 4960 Senior Design
The goal of a Senior Thesis project is to complete a major research project under the supervision of a faculty member. The duration of the project is two semesters. To enroll in CIS 4100, students must develop an abstract of the proposed work, and a member of the CIS graduate group must certify that the work is suitable and agree to supervise the project; a second member must agree to serve as a reader. At the end of the first semester, students must submit an intermediate report; if the supervisor and reader accept it, they can enroll in CIS 4110. At the end of the second semester, students must describe their results in a written thesis and must present them publicly, either in a talk at Penn or in a presentation at a conference or workshop. Grades are based on the quality of the research itself (which should ideally be published or at least of publishable quality), as well as on the quality of the thesis and the oral presentation. The latter are evaluated jointly by the supervisor and the reader. The Senior Thesis program is selective, and students are generally expected to have a GPA is in the top 10-20% to qualify. Senior Theses are expected to integrate the knowledge and skills from earlier coursework; because of this, students are not allowed to enroll in CIS 4100 before their sixth semester. 1 Course Unit
The goal of a Senior Thesis project is to complete a major research project under the supervision of a faculty member. The duration of the project is two semesters. To enroll in CIS 4100, students must develop an abstract of the proposed work, and a member of the CIS graduate group must certify that the work is suitable and agree to supervise the project; a second member must agree to serve as a reader. At the end of the first semester, students must submit an intermediate report; if the supervisor and reader accept it, they can enroll in CIS 4110. At the end of the second semester, students must describe their results in a written thesis and must present them publicly, either in a talk at Penn or in a presentation at a conference or workshop. Grades are based on the quality of the research itself (which should ideally be published or at least of publishable quality), as well as on the quality of the thesis and the oral presentation. The latter are evaluated jointly by the supervisor and the reader. The Senior Thesis program is selective, and students are generally expected to have a GPA is in the top 10-20% to qualify. 1 Course Unit
CIS 4120Introduction to Human Computer Interaction
In this course, you will learn the essentials of human-computer interaction (HCI). Over the course of a semester, you will learn how to design interactive systems that satisfy and delight users by undertaking the human-centered design process, from ideation to prototyping, implementation, and assessment with human users. You will learn key tools in the HCI toolkit, including need-finding, user studies, visual design, cognitive models, demo'ing, ethical considerations, and writing about your designs. This course also provides a primer on several areas of emerging technology in HCI, such as human-AI interaction and education technology. We will also cover ethics in HCI, including topics like inclusive design and dark patterns. To hone your craft as an HCI practitioner, during this course you will undertake a group project to design an innovative user interface. The final submission will include a working interactive prototype, demonstrations of the interface at a public departmental design showcase, and a written reflection on your design findings. Prerequisite: prior programming experience
This class introduces aspiring data science technologists to the spectrum of ethical concerns, focusing on social norms like fairness, transparency and privacy. It introduces technical approaches to a number of these problems, including by hands-on examination of the tradeoffs in fairness and accuracy in predictive technology, introduction to differential privacy, and overview of evaluation conventions for predictive technology. It also provides guidelines for examining system training data for bias, representation (of race, gender and other characteristics) and ecological validity. Equipped with this knowledge, students will learn how to conduct informed analysis of the usefulness of predictive systems; they will audit for ethical concerns papers from the contemporary top artificial intelligence venues and the ongoing senior design projects.
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.
The goals of this course are twofold: (1) to take good programmers and turn them into excellent ones, and (2) to introduce them to a range of modern software engineering practices, in particular those embodied in advanced functional programming languages. Four courses involving significant programming and a discrete mathematics or modern algebra course. Enrollment by permission of the instructor only. Mutually Exclusive: CIS 5520 1 Course Unit
Students must take CIS 1210 before taking CIS 4520.
CIS 4521Compilers and Interpreters
You know how to program, but do you know how to implement a programming language? In this course you'll learn how to build a compiler. Topics covered include: lexical analysis, grammars and parsing, intermediate representations, syntax-directed translation, code generation, type checking, simple dataflow and control-flow analyses, and optimizations. Along the way, we study objects and inheritance, first-class functions (closures), data representation and runtime-support issues such as garbage collection. This is a challenging, implementation- oriented course in which students build a full compiler from a simple, typed object-oriented language to fully operational x86 assembly. The course projects are implemented using OCaml, but no knowledge of OCaml is assumed. Prerequisite: Two semesters of programming courses, e.g., CIS 1200, CIS 1210, CIS 2400. Mutually Exclusive: CIS 5521 1 Course Unit
or CIS 5610 Advanced Computer Graphics or CIS 4620 Computer Animation or CIS 5620 Computer Animation or CIS 4550 Internet and Web Systems or CIS 5550 Internet and Web Systems
This course covers core subject matter common to the fields of robotics, character animation and embodied intelligent agents. The intent of the course is to provide the student with a solid technical foundation for developing, animating and controlling articulated systems used in interactive computer game virtual reality simulations and high-end animation applications. The course balances theory with practice by "looking under the hood" of current animation systems and authoring tools and exams the technologies and techniques used from both a computer science and engineering perspective. Topics covered include: geometric coordinate systems and transformations; quaternions; parametric curves and surfaces; forward and inverse kinematics; dynamic systems and control; computer simulation; keyframe, motion capture and procedural animation; behavior-based animation and control; facial animation; smart characters and intelligent agents. Prerequisite: Previous exposure to major concepts inn linear algebra (i.e. vector matrix math), curves and surfaces, dynamical systems (e.g. 2nd order mass-spring-damper systems) and 3D computer graphics has also been assumed in the preparation of the course materials.
This course will focus on numerical algorithms and scientific computing techniques that are practical and efficient for a number of canonical science and engineering applications. Built on top of classical theories in multi-variable calculus and linear algebra (as a prerequisite), the lecture in this course will strongly focus on explaining numerical methods for applying these mathematical theories to practical engineering problems. Students will be expected to implement solutions and software tools using MATLAB/C++, practice state-of-the-art parallel computing paradigms, and learn scientific visualization techniques using modern software packages. Prerequisites: MATH 240; knowledge of C++, Python or MATLAB Mutually Exclusive: CIS 5670 1 Course Unit
Students must take MATH 2400 before taking CIS 4670.
CIS 4710Computer Organization and Design1
or CIS 5710 Computer Organization and Design Intermediate CIS or ESE Elective Select 1 CU of 2000+ level CIS or ESE engineering courses 1 Advanced CIS or ESE Electives Select 2 CUs of 3000+ level CIS or ESE engineering courses 2
This is an introductory course to Computer Vision and Computational Photography. This course will explore three topics: 1) image morphing, 2) image matching and stitching, and 3) image recognition. This course is intended to provide a hands-on experience with interesting things to do on images/videos. The world is becoming image-centric. Cameras are now found everywhere, in our cell phones, automobiles, even in medical surgery tools. Computer vision technology has led to latest innovations in areas such as Hollywood movie production, medical diagnosis, biometrics, and digital library. This course is suited for students from all Engineering backgrounds, who have the basic knowledge of linear algebra and programming, and a lot of imagination.
This course is an introductory graduate course on computer architecture with an emphasis on a quantitative approach to cost/performance design tradeoffs. The course covers the fundamentals of classical and modern uniprocessor design: performance and cost issues, instruction sets, pipelining, superscalar, out-of-order, and speculative execution mechanisms, caches, physical memory, virtual memory, and I/O. Other topics include: static scheduling, VLIW and EPIC, software speculation, long (SIMD) and short (multimedia) vector execution, multithreading, and an introduction to shared memory multiprocessors. Knowledge of computer organization and basic programming skills.
An investigation of paradigms for design and analysis of algorithms. The course will include dynamic programming, flows and combinatorial optimization algorithms, linear programming, randomization and a brief introduction to intractability and approximation algorithms. The course will include other advanced topics, time permitting. Prerequisite: Data Structures and Algorithms at the undergraduate level.
or CIS 5020 Analysis of Algorithms or CIS 6770 Advanced Topics in Algorithms and Complexity Concentration (choose one) 6 Students are required to select one of the following tracks.
Review of regular and context-free languages and machine models. Turing machines and RAM models, Decidability, Halting problem, Reductions, Recursively enumerable sets, Universal TMs, Church/Turing thesis. Time and space complexity, hierarchy theorems, the complexity classes P, NP, PSPACE, L, NL, and co-NL. Reductions revisited, Cook-Levin Theorem, completeness, NL = co-NL. Advanced topics as time permits: Circuit complexity and parallel computation, randomized complexity, approximability, interaction and cryptography. Discrete Mathematics, Automata theory or Algorithms at the undergraduate level.
CIS 5120Introduction to Human Computer Interaction
In this course, you will learn the essentials of human-computer interaction (HCI). Over the course of a semester, you will learn how to design interactive systems that satisfy and delight users by undertaking the human-centered design process, from ideation to prototyping, implementation, and assessment with human users. You will learn key tools in the HCI toolkit, including need-finding, user studies, visual design, cognitive models, demo'ing, ethical considerations, and writing about your designs. This course also provides a primer on several areas of emerging technology in HCI, such as human-AI interaction and education technology. To hone your craft as an HCI practitioner, during this course you will undertake a group project to design an innovative user interface. The final submission will include a working interactive prototype, demonstrations of the interface at a public departmental design showcase, and a written reflection on your design findings.
CIS 5150Fundamentals of Linear Algebra and Optimization
This course provides firm foundations in linear algebra and basic optimization techniques. Emphasis is placed on teaching methods and tools that are widely used in various areas of computer science. Both theoretical and algorithmic aspects will be discussed.
This class introduces aspiring data science technologists to the spectrum of ethical concerns, focusing on social norms like fairness, transparency and privacy. It introduces technical approaches to a number of these problems, including by hands-on examination of the tradeoffs in fairness and accuracy in predictive technology, introduction to differential privacy, and overview of evaluation conventions for predictive technology. It also provides guidelines for examining system training data for bias, representation (of race, gender and other characteristics) and ecological validity. Equipped with this knowledge, students will learn how to conduct informed analysis of the usefulness of predictive systems; they will audit for ethical concerns papers from the contemporary top artificial intelligence venues and the ongoing senior design projects. Preparation for this course would include taking CIS 1210 or equivalent knowledge.
Google translate can instantly translate between any pair of over fifty human languages (for instance, from French to English). How does it do that? Why does it make the errors that it does? And how can you build something better? Modern translation systems like Google Translate and Bing Translator learn how to translate by reading millions of words of already translated text, and this course will show you how they work. The course covers a diverse set of fundamental building blocks from linguistics, machine learning, algorithms, data structures , and formal language theory, along with their application to a real and difficult problem in artificial intelligence.
Recent advances in machine learning---in particular deep neural networks and large language models, are transforming the design and implementation of decision-making systems. However, due to their black-box nature, brittleness, and lack of safety guarantees, significant challenges remain in their adoption in critical and potentially high payoff applications such as autonomous systems and healthcare. The vibrant field of "Trustworthy ML" is developing methods and tools to address questions such as: how can we ensure that a decision recommended by an ML system is always safe? how can we explain the decision made by an ML system to a stakeholder? how can we ensure that an ML system makes its decisions in a fair and ethical manner? The goal of this course is to introduce students to state-of-the-art research in trustworthy ML. Note that topics of bias, privacy, and ethics, while also central to the field of trustworthy ML, are covered in CIS 4230 “Ethical Algorithm Design”. Not Offered Every Year Mutually Exclusive: CIS 4270 and CIS 3333) before taking CIS 4270. 1 Course Unit
Introductory computational biology course designed for both biology students and computer science, engineering students. The course will cover fundamentals of algorithms, statistics, and mathematics as applied to biological problems. In particular, emphasis will be given to biological problem modeling and understanding the algorithms and mathematical procedures at the "pencil and paper" level. That is, practical implementation of the algorithms is not taught but principles of the algorithms are covered using small sized examples. Topics to be covered are: genome annotation and string algorithms, pattern search and statistical learning, molecular evolution and phylogenetics, functional genomics and systems level analysis.
This course covers the fundamentals of advanced quantitative image analysis that apply to all of the major and emerging modalities in biological/biomaterials imaging and in vivo biomedical imaging. While traditional image processing techniques will be discussed to provide context, the emphasis will be on cutting edge aspects of all areas of image analysis (including registration, segmentation, and high- dimensional statistical analysis). Significant coverage of state-of-the- art biomedical research and clinical applications will be incorporated to reinforce the theoretical basis of the analysis methods. Prerequisite: Mathematics through multivariate calculus (MATH 2410), programming experience, as well as some familiarity with linear algebra, basic physics, and statistics.
CIS 5410Embedded Software for Life-Critical Applications
The goal of this course is to give students greater design and implementation experience in embedded software development and to teach them how to model, design, verify, and validate safety critical systems in a principled manner. Students will learn the principles, methods, and techniques for building life-critical embedded systems, ranging from requirements and models to design, analysis, optimization, implementation, and validation. Topics will include modeling and analysis methods and tools, real-time programming paradigms and languages, distributed real-time systems, global time, time-triggered communications, assurance case, software architecture, evidence-based certification, testing, verification, and validation. The course will include a series of projects that implements life-critical embedded systems (e.g., pacemaker, infusion pumps, closed-loop medical devices). This course assumes experience equivalent to CIS 2400 (Introduction to Computer Systems).
This course explores techniques for writing correct and efficient embedded code. Topics include C/C++ idioms, data abstraction, elementary data structures and algorithms, environment modeling, concurrency, hard real time, and modular program reasoning. C fluency.
This course covers the theory and practice of software analysis - a body of algorithms and techniques to reason about program behavior with applications to effectively test, debug, and secure large, complex codebases. The course surveys a wide range of applications of software analysis including proving the absence of common programming errors, discovering and preventing security vulnerabilities, systematically testing intricate data structures and libraries, and localizing root causes in complex software failures. Familiarity with programming (CIS 1200), algorithms (CIS 1210), and mathematical foundations (CIS 1600). Specifically: - Assignments involve programming in C/C++ in the LLVM compiler infrastructure. - Lectures and exams presume knowledge of search and graph algorithms, and background in logic and probability.
CIS 5480Operating Systems Design and Implementation
The purpose of this masters-level course is to teach the design and implementation of operating systems and operating systems concepts that appear in other advanced systems. The course divides into three major sections. The first part of the course discusses concurrency: how to manage multiple tasks that execute at the same time and share resources. Topics in this section include processes and threads, context switching, synchronization, scheduling, and deadlock. The second part of the course addresses the problem of memory management; it will cover topics such as linking, dynamic memory allocation, dynamic address translation, virtual memory, and demand paging. The third major part of the course concerns file systems, including topics such as storage devices, disk management and scheduling, directories, protection, and crash recovery. After these three major topics, the class will conclude with specialized topics such as virtual machines and case studies of different operating systems (e.g. Android, Windows, Linux, etc.).
The goals of this course are twofold: (1) to take good programmers and turn them into excellent ones, and (2) to introduce them to a range of modern software engineering practices, in particular those embodied in advanced functional programming languages. Four courses involving significant programming and a discrete mathematics or modern algebra course. Enrollment by permission of the instructor only.
You know how to program, but do you know how to implement a programming language? In this course you'll learn how to build a compiler. Topics covered include: lexical analysis, grammars and parsing, intermediate representations, syntax-directed translation, code generation, type checking, simple dataflow and control-flow analyses, and optimizations. Along the way, we study objects and inheritance, first-class functions (closures), data representation and runtime-support issues such as garbage collection. This is a challenging, implementation- oriented course in which students build a full compiler from a simple, typed object-oriented language to fully operational x86 assembly. The course projects are implemented using OCaml, but no knowledge of OCaml is assumed. Mutually Exclusive: CIS 4521 1 Course Unit
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, network security, and peer-to-peer networks. The course will involve written assignments, examinations, and programming assignments.. Students will work in teams to design and implement networked systems in layers, from routing protocols, transport protocols, to peer-to-peer networks. Preparation for this course would include taking CIS 1210 or equivalent knowledge.
Achieving mastery in a new programming language requires more than just learning a new syntax; rather, different languages support different ways to think about solving problems. Not all programming languages are inherently procedural or object-oriented. The intent of this course is to provide a basic understanding of a wide variety of programming paradigms, such as logic programming, functional programming, concurrent programming, rule-based programming, and others. Prerequisites: CIS 1210 or equivalent.
CIS 5580Secure Software Engineering and Management
In this course, students learn techniques for building, deploying, and maintaining secure systems. The course covers threat modeling, security- informed system design techniques, secure software development processes and techniques, and security operations tools and techniques. The course also specifically considers how to communicate security risks and tradeoffs to stakeholders effectively. As computer security is a constantly evolving field, the course places particular emphasis on means to empirically evaluate security choices, and how to consider economic and risk-based incentives underlying security decisions. Students are expected to have prior knowledge of CIS 2400 and STAT 4300 or equivalent. CIS 4510/5510 or CIS 5560 are recommended.
This course develops students problem solving skills using techniques that they have learned during their CS training. Over the course of the semester, students work on group projects in which they use programming techniques to solve open-ended problems, e.g. optimization, simulation, etc. There are no "correct" answers to these problems; rather, the focus is on the four steps of the problem solving process: algorithmic thinking; programming; analysis; and communication. Prerequisite: Proficiency in Java.
This course covers core subject matter common to the fields of robotics, character animation and embodied intelligent agents. The intent of the course is to provide the student with a solid technical foundation for developing, animating and controlling articulated systems used in interactive computer games, virtual reality simulations and high-end animation applications. The course balances theory with practice by "looking under the hood" of current animation systems and authoring tools and exams the technologies and techniques used from both a computer science and engineering perspective. Topics covered include: geometric coordinate systems and transformations; quaternions; parametric curves and surfaces; forward and inverse kinematics; dynamic systems and control; computer simulation; keyframe, motion capture and procedural animation; behavior-based animation and control; facial animation; smart characters and intelligent agents. Prerequisite: Previous expoure to majr concepts in linear algebra (i.e. vector matrix math), curves and surfaces, dynamical systems (e.g. 2nd order mass- spring-damper systems) and 3D computer graphics has also been assumed in the preparation of the course materials.
This course introduces students to common physically based simulation techniques for animation of fluids and gases, rigid and deformable solids, cloth, explosions, fire, smoke, virtual characters, and other systems. Physically based simulation techniques allow for creation of extremely realistic special effects for movies, video games and surgical simulation systems. We will learn state-of-the-art techniques that are commonly used in current special effects and animation studios and in video games community. To gain hands-on experience, students will implement basic simulators for several systems. The topics will include: Particle Systems, Mass spring systems, Deformable Solids & Fracture, Cloth, Explosions & Fire, Smoke, Fluids, Deformable active characters, Simulation and control of rigid bodies, Rigid body dynamics, Collision detection and handling, Simulation of articulated characters, Simulated characters in games. The course is appropriate for both upper level undergraduate and graduate students. Prerequisite: Students should have a good knowledge of object- oriented programming (C++) and basic familiarity with linear algebra and physics. Background in computer graphics is requires (CIS 461 and 561).
offered during the summer term) cs 5,6 Free Elective 1 Select 1 CU. Recommendations include: Course EAS 5460 Engineering Entrepreneurship II Units DSGN 5004 Art of the Web: Interactive Concepts for Art & Design
This course examines the architecture and capabilities of modern GPUs. The graphics processing unit (GPU) is orders of magnitude faster for computation than traditional CPU, and with the power of general purpose programming, GPUs can be used for a diverse set of applications far removed from their traditional graphics usage. In this course, students will learn to program and optimize GPUs for computationally intensive algorithms. Topics covered include architectural aspects of modern GPUs, with a special focus on massively parallel programming, writing programs using CUDA, and using the GPU for graphics and general purpose applications in the area of geometry modeling, physical simulation, scientific computing and games. Students are expected to have a basic understanding of computer architecture and graphics, and should be proficient in C/C++. This course is appropriate as an upper- level undergraduate CIS elective. Computer Graphics background is strongly recommended, which can be met with CIS 4600, CIS 5600, or an equivalent Computer Graphics course.
Sprawling cities, dense vegetation, infinite worlds - procedural graphics empower technical artists to quickly create complex digital assets that would otherwise be unfeasible. This course is intended to introduce the mathematical and algorithmic foundations of procedural modeling and animation techniques, and to offer hands-on experience designing and implementing visual recipes in original graphics projects by applying these methods. Students should have a strong interest in both the creative and technical aspects of computer graphics, as well as a solid programming background.
This course will focus on numerical algorithms and scientific computing techniques that are practical and efficient for a number of canonical science and engineering applications. Built on top of classical theories in multi-variable calculus and linear algebra (as a prerequisite), the lecture in this course will strongly focus on explaining numerical methods for applying these mathematical theories to practical engineering problems. Students will be expected to implement solutions and software tools using MATLAB/C++, practice state-of-the-art parallel computing paradigms, and learn scientific visualization techniques using modern software packages. Prerequisites: MATH 2400; knowledge of C++, Python or MATLAB
CIS 5690GPU Computing for Machine Learning Systems
In this course, we will explore massively parallel programming, specifically on graphics processing units (GPUs), with immediate application to machine learning (ML) and artificial intelligence (AI). We’ll first outline computational aspects of ML and connect parallel programming to common components of deep learning. You will gain proficiency in GPU programming basics through hands-on projects with industry best practices and tools, eventually building up to implementing components of modern neural models. Required Prerequisites: CIT 5930, CIT 5940, CIT 5950, and CIT 5960. Intermediate/advanced knowledge of C/C++. Intermediate knowledge of Linear Algebra and Calculus (in particular, differentiation) Note: MSE-DS Online students are waived from needing to complete CIT 5910, CIT 5920, CIT 5930, & CIT 5940 as pre- s req requirements. MSE-AI Online students are waived from needing to complete CIT 5910, CIT 5920, CIT 5930, CIT 5940, CIT 5950, and CIT 5960 as pre-req requirements. __________________________ Recommended note: This course is designed with the expectation that students will need to spend up to $300 on cloud computing resources in addition to tuition. Any expenses beyond this amount are also the responsibility of the student. 1 Course Unit 2026-27 Catalog | Generated 08/03/26
ESE 5460 and CIS 5530. Familiarity with Unix/Linux. Please CIT 5930 AND CIT 5940 AND CIT 5950 AND CIT 5960
CIS 5710Computer Organization and Design
The four core courses must include 1) at least one systems course, or CIS 5010; 2) at least one theory course; and 3) at most one machine-learning course. (the other machine- learning courses can still be taken as electives.)
Writing a "program" is easy. Developing a "software product", however, introduces numerous challenges that make it a much more difficult task. This course will look at how professional software engineers address those challenges, by investigating best practices from industry and emerging trends in software engineering research. Topics will focus on software maintenance issues, including: test case generation and test suite adequacy; code analysis; verification and model checking; debugging and fault localization; refactoring and regression testing; and software design and quality. Prerequisite: CIS 3500 or equivalent.
For master's students studying a specific advanced subject area in computer and information science. Involves coursework and class presentations. A CIS 5990 course unit will invariably include formally gradable work comparable to that in a CIS 500-level course. Students should discuss with the faculty supervisor the scope of the Independent Study, expectations, work involved, etc.
CIS 6100Advanced Geometric Methods in Computer Science
The purpose of this course is to present some of the advanced geometric methods used in geometric modeling, computer graphics, computer vision, etc. The topics may vary from year to year, and will be selected among the following subjects (nonexhaustive list): Introduction to projective geometry with applications to rational curves and surfaces, control points for rational curves, rectangular and triangular rational patches, drawing closed rational curves and surfaces; Differential geometry of curves (curvature, torsion, osculating planes, the Frenet frame, osculating circles, osculating spheres); Differential geometry of surfaces (first fundamental form, normal curvature, second fundamental form, geodesic curvature, Christoffel symbols, principal curvatures, Gaussian curvature, mean curvature, the Gauss map and its derivative dN, the Dupin indicatrix, the Theorema Egregium equations of Codazzi- Mainadi, Bonnet's theorem, lines of curvatures, geodesic torsion, asymptotic lines, geodesic lines, local Gauss-Bonnet theorem).
This course covers a variety of advanced topics in machine learning, such as the following: statistical learning theory (statistical consistency properties of surrogate loss minimizing algorithms); approximate inference in probabilistic graphical models (variational inference methods and sampling-based inference methods); structured prediction (algorithms and theory for supervised learning problems involving complex/structured labels); and online learning in complex/structured domains. The precise topics covered may vary from year to year based on student interest and developments in the field.
This course covers the core architectures and training methods used in contemporary deep learning. Topics include transformers, vision, diffusion, multimodal models (VLM), deep reinforcement learning, mechanistic interpretability and cutting-edge research in areas such as speech and video generation, RAG, MCP and agents, and scientific paper writing. Students will read and critically discuss the seminal papers across deep learning and contribute to that literature. To prepare for this course students are encouraged to have taken CIS 5190 or CIS 5200 or equivalent graduate level Machine Learning background.
This course is a rigorous, mathematically-focused introduction to the theory and practice of discrete generative models. We begin with a rapid overview of transformer architectures and autoregressive modeling, using them as a familiar entry point to sequence generation and large language models. Building on this foundation, the course develops the subject from first principles, introducing the probabilistic and algorithmic underpinnings of Markov chains, stochastic processes, and stochastic differential equations. From there, we cover modern frameworks that power state-of-the-art generative methods, including score matching, discrete diffusion, flow matching, optimal transport, and Schrödinger bridges. Advanced topics will include Stein operators and kernelized Stein discrepancies, variational principles such as the Donsker-Varadhan representation and ELBO, functional inequalities including Poincaré and log-Sobolev bounds, and nonparametric priors such as Dirichlet and Pitman-Yor processes. Each framework will be studied both theoretically and practically. On the theoretical side, we will derive key theorems, convergence results, and variational characterizations, and prove guarantees for mixing, expressivity, and invariance. On the practical side, students will design and implement algorithms from scratch, experiment with coding instantiations of each framework, and analyze their behavior on real discrete data. Although the course is theory driven, applications will focus on discrete biological sequence domains, including DNA, RNA, peptides, proteins, single cell data, and ‘omics datasets, to demonstrate how discrete generative models provide a principled foundation for sequence design, modeling, and analysis. By the end of the semester, students will be able to (i) derive and analyze generative processes on discrete state spaces, (ii) implement and experiment with algorithmic instantiations in code, and (iii) critically evaluate both theoretical and empirical aspects of discrete generative modeling research. To prepare for this course students are encouraged to have taken CIS 5190 or CIS 5200 or ESE 5460 or equivalent background.
This course introduces world models—learned representations and predictors of environment dynamics for perception, planning, and decision making. We cover key approaches for learning predictive models and representations, and how they support control and reasoning in settings such as reinforcement learning, video/3D understanding and generation, LLM-based multimodal agents and robotics. Students complete a course project exploring a world-modeling method in one application domain. To prepare for this course students are encouraged to have taken CIS 5190 or CIS 5200 or equivalent background.
This course focuses on how a variety of topics in machine learning, deep learning, and statistical models are applied in current genomic research that involve large scale sequencing data such as DNA/RNA sequencing, or RNA/DNA protein binding assays. DL topics include transformers, CNN, (V)AE, and interpretation methods. ML and statistical modeling include variants of clustering and regression, MCMC, ensemble learning, transfer learning, dimensionality reduction, dealing with missin data, imbalanced data, measures of performance. All of those will be covered within the context of current research in areas such as multi- omics integration, single cell transcriptomics, cancer genomics, RNA processing, Genome wide association studies, and genetic variant fine mapping. A major focus is how to formulate a scientific question, a model/algorithm that could answer the question, and how to then assess what the model/algorithm produces. Students will read and critically discuss seminal papers in applied machine/deep learning for genomic research, perform “realistic” genomic research tasks (code+analysis), leading to a final project where they would have to formulate a question in genomic research that would require them to develop and apply methods to answer it. Recommended preparation for the course would be
The details of this course change from year to year, but its purpose is to cover theoretical topics related to programming languages. Some central topics include: denotational vs operational semantics, domain theory and category theory, the lambda calculus, type theory (including recursive types, generics, type inference and modules), logics of programs and associated completeness and decidability problems, specification languages, and models of concurrency. The course requires a degree of mathematical sophistication.
CIS 6770Advanced Topics in Algorithms and Complexity
This course covers various aspects of discrete algorithms. Graph- theoretic algorithms in computational biology, and randomization and computation; literature in dynamic graph algorithms, approximation algorithms, and other areas according to student interests. Consent of the instructor.
CIS 6850NeuroAI - A Principled Understanding of the Human Brain
Traditional neuroscience courses present a fragmented view of the field, cataloging empirical observations and theoretical constructs without providing strong conceptual links between them. The discipline has yet to establish core principles that promise an overarching understanding. This course, heavily leaning on deep learning, will provide such an overarching way of thinking about brains. The classes will mostly be lecture based, building on an upcoming textbook. Homework will primarily be the coding up and analyzing of models.
One time course offerings of special interest. Equivalent to a CIS 5XX level course. Not Offered Every Year 1 Course Unit University of Pennsylvania Catalog 1463
In the social sciences we often use the word "explanation" as if (a) we know what we mean by it, and (b) we mean the same thing that other people do. In this course we will critically examine these assumptions and their consequences for scientific progress. In part 1 of the course we will examine how, in practice, researchers invoke at least three logically and conceptually distinct meanings of "explanation:" identification of causal mechanisms; ability to predict (account for variance in) some outcome; and ability to make subjective sense of something. In part 2 we will examine how and when these different meanings are invoked across a variety of domains, focusing on social science, history, business, and machine learning, and will explore how conflation of these distinct concepts may have created confusion about the goals of science and how we evaluate its progress. Finally , in part 3 we will discuss some ng related topics such as null hypothesis testing and the replication crisis. We will also discuss specific practices that could help researchers clarify exactly what they mean when they claim to have "explained" something, and how adoption of such practices may help social science be more useful and relevant to society. Also Offered As: COMM 8980, OIDD 9530 1 Course Unit
Total Course Units 19 A minimum of 2 CU’s of CIS 9999 must be completed at least one semester before the student defends. The first CU of 8950 should be completed by the third year and the second should be completed by the time of thesis proposal. The Qualifying Evaluation (or Research Qualifier) must be completed by the start of the third year. The Candidacy Examination (Thesis Proposal) must be completed no later than the start of the student's fifth year. All course requirements including depth must be completed prior to the thesis proposal. The Dissertation Defense/Oral Exam should be completed in the fifth or sixth year. Electrical and Systems Engineering,
For Computer and Information Science doctoral students studying a specific advanced subject area. Students should discuss with the faculty supervisor the scope of the independent study/research and know the expectations and work involved. Fall, Spring, and Summer Terms 1-3 Course Units 2026-27 Catalog | Generated 08/03/26