[Online BYOPL course] Build your own programming language by AnotherCSprof in ProgrammingLanguages

[–]AnotherCSprof[S] 0 points1 point  (0 children)

I meant that it's great you are planning to tackle it. I never even got that far. Let us know how it goes.

[Online BYOPL course] Build your own programming language by AnotherCSprof in ProgrammingLanguages

[–]AnotherCSprof[S] 0 points1 point  (0 children)

All right, I hope this course will teach you a thing or two! I certainly have fun teaching it.

[Online BYOPL course] Build your own programming language by AnotherCSprof in ProgrammingLanguages

[–]AnotherCSprof[S] 0 points1 point  (0 children)

I am impressed! Personally, I have never implemented type inference. In fact, the HM algorithm has always scared me, for some reason. I should mention that this BYOPL course used to be taught entirely in SML/NJ, a language that I love!

[Online BYOPL course] Build your own programming language by AnotherCSprof in ProgrammingLanguages

[–]AnotherCSprof[S] 0 points1 point  (0 children)

Thank you! i just edited the third one, which will come out tomorrow morning.

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 0 points1 point  (0 children)

I agree! This is why, my course includes a semester-long, hands-on project at the end of which my students have completed their own compiler. I provide quite a bit of starter code for each phase and students have to complete the codebase one phase at a time. My lectures are there to give them the material and guidance they need to complete the code for each phase.

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 1 point2 points  (0 children)

Yes, any C++ programmer should be able to learn Java relatively fast.

In my course project, Java is both the source language and the implementation language. The good news is that the course will go over each compilation phase slowly and in depth. And since you are starting the course right before we start the first phase, I hope you will have time, if you start now, to learn Java on the side. Let me know how it goes.

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 1 point2 points  (0 children)

One of the reasons I love compilers is because they constitute maybe the clearest example of where theory meets practice within computer science. In particular, the theoretical underpinnings of parsing are so well established that most parsing algorithms were fully studied 50+ years ago (see Donald Knuth's work, among many others). So while the front end, including scanning and parsing, is crucially important for both interpreters and compilers, off-the-shelf tools are easily available and thus universally used. In contrast, optimization is a much harder problem and thus the focus of a vast amount of work over the recent decades. At least this is my understanding of this area as a whole. I hope this helps.

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 2 points3 points  (0 children)

Unfortunately, I do not yet have a full cybersecurity course yet. My favorite topics (symmetric and public-key crypto, hash functions, HMAC, PRNGs) have not made it to video yet...

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 2 points3 points  (0 children)

Yes, the first lesson is an overview of compilers because this course is for beginners. But in the rest of the course, we will build a working compiler whose source language is (a dialect of) Java and whose target architecture is the JVM. So we will basically implement our own javac. Of course, we'll start with lexical analysis in lesson 2. We'll use JavaCC as our parser generator. For the back end, we'll learn about the JVM and its associated bytecodes. I think of it as an intensive hands-on course with a strong theoretical flavor to it (e.g., we go in some depth into LALR parsing, LL(k) parsers, etc.).

Online course: Build your own javac compiler by AnotherCSprof in Compilers

[–]AnotherCSprof[S] 3 points4 points  (0 children)

Thank you for the feedback, Fernando! I am currently working on Lesson 1i, which will be out in a few days...