Scheduling 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
  • CS 1503

Systems

Do you actually know how a computer works? These classes will teach you!

  • CS 447
  • CS 449

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, CS441, and CS1501 as soon as possible. These courses form the foundation of your CS education and will unlock a lot of upper electives. CS445 and CS1501 are also an absolute necessity for technical interviews.

Making a Good CS Plan

  1. Take 401, 441, 445, and 1501 early on
  2. Decide which semester you will take 1501.
  3. 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 1Semester 2Semester 3Semester 4Semester 5
4014471501449CS Elective
44144515021503CS Elective

B - Common

Semester 1Semester 2Semester 3Semester 4Semester 5
401441447449CS Elective
445150115021503

C - Common

Semester 1Semester 2Semester 3Semester 4
4014474491502
44144515011503

D - Common

Semester 1Semester 2Semester 3Semester 4Semester 5
007/ 0104014451501449
4414471502CS Elective

E - Common

Semester 1Semester 2Semester 3Semester 4Semester 5
4014414471501CS Elective
44544915021503

F - Slowish Start

Semester 1Semester 2Semester 3Semester 4Semester 5
007/ 0104014451501449
4414471502

G - Slowish Start (Faster)

Semester 1Semester 2Semester 3Semester 4Semester 5
007/ 0104014451501449
4411502CS Elective
447

H - Slowish Start (Fastest)

Semester 1Semester 2Semester 3Semester 4Semester 5
007/ 01040144515011503
4411502CS Elective
447449

I - AP Credit required

Semester 1Semester 2Semester 3Semester 4
44544715011503
4414491502CS Elective

J - Tryhard

Semester 1Semester 2Semester 3Semester 4
40144715011503
441445449CS 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 as it is 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. As noted, it is demanding and you wouldn't want other tough classes from interfering with it.

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 or 449, you probably don't want to take Computer Architecture (CS 1541) or Operating Systems (CS 1550). 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.

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!

Share this guide

Help others discover this resource

CSC's highly subjective CS Electives Difficulty Ranking

These rankings are incredibly subjective and difficulty varies more by professor rather than course.

Course
Recent Professors
S Tier: Rough
CS 1510Algorithm Design
Check Course Explorer
CS 1511Theory of Computation
Check Course Explorer
A Tier: A Tough Challenge
CS 1541Intro to Computer Architecture
Check Course Explorer
CS 1622Intro to Compiler Design
Wonsun Ahn
CS 1651Advanced Systems Software
Luis F. N. Q. d. Oliveira
CS 1652Data Communication and Computer Networks
Longfei Shangguan
CS 1675Intro to Machine Learning
Patrick Skeba
B Tier: Quite a Challenge
CS 1566Intro to Computer Graphics
Thumrongsak Kosiyatrakul
CS 1571Intro to Artificial Intelligence
Check Course Explorer
CS 1645Intro to High Performance Computing Systems
Check Course Explorer
CS 1653Applied Crypto and Network Security
Check Course Explorer
CS 1657Privacy in Electronic Society
William Garrison
C Tier: A Challenge
CS 1555Database Management Systems
Nicholas Farnan
CS 1567Robotic System Design
Check Course Explorer
CS 1637Intro to Human Computer Interaction
Check Course Explorer
CS 1666Principles of Computer Game Design and Implementation
Nicholas Farnan
CS 1671Human Language Technologies
Check Course Explorer
CS 1674Intro to Computer Vision
Nils Murrugarra LLerena
CS 1678Intro to Deep Learning
Scott Jordan
CS 1699Special Topics
Check Course Explorer
D Tier: Not Bad
CS 1520Programming Language for Web Applications
Paulo Ferreira
CS 1530Software Engineering
Nadine v. F. u. Ludwigsdorff
CS 1621Structure Programming Languages
Check Course Explorer
CS 1632Software Quality Assurance
Wonsun Ahn
CS 1656Intro to Data Science
Alexandros Labrinidis,Xiaowei Jia
CS 1660Intro to Cloud Computing
Dan Mahoney

Course Prerequisite Graph

Visualize the relationships between courses. Solid lines represent prerequisites (must take before), and dashed yellow lines represent corequisites (must take together or before).

MATH 0220
MATH 0230
MATH 0280
CMPINF 0401
CS 0441
CS 0445
CS 0447
CS 0449
CS 1501
CS 1502
CS 1503
Prereq
Coreq