Home

Some Quick Thoughts on 17th Grade

Gradute SchoolAIComputer ScienceChicagoUIUC

Today was the first day of my second semester of grad school*, going for a master’s in Computer Science, which marks the halfway point through 17th grade (12 grades in American public school + 4 years of undergrad before this year). Today feels like a fitting day to do some quick reflecting.

Why I signed Up

I was interested in going back to school for CS originally for two reasons. The first is that in my current job, I do almost all traditional software engineering, despite having a computer engineering undergrad degree. This means that maybe 2/3 (if not more) of that degree is basically irrelevant during my usual work day. I thought that by getting a more traditional CS degree, I’d enrich what I’d learn in undergrad with some more formal techniques, and overall just make myself a better engineer. This seemed worth pursuing.

The second main reason is that I wanted to go back to learning. I found myself romanticizing college, but not even so much the “fun” parts, but the learning. In the real world, the goals you make are your own, there are no set paths you’re required to take. While that is liberating, it is also stagnating if you’re not careful. One can fall into a trap of “just hanging out,” and it is easy to forget how to learn. There are so many distractions and so much noise in our immediate worlds of attention. There is something noble, pure in the pursuit of knowledge, in continuous learning. I thought I wanted to cultivate that feeling again, choosing to begin the process of going back to school.

I chose the MCS Program at UIUC for a couple reasons. Primarily, it was based in Chicago. I was elated when I found out that such a great engineering school (Illinois), which had been home to many great engineers and entrepreneurs I look up to (namely Andreessen, who I wrote my admission essay about), was offering this program downtown. They offered a lot of flexibility, it wasn’t too expensive, many great opportunities to learn and further my career. All the things that make a great American state school. It’s relatively new too, I think I was only the third class admitted into the program when I began in the fall of ’24.

First Semester

CS 598-JBR

This class was titled something along the lines of Large Language Models for Software Engineering. I knew I wanted to take some AI classes (around the time of registration Situational Awareness dropped and I was totally scaling pilled) and this seemed like a great start.

More or less, the class had 3 programming assignments which involved running the DeepSeek v2 6.8B regular and instruct models in Google Colab and evaluating them on a subset SWE-Bench and other adjacent programming tasks. The remaining part of the class involved reading two research papers a week and writing summaries on them, all relevant to how large language models do at Software Engineering. We had to present one of these papers throughout the semester.

I had a love-hate relationship with class. On the plus side, it did a great job of introducing me to research papers (which I had never really read frequently before), exposing me to many of the open questions relevant to the field (like LLMs dealing with code execution, evaluating tests, and remaining consistent across large code bases), and gave me a chance to interact with some models and benchmarks in code. Also, it wasn’t very difficult. The MPs were not bad, and neither were the research paper summaries, and at my peak I could have a paper and summary done in 45-60 minutes. Overall, a great introductory class to grad school.

But I think that’s the problem, I was looking for something a little more from my first ever 500 level class. Most disappointingly, the lectures often felt like a waste of time because they were just the other groups presenting on the research papers we’d already read, I felt like I wasn’t learning anything new really in the class itself. This was also disappointing because our professor was doing some cool research and had very impressive credentials, but she only taught the first three classes on a very brief overview of large language models.

I still felt the class was worth taking, I got an A, but I think I wish it had been titled Software Engineering for Large Language Models, rather than Large Language Models for Software Engineering. If that makes sense.

CS 470

This class was called Social and Information Networks. I took this class for a few reasons. The first is that I have listened to many different famous tech entrepreneurs talk about the importance of network effects of various software/social platforms, which I hoped would be included in the scope of this class. Also, it advertised some game theory, and as an Econ minor in undergrad, I was all about. Lastly, being a network class, I was also hoping it would get into some software graph theory a bit, as that is always my Achilles’ heel in engineering interviews, being a comp e undergrad.

The structure of this class was pretty straightforward. Weekly homework with multiple attempts, weekly quizzes with a single attempt, 3 long homework and a final. The weekly homework and quizzes were all multiple choice online, the long homeworks were a combination of coding and written problems. The final was essentially just a long quiz. It was also a flipped classroom, so we watched lectures for homework and in class would work through worksheets of relevant problems.

