My Experience Attending OPLSS’25

The Oregon Programming Language Summer School (OPLSS) is a summer school that has been happening for the past twenty years, usually organized by Zena in Eugene, at the University of Oregon. I attended it in 2025, and I had a great time. I’m writing this blog post so that I can remember the details, and so that you can get an idea for what OPLSS is like.

This year’s OPLSS took place from June 23rd to July 5th, which means that we had two weeks of lectures. Note that the lectures are every day except Sunday, and a usual day consists of four lectures between 9am and 5pm. There are a lot of things happening in the evening, often organized by participants, so the entire summer school was quite exhausting, but also very fun. I never felt bored, and the other participants were very friendly and happy to organize or be along for almost anything. The overall vibes were like a multi-day class trip, but without the bullies and without teachers bossing you around uselessly.

Arriving in Eugene

In the weeks leading up to it, Jim (the local coordinator / co-organizer) asked every attendee to share their travel plans with him, so that we could meet up on the train/plane there. My travel plans were rather complicated, since I attended PLDI the week before. It was held in Seoul, and I then flew from there to Seattle on Saturday, and planned to take a train from Seattle to Eugene on Sunday. I shared this with Jim, and quickly got in touch with about ten other people also taking the same train. I even met up with one of them already in Seattle on Saturday, which was very helpful while fighting jetlag 🙂 The thing to stress here for future attendees is that you should communicate with Jim, it will make it a lot more fun.

The train ride there took quite some time, but every few stations, some more people also travelling to OPLSS joined, so we had lots to talk about. We arrived a bit too early, and thus went to grab Pizza together before heading to campus. Once there, we picked up our key and canteen card, and proceeded to our rooms.

I already mostly forgot how I spend the first evening. I definitely had dinner in the university canteen, which was surprisingly good! In general, the canteen serves breakfast, lunch, and dinner, and it’s good enough that I ate there most of the time (although it got a bit repetitive in the second week). I probably went to bed shortly afterwards, since I was still jet-lagged after having spend the previous week in Korea.

It turns out that most days at OPLSS followed the same rythm of breakfast, lectures, lunch, lectures, and dinner. The evenings (before and after dinner) were less monotonous, and were where most of the socializing happened. Instead of discussing each day, I found it more meaningful to discuss the different aspects of each day.

Breakfast at the university canteen (Unthank Hall).

Lectures at OPLSS

At this year’s OPLSS, we had 13 lecturers. (See the schedule here.) Some only gave one lecture, while others gave a lecture series consisting of about 4 consecutive lectures. The lecturers are disjointly split between week 1 and 2. Some lecturers did a great job and gave very good lecturers, others unfortunately did not. I’ll give a quick run-down of the lectures I enjoyed the most.

In the first week:

  • I really liked the lecture series by Anja Komel about Martin-Löf type theory. I already knew a good bit of MLTT, but it was helpful to see it presented in a new way. She also explained things very well, and managed to keep most of the audience engaged.
  • Brigitte Pientka gave a great lecture series on linear/modal logics through the lens of the Curry-Howard Isomorphism. She covered contextual modal types, which I had not seen so far and which were very interesting. I found the subject a bit “harder” than Anja’s (which might well be because I was less familiar with things), but I still really enjoyed this lecture, and learned quite a bit.
  • Nada Amin gave a lecture series about metaprogramming. Her lecture was quite hands on, and a lot of time was spend on live-programming an interpreter in Scheme. I had unfortunately never used Scheme, so the combinations of car and crd were mostly inscrutable to me. That was quite a shame, I’d happily have looked into Scheme if I had known beforehand that it would be helpful for the lecture.

The remaining lecturers in the first week mostly only gave a single (or two) lectures, often trying to give us some advice by telling us about their personal career. A priori, I was not too excited about such lectures, but after several days full of lectures about deeply theoretical mathematical foundations of PL, they were a welcome respite and actually kinda useful in showing what a sucessful researcher’s career looks like.

