Let's look at the core CS classes required for the major. It might look intimadating at first, but it just shows the requirements of classes. For example, to take CS 1501, you must take CS 441 and CS 445.
The dashed lines mean those classes are "coreqs". For example, you can take CS 449 if you are taking CS 447 in the semester. But, you cannot take CS 449 before CS 447.
Click a course on the graph to see details
The diagram above shows the relationships between the core classes!
Overview
The core courses can be broken up into different tracks.
Core Programming Intensive
These classes teach the most fundamental CS concepts. Bolded classes are considered very demanding.
- CMP 401
- CS 445
- CS 1501
Mathy
These are more theory based classes that involve proofs and math.
- CS 441
- CS 1502
Systems
Do you actually know how a computer works? These classes will teach you!
- CS 447
- CS 449
- CS 1550
Related Links
The full requirements: https://www.sci.pitt.edu/academics/undergraduate-majors/computer-science
More information here: http://sci.pitt.edu/academics/ugrad/cs/
CS Capstone Guide: https://pittcs.wiki/academics/registration/capstone/
Potential Schedules
We recommend taking CS445 and CS1501 as soon as possible. These courses form the foundation of your CS education and will unlock a lot of upper electives. They also are an absolute necessity for technical interviews.
Making a Good CS Plan
- Take 401, 445, and 1501 early on
- Decide which semester you will take 1501.
- Throw away the plan (in college, things change!)
Below are some potential schedules. Your schedule will look different depending on your other classes!
Whenever you schedule a class make sure to play close attention to the professor. It's better to optimize your schedule to have better professors good. Check the respective pages for each course on the wiki and use Rate My Professor.
Note: These are just example schedules. Everyone's situation is different and yours will likely look different.
A - Common
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
401 | 447 | 1501 | 449 | 1550 |
441 | 445 | 1502 | CS Elective | CS Elective |
B - Common
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
401 | 441 | 447 | 449 | 1550 |
445 | 1501 | 1502 |
C - Common
Semester 1 | Semester 2 | Semester 3 | Semester 4 |
---|---|---|---|
401 | 447 | 449 | 1502 |
441 | 445 | 1501 | 1550 |
D - Common
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
007/ 010 | 401 | 445 | 1501 | 449 |
441 | 447 | 1502 | CS Elective |
E - Common
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
401 | 441 | 447 | 1501 | 1550 |
445 | 449 | 1502 | CS Elective |
F - Slowish Start
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
007/ 010 | 401 | 445 | 1501 | 449 |
441 | 447 | 1502 |
G - Slowish Start (Faster)
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
007/ 010 | 401 | 445 | 1501 | 449 |
441 | 1502 | CS Elective | ||
447 |
H - Slowish Start (Fastest)
Semester 1 | Semester 2 | Semester 3 | Semester 4 | Semester 5 |
---|---|---|---|---|
007/ 010 | 401 | 445 | 1501 | 1550 |
441 | 1502 | CS Elective | ||
447 | 449 |
I - AP Credit required
Semester 1 | Semester 2 | Semester 3 | Semester 4 |
---|---|---|---|
445 | 447 | 1501 | 1550 |
441 | 449 | 1502 | CS Elective |
J - Tryhard
Semester 1 | Semester 2 | Semester 3 | Semester 4 |
---|---|---|---|
401 | 447 | 1501 | 1550 |
441 | 445 | 449 | CS Elective(s) |
1502 |
What should I take with these CS classes?
It depends on the rigor of the CS course, and the professor. Notably, if we are talking about CS 1501, we would not want a heavy course load. We recommend not taking Calculus II with CS1501/CS1550 as they are very demanding. Instead, take Calc with a lower level required course like 401 or 449 or take it with your upper electives!
We would likely take some light gen-eds with CS 1501 or CS 1550. As noted, they are demanding and you wouldn't want other tough classes from interfering with them.
CS Electives
You discover your interests in CS as you take some electives. You’re not limited to take classes in a certain domain, but try to take classes that you'll enjoy. Electives are meant to cover topics you want to explore, not classes you suffer in. For example, if you didn’t enjoy CS 447, 449, or 1550 you probably don’t want to take Computer Architecture or other low level courses. On the other hand, if you enjoy certain parts of CS 1501, such as the introduction to cryptography section, CS 1653 would probably be a good elective to take.
Check out the course explorer to look at the different electives that are offered. Pick the ones that pique your interest.
CSC's highly subjective CS Electives Difficulty Ranking
These rankings are incredibly subjective and difficulty varies more by professor rather than course. Note that courses in the unknown tier have not been offered since at least Fall 2022. The professors listed are from Spring, Summer and Fall 2023 and are subject to change.
S Tier: Rough | Professors | Offered |
---|---|---|
CS 1510 - Algorithm Design | Kirk Pruhs | Fall |
CS 1511 - Theory of Computation | Kirk Pruhs | Spring |
A Tier: A Tough Challenge | Professors | Offered |
---|---|---|
CS 1541 - Intro to Computer Architecture | Xulong Tang, Wonsun Ahn | Fall, Spring |
CS 1622 - Intro to Compiler Design | Jonathan Misurda | Summer |
CS 1652 - Data Communication and Computer Networks | Longfei Shangguan | Spring |
CS 1675 - Intro to Machine Learning | Joseph Yurko | Fall, Spring |
B Tier: Quite a Challenge | Professors | Offered |
---|---|---|
CS 1566 - Intro to Computer Graphics | Dr. Tan (Thumrongsak Kosiyatrakul) | Fall |
CS 1571 - Intro to Artificial Intelligence | Diane Litman | Spring |
CS 1653 - Applied Crypto and Network Security | William Garrison, Shreif Khattab | Summer, Fall |
CS 1657 - Privacy in Electronic Society | William Garrison | Spring |
C Tier: A Challenge | Professors | Offered |
---|---|---|
CS 1555 - Database Management Systems | Panos Chrysanthis | Fall, Spring |
CS 1567 - Programming System Design On A Mobile Robot Platform | Dr. Tan (Thumrongsak Kosiyatrakul) | Summer |
CS 1637 - Intro to Human Computer Interaction | Erin Walker | Spring |
CS 1666 - Principles of Computer Game Design and Implementation | Nick Farnan | Fall |
CS 1671 - Human Language Technologies | TBA | Fall |
CS 1699 - Special Topics (these vary in difficulty, but because they're experiemental they're graded leniently) |
D Tier: Not Bad | Professors | Offered |
---|---|---|
CS 1520 - Programming Language for Web Applications | Nick Farnan, Paulo Ferreira | Fall, Spring, Summer |
CS 1530 - Software Engineering | Sohel Sarwar | Fall, Spring |
CS 1621 - Structure Programming Languages | Youtao Zhang | Spring |
CS 1632 - Software Quality Assurance | Wonsun Ahn | Fall, Spring, Summer |
CS 1656 - Intro to Data Science | Alexandros Labrinidis, Xiaowei Jia | Fall, Spring |
CS 1660 - Intro to Cloud Computing | Daniel Mahoney | Fall |
Unknown Tier: Haven't Been Offered In A While | Previously |
---|---|
CS 1651 - Advanced Systems Software | A Tier |
CS 1645 - Intro to High Performance Computing Systems | B Tier |
CS 1674 - Intro to Computer Vision | C Tier |
CS 1678 - Intro to Deep Learning | C Tier |
FAQ
CS 0007 or CS 401?
Should you start with Intro to Programming or Intermediate Programming? Cases by expereince levels:
- You have never written a single line of code (like me as a freshman): Take 0007.
- Caveat: If you have enough time before the semester starts, watch online tutorials to learn Java and start with 401! If you can learn -- variables, assignments, if-statements, logical operators, functions, Strings, lists, input/output, and loops -- before the semester, you can probably take 401.
- You took a high school-level programming course: Take 401, unless the programming course was in a language like HTML/CSS.
- Caveat: If the course wasn't in Java, you'll have to learn the syntax. Learning syntax doesn't take long, just look at code examples from the textbook.
- You took a college-level for-credit programming course: Take 445.
- Caveat: You'll definitely want to review OOP and algorithm analysis, which are the core concepts of DS&A 1. If the course wasn't in Java, 445 will be a little more difficult. Get up to speed by learning Java syntax before the semester via textbooks/video tutorials and... write a lot of code.
Note: Don't be fooled/intimidated by the sudden jump in the course number CS0007 to CS0401. They are sequential courses, and depending on your professors, they may even cover a lot of the same material. Use the pre-reqs to gauge course difficulty, not the course number.
Should I Graduate Early?
If you have enough credits, you can graduate early! It is a great way to save some tuition money. But, there are also some more classes that can help you as a CS major.
It really depends on what your interests are. For example, if you are interested in Data Science, we would recommend taking some Statistics classes. In particular, STAT 1261, and STAT 1201 would be excellent options.
If you are interested in Cryptography, we would recommend taking some Math classes. In particular, Introduction to Mathematical Cryptography, Elementary Number Theory, Combinatorial Mathematics, would be great options. Note that all these classes require MATH 413.
If you're interested in writing/improving your communication and expression skills, the Creative Writing minor is a great choice!