CERTIFICATE IN PROGRAMMING
The Certificate in Programming prepares current Yale undergraduates to program computers in
support of work in any area of study. While the Certificate does not provide
the same grounding in theory and systems that the computer science majors do,
it does provide a short path to programming literacy that can be completed in a
span of four terms.
To register for the Certificate, register via Yale Hub by the end of the fourth week of your last semester at Yale.
If you have questions about the Certificate, please check the
FAQ below. If you do not find the answer there, consult the
Certificate coordinator, Dr. Stephen Slade.
For the description of the Certificate in the Yale College Programs of
Study, click
here.
Requirements
The prerequisite for the Certificate is an introductory programming course
(CPSC 1001, CPSC 1100, CPSC 1120 or CPSC S1150), successful completion of the AP Computer Science course, or
equivalent programming experience.
The Certificate requires 5 course credits, not including the prerequisite:
- Programming: One from CPSC 2010 or 2000.
- Data Structures: CPSC 2230.
- Advanced Programming: One from CPSC 3270 or 3230.
- Programming Elective: Either a CPSC course with CPSC 2230 as a
listed or implied prerequisite and a primary focus on programming (such as CPSC
4240, 4370, 4390, 4460, or 4780; see below for the
complete list); or a second course that satisfies the Advanced Programming
requirement.
- Applications/Algorithms Elective: Either a programming in context
course that requires significant programming (such as CPSC 3340, 3350, 3760, 4310,
4320, 4740, 4770, or LING 3800); or a course in algorithms (such as CPSC 3650,
3660 or 3680). See below for the complete lists.
Restrictions and Caveats
Students may not count any of the five required courses towards the
requirements of any major, multidisciplinary academic program (MAP), or other
certificate. If such a course is required for another program, the student
must substitute another course from the same category or a more advanced one
for the Certificate.
No course taken Credit/D/Fail may count toward any of the requirements;
no course may be used to satisfy more than one of them.
If you take a course and its listed prerequisite at the same time, only the
higher-level course may be used to satisfy a requirement.
Majors in Computer Science, in our joint programs with Economics, Electrical
Engineering, Mathematics, and Psychology, or in Computing and the Arts may not
pursue the Certificate.
Exceptions to the requirements, other than the substitution of a more advanced
course from the same category for a required one, are limited. See
below for a complete list.
Frequently Asked Questions
Q: May I count towards the Certificate a course that was taken
Credit/D/Fail?
A: No.
Q: May I count a course toward both the Certificate and my major as
I may with a double major?
A: No. There can be no overlap between courses used to complete the
Certificate and the requirements of any major, multidisciplinary academic
program (MAP), or other certificate. If a course required for the Certificate
is also required for another major/MAP/certificate, you must either take a
different course for the Certificate or take a different course for the other
program.
Q: May I complete both the Certificate in Programming and a major in
Computer Science, or in the joint programs with Economics, Electrical
Engineering, Mathematics, and Psychology, or in Computing and the Arts?
A: No.
Q: May I count the same course toward more than one of the five
requirements?
A: No.
Q: May a graduate or professional school student receive the
Certificate in Programming?
A: No, the Certificate is only for undergraduates.
Q: Which courses satisfy the Programming Elective?
A: Either a CPSC course which has CPSC 2230 as a listed or implied
prerequisite and a primary focus on programming, one of:
- CPSC 3230 Introduction to Systems Programming and Computer Organization (only if CPSC 3270 is taken for Advanced Programming)
- CPSC 3270 Object-Oriented Programming (only if CPSC 3230 is taken for Advanced Programming)
- CPSC 4210 Compilers and Interpreters
- CPSC 4220 Design and Implementation of Operating Systems
- CPSC 4240 Parallel Programming Techniques
- CPSC 4260 Building Distributed Systems
- CPSC 4270 C++ Programming for Stability, Security, and Speed
- CPSC 4290 Principles of Computer System Design
- CPSC 4370 Introduction to Database Systems
- CPSC 4390 Software Engineering
- CPSC 4450 Advanced Software Engineering
- CPSC 4460 Data and Information Visualization
- CPSC 4780 Computer Graphics
or a second course that satisfies the Advanced Programming requirement.
Warning: Some of these courses have prerequisites that do not count
toward the Certificate.
Q: Which courses satisfy the Applications/Algorithms Elective?
A: Either a programming in context course that requires significant
programming, one of:
- CPSC 3340 Creative Embedded Systems
- CPSC 3350 Theory and Implementation Of Self-Driving Cars
- CPSC 3700 Artificial Intelligence
- CPSC 3760 Advanced Computer and Data Science Applications for the Digital Humanities
- CPSC 3810 Introduction to Machine Learning
- CPSC 4090 Real-Time 3D Computer Graphics Programming
- CPSC 4100 Physics Simulation for Movies
- CPSC 4110 Building Game Engines
- CPSC 4190 Full Stack Programming
- CPSC 4310 Computer Music: Algorithmic & Heuristic Composition
- CPSC 4320 Computer Music: Sound Representation and Synthesis
- CPSC 4470 Introduction to Quantum Computing
- CPSC 4520 Deep learning Theory and Applications
- CPSC 4660 Blockchain and Cyrptocurrency
- CPSC 4670 Introduction to Cryptography
- CPSC 4740 Computational Intelligence for Games
- CPSC 4770 Natural Language Processing
- CPSC 4790 Advanced Topics in Computer Graphics
- CPSC 4830 Deep Learning on Graph-Structured Data
- LING 3800 Neural Networks and Language
or a course in algorithms, one of:
- CPSC 3650 Algorithms
- CPSC 3660 Intensive Algorithms
- CPSC 3680 Algorithms via Convex Optimization
or a second course that satisfies the Advanced Programming requirement.
Warning: Some of these courses have prerequisites that do not count
toward the Certificate.
Q: Do any other courses, aside from the ones listed above, count towards the Certificate?
A: No.
Q: Can I substitute courses that are not listed above into any of the requirements?
A: No.
Q: When must I register for the Certificate?
A: By the end of the fourth week of your last semester at Yale.
Q: How do I register for the Certificate?
A: Students may register for the Certificate using the Declare Major, Concentration within the Major, Certificate page on
Yale Hub.
Q: How will the Certificate appear on my transcript?
A: Upon graduation the notation "Events: Certificate: Programming"
will appear under your major(s).
Q: May I skip CPSC 1001 or 1120?
A: Yes, provided that you have taken the AP Computer Science course or
have equivalent programming experience.
Q: May I skip CPSC 2010 or 2000?
A: In the past, you could. You would then need to take an additional
Advanced Programming course or Programming Elective instead. Please note that there will
be no waiver test for CPSC 2230 in Fall 2025 semester. CPSC 2000 or CPSC 2010 prerequisite
will be enforced.
Q: Which substitutions of a more advanced course for a required one
are permitted?
A: Current substitutions are:
- An extra Advanced Programming Course or Programming Elective for CPSC 2010
or 2000
- An extra Advanced Programming Course for CPSC 2230.
Additional substitutions will be added as needed.