CMU CS classes are among the most difficult in the world.

General advice:

  • Take fewer classes
    • Spending more time on a class helps you gain a deeper understanding
    • Allows you to do other, more interesting, things
  • Lectures aren’t very useful, on average
    • Most CS classes have slides/videos
  • Pick a minor that’s not related to CS (cough cough math)
    • History
    • Architecture
    • Chemistry
    • If you want an SCS minor, I recommend Software Engineering

Specific classes:

  • 15-151
    • Quite hard if you don’t have proof/competition math experience
    • Easy otherwise
  • 15-122
    • Contracts/assertions will be a life saver in later classes
    • However, it teaches certain programming idioms that may be detrimental later (such as typedef’ing C structs)
    • Algorithms and data structures taught in the class are useful for coding interviews
  • 15-150
    • A different way of thinking about how to code
  • 15-251
    • Go to office hours to get answers
    • Have a good group
  • 15-213
    • Learn software engineering/design


  • Generally hard to find internships as freshman
    • Going to need something like:
      • Parents’ nepotism
      • Friends’ referral
      • Industry experience before college
      • Competitive programming experience
  • Most companies want sophomores or juniors so they can give return offer for full-time
  • Probably want to spend at least one summer in the Bay Area if you want to go into tech

Positive factors

  • Previous internship at reputable company (Microsoft, MongoDB, etc.)
  • Experience in open source projects (Linux kernel, Chromium, etc.)
  • Referral
  • Competitive programming experience
  • Minority in tech: female, Hispanic, black, etc.
    • Microsoft Explore, Google EP, FB University
    • One possible career path is (replace FB with any other big company): FBU -> FB SWE internship -> FB SWE internship -> FB full-time. It is cushy, though you might want to explore a larger variety of companies.


  • Get referrals from upperclassmen friends, faculty, family friends, etc.
  • Companies like Jane Street give interviews liberally, apply to them
  • Go to Spark, the startup career fair
  • If you plan to graduate in 3 years, indicate that on your resume
  • Do research/take a summer off instead

Commentary on companies

  • Bigger companies like Facebook and Google tend to give less impactful projects to interns, or there is more variability
  • Medium-sized companies (Quora, MemSQL, etc.) tend to have decently mature internship programs but also be small enough to have interns work on nontrivial projects
  • Smaller-sized companies are more varied and are mostly webdev or AI/ML


  • For freshmen in the fall semester: it is very likely that you will be overwhelmed by coursework and have no time to devote to research. As such, I strongly advise against looking for research in your freshman fall.
  • Want to avoid doing busywork the entire time
    • Usually you will start off with some busywork and transition into actual research
  • Hard to find actual research without having taken 200-level (and sometimes 400-level) classes
  • Essential if you are interested in grad school


  • I don’t know what I want to do/what each area is like
    • Talk to your academic advisor
    • Just do something and find what you (don’t) like
  • I know which area I want to do
    • Go to talks (e.g. Theory Lunch)
    • Browse professors and PhD students’ websites
    • Go to professors’ office hours
  • I know exactly what I want to do
    • PhD students are usually much more responsive than professors

Broad areas of research:

  • Theory
    • Faculty are generally responsive to emails
    • Research Areas:
      • Algorithms: doing things fast
      • Complexity Theory: inherent limits of computation
  • Systems
    • Faculty are less, but still somewhat resposive to emails
    • Research Areas:
      • Computer systems: computer architecture, runtime instrumentation, caching policy, etc.
      • Software systems: processing and storing big data, orchestrating many computers
    • Special mention: The CMU Database Lab provides valuable engineering experience on a complex large-scale database management system.
  • Logic
    • About formally proving things correct
    • Most of the time, you either like it or you don’t
  • AI (CSD) /ML (MLD)
    • Professors are generally not responsive due to AI/ML being the hot thing right now
    • Better luck contacting PhD students
    • Generally more focused on theory
    • Research Areas:
      • Combinatorial Optimization: fair division, mechanism design, etc.
      • Theory of Learning
  • LTI/RI
    • Professors are generally not responsive, see above
    • More focused on applications/alchemy of AI/ML
  • Graphics
    • Fairly niche, has nice faculty like Keenan Crane
  • Security
    • CyLab
    • Research areas are diverse, some examples:
      • Breaking security mechanisms through clever signal sniffing
      • Formally prove information flow security in software
      • Iris recognition system