In the second week, the focus shifted a bit. During this week:

  • My favourite lecture was by Paige North, who gave a lecture series on Category Theory. Paige’s lectures were very interactive, which was great. Unfortunately, this caused a bit of drama when her first lecture was derailed a bit by people asking too many questions. Some people complained, discussions were had, and the next lectures went much smoother.
  • Delia Kesner gave a nice lecture series on linear logic. This was by far the most dense lecture; it was the only one where I had to revise the material again in the evening because I did not understand it during the lecture. I could not keep up the nightly studying sessions throughout the week, so I was a bit lost at the end. This was unfortunate since her work seemed very interesting.
  • Ningning Xie gave a lecture on effect handlers, explaining the differences between algebraic effects, (un-)delimited continuations, and so on. It also had some live coding at the end, which was fun and very hands-on. (This time it was in Haskell, so I managed to follow along.)

While writing this blogpost, I realize that using the black-board instead of slides is a very good predictor for whether I really liked a lecture: Anja Komel, Brigitte Pientka, and Paige North all used the black-board, everyone else had prepared slides. Of course, such a lecture is harder to prepare, but it seems like they are more effective, or at least leave a better impression. But I can only speak for myself.

I tried to take notes during the lectures, but I quickly realized that this does not help me learn (and the people on scholarships are already tasked with writing the official notes anyways). Somewhat surprisingly, it was much more useful to instead hang out on the internal slack. There was a channel for discussing each lecture, and a lot of discussion was happening there during the lecture. People asked clarifying questions, other people answered these, others yet linked alternative explanations, and some even discussed how this all relates to different parts of PL. At times, the slack chat was more informative than the lecture itself 😂

Evening Studies at OPLSS

It turns out that attending 6 hours of lectures every day does not satiate the average grad student. People were eager to learn more about various things, to explain their research, or to catch up on lecture topics they did not understand.

On Tuesday and Thursdays, there organized were “participant talks” with a length of 30 minutes, like at a conference. I gave a talk there about Tree Borrows, based on the talk by Neven (a coauthor) at PLDI the week before. Some people gave talks about non-CS topics, like one talk about baseball that motivated several of us to go see a baseball game (see below). On the other days, people coordinated on slack and met up in small groups to go over the lecture again, or explain some other topic. Together with Thomas, we gave an introduction to Iris. We tried to make it interactive, but that did not work out–instead, we just talked through an Iris proof in detail to explain various concepts there. I also listened to other students who gave a lesson in the History of Separation Logic, and (quite unsuccessfully) tried to learn some Cubical Agda. Others also talked about NixOS, or went through unrelated Math textbooks for fun. Basically every day, a few students would meet up and try to go over this day’s lectures again. While I often felt that I understood the material during the lecture, these meetings were still useful anyways. Half the time, I did not actually understand it that well, which I would not have realized otherwise. And when I did understand something, I could explain it to the others to help them understand it, which feels really nice when it works.

I also spend some time doing “in-depth” meetings. Thomas, with whom I did the Iris tutorial, spend quite some time on teaching me logical atomicity in Iris, which I had not fully grasped so far. Funnily enough, another person at OPLSS was also called Iris, and it turns out that she was doing research related to Tree Borrows. We spend some time exploring the more weird parts of Tree Borrows.

During those evening sessions, I leard as much as I learned in the lectures, if not more. These sessions are also a good way of socializing, since you get to know everyone and also get to see what they work on and how they approach certain problems.

Socializing at OPLSS

Arguably, OPLSS is not about the lectures, but about the friends you make along the way. I’m now excited about the next time I go to a conference like POPL or PLDI, since I know I’ll meet several people who I now know well thanks to OPLSS. Actually talking to people at OPLSS was a lot easier than I expected it to. You can simply start a conversation by asking people about their research, which everyone is happy to talk about. If that does not work, one could rant about the last lecture, or about some of the drama that had happened.

OPLSS took place in Eugene, a city of slightly less than 200k inhabitants. Eugene felt a bit sleepy, however, since it was the summer and most of the 40k students of the University were not there. Nonetheless, there were enough opportunities to socialize or go on outings. Jim, the local coordinator, took us on several walks into the local greenery, while re-telling his favourite anecdotes from the past 20 years of OPLSS and the past 150 years of University of Oregon history. On Friday in the first week, we went to a local brewery. The beer was nice, in fact a bit too nice, and I had to skip the lectures on Saturday morning. As mentioned before, one participt explained the sport of Baseball to us, and we went to watch the Eugene Emeralds utterly destroy the Hillsboro Hops the day after. The game was so lopsided that it was kind of boring, but the entertainment during the breaks was fun to see. We also played some card and board games in the evenings, or went on runs along the Willamete River in the morning. I rarely joined these runs since they would have required getting up at 7am.

