University of PennsylvaniaWebsiteAcademic Catalog
Computer and Information ScienceDepartment Website
BSE Degree in Computer Sciencesource 1source 2ABET
CS Courses
- Introduction to Computer ProgrammingCIS 1100 (1)introCIS 1100: Introduction to Computer Programming
Introduction to Computer Programming is the first course in our series introducing students to computer science. In this class you will learn the fundamentals of computer programming, with emphasis on applications in science and engineering. You will also learn about the broader field of computer science and algorithmic thinking, the fundamental approach that computer scientists take to solving problems.
- Programming Languages and Techniques ICIS 1200 (1)introCIS 1200: Programming Languages and Techniques I
A fast-paced introduction to the fundamental concepts of programming and software design. This course assumes some previous programming experience, at the level of a high school computer science class or CIS 1100. (If you got at least 4 in the AP Computer Science A or AB exam, you will do great.) No specific programming language background is assumed: basic experience with any language (for instance Java, C, C++, VB, Python, Perl, or Scheme) is fine. If you have never programmed before, you should take CIS 1100 first.
- Programming Languages and Techniques IICIS 1210 (1)introCIS 1210: Programming Languages and Techniques II
This is a course about Algorithms and Data Structures using the Java programming language. We introduce the basic concepts about complexity of an algorithm and methods on how to compute the running time of algorithms. Then, we describe data structures like stacks, queues, maps, trees, and graphs, and we construct efficient algorithms based on these representations. The course builds upon existing implementations of basic data structures in Java and extends them for the structures like trees, studying the performance of operations on such structures, and their efficiency when used in real-world applications.
- Introduction to Computer SystemsCIS 2400 (1)sysCIS 2400: Introduction to Computer Systems
You know how to program, but do you know how computers really work? How do millions of transistors come together to form a complete computing system? This bottom-up course begins with transistors and simple computer hardware structures, continues with low-level programming using primitive machine instructions, and finishes with an introduction to the C programming language. This course is a broad introduction to all aspects of computer systems architecture and serves as the foundation for subsequent computer systems courses, such as Computer Organization and Design (CIS 4710), Computer Operating Systems (CIS 3800), and Compilers and Interpreters (CIS 3410).
- Automata, Computability, and ComplexityCIS 2620 (1)theoryCIS 2620: Automata, Computability, and Complexity
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.
- Introduction to AlgorithmsCIS 3200 (1)algsCIS 3200: Introduction to Algorithms
How do you optimally encode a text file? How do you find shortest paths in a map? How do you design a communication network? How do you route data in a network? What are the limits of efficient computation? This course gives a comprehensive introduction to design and analysis of algorithms, and answers along the way to these and many other interesting computational questions. You will learn about problem-solving; advanced data structures such as universal hashing and red-black trees; advanced design and analysis techniques such as dynamic programming and amortized analysis; graph algorithms such as minimum spanning trees and network flows; NP-completeness theory; and approximation algorithms.
- orSenior ProjectCIS 4000 (0.5-1)capstoneCIS 4000: Senior Project
Design and implementation of a significant piece of work: software, hardware or theory. In addition, emphasis on technical writing and oral communication skills. Students must have an abstract of their Senior Project, which is approved and signed by a Project Adviser, at the end of the second week of Fall classes. The project continues during two semesters; students must enroll in CIS 401 during the second semester. At the end of the first semester, students are required to submit an intermediate report and give a class presentation describing their project and progress. Grades are based on technical writing skills (as per submitted report), oral presentation skills (as per class presentation) and progress on the project. These are evaluated by the Project Adviser and the Course Instructor.
Senior ProjectCIS 4010 (1)capstoneCIS 4010: Senior ProjectContinuation of CIS 4000. Design and implementation of a significant piece of work: software, hardware or theory. Students are required to submit a final written report and give a final presentation and demonstration of their project. Grades are based on the report, the presentation and the satisfactory completion of the project. These are evaluated by the Project Adviser and the Course Instructor.
CIS Senior ThesisCIS 4100 (1)capstoneCIS 4100: CIS Senior ThesisThe 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.
CIS Senior ThesisCIS 4110 (1)capstoneCIS 4110: CIS Senior ThesisThe 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.
- Ethical Algorithm DesignorCIS 4230 (1)impactCIS 4230: Ethical Algorithm Design
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.
Engineering EthicsorEAS 2030 (1)impactEAS 2030: Engineering EthicsIn this course, students will study the social, political, environmental and economic context of engineering practice. Students will develop an analytical toolkit to identify and address ethical challenges and opportunities in the engineering profession, including studies of risk and safety, professional responsibility, and global perspectives. The course will begin with a foundation in the history of engineering practice and major Western ethical and philosophical theories. Students will then apply this material to both historical case studies, such as Bhopal, the NASA Shuttle Program, and Three Mile Island, as well as contemporary issues in big data, artificial intelligence, and diversity within the profession. Students will consider how engineers, as well as governments, the media, and other stakeholders, address such issues.
Technology, Law & EthicsLAWM 5060 (1)impactLAWM 5060: Technology, Law & EthicsWhat makes for a properly designed product? What are technologists’ responsivities for ensuring system security and protecting user privacy? What are the limits does intellectual property place on product design and technologists’ latitude to experiment with technologies? What are the proper bounds of nondisclosure and noncompete agreements? Introduction to Technology Law and Ethics is an innovative course that provides students with key legal and ethical principles that technology professionals, engineers, and high-tech entrepreneurs need to know. The course presents issues from the bottom up, the way a practicing technologist would experience them, using in-depth classroom discussion exploring real, current, and cutting edge examples
- Operating Systems Design and ImplementationCIS 4480 (1)sysCIS 4480: Operating Systems Design and Implementation
The purpose of this 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.).
- Computer Organization and DesignCIS 4710 (1)sysCIS 4710: Computer Organization and Design
This is the second computer organization course and focuses on computer hardware design. Topics covered are: (1) basic digital system design including finite state machines, (2) instruction set design and simple RISC assembly programming, (3) quantitative evaluation of computer performance, (4) circuits for integer and floating-point arithmatic, (5) datapath and control, (6) micro-programming, (7) pipeling, (8) storage hierarchy and virtual memory, (9) input/output, (10) different forms of parallelism including instruction level parallelism, data-level parallelism using both vectors and message-passing multi-processors, and thread-level parallelism using shared memory multiprocessors. Basic cache coherence and synchronization.
- 4 × CS Elective
- 1 × Project elective
Math/Stat Courses
- Calculus, Part IMATH 1400 (1)mathMATH 1400: Calculus, Part I
Brief review of High School calculus, applications of integrals, transcendental functions, methods of integration, infinite series, Taylor's theorem, and first order ordinary differential equations. Use of symbolic manipulation and graphics software in calculus.
- Calculus, Part IIorMATH 1410 (1)mathMATH 1410: Calculus, Part II
Functions of several variables, vector-valued functions, partial derivatives and applications, double and triple integrals, conic sections, polar coordinates, vectors and vector calculus, first order ordinary differential equations. Applications to physical sciences. Use of symbolic manipulation and graphics software in calculus.
Honors CalculusMATH 1610 (1)mathMATH 1610: Honors CalculusStudents who are interested in math or science might also want to consider a more challenging Honors version of Calculus II and III, Math 1610 and Math 2600 (the analogues of Math 1410 and Math 2400, respectively). These courses will cover essentially the same material as 1610 and 2400, but more in depth and involve discussion of the underlying theory as well as computations.
- Calculus, Part IIIorororMATH 2400 (1)mathMATH 2400: Calculus, Part III
Linear algebra: vectors, matrices, systems of linear equations, vector spaces, subspaces, spans, bases, and dimension, eigenvalues, and eigenvectors, matrix exponentials. Ordinary differential equations: higher-order homogeneous and inhomogeneous ODEs and linear systems of ODEs, phase plane analysis, non-linear systems. Fall or Spring.
Computational Linear AlgebraorMATH 3130 (1)mathMATH 3130: Computational Linear AlgebraMany important problems in a wide range of disciplines within computer science and throughout science are solved using techniques from linear algebra. This course will introduce students to some of the most widely used algorithms and illustrate how they are actually used. Some specific topics: the solution of systems of linear equations by Gaussian elimination, dimension of a linear space, inner product, cross product, change of basis, affine and rigid motions, eigenvalues and eigenvectors, diagonalization of both symmetric and non-symmetric matrices, quadratic polynomials, and least squares optimazation. Applications will include the use of matrix computations to computer graphics, use of the discrete Fourier transform and related techniques in digital signal processing, the analysis of systems of linear differential equations, and singular value deompositions with application to a principal component analysis. The ideas and tools provided by this course will be useful to students who intend to tackle higher level courses in digital signal processing, computer vision, robotics, and computer graphics.
Advanced Linear AlgebraMATH 3140 (1)mathMATH 3140: Advanced Linear AlgebraTopics will include: Vector spaces, Basis and dimension, quotients; Linear maps and matrices; Determinants, Dual spaces and maps; Invariant subspaces, Cononical forms; Scalar products: Euclidean, unitary and symplectic spaces; Orthogonal and Unitary operators; Tensor products and polylinear maps; Symmetric and skew-symmetric tensors and exterior algebra.
- Discrete Probability, Stochastic Processes, and Statistical InferenceororCIS 2610 (1)mathCIS 2610: Discrete Probability, Stochastic Processes, and Statistical Inference
The purpose of this course is to provide a 1 CU educational experience which tightly integrates the theory and applications of discrete probability, discrete stochastic processes, and discrete statistical inference in the study of computer science. The intended audience for this class is both those students who are CS majors as well as those intending to be CS majors. Specifically, it will be assumed that the students will know: Set Theory, Mathematical Induction, Number Theory, Functions, Equivalence Relations, Partial-Order Relations, Combinatorics, and Graph Theory at the level currently covered in CIS 1600. This course could be taken immediately following CIS 1600. Computation and Programming will play an essential role in this course. The students will be expected to use the Maple programming environment in homework exercises which will include: numerical and symbolic computations, simulations, and graphical displays.
Engineering ProbabilityESE 3010 (1)mathESE 3010: Engineering ProbabilityThis course introduces students to the mathematical foundations of the theory of probability and its rich applications. The course begins with an exploration of combinatorial probabilities in the classical setting of games of chance, proceeds to the development of an axiomatic, fully mathematical theory of probability, and concludes with the discovery of the remarkable limit laws and the eminence grise of the classical theory, the central limit theorem. The topics covered include: discrete and continuous probability spaces , distributions, mass functions, densities; conditional probability; independence; the Bernoulli schema: the binomial, Poisson, and waiting time distributions; uniform, exponential, normal, and related densities; expectation, variance, moments; conditional expectation; generating functions, characteristic functions; inequalities, tail bounds, and limit laws. But a bald listing of topics does not do justice to the subject: the material is presented in its lush and glorious historical context, the mathematical theory buttressed and made vivid by rich and beautiful applications drawn from the world around us. The student will see surprises in election-day counting of ballots, a historical wager the sun will rise tomorrow, the folly of gambling, the sad news about lethal genes, the curiously persistent illusion of the hot hand in sports, the unreasonable efficacy of polls and its implications to medical testing, and a host of other beguiling settings.
- Math or Natural Science Electivesci
Science Courses
- Principles of Physics I: Mechanics and Wave MotionorPHYS 0150 (1.5)sciPHYS 0150: Principles of Physics I: Mechanics and Wave Motion
This calculus-based course is recommended for science majors and engineering students. Classical laws of motion; interactions between particles; conservation laws and symmetry principles; particle and rigid body motion; gravitation, harmonic motion, and applications of mechanics to real-world problems. Credit is awarded for only one of the following courses: PHYS 0008, PHYS 0101, 0150, 0170. Students with AP or Transfer Credit for PHYS 0101, or PHYS 0150 who complete PHYS 0150 will thereby surrender the AP or Transfer Credit.
Honors Physics I: Mechanics and Wave MotionorPHYS 0170 (1.5)sciPHYS 0170: Honors Physics I: Mechanics and Wave MotionThis course parallels and extends the content of PHYS 0150, at a significantly higher mathematical level. Recommended for well-prepared students in engineering and the physical sciences, and particularly for those planning to major in physics. Classical laws of motion: interaction between particles; conservation laws and symmetry principles; rigid body motion; non-inertial reference frames; oscillations. Credit is awarded for only one of the following courses: PHYS 0008, PHYS 0101, PHYS 0150, PHYS 0170. Students with AP or Transfer Credit for PHYS 0101 or PHYS 0150 who complete PHYS 0170 will thereby surrender the AP or Transfer Credit.
- Principles of Physics II: Electromagnetism and RadiationorPHYS 0151 (1.5)sciPHYS 0151: Principles of Physics II: Electromagnetism and Radiation
The topics of this calculus-based course are electric and magnetic fields; Coulomb's, Gauss's, Ampere's, and Faraday's laws; DC and AC circuits; Maxwell's equations and electromagnetic radiation. Credit is awarded for only one of the following courses. PHYS 0009, PHYS 0102, PHYS 0151, PHYS 0171. Students with AP or Transfer Credit for PHYS 0102 or PHYS 0151 who complete PHYS 0151 will thereby surrender the AP or Transfer Credit.
Honors Physics II: Electromagnetism and RadiationorPHYS 0171 (1.5)sciPHYS 0171: Honors Physics II: Electromagnetism and RadiationThis course parallels and extends the content of PHYS 0151, at a somewhat higher mathematical level. Recommended for well-prepared students in engineering and the physical sciences, and particularly for those planning to major in physics. Electric and magnetic fields; Coulomb's, Ampere's, and Faraday's laws; special relativity; Maxwell's equations, electromagnetic radiation. Credit is awarded for only one of the following courses: PHYS 0009, PHYS 0102, PHYS 0151, or PHYS 0171. Students with AP or Transfer Credit for PHYS 0102 or PHYS 0151 who complete PHYS 0171 will thereby surrender the AP or Transfer Credit.
Other Courses
- 1 × Free Elective
Program Educational Outcomes
Within a few years after graduation, students from the program will:
- Have demonstrated the ability to successfully apply the analytical, problem solving, design and technical skills developed during the course of their education to various tasks and challenges that arise in the course of their careers or further studies.
- Perform successfully as members and leaders of multi-disciplinary and multi-cultural teams.
- Demonstrate effective communication skills, and have an appreciation for non-technical disciplines.
- Have developed the ethical sensibilities and global perspective that allow them to appreciate how the decisions they make impact their community and society at large.
Student Outcomes
Graduates of the Computer Science (BSE) program will:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.
History of the Major
2024 | Replace CIS 3800 (Computer Operating Systems) → CS 4480 (Operating Systems Design and Implementation). |
2023 | |
2022 | All courses renumbered (mostly by adding a final 0). Add alternatives to EAS 2030 (Engineering Ethics). |
2021 | |
2020 | Replace CIS 371 (Computer Organization and Design) → CIS 471 (Computer Organization and Design). Revise constraints on CS and Technical electives (from depth to breadth). Replace 1 math elective with "Calc III or Linear Algebra". New classes in physics sequence. Drop Science/Lab requirement. Drop 2 Free Electives. Require 37 units instead of 40 to graduate. |
2019 | |
2018 | Minor tweak to a constrained CS elective. |
2017 |