CMU Resources
CMU Resources
During my time at Carnegie Mellon, I was fairly involved in the CMU Class of 2025+ Discord server. There, we had a tradition of providing course reviews for each of our courses. In the interest of transparency – and ease of access, since I find that it's not always easy to find someone who's taken the exact courses you're interested in – I've collected those reviews here, along with a bit more detail on my experiences at CMU.
In the interest of transparency, I'm compelled to point out that this isn't an original idea – see my friend Kevin's page as well, from which I took heavy inspiration (especially for the formatting and disclaimer.)
Some info on me: I took a nontraditional journey into mathematics; I came to CMU to study fluid mechanics in all its facets, and this took me on a winding path through the chemical engineering department into the math department. For a brief period of time I was pursuing both areas! As a result, I am by no means saying that my experiences at CMU are remotely representative; I'm simply recording my experiences here.
I can't stress this enough:
Do not take anything here as gospel.
These opinions are purely my own.
Your mileage may vary.
Standard Disclaimer
Original source unknown; this version shamelessly lifted from Kevin's page, which was probably lifted from somewhere else.
This product is meant for educational purposes only. Any resemblance to real persons, living or dead, is purely coincidental. Void where prohibited. Some assembly required. List each check separately by bank number. Batteries not included. Contents may settle during shipment. Use only as directed. No other warranty expressed or implied. Do not use while operating a motor vehicle or heavy equipment. Postage will be paid by addressee. Subject to CAB approval. This is not an offer to sell securities. Apply only to affected area. May be too intense for some viewers. Do not stamp. Use other side for additional listings. For recreational use only. Do not disturb. All models over 18 years of age. If condition persists, consult your physician. No user-serviceable parts inside. Freshest if eaten before date on carton. Subject to change without notice. Times approximate. Simulated picture. No postage necessary if mailed in the United States. Please remain seated until the ride has come to a complete stop. Breaking seal constitutes acceptance of agreement. For off-road use only. As seen on TV. One size fits all. Many suitcases look alike. Contains a substantial amount of non-tobacco ingredients. Colors may, in time, fade. We have sent the forms which seem right for you. Slippery when wet. For office use only. Not affiliated with the American Red Cross. Drop in any mailbox. Edited for television. Keep cool; process promptly. Post office will not deliver without postage. List was current at time of printing. Return to sender, no forwarding order on file, unable to forward. Not responsible for direct, indirect, incidental or consequential damages resulting from any defect, error or failure to perform. At participating locations only. Not the Beatles. Penalty for private use. See label for sequence. Substantial penalty for early withdrawal. Do not write below this line. Falling rock. Lost ticket pays maximum rate. Your cancelled check is your receipt. Add toner. Place stamp here. Avoid contact with skin. Sanitized for your protection. Be sure each item is properly endorsed. Sign here without admitting guilt. Out to lunch. Slightly higher west of the Mississippi. Employees and their families are not eligible. Beware of dog. Contestants have been briefed on some questions before the show. Limited time offer, call now to ensure prompt delivery. You must be present to win. No passes accepted for this engagement. No purchase necessary. May be hazardous to health if consumed in excessive quantities. Not responsible for typographical errors. No returns unless defective. Processed at location stamped in code at top of carton. Shading within a garment may occur. Use only in a well-ventilated area. Keep away from fire or flames. Replace with same type. Approved for veterans. Booths for two or more. Check here if tax deductible. Some equipment shown is optional. Price does not include taxes. No Canadian coins. Not recommended for children. Under penalty of law, this tag not to be removed except by consumer. Prerecorded for this time zone. Reproduction strictly prohibited. No solicitors. No alcohol, dogs or horses. No anchovies unless otherwise specified. Restaurant package, not for resale. List at least two alternate dates. First pull up, then pull down. Call toll free number before digging. Driver does not carry cash. Some of the trademarks mentioned in this product appear for identification purposes only. Objects in mirror may be closer than they appear. Record additional transactions on back of previous stub. Unix is a registered trademark of AT&T. Do not fold, spindle or mutilate. No transfers issued until the bus comes to a complete stop. Package sold by weight, not volume. Your mileage may vary.
This supersedes all previous notices.
Department codes: 06 is chemE, 21 is math, 80 is philosophy. Other codes arise sporadically enough for them to be clear from context. I will also mention the semester in which these courses occurred; often my enjoyment of a course is relative to how much other stuff I was doing at the same time, and should be taken with the requisite grains of salt accordingly. F = Fall, S = Spring, M = Summer 1. Fall and Spring semesters are 14 weeks; summer semesters are 6 weeks.
Courses marked with a star (*) are affiliated with the Math Studies track. Courses marked with two stars (**) are graduate courses.
Courses marked with a lozenge (◊) are ones which I audited or otherwise did not take in full.
It would probably be good to explain a bit of my background. I entered CMU in Fall 2021 with the purpose of studying fluid mechanics from all possible angles, deciding which I liked best and continuing on in that direction. This is why I initially entered CMU as a chemical engineer; I assumed this is where all the fluid work was done. I was proven wrong – fluid mechanics is one corner of ChemE, but the actual degree is so much more (and, crucially, so much more that I learned I did not enjoy); in contrast fluid mechanics is also one corner of pure and applied mathematics, but as a field I enjoyed mathematics much more than engineering.
While I was in the engineering department, I was taking courses similar to that of a first-year math major: Concepts, linear algebra, all that. I took the math maturity survey (MMS) which was not marketed at all to CIT students – I learned about it from a friend and emailed the person in charge (formerly Jason Howell; at the time of writing I think it's David Offner now). I think they're marketing it more widely now, which I partially take credit for. The MMS is not something to study for. When I took it, it was something like 20 AMC-style questions and 5 proofs; I do not claim to have any knowledge of what it's like now. Last I checked, 242 admits something like 60 students, and about 100 take the MMS.
Don't you have to take a discrete course as a math major? The presence of Formal Logic in this "core" is atypical – by the time I formally transferred from ChemE to mathematics between F22-S23, I had not taken a discrete mathematics course and there wasn't a great place to fit one into my schedule. (Plus, to be entirely honest, I had no interest in taking a combinatorics course.) Without me even asking, my academic advisor counted Formal Logic for the discrete requirement; I had previously taken it to fulfill a CIT gened.
The elephant in the room – Math Studies: At the time of writing, entry to 242 is invite-only by exam and entry to 269 is invite-only by Google form: you fill it out, and the appropriate professors/advisors look at your performance in your first semester classes, with special attention to Concepts and your linear algebra course. I believe you need at least a B in 242 or an A in Concepts and 241 at minimum to be allowed to take 269. As for entry to Math Studies, it's a similar process. While I'd say you don't need to take 242 to take MS Algebra, I would strongly recommend taking 269 if you intend to do MS Analysis, since (especially with Leoni, with whom I took it) it picks up right where 269 leaves off. There's also a little bit of awkwardness if you take, say, MS I and then don't take MS II, as depending on the topic order you might find a substantial amount of duplicate content in Real II. Generally the MS courses are very challenging, we're talking 15-20 hours of work per week. I'd say they're worth your time if and only if you're intending to do graduate work in math, and even then in an analysis-adjacent field. Otherwise, there are probably more useful and fun ways to not burn yourself out on a Tuesday night.
For the student reading this as a way to help plan schedules: I would strongly discourage replicating my F22 or S23 schedules. They worked for me at the time (though note the number of ◊-tagged courses in S23) but my mental and physical health took a hit in S23. Work-life balance was much better during F23-S25.
This isn't to say you shouldn't replicate the classes; maybe just don't do them all at once.
With that out of the way, let's review some courses.
Take this course with Clive Newstead if possible. Not only did he write the book on it, Clive's an amazing professor and an amazing guy; I say this as someone who's worked with him either directly as a TA, or more generally as a TA in the department for three years, and as a friend. He runs a very well-structured course and cares greatly about the students' learning, which is critical in an introductory course such as this one. As I had already taught myself how to write proofs on a whim the year before I entered CMU, I found about 75% of the class to be a little boring – I mostly needed to unlearn bad style habits – but the homework sets were well-designed and it was clear that he put a lot of thought into the course. I strongly encourage the reader to take Concepts with Clive if possible; it's an excellent time.
Assessment: Weekly HW (≤6 problems per set), post-lecture quizzes, 3 exams and a final.
This was a great class, though it was exhausting and chaotic as hell. I don't think it's wrong to say that James Cummings fits the stereotype of the absentminded math professor quite well. He's very British and has a very dry wit; if you like that humor you'll like his teaching – I know I did. The actual content was good too but nothing to write home about. From others, I gather that it would help to watch e.g. 3b1b's Essence of linear algebra series before entering the class, as this class is much more theoretical than computational – to the point where I needed to fill in some computational gaps in my knowledge when studying for the GRE and the NYU linalg qualifying exam.
Assessment: Weekly HW (usually 4-6 problems per set), midterm and final. Exams had both an in-class and 24-hour scheduled take-home component (4 problems). The take-home exams were pretty reasonable; I think I spent at most 5 hours on the midterm and 8 on the final.
Giovanni Leoni generally presents very well-structured, challenging courses; this is no exception. His lectures are very clear if a bit dry, and he has a similar dry sense of humor that does come through with the right audience. He's a very kind, accommodating man. This course was sort of a wake-up call to me that CMU courses don't screw around; I think I spent an honest 11-13h/wk on the homework for this course. It was here where I started to form study groups which became instrumental to having a great time in further honors courses – it's always more fun to struggle together. As far as content goes, it was an introductory real analysis course with multivariable calculus characteristics – for example, we covered the theory of the reals in detail, metric space theory, continuity and convergence for maps between metric spaces, pointwise v. uniform convergence (stuff which isn't really multivariable calc) and then differential calculus in normed spaces, higher derivatives and Taylor's formula in Euclidean spaces, Lagrange multipliers; "calc 3 stuff." If I hadn't taken a calc 3 course in high school before taking this, I would have been rather lost near the end of the course.
Assessment: Mandatory attendance. Weekly HW (≤4 problems per set), 3 exams. When I took this course, exams were 5 hours long on a weekend with the first problem being a "theorem roulette," i.e. it was always a theorem from class. The actual exams were 4 problems and were always fair, if challenging – it always felt like you ought to know how to do the problems. Theorems which showed up on exams included Bolzano-Weierstrass and symmetry of partials. Sometimes these exams were curved with some kind of power law; in previous years it was a square root, but our year it was a 2/3 power law.
NB: Sometime within the past year (2024-25 as of writing), I think Leoni got in trouble for this 5h exam policy. From what I understand, he now gives his exams over 2 hours (i.e. 2 lecture periods), and the exams have generally gotten easier. Standard disclaimer applies.
Although this isn't a math department course (the math department has 21-300 Basic Logic), the level of rigor of this course was on par with any other math course I've taken at CMU. (Generally, CMU's philosophy department tends to be rather "mathematical" – this is where linguistics, formalization, category theory takes place.) Adam Bjorndahl is an excellent professor; he knew how to keep a class in formal logic fun without dumbing things down. This was an honest course in propositional and first-order logic, all the way through the soundness, completeness, and compactness theorems for first-order logic. He gave all the details for the arguments we made when necessary, and explained exactly what details we skipped and why we were skipping them. He did an excellent job at motivating a course in which it's easy to get bogged down by definitions and notation.
Assessment: Biweekly HW (usually 6 problems per set). On alternating weeks, had a 10-minute quiz or 20-minute test either asking about lecture material from the previous week or asking questions isomorphic to those on the problem sets. This assessment style worked well for me; it doesn't work well for everyone.
Everything I said about Leoni's 269 remains true here, except that the workload was closer to 15-18h/wk on average. I think MS Analysis I was an excellent experience, covering abstract measure theory and Lebesgue integration, absolutely continuous functions and the fundamental theorems of calculus for Lebesgue integration, submanifolds of Euclidean spaces and the area formula / surface integration, mollification, and the divergence theorem. These topics flowed into one another quite well. In contrast, I think MS Analysis II, while the topics themselves were incredibly interesting, was much less structured with its topic order and I feel my understanding did suffer a bit as a result. There, we covered curves and vector field theory, fixed-point theorems (Brouwer, Banach, Schauder) and applications to invariance of domain, the inverse and implicit function theorems, and existence/uniqueness for ordinary differential equations (Picard-Lindelof-Cauchy-Lipschitz, Peano), Banach spaces of functions, spaces of continuous functions, the topological properties of L^p spaces on abstract measure spaces, and Sobolev spaces: construction, embedding theorems, extension theorems, compactness ending in the Poincaré inequality. It was a lot; I understood the MS I content coming out of MS I much better than I understood the end of the MS II content coming out of MS II. Of course, you understand something best your second and third time seeing it, so I am grateful for my first exposure to Sobolev spaces as I was then able to use them without fear in research when I needed to.
NB: Leoni doesn't intend to cover the area formula or Sobolev spaces in the upcoming iteration of the course, so I don't know how representative this topic list would actually be.
Assessment: Same as 269, with same NB. Some theorems which showed up on exams included the monotone convergence theorem, "an absolutely continuous function with derivative zero a.e. is constant," the Jordan curve theorem, the inductive proof of the implicit function theorem, and Morrey's embedding theorem.
Same James Cummings chaos, but now at triple the pace of 242. We ended up getting through a lot of Dummit and Foote over the two semesters, though not all of it. Things were relatively chill when we were doing group theory, and then when it got to rings and modules we introduced "a little bit of category theory" and from then on it was basically a Cummings stream-of-consciousness lecture for the rest of the semester. The homework problems were cool in the beginning and tedious towards the end, though he had eight of them per set which was a bit much.
Since the content of these courses isn't really represented anywhere else on this site (i.e. there's a lot of stuff here that isn't covered in Cookbook), here's a list of topics we ended up covering.
MS Alg 1
Group theory: homomorphisms, subgroups, cosets, Lagrange's theorem, conjugation, normal subgroups, quotient groups, isomorphism theorems, automorphism groups, characteristic subgroups, group actions, Cauchy's theorem, Sylow's theorem, normalisers, centralisers, class equation, finite p-groups, permutation and alternating groups, direct and semidirect products, simple groups, subnormal series, the Jordan-Holder theorem, free groups.
Category theory: initial and terminal objects, categories, functors, natural transformations, universal properties, products, coproducts, limits, colimits, adjunctions.
Ring theory: subrings, ideals, modules, quotient rings and modules, isomorphism theorems, polynomial rings, Zorn's lemma, prime and maximal ideals, prime and irreducible elements, factorization, PIDs and UFDs, free modules, Noetherian domains and modules, the Hilbert Basis Theorem, Gauss' lemma and the Eisenstein criterion for irreducibility, fields of fractions, properties of polynomial rings over fields and UFDs, finite fields and applications.
MS Alg 2
Matroids, closure operators.
More module theory: the structure theorem for finitely generated modules over a PID, the fundamental theorem of finitely generated abelian groups, Jordan and rational canonical forms. Hilbert spaces: structure of the infinite-dimensional separable Hilbert space.
Galois theory: field extensions, algebraic, transcendental, separable, and normal extensions, splitting fields, minimal polynomial, Galois group of an extension, the Galois correspondence, constructibility, solvability by radicals, unsolvability of the quintic.
Basic structures in algebraic number theory: rings of integers, Dedekind domains.
Basic tools in representation theory: Schur's lemma, Maschke's theorem, class functions, characters.
Assessment: Weekly HW (≤8 problems per set), take-home midterm and take-home final (24h time period given). Take-home exams were much harder this time; I typically spent at least 15 hours on them, with some taking as much as 21 hours to complete.
I took this course over the summer, and fully expected to hate it as I expected it to be 90% combinatorics. However, because Tomasz Tkocz was teaching it, what I instead got was a thoroughly excellent measure-theoretic probability course chock-full of analysis. I should probably clarify: I loved the course, but I don't think anyone else taking it did; if I hadn't seen the measure-theoretic ideas prior in 21-235, I probably would have been screwed. Tomasz is a very good, soft-spoken lecturer; he does his best to make abstract probability theory feel intuitive, which is a hard task. He doesn't teach undergraduate probability that often, but if (and only if) you have at least Concepts and a semester of analysis under your belt, I would strongly encourage taking this course with Tomasz if you have the opportunity. (Generally, it is shocking to me that 21-325, at the time of writing, only has a Calc 3 prereq at the level of 21-259. Conversations with Howell have led him to include a "strong recommendation" for a Concepts prereq: with some professors, this is a proof-based course.)
Assessment: Weekly HW (about 12-13 problems per set, but it was a six-week summer course with 80min lecture every weekday), three 90-minute four-problem exams which, in my opinion, were tough but fair given the time constraints.
NB: Tomasz is somewhat infamous for giving rather challenging 50-minute three-problem exams. This is true in the other classes I had with him, but the 90-minute time window helped a lot for this one. Also, I was able to negotiate a test drop in this course; make sure to suggest this in future iterations!
The first three weeks were ODE and the rest was all PDE. Robin Neumayer teaches a solid course, though I think it was fairly standard as far as courses of this type tend to go. We covered the basic existence/uniqueness theory for ODE, pretty much the first three chapters of Evans, and Perron's method for existence of solutions to the Dirichlet problem for the Poisson equation. I personally felt the course could have gone into a bit more depth, but honestly that probably means it was at the right level, as I felt like I got an extremely solid understanding of what was taught.
Assessment: Biweekly HW (4-5 problems per set), one absolutely brutal 50-minute exam, two more reasonable 2h-exams, and a final. Similar "hard but fair" exam style to Leoni. Robin is also quite generous with partial credit if you don't have a full proof but can explain your main ideas well – I greatly appreciate this.
NB: Math majors have to take differential equations of some type to graduate: either 260, 261, or 632.
Let's acknowledge the elephant in the table of contents right away.
Why so many grad courses? As part of the honors degree, you need 5 graduate courses, three of which need to be "Basic Exam" courses. The courses here which fulfilled my Basic Exam requirements, upon a quick Stellic check, seem to be 21-603, 21-632, and 21-640. But 21-651 was also a Basic Exam course. The precise list of Basic Exam courses can be found at CMU's website; at the time of writing they are (21-)602, 603, 610, 632, 640, 651, 701, 720, 721, 737.
That being said, I also needed to take electives for my undergraduate degree. Most of the topics I was interested in were really only offered at the graduate level, e.g. algebraic topology, differential geometry, or modern PDE (though from what I understand undergraduate diffgeo is being offered more regularly now, which is good).
Do not assume that it's worth taking a course just because it is a graduate course, and don't not take a course because it's an undergrad course.
This sounds painfully obvious, but you should take courses because the topics interest you or because you'll need the knowledge for something else you want to do.
Bill Hrusa is a stellar man and a great professor. Lectures were great and really reinforced the topics; this course was easily worth taking if he was teaching it and you had even the slightest bit of interest in learning how quantitative finance works, even if you have no interest in actually doing the BSCF or quant more generally. However, if you do have interest, definitely go to his office hours. Bill is excellent with professional development opportunities. Get involved in e.g. Quantathon or the Market Making Game. He cares greatly about his students and wants to see them succeed.
Assessment: Biweekly HW (I think? We had 7 assignments, which seems to suggest this), and a midterm and final. The exams were on the challenging side – Bill knows how to write interesting problems for exams.
NB: I think Bill's retired now. That being said, I've heard good things about David Handron, the other professor who teaches this as well.
Rather fun seminar. Po-Shen Loh runs the CMU Putnam team, and he's also just a very excitable guy. I don't have much to say about this one; it's a 3-unit once-weekly seminar, though you can also show up to weekend sessions for a more involved Putnam session as well as free dinner with Po afterwards. Participate as much or as little as you want.
Assessment: Two problems per week based on the material covered in the seminar, which you ought to make a good-faith effort on. In addition, you need to register for and take the Putnam. Obviously your score on the Putnam determines your grade does not matter for assessment purposes.
I'm not sure how much of what I say is meaningful, given that Patrick Massot was here visiting at CMU for one year from Université du Paris-Saclay, and so in particular I doubt this course is going to run again for quite some time. Massot is a key collaborator of Jeremy Avigad; together they wrote Mathematics in Lean, which we used as the textbook for this course. This was a comprehensive introduction to the Lean 4 proof assistant and formalization of results in and outside of mathematical analysis, with particular emphasis on results in differential topology such as the hairy ball theorem, Whitney-Graustein theorem, and Smale's eversion theorem. This being said, from what I understand the course 21-321 Interactive Theorem Proving ran in F22 and was very similar, so perhaps this isn't totally unhelpful.
Assessment: A few (iirc something like 6) Lean homework assignments and midterm/final (group) projects. I formalized Banach's fixed-point theorem for my midterm project, and... let's say attempted to formalize Jack Milnor's proof of the hairy ball theorem for the final project.
This was an excellent course; it was also one of the most wild courses I took at CMU. While nominally "topics in algebra," it brings together lots of areas of math, combining ideas from group theory, measure theory, functional analysis, graph theory, and set theory to create a fascinating subarea of group theory with lots of open problems and active research. Clinton Conley is an excellent lecturer, and the homework assignments were very well-designed.
Since (a good amount of) this didn't make it into Cookbook, we list off a rough sketch of the topics, with a note that this list isn't exhaustive.
Group actions: actions of free groups, Cayley graphs, ping-pong lemma, equidecomposability, paradoxicality (of spaces and groups), Banach-Tarski paradoxes in R^3.
Set-theoretic topological tools: filters, ultrafilters, ultralimits.
Amenability of groups, equivalence of amenability, paradoxicality, and the Følner condition. Integration against finitely additive measures.
Graph theory: perfect matchings, Hall's theorem for finite and locally finite graphs.
Supramenability: no nonempty subset of R is paradoxical via isometries.
Paradoxicality and non-paradoxicality in R^2; the von Neumann paradox.
Hyperbolic geometry and four-piece paradoxicality in the hyperbolic plane.
Paradoxicality and divisibility of actions as understood through graph coloring: locally checkable labeling problems, Schreier graphs.
Assessment: Biweekly HW (around 5 problems per set) and a final (group) project where you and your team read a paper, give a talk, and (individually) write a short report on what you learned. In my case, I worked with several people on understanding Baire-measurable Banach-Tarski style paradoxes.
NB: I vaguely remember Conley mentioning that it would be rare that he offers this again. So, if he offers it, take it.
Being fully honest, I started this course with full intent to finish but needed to drop it to an audit. Taking it at the same time as both MS courses and 21-759, I always found myself scrambling to complete the homework assignments on time and thus I wasn't really getting much out of them. Also, this course was taught with slides, whereas 270 (and all math courses I've taken) have been taught with the blackboard, which I feel forces the lecturer to pace themselves properly and generally conveys information better. All this to say, I unfortunately didn't enjoy the course very much, even sitting in. It taught me that I wasn't interested in quantitative finance, which was a bit unfortunate. It's certainly a valuable course to take to absolutely ace bank-quant interviews, but my heart wasn't in it.
Assessment: I honestly don't remember. I think biweekly HW, a midterm and a final?
I thoroughly enjoyed this course, despite it being entirely orthogonal to my research interests. It was an excellent time, and I strongly encourage every math undergrad to take at least one logic course during their time; it changed the way I view proofs as a whole and made scary concepts such as independence feel rather tangible – ideas such as "oh, you need Choice to construct a nonmeasurable set," things like this. It's a class about how to create and destroy universes. On this site, I have some notes which cover about the first month or so of the course (before anything gets extremely technical); beyond that, we basically developed all the necessary theory to prove Morley's categoricity theorem by the end of the course (and yes, it's a lot of theory to develop). Rami is a very funny guy, though you have to take his jokes in stride.
Assessment: Weekly HW until he kinda forgot to assign anything, and two midterms and a final. Except he forgot to give us the second midterm. The first midterm had a set of two problems (set I) and a set of four problems (set II). You had to pick one problem from set I and two problems from set II. The final was the strangest exam experience I've ever had; there were some number of problems, some of which were regurgitating the proof of theorems and others of which were easier exercises applying them; I think there were six problems worth 15p, one worth 20p, and four worth 25p. You had to pick at most 100p worth of problems to attempt, but this allowed for the bizarre game theory of picking all six 15p problems and capping your max score at 90. I'm generally not a fan of that.
Tomasz's complex analysis course was very well-structured, though homework assignments tended to make it seem like a course in cursed inequality-bashing. Complex analysis is a very rigid theory. It didn't feel like we were building up a toolbox which we used to prove bigger and bigger theorems; rather, it seemed we were on a new topic every few weeks. This isn't necessarily a bad thing, but I didn't vibe all that well with it as it felt rather chaotic and all over the place. I think I just find applying complex analysis more interesting than actually doing it.
Assessment: Weekly HW (about 4 problems per set) and three 50-minute exams; no final.
An excellent course which tells an excellent story about a little-known corner of mathematics. Clinton continues to be a great lecturer and a great person; this is his research area. There's not much more to say here that I haven't already said about Paradoxes; the two courses felt similar to be in. One small thing of note: this is not a "classical" descriptive set theory course. Rather, it remains mostly classical until about week 6 when Clinton discusses Ben Miller's proof of the G0 dichotomy, and from there the course moves at rapid pace nuking a bunch of classical uniformization theorems and results in equivalence relation theory with G0 before the course basically becomes a course in CBER theory and Borel combinatorics. As I learned, it turns out I actually quite enjoy this kind of "descriptive combinatorics," especially the CBER theory stuff (there's some cool analogies with computational complexity theory too) – it's the finite stuff I have issues with.
This is in my top 3 for "most beautiful courses I've taken at CMU."
Assessment: Biweekly HW (8-10 problems per set; first problem on HW1 is infamous) and a final (individual) project where you read a paper, give a short talk, and write a short report on what you learned. Of note is that HW feedback was basically nonexistent; this isn't Clinton's fault per se as much as it was the TA not grading the HW in timely fashion.
You'll notice a common trend here: I tend to like courses that tell good stories. Tomasz's functional analysis course was excellent in this regard, trading depth in generality (e.g. we didn't go more general than normed spaces, no locally convex TVS theory here) for breadth in content: Banach spaces, Hilbert spaces, Radon-Nikodym, Lp spaces and their duals, Riesz-Thorin interpolation, Fourier series, Hahn-Banach and separation, Banach-Steinhaus, open mapping and closed graph theorems, weak topologies, basics of operator theory including Fredholm theory, self-adjoint operators, spectral decomposition and the continuous functional calculus, and the local theory of Banach spaces including some convex geometry and the reverse isoperimetric theorem.
This is in my top 3 for "most beautiful courses I've taken at CMU."
Assessment: Weekly HW (around 6 problems per set) and three 50-minute exams; no final.
Florian Frick is an excellent lecturer, and his topology courses are extremely well-paced. The first third of this one covered your basic point-set stuff done in an abstractly motivated way (as opposed to all the epsilons and deltas you see in analysis), really highlighting the beauty of soft arguments. The middle third was all about characterizing topological properties with filters, separation axioms and compactifications, in particular constructing the Stone-Cech compactification. The latter third was invariance of domain and all the tools needed to prove it: the typical Sperner-KKM-Brouwer chain in contrast to our analytic proof of Brouwer done in MS II. Then we did a couple weeks of algebraic topology (overlapping with the first couple weeks of 21-752): covering spaces, the fundamental group, universal covers, and the Galois correspondence between path-connected covering spaces and subgroups of the fundamental group.
Assessment: Biweekly HW (5 problems per set), 3 midterms and a final. The midterms were perhaps the most well-written 50-minute exams I've taken at CMU; this is because Florian can solve them in five minutes. The final was pretty tough.
The same comments about Florian apply – Florian explains results so well that a theorem feels obvious to state before you've even proven it. Topic list can be summed up as "Chapters 1-3 in Hatcher." But I really want to emphasize how much better I understand abstract algebra after taking Florian's course. The way the topology shows up in the algebra and vice versa really motivates the algebra well, especially when you're dealing with all the homological algebra that arises when you're dealing with... well, homology.
This is in my top 3 for "most beautiful courses I've taken at CMU."
Assessment: Biweekly HW (5 problems per set), a "HW check-in session" where Florian asks you about some of your submitted solutions and you recreate them on a whiteboard, and a final project where you read a few papers on a topic and write a short (6p) expository paper about it. For example, I studied the fundamental groups of compact Hausdorff spaces and a surprising connection with realcompactness and measurable cardinals.
I took the course during its first ever iteration since 2019, in my sophomore spring no less, and info on what I needed going into this was slim. So, right after taking the course, I wrote a detailed review of the course here. The TL;DR is that Dejan Slepçev was an alright professor for this course, and the course was overall fine and particularly beautiful if you zoom out and don't let yourself get bogged down by the technical details. This is a review from 2023, but in hindsight I think I was pretty correct in my points, though I probably could have given Slepçev more slack.
Assessment: Weekly-ish HW (around 4-8 problems per set). No exams.
I sat in on this course, though there were only two HW assignments so if I wasn't doing my thesis at the same time I probably could have honestly registered. This was an excellent foray into topological combinatorics; usual Florian comments apply. I think you could split this course cleanly into thirds: topological Hall and applications, Borsuk-Ulam-type results and applications to the chromatic numbers of Kneser graphs and hypergraphs, and topological lower bounds for algorithm complexity such as k-EQUAL and linear decision trees, evasiveness, and promise constraint satisfaction problems for graph colorability. Since I had an algebraic topology background by the time I took the course, I thoroughly enjoyed it. However, I had some friends who sat in without such background who found it entirely incomprehensible, so your mileage may vary. If Florian offers this again, it might be worth having the unstated prereq.
Assessment: Two HW assignments, each one having about 10 problems, 5 of which you choose to hand in.
This was an excellent topics course taught by an expert in the area. I was in a class of 5 people, which allowed Irene Fonseca to tailor the course to students' interests, give plenty of time for questions, etc. I think Fonseca is an excellent instructor for a topics course like this (though I had some friends who did not enjoy her measure theory offering at all). Her area is elasticity, so she always tried to motivate things with examples from elasticity theory and continuum mechanics, which was much appreciated. I do wish this class had a bit of HW, or suggested practice problems or something, as the entirety of the grade was class participation and a final talk. Still, though, it was an excellent time and I'd recommend it, though the prereqs are somewhat steep: you need to be very comfortable with weak convergence and Sobolev spaces to get anything out of it.
Assessment: Class participation and a final (individual) project: read one of Fonseca's papers and present it to her in the form of a 1-hour talk on the chalkboard.
Another great topics course taught by an expert in the area. I initially did not enjoy the class for the first two weeks, but it eventually started to pick up and I grew to like it quite a lot. This was a course in kinetic theory and the mean-field limit for a system of N interacting particles as we send N to ∞. We proved progressively better and better results, weakening regularity of the particle interactions until we were able to prove the mean-field limit for Coulomb and Riesz gases. Understanding what happened in each lecture was homework enough. The main thing with this course, if it's offered again, is that you need to be willing to pick up things quickly. For example, I had to learn what Brownian motion was and how SDEs generally worked to understand what was going on in the Langevin system. While being Advanced Topics in PDE, there was substantially more probability involved than I expected, which was interesting.
Assessment: Class participation and a final (individual) project: read a paper and present about it in a short talk.
I'm not an algebraist. I didn't vibe well with Eur's lecturing, and I did not have the time or energy to deal with the assessment structure of the class given that I needed to finish my master's thesis that semester. I dropped this class five weeks in when I started to lose the plot.
Assessment: Exercise list updated after each lecture, to be done but not for credit. Multiple 72h take-home exams (iirc 2?) and a final (group) project.
If you intend to go to graduate school, I strongly recommend doing some amount of research in undergrad. My case was a bit atypical: I did research in the chemical engineering department first, as I was still in ChemE my freshman summer, but then I did research at CMU during my sophomore and junior summers (though I'd also encourage students to look at REUs – for PDE and fluids most of the people I was interested in working with were already here). More details on those summer experiences can be found in the Research tab of this site.
My friend Subhasish Mukherjee graduated in F23, but was still around Pittsburgh and still TAing a course for Tice. I'm not entirely sure how this arrangement worked out, but one day out of the blue Subhasish mentioned me and a few friends asking if we'd be interested in attending an abstract harmonic analysis seminar course which he'd run. When things were getting settled, we learned we could actually get 21-599 credit for it, which was pretty neat. We met once a week, following Folland's A Course in Abstract Harmonic Analysis. Here's a topics list, if anyone like Subhasish comes around and is interested in running it:
Locally compact Hausdorff (LCH) groups: Haar measure and integration.
Spectral theory of Banach algebras, the spectral theorem for normal operators on Hilbert spaces.
Unitary representation theory of LCH groups on Hilbert spaces: Gelfand-Raikov theorem.
Unitary reps of LCH abelian groups: the Fourier transform, dual groups, Bochner's theorem, Plancherel's theorem, Pontryagin duality, Fourier inversion.
Unitary reps of compact Hausdorff groups: the Peter-Weyl decomposition theorem.
Assessment: Participation and completion of a few scattered HW assignments.
Working with Gautam has simply been a blast. I have not taken a course with him, and I know his courses are exceptionally challenging but also quite good. I strongly recommend you chat with Gautam if you're interested in fluids, mixing, diffusion, Markov chains, anything "theoretical applied math." Gautam is an excellent professor, an excellent human, and has been an excellent thesis advisor.
Erdmann's great; I was not fond of Crary. But the TAs kinda teach you everything at lab anyway. I dropped this course right before CPS as I desperately needed to lighten my course load; I was suffering during Spring 2023. I did learn how to think functionally, though, which is neat!
Assessment: I honestly don't remember. Probably 3 exams and a final, plus weekly HW.
I took this course at a strange time in my career, as a senior in math. I also took this course with none of the stated prereqs, purely on math background alone. I did find myself somewhat disappointed with this course – the models of computation, reductions, complexity theory stuff was cool but the actual discrete math stuff was very much review. Somehow, despite not taking a discrete course, I had learned by osmosis 90% of the discrete material in a course which actually would have counted for fulfilling the discrete math requirement. Oops. I think you should probably ask a CS major or someone who took this course in freshman or sophomore year to give an actual opinion on it, because I suspect "a bit boring and tedious" is not the outcome for most who take it. I honestly felt that the lectures could have gone into more depth – the level of depth done in lectures was much lower than the level we were expected to understand on homework.
Assessment: Weekly HW, to be turned in at a writing session where your replicate your solutions to 2 of the problems (plus some CYUs) in a timed environment.
NB: Ada has been increasingly implementing AI into the course infrastructure (grading, feedback etc.) and I am strongly against this decision.
This was a type theory StuCo. Does this even count as a CS elective? I have no idea, but it was fun so I'm including it here.
Assessment: Make a good-faith hour's worth of effort at each HW assignment that you're given.
This was an introduction to the chemical engineering sciences: fluids, heat and mass transfer, and thermodynamics. It's a lot of unit manipulation in the beginning. We did some basic hydrostatic stuff, then moved to reactive and nonreactive material balances and control volume analysis, which was the majority of the course. Reactive recycles can go to hell. Schneider himself was a very good professor for this course; unfortunately they don't tend to put him on the intro course anymore. The course textbook is kind of awful to learn from, so I'd recommend going to lecture. (Though I always recommend that anyway – you pay for classes, after all!)
Assessment: Some combination of HW, labs, and 3h exams and a final. It's been a long time, so I don't remember this clearly.
The entire course is a correction to ideal behavior. When you enjoy the proofy part of thermodynamics much more than the engineering part, that's probably a sign that you might actually be a mathematician. Sandler's book is pretty brutal to learn from in a first course in thermodynamics, and would serve better for a second course. Overall, the course was fine but it taught me that CMU's chemical engineering department prepares you strongly for process systems engineering, and I learned that I very much disliked that. No shame towards Bob Tilton, though – he's a great guy.
Assessment: Some combination of HW, exams, and a final.
As a mathematician, I enjoyed this course a good deal, though as an engineer I probably would have enjoyed it less. Aditya Khair is an excellent researcher, but he's an OK lecturer for this course. He's very clear, but somewhat dry – that being said, a positive note is that I'd say he's in the top 3 for best handwriting out of all the professors I've taken courses with at CMU. The course itself was alright, but focused on control-volume formulations of fluid mechanics for too long in my opinion (of course, this is because I wanted to get right into the differential stuff; instead that stuff was covered near the end, culminating in some regular/singular perturbation analysis in the last few lectures).
Assessment: Some combination of HW, exams, and a final.
NB: In recent years this course has rebranded to 06-707 Advanced Transport Phenomena, which I think is a much more accurate name for it.
As a mathematician, I loved this course. It was an excellent second course in fluid mechanics, starting strong with the rigorous derivation of the Navier-Stokes system for compressible and incompressible flow, as well as the laws of thermodynamics for fluids. We learned interesting mathematical techniques such as perturbation methods for approximating solutions to PDEs and ODEs found in fluid flow problems and similarity solutions. We then discussed Stokes flow and lots of the theory surrounding that, which was fantastic. Then we discussed Nusselt numbers and some other stuff which, full disclosure, I don't remember all that well, which is why I'm taking another fluids course in my first semester at the CIMS. I greatly enjoyed the course but would have gotten more out of it had I not been doing an insane workload that semester.
Assessment: Biweekly (I think?) HWs and a take-home final exam.
When I took this course, there was a bijective map between topics covered in 09-106 and topics covered in the second half of AP Chemistry, so I found the course straightforward since I had already taken AP Chem in my senior year of high school – this stuff was fresh off the dome. General topics included acid-base equilibria, reaction kinetics and chemical thermodynamics, and electrochemistry.
Assessment: OLI readings, occasional problem sets, a couple midterms and a final. The exams were rather challenging, and a bit of a time crunch.
NB: William Alba was a character. He left CMU in 2022, and seems to be doing his own thing now.
I found this course pretty interesting, though I somewhat lost the plot once Greg Kesden started talking about computer networks. The digital logic portion of the class was excellent (and taught me how circuits work when Physics C couldn't) and the analog section (analog circuits, filters, signal processing) led by Tom Zajdel was fantastic. I would describe Tom as the calm one and Greg as the... not calm one. He threw an eraser at me when I asked him why he disliked chalkboards. :^)
Assessment: Weekly HW, weekly labs, 3 exams and a final.
For first-year writing I took 76-101 Interpretation and Argument, on the topic of Hoaxes, Fakes, and Cons. It was neat.
In hindsight, my paper on turning "academic bullshit" into a pedagogical tool accidentally reinvented reinforcement learning. Oops.
This tends to be the class MCS majors take when they don't want to take a biology course or have procrastinated their life science course to senior year. I am no exception to this trend. I found the homework assignments to be a bit tedious at times, and the lecture quizzes graded rather harshly: 3 questions out of 15 wrong, and you're already looking at an 80. While there is an attendance grade, you only had to go to half the lectures to satisfy it. This is one of very few courses at CMU where I've ever intentionally skipped a lecture; that was mainly because the course ran at 8am. The saving grace of the course is that Amber LaPeruta genuinely does care about student learning. It's a shame that many attendees kinda don't for this course.
Assessments: Sporadic HW assignments, lecture quizzes, 3 exams, and an optional final replacing lowest exam grade.
This was an absolutely fascinating class, if a bit sobering. It combined a chemistry class and a public policy class in a really unique way; I took this to fulfill my Science and Society requirement, and strongle encourage others to do the same. The readings were relatively light, and the homeworks were pretty reasonable. The lectures were at 9am, but Bruce Armitage is a very good lecturer so I'd say it's worth going. The most difficult part of the course by far is the final project – you are given 10 billion dollars and asked to solve the opioid crisis, writing a 10-page proposal to be submitted to a hypothetical funding agency. This is excellent practice writing grant proposals, something you're absolutely going to have to do in any scientific career. Don't leave it to the last minute like I did, especially if you're a senior intending on graduate school. Then you're going to have to write this project while doing grad school apps, and that's a state you don't want to be in. Trust me on this.
Assessments: Reading reflections, a couple HW assignments, final (individual) project.
NB: As of 2025, this course is now called Introduction to Linguistics, which is probably a better name.
While I enjoy linguistics, I did not enjoy the overall structure of the course. We started with morphology, which was very difficult to motivate, before moving to phonology and phonotactics and all that. I felt like everything I learned in this course was learned in hindsight – to be clear, this isn't an indictment of Christina Bjorndahl's teaching per se. I think she experimented with how she wanted her course to be run and assessed, as you do as a professor, and I think it didn't work for me this time. Feedback on problem sets was slow, and thus I wasn't sure whether I was doing things correctly. Luckily I was, but there's a world where I make the same mistake on problem sets 1, 2, 3 and don't know until problem set 1 is graded. (This is generally the issue I have with late grading as a whole.)
I fully expect future iterations of the course to be better; this is one person's experience from one time.
Assessments: Six problem sets, quizzes/tests similar to Adam Bjorndahl's 80-310, with retake opportunities for all tests and quizzes.
This was an excellent course; we had many excellent discussions on topics I don't normally think about in my day-to-day life. It was a very welcome change of pace from all the intense math I immersed myself in. Kevin Kelly is a great guy to teach this class, if a little kooky. Kelly works in formal epistemology, so this course occasionally made some forays into mathematical ideas which I was pleasantly surprised to see in a philosophy course. It's a little unfortunate that I learned I enjoyed this stuff a bit late, as I didn't have time to take further philosophy courses at CMU. That's the price you pay for pushing your geneds to the end.
Assessments: Reading reflections (readings were often 30-50 pages), 3 papers: one creative, two expository. All short: less than four pages, by design. In philosophy, "every word is more rope to hang yourself with," so Kelly emphasizes writing concisely and effectively.
Danny Oppenheimer is a fantastic professor and a fascinating human being; the fact that he got me to be more interested in the lectures a psychology course than I was for the proof assistants course I took that semester says something about his skill as a lecturer. From a purely psychometric perspective, Danny writes excellent exams, in the sense that the scores are supported on [4, 96] with a mean of 50 for a perfect bell curve. Of course, Danny then curves the exams to fit our naive A/B/C/D/R grading scale. There's one three-hour lab a week for this course. Do the lab readings. While you might be able to get away with not doing those for the actual lab, Danny will ask about them on exams and you will get burned. Also, you might be tempted by the 7-9:50pm night lab. I would recommend against this. I did this, and I was not having a good time being on campus until 10pm every Tuesday. I know it might suck to have 3 hours blocked out in the afternoon, but trust me when I say you will be grateful to be done with classes by 5.
Assessments: Short, peer-graded, one-question homework assignments inspired by (or lifted off) previous exam questions. Midterm and final.
CMU has an excellent program where students can take courses taught by other students in whatever topics they want to teach! This is an incredible experience, and I strongly recommend taking a couple StuCos during your time at CMU. The availability of StuCos entirely depends on whether there is an instructor willing to teach it that semester. I took 98-012 Fun with Robots (S22), 98-317 Hype for Types (F23), 98-374 Steep by Steep: An Investeagation into Tea Culture (S24), and 98-079 Introduction to Vocaloid: Who is Hatsune Miku? (S25), and thoroughly enjoyed all of them.
I also taught a StuCo in F22: 98-129 Principles of Dysfunctional Programming, a tongue-in-cheek algorithms class about complexity theory and pessimal algorithm design. If this sounds interesting to you, and you are a current CMU student interested in getting 98-129 up and running again, shoot me an email and I'd be happy to share some materials from its first iteration.
Do clubs, they're great! At CMU I was involved wholly or partly in several clubs, including CMU ChemE Car, Puzzlehunt CMU (CMUPH), CMIMC, and the CMU Math Club. I wrote for CMUPH from F21-S23, and was Playtesting Czar in 2022. For CMIMC (Carnegie Mellon Informatics and Mathematics Competition), I was a problem writer and grader since 2023, and was a Problem Writing Head from 2024-25. As far as Math Club goes, I was their Vice President External from 2024-25, responsible for organizing the weekly colloquium talks. If you like doing a thing, there's a decent chance other people at CMU like doing that thing too.
TAing isn't really a "club" per se but I'd also strongly encourage TAing at least once during your time at CMU. I found it to be a very rewarding experience.