10 ms·
Advanced Compilers: Self-Guided Online Course
- debanjan16 4y agoAnother resource great for understanding how programming languages work is: https://www.plai.org/ https://www.plai.org/
- iainctduncan 4y agothanks for sharing this!!!!
- photochemsyn 4y agoJumping ahead to the video on LLVM, the instructor mentions his prior LLVM tutorial/intro which looks really helpful as an overview, with more informative links. Probably the best get-started tutorial I've come across yet: https://www.cs.cornell.edu/~asampson/blog/llvm.html https://www.cs.cornell.edu/~asampson/blog/llvm.html This is a great resource, I've wanted to learn how to use LLVM to compile to RISCV assembly for a while, e.g. https://llvm.org/docs/RISCVUsage.html https://llvm.org/docs/RISCVUsage.html
- epilys 4y agoThe kaleidoscope tutorial for LLVM is a good intro tutorial to read before one gets deeper into LLVM. The tutorial is in c++ but you can follow along in any language with LLVM bindings: https://llvm.org/docs/tutorial/ https://llvm.org/docs/tutorial/
- tomcam 4y ago> in the self-guided version, your end-of-semester assignment is to change the world through the magic of compilers. I’m not feeling any pressure or anything
- darzu 4y agoAdrian is a great guy and I highly recommend all his content. For undergrad level PL, I highly recommend Dan Grossman's MOOC[0] or recent class recorded lectures[1]. Dan's thesis work strongly influenced Rust's borrow checker. Disclosure: Dan advised me in undergrad and Adrian is a friend. [0] https://www.coursera.org/learn/programming-languages https://www.coursera.org/learn/programming-languages [1] https://courses.cs.washington.edu/courses/cse341/19sp/ https://courses.cs.washington.edu/courses/cse341/19sp/ (ctrl-f "Videos")
- JonChesterfield 4y agoThat sounded interesting. I think it's probably this Dan, https://homes.cs.washington.edu/~djg/publications/ https://homes.cs.washington.edu/~djg/publications/, making said thesis "Safe programming at the C level of abstraction", https://homes.cs.washington.edu/~djg/papers/grossman_thesis.pdf https://homes.cs.washington.edu/~djg/papers/grossman_thesis....
- LZ_Khan 4y agoAny other graduate-level self-guided courses worth doing? I'm interested in AI/ML/Statistics.
- UncleOxidant 4y agoThanks for this. His lecture on SSA was the best explanation I've found of SSA vs alternatives that I've found (building up a motivation for why you'd want to use SSA which is lacking in other explanations I've found) - and unfortunately, I'd lost track of where I'd seen it. Was looking for it again recently not having much luck (not on YouTube) And now here it is.
- JonChesterfield 4y agoThis one? https://vod.video.cornell.edu/media/1_130pq2fh https://vod.video.cornell.edu/media/1_130pq2fh SSA is functional programming (the paper) resonated with me, though I remain unconvinced by phi nodes relative to basic blocks taking arguments.
- ofalkaed 4y ago>This page lists the curriculum for following this course at the university of your imagination, for four imagination credits (ungraded). Seems rather ridiculous of Cornell to dictate terms for the University of My Imagination (UMI), if an imaginary professor at UMI wants to grade my work I think they should be allowed to do so and even grant me an imaginary degree if they feel I have earned it. Guess it is true, universities do stifle creativity.
- avinassh 4y agoAre there equivalent 'Advanced Databases: The Self-Guided Online Course'? Andy Pavlo's CMU 15-721: Advanced Database Systems is similar, where you will hack on Postgres to implement a Foreign Data Wrapper (FDW)
- fooker 4y agoHere you go: https://users.cs.utah.edu/~pandey/courses/cs6530/fall22/schedule.html https://users.cs.utah.edu/~pandey/courses/cs6530/fall22/sche...
- apavlo 4y agoThat class just uses my slides. It says so at the bottom of the page: > The lecture slides used in the course are taken from Prof. Andy Pavlo's CMU 15-721 course Just go to the source: https://15721.courses.cs.cmu.edu/spring2023/ https://15721.courses.cs.cmu.edu/spring2023/
- itsmemattchung 4y agoIs there an accompanying textbook for your course or only the papers that are listed?
- apavlo 4y agoNot for the Advanced class. We cover state-of-the-art systems. Textbooks are about 10 years behind.
- balakk 4y agookay I'm curious - what are dirty systems programming skills, professor?
- apavlo 4y agoIt's one of those things where you know it when you see it. I got 18 year old CMU students showing up knowing how write x86 SIMD intrinsics or ones with LLVM JIT experience. Dirty.
- happytiger 4y agoWhen am I going to be able to do self-paced for credit courses from good schools online without the crazy price tag?
- cinntaile 4y agoAn important component of credit courses is the time limitness so this seems unlikely to happen.
- samvher 4y ago> An important component of credit courses is the time limitness Huh? Why would that be an important component? I mean I know that it's typical for courses that come with credit, but in my mind it's just a side effect of the administrative side of providing courses, not something that's at all central to accreditation. I.e. if you build up the knowledge over a longer period (which you can still do with e.g. resits) that's completely fine as well.
- solarmist 4y agoMostly because self-paced = doesn’t finish. Read any of the research on MOOCs and it becomes clear that we don’t have a clue how to write a self-paced course people finish with any regularity.
- Icathian 4y agoSelf-paced is the tough ask. Part of the value of formal schooling is the forcing function of deadlines to make you actually spend the time and absorb the material.
- artificialLimbs 4y agoHow much do you think it should cost?
- Icathian 4y agoGeorgia Tech's OMSCS comes in at about $7k total. I think that's a good place to start.
- jws 4y agoI went through part of this while working on some liveness analysis. The lecturer and the notes do a good job of conveying ideas. Well worth using as a resource.
- satvikpendem 4y agoAre there any courses on creating a new language, interpreter, and compiler from scratch? Like not using LLVM or similar to generate intermediate representation but to literally pick an ISA and, well, compile for it.
- bgar 4y agoCheck out https://mitpress.mit.edu/9780262047760/essentials-of-compilation/ https://mitpress.mit.edu/9780262047760/essentials-of-compila... Author has made complete draft PDFs for both the Racket and Python versions available here. https://wphomes.soic.indiana.edu/jsiek/ https://wphomes.soic.indiana.edu/jsiek/
- _the_inflator 4y agoThanks, highly appreciated. I tend to be biased towards what Jeremy Siek himself markets as "Proven in the classroom" when it comes to book authors in CS. Many book authors lack this experience and simply write for themselves, which is ok, but can result in bad didactics. Good teachers and authors from academia are invaluable.
- abecedarius 4y agoThat's a great point about experience teaching the topic. (I've written a few articles where I certainly wished for that experience.) I just wish textbooks didn't have their own bad tendencies: they have pablum as an attractor, because on average students just want to get through the class, not doing too much worse than average among the other students. Even without this problem, there's a more basic one: like with enterprise software, the decision to buy the book is not typically up to the user. "Will people actually want to read this on their own time?" is a strong driver of quality, even though it has pitfalls too.
- mrkeen 4y agoHave a look at https://keleshev.com/compiling-to-assembly-from-scratch/ https://keleshev.com/compiling-to-assembly-from-scratch/
- deleted 4y ago[deleted]
- tester756 4y agoI 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
- agomez314 4y agoLove the recommendations people are giving out here, not an exaggeration to say that HN gave me a better CS education than my M.S.
- rg111 4y agoNot an exaggeration at all. HN gave me much better education in CS and programming than any traditional source.
- abhaynayar 4y agoWhenever I need to learn about any topic even non-tech I search it on hn.algolia.com
- rcardo11 4y agoSame here! well curated resource
- jawadch93 4y ago[dead]
- yodsanklai 4y ago> I wish my school offered something even half good as this. Me too. In my school, we had great introduction/mid-level classes but at the graduate level, I found our classes underwhelming. Mostly Prof/Researchers teaching their narrow specialties and trying to recruit PhD students, but without putting much time in their lectures as they didn't care about teaching. Bunch of slides, research papers to read. They wouldn't bother making a heavy programming project, which was left to their colleagues doing less research.
- red-iron-pine 4y agoI'm in a Master's (and possibly jumping to PhD) program at a Big Tech School that you've probably heard of -- and that's my feeling as well. Fairly underwhelming. Lots of online resources to chase after to catch up to the state of the art, but a lot of the courses are things like the history of, and developments of, the technology. Worth knowing, but I don't need multiple, year-long adventures in this stuff -- get me to modern, and then let's solve some actual problems!
- JHonaker 4y agoI used to think like this until I actually spent some time with the modern things after learning a lot of the historical development paths. A lot of research is stitching together disparate ideas that have developed in their own little community silos. The best skills you can learn as a researcher are to appreciate, recognize (non-surface level) similarities between, and how to synthesize existing research. There's an awful lot of cult of the new that goes on in modern research.
- Swizec 4y ago> modern things after learning a lot of the historical development paths While not research, it is nontheless interesting to watch every generation of programmers (including mine) re-discover RDBMS after tripping over all the pitfalls with the hot new stuff.
- jjice 4y agoI hope I actually sit down and go through this because this seems like an excellent resource. I took a grad level (they just let us take them as undergrad) compilers course in college and it was the most fun I've had at Uni. It was all SML building a functional language that supported a solid type system with ADTs and parametric polymorphism and it was so interesting to see that it wasn't as complicated as it seemed to implement (although time consuming to iron out bugs). My prof developed a production SML compiler that's fairly widely used, so he was the best resource I could have asked for. Such a humble guy as well. The thing that was most interesting to me was the use of ADTs on the implementation end. I couldn't imagine how much more tedious it would be dealing with the many types of trees a compiler deals with without them. The class's impact on my overall career isn't direct, as I don't work near the compiler space at all (unfortunately), but there were so many good type level concepts I got out of that course. Plus, it was just a blast. Late nights with a bunch of tmux panes ironing out bugs to rack up test coverage - such fond memories :) I highly recommend playing with compiler implementation for anyone that's unfamiliar. There are a lot of good introductory resources out there and they're just such a fascinating part of our industry. A beautiful cross roads between CS theory and practical application.
- sn9 4y agoYour comment seems as good a place as any to drop the requisite Yegge compiler evangelism piece: https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html https://steve-yegge.blogspot.com/2007/06/rich-programmer-foo...
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- shpongled 4y ago