Some Thoughts about CMU SCS
Classes
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
Internships
- Generally hard to find internships as freshman
- Going to need something like:
- Parents’ nepotism
- Friends’ referral
- Industry experience before college
- Competitive programming experience
- Going to need something like:
- 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.
Strategies
- 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
Research
- 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
Scenarios:
- 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