I definitely enjoyed this class much more than the other. I found it to be more engaging, half because of the content and half because of the structure of the class. The content mixed computer science with economics with sociology which I thought was very interesting. If you had taken this class anytime from 2010-2016, oh my god it’d be so relevant you’d do so well in industry. I felt like I learned a lot about early search/social media business models and scaling hypothesis, for example we learned about PageRank and various auction mechanisms for selling advertising, early internet models and social structures like triadic closure and power dynamics in relationships. Also some more theoretical concepts in social graph modeling like Erdos-Renyi and Watts-Strogatz. Just really cool. Lots of ground covered. It did feel like some aspects of the class might be dated in 5 years but I think it’s important to learn about these cycles of things. It’ll improve your pattern recognition.

I also loved the professor (shoutout to you prof Hari) and the classroom setup. Because of the flipped classroom, I was able to make a lot more friends in this class than in 470, mostly because of the discussions creating an incentive to actually come to class.

Of my hopes for this class, 2 out of 3 came true. We ended up learning about network effects and there was a lot of game theory also, but the graph theory (from an algorithmic standpoint) did leave a little to be desired, we never really went beyond BFS. But all in all, really pleased with the class. It was my first ever A+ on a transcript, would definitely recommend.

Other thoughts

The only other things I think I really want to mention about this semester are about doing school with work, and, of course, about AI.

In terms of work, if you’re interested in doing school part-time, first get on the same page with your manager or team lead or whoever. Doing this early helped a lot in managing expectations, especially as someone who took their classes during the workday. The other thing I wanted to mention is that going back to school kind of made me view work in a new lens. Two important notes here. The first is that wow holy shit does legacy industry move so slowly. The timelines are so different. In work terms, a semester is 7-8 sprints, and that is not a lot of time at all. In terms of my team, that’s maybe like 20-30 jiras? For 40 hours a week, that is not a lot of tasks to get done in 4-5 months. School is much faster paced (in my experience) and I found it very refreshing. This also made me realize how lukewarm I feel about my job. I’m very thankful for it, but I would not wake up inspired for work at all like I was for school. This program was key in helping me realize that.

In terms of AI, this semester just fully caused me to buy in on, in Sama’s words, the Intelligence Age to come. What caused me to buy in was that the LLMs (mostly 4o or o1/o1 pro) could do many of my assignments and not only better, but incredibly faster than me. Screenshot a problem, drop it in an LLM, wait at most 100 seconds, check its work, and the answer is there. Like unbelievable. Graduate level computer science is objectively considered difficult, and that’s the level it is on. Sometimes I would correct it, sometimes it would correct me, but it felt like a peer. It really made me step back and consider what this might mean for industry and academia going forward from here, just really impressive to see it in action.

And this is the worst it will ever be. It is entirely plausible that by my graduation (end of this calendar year) it will no longer be making any mistakes and may surpass some of the professors in specific domains. Not sure I can stress enough how interesting I found this to be, and how it’s going to reshape every level of education. But yeah, I thought that was worth mentioning, but back to school more generally now that another semester is about to begin.

What to look forward to

This semester, I’m really looking to go even heavier on the AI/ML stack. I also upped my schedule from 2 to 3 classes, which makes me a full-time student, which will probably be pretty tough with a full-time job, but I was seeking the grind. 2 of my classes are in person, and I’ve enjoyed meeting both of the professors so far.

The three classes are Machine Learning (CS446 - this one is online), Machine Learning and Compilers (CS521), and Mobile and Edge Computing (CS534). The thesis is basically that I can learn the theory and math behind many of the current ML models, then learn about the implementation of them at a very low level with the compilers, and then finally learn about the hardware on which many of them will run. I feel like this will give me a very strong foundation in the ML space, and that it’ll set me up well towards finding a job somewhere in this career space. I feel really pleased that I was able to set my semester up so cohesively in this manner.

I’m worried specifically that the ML and Compilers class will be the hardest. It seems really interesting, and we’re partnering with AWS to get credits to do the assignments in AWS training, but my c++ is a bit shaky right now, and it’s been a long time since I’ve worked with compilers at all. The online ML class might be shaky too, just because my linear algebra is rough. And yanno, now that I’ve mentioned it, I haven’t done hardware since undergrad so CS534 could be challenging too. But hey, trial by fire, pressure makes diamonds, other cliches. Somebody has got to learn the hard stuff, why not me.

I think this will end up being a worthwhile investment over both the short and long term. But it could be a really difficult next 4 months. But that seems like a trade I should make, so here goes.

*At the time of completion, this is now the first day of the second week of the second semester of grad school