The CMU Class of 2025 discord server has a tradition of writing course reviews every semester. Some students have also hosted course reviews on their websites. I have found reviews from other students fairly helpful, and it has influenced my selection of courses, and perhaps even led me research interests. Thus, I have written my own course reviews, which I hope to be helpful to future students, by compiling my reviews from the past semesters into a single webpage.
Also check out my friend Robert's page! He has taken and reviewed many CMU grad math courses, some of which I wish I had the chance and time to taken, and perhaps I would have if I wasn't doing graphics instead.
Generally speaking, I found every course I took at CMU to be somewhat interesting and useful, yes even engage in the arts, and no course was a complete waste of time. However, through the process of exploration and discovering my interests, I definitely have taken too many courses, and I wish I somehow took less and focused more effort into courses that really mattered or projects or research or clubs and other commitments. With my often heavy workload, I generally survived fine and did well in class according to objective metrics, but definitely cut many corners here and there (to be fair, many people do this). I only crashed in senior spring with six courses (four required) plus research thesis plus multiple club commitments, and luckily it was senior spring. The lesson is: don't leave too much for the last semester.
As a mandatory disclaimer, the following reviews reflect my personal opinion, and your mileage will likely vary.
I'll begin with the area of computer graphics, which has grown to be my current area of research interest. My reviews for this section may be picky, but I definitely enjoyed all of the following graphics courses.
15-462 Computer Graphics15-462 (now 15-362) covers all the big ideas in graphics, including rasterization, geometry, rendering, and animation. From my reflection two years ago, "The course content felt like an applied math class in a good way. We saw various math tricks for efficient computation, as well as the overarching design that makes up computer graphics." I took the class with Nancy, who was good, and I've also heard great things about Oscar. The heart of the class is definitely in the programming assignments, where we revisit the slides, actually understand how the algorithms work, and put the pieces together to implement the algorithmic components within the Scotty3D software.
Like any coding heavy class, debugging is a major aspect. In particular for graphics, debugging from graphical output is intimidating at first, but luckily the TAs and active class discord channel were really helpful. Also, the visual output need not match exactly. As long as the output is qualitatively correct, and the code seems right, it will get most points. Finally, the accomplishment from visually seeing one's code in action proved to be much more fulfilling than a simple performance indicator. For a total of four assignments each split in half, the workload is medium-heavy, and definitely rewarding. This class also gently introduced me to C++ and working with an existing code base. I would highly recommend this class as a domains elective or a free elective.
15-463 Computational Photography15-463 is somewhat of a bridge between graphics and vision. The course consisted roughly half of I would say fundamental photography and imaging knowledge, including optics and lenses, noise, color, filtering, basic radiometry, and half of somewhat cool topics, from Poisson image processing to photometric stereo to structured light. Yannis is strict but a good instructor, and his lectures are clear and to the point. He also has a very wide range of knowledge, from mathematics to camera hardware, and can usually comment on random ideas I ask him after class.
The homework was typically reimplementing algorithms from papers from scratch in Python. This experience is really valuable, but for me it was also debugging hell, more than 15-462. But again, exact matching output is not needed. Additionally, there are significant amounts of extra credit available within the assignments, sometimes worth up to 50% of an entire assignment. You will need to get comfortable with numpy vectorization, but even so programs still can take over 10 minutes to run on full size images. For a total of 6 programming assignments and one project, this course has a fairly consistent moderate-heavy workload. I think this course is suitable for a fairly general audience, anyone who wants to see sophisticated mathematical ideas solve real world problems. In particular, I think may be a cool course for math students with some programming experience.
15-466 Computer Game Programming15-466 was a great place to practice more C++ and make games. The first half of course talked about handling aspects of a game beyond its game logic, including assets, meshes, sound, walkmeshes, fonts, and multiplayer. One game was to be made each week individually highlighting the above idea. You can turn in near-minimum working examples for full credit, though many will try to make more creative games. While the workload for this course is pretty heavy in the first half, the second half is more moderate. The main task was making one major game in groups, and it was a fun experience. Lectures contained more technical knowledge, such as framebuffers, lighting/shadows, shaders, and things of that sort. In some sense, these are optional. In fact, it is technically possible to complete the class without really touching OpenGL, as the starter code provides some rendering functionality. Still, these are very valuable topics to learn. Jim is also really knowledgeable and has much experience with graphics programming, and he can likely help you with any questions you may have. To summarize, you get out of this class what effort you put in.
Graphics Theory?When people talk about graphics, they tend to think of graphics programming. But there is also a theoretical and research heavy side to graphics, which draws connections to mathematics and physics and establishes a foundation for the models used in graphics. CMU may be among the only universities in the world that touch upon all three major areas - geometry, rendering, and simulation.
15-458 Discrete Differential Geometry15-458 is a very interesting course. Somehow it feels neither like a math course nor a graphics course. Keenan is very good at giving engaging lectures and focusing on the intuition behind the abstract mathematical ideas. There are a total of five required assignments and extra optional ones. The written part typically has 10 to 20 short questions, ranging from straightforward computation to proofs. Since this isn't a math course, it doesn't state definitions or theorems carefully, and sometimes I'm stuck on a proof, not sure what to assume. The programming part typically involves converting mathematical formulae to code, without much engineering work needed. Most times the visual output isn't too interesting. It is easy to visualize a smoothened mesh or a distance field. So to me, this course kind of lacks the spark of unexpected visual output that makes graphics exciting. With all that said, the workload for this course is generally pretty light, and people without a particular graphics interest would take this class just for the Keenan experience.
15-468 Physics-Based Rendering15-468 is also taught by Yannis (see 15-463 for comments on Yannis). Unlike most other areas, rendering has a fairly unified path tracing framework, and this course develops that framework in good detail. There are four programming assignments and one final project, and additionally weekly written assignments, which sums to a moderate-heavy workload. Programming assignments are mostly pretty standard fill-in-the-blank type and is effective at reinforcing lecture material. Written assignments explore the mathematical details of rendering, and are definitely useful for an aspiring rendering researcher, but may feel a bit tedious otherwise, and grading is also somewhat picky as a graphics course. The solution to written assignments are gone over in recitation, which is well-intentioned, but in practice not many students come to recitation on Friday afternoons. The written assignments aren't graded until finals week, so be prepared for a shock in your grade. I didn't quite have enough time to engage deeply with the written assignments and final project, but I still thought this was a solid course.
15-468 Physically-based Simulation of Solids and Fluids15-769 (now 15-763) discusses physics-based simulation primarily for deformable bodies. Simulation has seen many different approaches for rigid bodies, deformable bodies, and fluids. This course primarily focuses on FEM-based elastic bodies with optimization time integration, which is accurate and robust, but are costly to simulate, nowhere near realtime. So if you want to add physics to your video game, this course might not be directly relevant. But if you can accept the premise of the course, you will find a very in-depth and hopefully insightful tour of the method. The course does not have homework yet, but homework may be added in the future. There are paper presentations and a very open-ended semester-long project, and Minchen is quite willing to help. Some people end up working also on elastic bodies, some model fluids, some investigate fracture, and others use simulation for applications, such as for topology, design, or physics aware generative AI. The possibilities are endless.
Computer VisionFinally, machine learning is undeniably taking over graphics, and I thought I needed to get some exposure to actually using modern machine learning techniques, which 10-701 doesn't teach. 16-824 and 16-726 are curiously fairly complementary classes and it was interesting taking them together. For 16-824, Deepak was a good and engaging lecturer, and frequently asked good questions to the students during lecture. Course required reading papers every class, which I found is good practice. Homework is somewhat tedious, and instructions were often not very clear, but OH was helpful. 16-726 with Jun-Yan was also decent. Homework generally tests more so understanding of core ideas, and less so on implementation.
Yes, I did not take concepts, I was able to skip it through the math maturity survey. Needless to say, the survey is not something to be studied for, and math maturity and proof writing skills are built over time. For my first math course as a freshman, I found that 21-242 with Cummings is a relatively light and solid course. Linear algebra courses, including this one, have a tendency to get stuck doing row reduction for too long, but we eventually got to more important topics like the spectral theorem and Jordan canonical form. Midterm and final were 24 hour take home open note open internet exams, which I think is a fine format.
I thought 21-261 with Slepcev is also a good undergrad ODE course, and I would imagine the class being better suited than 21-260 for math majors. We did less computation exercises and covered more important topics like Picard-Lindelöf, interval of existence and stability arguments, and classification of systems of linear ODE, which has ties to analysis and linear algebra. Still, if I knew I was getting into theoretical math I might have just waited and taken 21-632 PDE 0 directly.
Math StudiesI refer to the math studies sequence as the courses 21-269, 21-235, 21-236, 21-327, 21-238, with the inclusion of 21-269 vector analysis since it feels tightly integrated with the two other analysis courses. There is much debate surrounding math studies. Typically the professors teaching math studies are more senior and also more experienced with teaching the same math studies courses. Socially, you take the classes with generally the same cohort students at the same time, and also stick with the same two professors. This closer connection can be useful if students want to conduct research with the professors or get letter of recommendations. On the flip side, students get less exposure to different professors and meet less other math majors. There is also the concern about exiting math studies (in my year, approximately 37 students started 21-269, 27 finished 21-269, 17 finished 21-238, and 12 finished 21-236) and the transition to the non-honors courses leading to duplicate material. Ultimately, the courses are a lot of work, and will necessarily be a student's primary focus of their sophomore year.
Math Studies AnalysisThe analysis sequence with Leoni is among my favorite classes at CMU, and it got me interested in analysis as a subject. The material varies by iteration. My iteration of 21-269 covered real numbers, normed and metric spaces, basic point-set topology, compactness, limits, derivatives, and Taylor's theorem. 21-235 covered basic measure theory, Lebesgue integration, absolute continuity, embedded manifolds, mollifiers and partition of unity, and divergence theorem. 21-236 covered curve integrals, Brouwer/Schauder fixed point, Jordan curve, implicit and inverse function, space of continuous functions, Lp spaces, W1,p Sobolev spaces and Sobolev embeddings.
Leoni lectures are direct and clear. Homework starts off from slightly tricky to very challenging, occasionally a few parts were near impossible, which I have to say I enjoyed. Most problems are well chosen and offer insight to related topics. Exams were 5 hour exams scheduled outside of class (this may vary by iteration), which were medium-difficult but never felt unfair. Both homework and exams required a solid thorough understanding of lecture material, which I think is good. Most classes at CMU unfortunately don't require this, that is, one can get by with the homework without fully understanding the lecture. I have very little complaints of the courses, other than sometimes the lectures being just slightly too slow. Overall among my favorite courses taken at CMU. 21-269 is especially influential since it got me interested in analysis and made me choose math to major in.
Math Studies AlgebraThe algebra sequence with Cummings is more standard, following Dummit and Foote, and a solid course. It managed to cover the core of the first four parts and some of the sixth part (groups, rings, modules, Galois theory, some representation theory), though obviously not quite the coverage of the full 900 page book. Cummings lectures are as interesting as always, and I found them to be quite followable, but occasionally a bit fast and losing motivation. Homework also ranges from slightly tricker in 21-237 to fairly challenging in 21-238. For both algebra and analysis the homework is weely with around four problems per week (possibly with many subproblems, especially for algebra), which for its difficulty I would consider medium-heavy to sometimes heavy workload. It is very useful to work on the homework in a group.
I fulfilled probability with 21-721 probability with Tikhomirov. Lectures were slow, and content was pretty standard, with a bit too much emphasis on measure theory. Homework is lacking, with only four short sets assigned. Overall, the class was easy, which honestly I appreciated given my workload from other classes. It was Tikhomirov's first semester teaching at CMU and he does listen to feedback, so the course should hopefully improve in the future.
21-602 Set TheoryI took 21-602 set theory I with Schimmerling, and converted the course to audit halfway through. Some students including myself have not taken undergrad set theory, but self-studied Schimmerling's book beforehand. The course has a history of being very difficult, and the course was restructured before my iteration. Still, we cover a lot (see course description) of material, apparently far more than similar courses at other institutes. Written homework is replaced with weekly meetings with the instructor, or oral homework. And the expected workload is definitely not light. I thought that this class, especially the weekly meetings, is great for motivated students with a potential research interest in logic. For me, who just wanted to hear some new stuff? That kind of worked, though I had to give up homework and audit to cut down my workload.
Special TopicsThe math department offers cool topic courses that vary by semester. I took 21-820 optimal transport with Slepcev and 21-830 interacting particle systems and mean field limits with Rosenzweig. Admittedly I was somewhat underprepared due to the lack of background of graduate analysis courses. It was still possible to follow along and get a glimpse of techniques from different areas of analysis. Grading for topics courses are usually lenient with minimal homework and heavy weighting on a final presentation. I did enjoy these courses, but looking back, I might have gained more by taking more standard courses like 21-632 PDE 0 or 21-759 differential geometry, and then do more topics classes in graduate school.
21-295 Putnam SeminarLast is 21-295 Putnam seminar. I did not find the large lecture format helpful for discussing problem solving. I wish I took a fourt real course instead of this in freshman fall. If one really wants to prepare for the Putnam, or even just interact with Po, the Sunday sessions are much more useful. On Sunday, one actually attempts the problems for a fair amount before discussion, and there is free dinner.
I'll be brief here since everyone talks about these courses. I have never taken AP CSA but have self-studied coding in middle and early high school, and managed to place out of 15-112 by the placement test, which only required knowing how loops and conditionals work and minimal Java syntax. 15-122 is my first rigorous course in CS. The center of the course is the pointer paradigm and its ability to describe variable size data structures like stacks and linked lists. These were all new to me and the class convinced me that CS is interesting as a subject of study. Contracts were also introduced to reason about correctness imperative programming. I found 15-150 less insightful, since most of the course involved routinely translating between recursive mathematical proofs and programs, and I found most of the recursion easy. With that said, writing SML was fun.
15-213 Intro to Computer Systems15-213 is probably my number one favorite course at CMU, as it exposes many interesting ideas concerning computer architecture which are relevant to programmers. While many CS courses have solid lectures, their programming assignments tend to be more mediocre. 15-213 has excellent programming assignments that echoes the lecture material. I took the course in the summer, and spent much extra time optimizing my assignment solutions for the leaderboard (placed 1st for data lab and malloc final, 2nd for cache lab and malloc checkpoint). To this day I can still remember each assignment well. For non-CS students who may or may not be doing a CS minor but did take 15-122 and believe that programming is anyhow useful, I would also highly recommend this course.
CS Theory15-251 is a course that tries to be mathematically technical, but it feels somewhat superficial due to crucial results like universality of Turing machines and Cook-Levin being omitted. Still, the problems are generally fun, whether it be building Turing machines by hand, reduction proofs, or random/approximation algorithms. I thought the homework writing sessions and group homework was nice, but also I had a nice group. 15-210 is a standard algorithms course with additional parallel considerations, which turned out useful for graphics later. The coding problems were fun, but written problems somewhat tedious. 15-451 felt like a survey course that lacked a focus. Written problems are tedious, and the occasional coding problems more tedious. Homework was hard, but exams I thought were easy.
For my systems elective, I opted for 15-418 due to its applications in graphics. In terms of content, it was interesting, but many topics feel more relevant to specific hardware architecture designers and less relevant to the programmer, unlike 15-213. Not sure if this is true for other systems classes. At least for programming assignments, only a small subset of the lecture content is relevant for the assignments. Also, only a small grading weight of the assignment was based on performance, and more weight is placed on explanation of the code (maybe this reflects the real world more?). There is little algorithmic insight encouraged. Generally the trivial implementation gets 80% of the performance points, and any improvements should lead to full points. Grading based on explanation also seems very subjective, and I've gotten highly varying grades over writeups I thought were of similar quality. I'll also point out that I partially attended both the fall section with Skarlatos and Jia and spring section with Mowry and Railing, and the exam 1 mean/median for the spring section is roughly 30% lower, take that how you want.
10-701 Intro to Machine LearningOn 10-701, enough people talk about this, especially the difference between the different intro to ML classes, so I won’t say much. The first half of course covers traditional, seemingly obsolete techniques. The second half covers deep learning, and goes into many topics briefly. The four programming assignments focus more on the traditional techniques. With Chai and Lipton, I think it is an acceptable intro to ML course as it covers the history and development of the field (since the Cambrian explosion!), but don't expect this class to teach you how to actually do machine learning in practice.
80-514 Categorical LogicI got 80-514 categorical logic to count for my PL class since I wasn't really interested in PL and wanted to do something more logic-related. However, this course didn't really click with me. To be fair, the course does cover some really exciting hot areas of research, which you can check out Awodey's page for. But my personal takeaway from this course is that category theory really is abstract nonsense. The poor air circulation in the stuffed philosophy department meeting room did not help.
I managed to skip matter and interactions as a prospective first-year physics major, but this is getting more discouraged and perhaps impossible. For those also doing math, 33-231 phys anal and 33-232 math meth can be waived as prerequisites if one has the relevant math background. For completing the physics major, my understanding is that 33-232 can be waived as a course, but 33-231 is still required regardless of other differential equations courses taken. Not too sure why. You should most definitely check with your advisor if you want to attempt this, and possibly with those that actually double majored.
Quantum Physics33-211 is a fairly standard, not too exciting physics III course. 33-234 quantum physics with Kozii is a nice class, following the first four chapters of Griffiths fairly closely, with very solid lectures, reasonable homework, usually a few selected problems from Griffiths, and reasonable exams. Next I took 33-658 quantum computation and quantum information theory with Widom. We followed parts of Schumacher and Westmoreland, and added other topics like quantum annealing and quantum chemistry. The class takes the finite dimensional Hilbert space perspective and help clarified my understanding of quantum mechanics, and I feel like it was a fair followup to 33-234 for a non-major like myself that probably won't go much further in physics.
33-341 Thermal Physics IAfter a break from physics, I took 33-341 thermal physics with Rosen, which covered most of Schroeder. The course start fairly easy with basic stat mech and the second law. More interesting topics like phase transition or Bose-Einstein statistics came fairly late. Though lectures had some theoretical derivations, homework was mostly computation problems, generally the earliest and easiest problems in the textbook. I think I might've benefited from a rigorous stat mech course more.
33-104 Experimental PhysicsThere is also 33-104 experimental physics, which despite being designed as a course for physics freshman, seems to contain more CS seniors. I took the class as the latter role. Honestly the experiments are kind of fun if one works in a nice group, but the six hours of class per week (in practice the median lab group seems to take around four hours) does take up time.
I was sort of thrown into 03-121 modern biology by Hovis, but I actually ended up enjoying the class quite a bit (not a popular opinion). In high school I took one year of honors biology. I thought this class went into much more depth in cellular biology, to the point where I felt like I actually started seeing a bigger picture, how cell systems functioned as a whole, instead of individual components. The course heavily weighs exams, which are open notes, and required fairly detailed note taking. With that said, I imagine the course heavily varies by instructor, and I took it with Lanni, who has since then retired.
24-101 Fundamentals of Mechanical EngineeringI felt like I should experience at least one engineering class and see if engineering would suit me, and I tried 24-101 fundamentals of mechanical engineering with Haidar. My iteration somehow has the lowest FCE evals of all iterations with Haidar, though I don't remember the course being particularly terrible. Most of the lectures on physics were quite boring to me, but I feel like the content was appropriate, and the lectures on engineering were a bit more interesting. Class participation can be completed with the course notes, so this was the first course at CMU I started occasionally skipping lectures. The homework was tolerable for freshman me, but probably would feel very tedious for me now. The labs were more fun. We introduced CAD and FEA via Solidworks and also did some 3D printing and laser cutting. The highlight of the course was the first project, where we designed a truss system that failed with a specific load, built it, and tested it.
18-240 Structure and Design of Digital SystemsTHIS is 18-240. As a CS student I was able to take 18-240 structure and design of digital systems without 18-100. The course started slow with combinational logic and FSMs, but the second half of the semester with RT-level designs and building a CPU were the fun parts. Homework and labs were somewhat tedious, but I felt they were necessary. Looking back, I did enjoy the labs, even though the experience of spending one's evening in Hammerschlag debugging until midnight was real. The labs had a random partner system, which I liked, though I was generally lucky with my random partner. I feel like the course was well ran, it helped me establish a valuable foundation regarding computer hardware, and maybe I'll make a bold claim and say that this course may be more useful than 15-451 for most CS majors.
For first year writing I took 76-107/108 writing for data/public problems, as many do.
85-211 Cognitive PsychologyFor category 1 I took 85-211 cognitive psychology with Noyce. There is mandatory reading before every class consisting of reading a research paper and making comments, and I found the reading to be quite interesting. Most of the learning does in fact come from reading, and the actual in-class discussions felt more supplemental. This is also a final project, and I made a janky audio perception demo.
84-325 Contemporary American Foreign PolicyFor category 2 I took 84-325 contemporary American foreign policy. I wanted to take a CMIST course, and this course happened to fit my schedule. It turned out quite nice. In the course, about half were political science majors, and half random majors. We typically spend the first 20 or so minutes of the class discussing current events, and it was cool hearing thoughts from other students. The major assignments involved building up to one main project with an essay and presentation, so the workload was quite light.
79-145 Genocide and Weapons of Mass DestructionFor category 3 and cultural/global understanding I took 79-145 genocide and weapons of mass destruction. History lectures are always cool, and this class was no exception. Law was certainly a good lecturer. A total of three short essays and one main essay throughout the semester is also not too bad. Recitation attendance is required though. Admittedly I don't remember too much about this course.
60-157 Drawing for Non-MajorsFinally, not needed for anything, I took 60-157 drawing for non-majors with Petruzzi. If I had to come up with an excuse, I think graphics is also more art than science, so maybe some fine arts exposure will be nice. The content for this class also varies significantly by instructor, and for us it is just representational drawing. Not much theory was taught, and we are just thrown in to start drawing and experimenting, and I did like this philosophy. Everyone in this class has at least some prior drawing experience. Though my ability is certainly below average, I never felt like I couldn't follow along with the class, and my skills improved noticeably with the course.
17-200 Ethics and Policy Issues in ComputingLast is 17-200 ethics and policy issues in computing. Rather than just focusing on ethical dilemmas, the course attempts to engage more in practical ethics considerations. The instructors, especially Skirpan who does most of the lectures, are very passionate about the subject and making a change in the world by teaching students. Every lecture has full class discussions, and sometimes small group discussions before full class. I do not think full class discussions were effective. Attendance points and the lack of preparation encouraged people to speak quickly without deep thoughts. The weekly reflections had very picky grading. The three essays and group presentation were fine. One more problem is that I felt the course disproportionately focused too much on issues surrounding social media and artificial intelligence, which I had little interest in. My overall opinion of this course is mixed. For an easier technical communication class, 07-300 probably is less work for someone already doing research, and for science and society, there are many other cool options. Retrospectively, for me I probably should've considered another option. Still, even if this class only manages with a small probability to convince you to make a big difference, by expected value it might a highly impactful courses.
Many students wonder how to get involved in research at CMU, so I'll attempt to address that briefly here. For math students, SEMS is a good first research experience and a good amount of projects are accessible to freshmen for freshman summer. 21-410 research topics in mathematical sciences run during some semesters, and I believe sometimes take students with no prior research experience. For CS students, there is a SCS research/project opportunities spreadsheet every semester, and it may be nice to try some research with low commitments and gain research experience.
By sometime in your junior year, you will hopefully have some research experience and settled on some area of interest, and you will likely need to contact professors in your area directly and ask for possible research opportunities. If you want to do an SCS honors thesis or math masters thesis, this is also about the time to start planning. You could cold email, but it may be better if you have taken courses in the area and know the instructor, and then ask the instructor if they or anyone they know might take new students for research. Funding may be possible through SURF in the summer or from the professors directly.
For math, NSF REUs are popular, and I do believe it is valuable to do research at a different institute and see different perspectives. To apply, you will generally need two letter of recommendations. REUs are competitive, and it is best if one letter comes from a previous research advisor, whose area of research need not match that of the REUs, but should attest to your ability to conduct independent research. For the other letter, a good did-well-in-class should be fine. For CS it is more common to stay at CMU, given that CMU already has a huge CS school and so many faculty.
I also think it is especially valuable to find a summer opportunity at another institute in junior spring, one where you would be happy to go to grad school for, since professors tend to prefer hiring students they already know, and you may get a "return offer" if you do well. Obviously this will depend on your field, but generally, the more niche and smaller your field is, the more important this is. On the other hand, for some fields you are sort of expected to have publications before grad apps, so you will perhaps need to focus throughout your junior year and summer on the same project to get a publication.
An ideal, and I emphasize ideal, timeline for students interested in grad school might be to do SEMS or an internship in freshman summer, REUs or research at CMU in sophomore and junior summers, and a thesis during senior year.
21-599 Undergraduate Reading and ResearchFor myself, I really liked 21-269, and for my freshman summer I asked its instructor Prof. Giovanni Leoni for research. I ended up doing research alongside taking 15-150 and 15-213. Analysis research is highly technical and difficult for a freshman, so the research ended up more like a reading course or independent study session, though I did get some small original results towards the end. Prof. Leoni was also nice enough to pay me, without having me to do SURF officially. I got the research to count for 21-599 credit, though I counted it during a later semester so I didn't need to pay extra summer tuition.
21-410 Research Topics in Mathematical SciencesI took 21-410 with Prof. Theresa Anderson in junior spring. This was ran like an REU, with a simple application needed and prior research assumed. My group was given a difficult problem as a followup or generalization to a previous iteration of the REU in the summer, and Prof. Anderson didn't quite expect us to solve the problem. But we ended up solving it. I fleshed out our proof and wrote it up over the summer, and we submitted the paper in the fall. I also gave a presentation at the Sigma Xi poster competition and got the research to count for MCS research honors.
07-599 Honors Undergraduate Research ThesisFinally, building off of my course project from 15-769, I did 07-599 SCS honors thesis with Prof. Minchen Li. The total time I spent on the project is probably not too far from that expected from the unit count, though a fair amount of the research was done in my junior year. For the thesis course I had to give two presentations, one poster presentation at meeting of the minds, and write up a thesis, which wasn't much work on top of the research I would do anyways. As of the time of writing, I'm still tying up the work, to be submitted to a conference in a week.
Other ResearchAside from research counted for credit, I did some research with Prof. Ioannis Gkioulekas. He was easy to reach, since in his class he explicitly mentioned that his group is hiring undergrad students. Once again, I got paid from some extra money on his grant. So I guess this used to be pretty common, but I'm not sure if it still is the case now due to recent funding cuts. I also attended an NSF REU and NSF IRES in two of my summers. Indeed, my research experience tends to be as diverse and unfocused as my course experience. While I do wish I cut down on course exploration, I think that my research exploration was useful for myself as I had to choose between analysis and graphics.
Stucos are one of the big gems of CMU, and I tried to take two stucos every semester since junior fall, where I no longer have late night recitations. For some topics, I was pretty familiar with it, but for other topics, I hopped in the course having little idea what the topic was about. Regardless, I was curious to hear the opinions and thoughts of the passionate instructors and other students. I think this is a very efficient use of one hour a week. Among the Stucos I listed, open source chip design has become an official ECE course 18-244, and MCstuco and Teaco are long running stucos. The other stucos often only run for once or twice, due to both instructor availability and and a limited amount of students being interested in the topic. Thus, it is recommended to take an interesting stuco as soon as it shows up.
Clubs are similar to courses as they represent organization, commitment, and an opportunity for learning, so I thought it makes sense that I also mention them on this page. At my time at CMU I consider myself to have had non-trivial involvement with the following clubs and organizations, in alphabetical order: All University Orchestra (AUO), Carnegie Tech Radio Club (W3VC), Carnegie Mellon Informatics and Mathematics Competition (CMIMC), Carnegie Mellon Pipes and Drums, Computer Graphics & Animation (CGA), Game Creation Society (GCS), Historical European Martial Arts (HEMA), Kiltie Band, Tartan Wind Ensemble (TWE). For a few of these, my involvement was more limited, typically being one semester of active participation and usually participation in one major project or event. For the Kiltie band and CMIMC, I've been an active member for all four years, and for CMIMC also three years as an officer. All club experiences were highly valuable, and I wish I had more involvement with these clubs and also with some other clubs.