3 ms·
I wish my school offered something even half good as this. I've seen it like 2 years ago and it is well prepared course. >CS 6120 is a PhD-level Cornell CS co
by tester756 4y ago
I wish my school offered something even half good as this.
I've seen it like 2 years ago and it is well prepared course.
>CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation.
I just dont understand why is this "PhD level"
- mattkrause 4y agoI’d guess “PhD level” just means it’s intended for graduate students in a PhD program. For example, they read and discuss papers rather than just working out of a textbook.
- gcr 4y agoI took this course when it was PL-focused in 2015ish! It starts with an in-depth exploration of the untyped lambda calculus (with the usual fixins like Church numerals, various combinators, etc), spending half a week or so on semantic expansion rules, reduction strategies, recursion, fixpoints, continuations, how one might encode state with only lexical closures, etc. After maybe the tenth lecture, the class takes a quick detour to talk about predicate logic, Hoare logic, dynamic logic, and Kleene algebra, before deriving a typed variant of the lambda calculus as an illustrative pathway into the latter half of the course featuring algebraic datatypes, unification, type inference, and the duality between formal logic propositions and typing systems. We explored subtype polymorphism, bisimulation, equirecursive equality, and closed on a gentle introduction to monads (of all things) and a teaser of category theory (which IMO should have been taught first but oh well). As more of a math course than a computer engineering course, 6120 was a first-semester Ph.D. level class, and I certainly wouldn't recommend taking it unless you really wanted to dive deep into the depths of programming language implementation. Incoming students were expected to be fluent in discrete mathematics and formal proofwriting skills. I wasn't, so I found myself falling behind at the start even though I had some familiarity with lambda calculus and algebraic datatypes. You definitely benefit from a strong math background.
- rachitnigam 4y agoYou’re thinking of 6110 (advanced programming languages) not 6120
- gcr 4y agoAh so I am! Thanks for the correction
- platzhirsch 4y agoAt my school we used the course work of Stanford for the operating system class which was amazing: https://web.stanford.edu/class/cs140/projects/pintos/pintos_1.html https://web.stanford.edu/class/cs140/projects/pintos/pintos_... It's really up to the professor.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- fooker 4y ago> I just dont understand why is this "PhD level" It would have been if the papers covered were closer to the state of the art. The most recent one is from 2015. However, this course would actually give you the background required to read more recent paper and work on compiler research, so calling it PhD level is not a huge stretch.
- Cthulhu_ 4y agoI mean a lot of programming language design goes back decades; it's better to focus a course on the basics that every language will have vs the most recent developments that haven't fully crystallized yet either.
- fooker 4y agoThere is a critical difference between programming language design and compiler design. You are right when it comes to programming language design and somewhat wrong when it comes to compiler design. If you are doing compiler research/development, you have to be familiar with the latest and greatest research because the margins for improving things are fairly slim. It’s usually fine to be not familiar with how things worked ~30 years ago. For programming languages, you absolutely have to understand the foundations to do absolutely anything.
- solarmist 4y agoAgain this is not necessarily for someone doing compiler research, but foundational knowledge for anyone at the PhD level. Someone doing compiler research this might be a first graduate level course to get them used to the technique and concepts used in more recent research for the might have two or three additional courses getting closer and closer to state of the art.
- HelloNurse 4y ago> If you are doing compiler research/development, you have to be familiar with the latest and greatest research because the margins for improving things are fairly slim. It’s usually fine to be not familiar with how things worked ~30 years ago. On the other hand, if the margins for improving compiler quality are slim they can be ignored without great consequences: it makes sense to study state of the art research only in the niches that turn out to be relevant for a specific need of a specific project, not blindly and at the expense of important general principles and techniques (i.e. mostly the problems of 75 years ago and the solutions of 25 years ago).
- frozenport 4y agoRight after undergrad.