On July 4th (Independence Day) some of us went to a vinyard. This was fun mostly because the other people there were all 60+, and because they had run out of food, which made the wine work quite a bit more quickly. The event ended early, and we then went to a bar.

Enjoying a baseball game.

Road Trips

Originally, OPLSS was scheduled to have one day off, namely Sunday June 29th, between the first and second week. About 40 people planned to go to Crater Lake on that day, but it turns out that the park was not fully open yet and much colder than expected. So instead, we went on a road trip down the Pacific coast. We visited the Yaquina Head Lighthouse in Newport, walked along the beach at Seal Rock, and hiked in the coastal forests, in Cummings Creek. At Yaquina Head, we got to see the weird creatures inhabiting tidepools, which are small puddles that retain water during low tide. We watched the sun set over the ocean from a dune at Jetty Beach in Florence, which was gorgeous. At Seal Rock, I also went for a swim in the sea. One other participant did, but everyone else chickened out because the sea was about 12° C. In general, the weather up there at the coast is much colder than I expected. During the sunset, I was shivering despite wearing a jacket. It was about 15°, but the wind was not making it better.

Impressions from the trip down the Oregon coast.

Due to some scheduling rearrangements, we got a surprise second day off, namely Saturday July 5th. This was supposed to be the last day, but now OPLSS ended one day early. Of course we still had our dorms until Sunday, but this gave us the opportunity to actually go to Crater Lake now, which had opened up a bit more by now. Crater Lake was beautiful, as were the vast forests of central Oregon which we drove through on our way there. I also went for a swim there, and this time more people came along, as the lake was a bit warmer than the sea. But it is at 2.000m of elevation, and there was still snow laying in some parts, despite it being July.

View over Crater Lake, and of a waterfall halfway between Eugene and Crater Lake.

We rented cars for both trips. If you want to go on such a trip and be the driver, make sure you’re over 25 and that you have a credit card. A debit card will not cut it. There also is a bus that takes you to the cost in Florence, but this way you probably can’t visit the nice spots in more remote parts of the coast.

Drama at OPLSS

There was a low but non-zero amount of drama at OPLSS. Unfortunately, some of it leaked to the wider public. I just want to say that you should not believe everything stated on the internet. What actually happened is (as usual) a lot less interesting. I feel sorry for those involved, the current situation just sucks for them and they did almost nothing wrong.

Besides this one occurance, the “drama” was mostly a source of memes and good fun.

Parting Thoughts

I had a lot of fun at OPLSS. If you are thinking of going there, I would recommend you apply. You can also go there as an undergrad, or if you just want to figure out if you are interested in PL. Some people went a second time. Some people now working in industry took time off work and paid for OPLSS out of their own pocket, just to go there a second time.

That being said, I found that OPLSS is more on the theoretical side of PL. There is a lot of focus on the Curry-Howard Isomorphism and “pure” type systems that are rather far away from “real-world” languages. I’m more excited about “practical” languages and safe systems programming, which squarely put me on the “applied” side the crowd. If you feel similar, you might also want to think about attending Marktoberdorf Summer School. I have not been there myself, but I heard many good things about it.

I felt a bit uneasy about going to the US due to the current political landscape there, but everything went fine in the end. This was sadly not true for everyone, some people had to go through extra interviews upon arrival into the US, and of course many participants needed (B1 business) visa, which also are a hassle. Between immigration issues, funding issues due to changes in NSF standing practices, and the organizers approaching retirement, it is unclear how long OPLSS can continue in its current form. I went to OPLSS because my advisor also went there 11 years go, and it significantly impacted his career. It would be sad if that opportunity was lost for future PL community members.

Thanks to everyone I met at OPLSS this year, and I look forward to seeing you all again at the various PL conferences!