About

Hi, I’m Dmitry — an engineering manager interested in learning and education. I blog on topics of programming languages, compilers, parsers and advanced JavaScript.

You can find my classes on dmitrysoshnikov.educaton school which I run and also on Udemy platform.

For the latest updates you can follow me on Twitter @DmitrySoshnikov, and can also explore my side projects on Github.

If you find this content helpful and useful, you may also [ support ] the project.

Feel free to message me in case of any questions on classes and don’t hesitate posting questions in comments on blog posts.

Have fun with studying compilers and deep JavaScript!

– Dmitry Soshnikov

Write a Comment

Comment

86 Comments

  1. Hi @Ramaj, for a DSL I recommend Building a Parser from scratch and Building an Interpreter from scratch. If you’d like to make an automated parser instead, the Parsing Algorithms also would work.

  2. Hi, Dmitry, I have bought all of your courses on Udemy, I posted a comment earlier. What order would be the best to complete them all? Is it preferred to have prior Assembly knowledge at all before starting any of them? (Like some concepts etc.)

  3. @Max — congrats! I would recommend starting from the “Building an Interpreter from scratch” (understanding runtime first), then going to “Building a Parser from scratch” to make your language look nice with syntax. No Assembly knowledge is required here since these two are high-level at AST. After that going to lower-level, “Building a Virtual Machine from scratch” (in-progress and is coming soon, understanding bytecode/Assembly would be a benefit here). Then if you’d like to go to deeper theory, then “Parsing Algorithms”, “Garbage Collection Algorithms”, and “Automata Theory”. Good luck in building programming languages.

  4. Hi Dmitry,
    I see you have posted a few videos regarding “Build a virtual machine from scratch” on youtube. Looks like it might a playlist of about 29 videos.
    I have waited patiently(almost a year now) for this series. When “exactly” will this course be available on udemy.

  5. Hi Shreeya, thanks for the interest. Currently I target the release closer to the end of year, however it might come earlier.

  6. Hi Sir Dmitri,

    I created content about microblog, may I raise your content as my microblog?
    I usually simplify the language so that it is easier for people to understand why we have to learn it. I ask permission to promote the material you sell on my Instagram feed, would you like it?

  7. Greate courses so far. what is your plan on next courses? any chance sthg like
    type inference, type checking with advanced polymorphism in it?

  8. Hi cedu, thanks for the feedback, glad you like the courses. Yes, type systems might be next, will definitely consider.

  9. Working through your courses, you are often skipping some things. In particular right now I am struggling with the Virtual Machine course where you never initialize the STACK POINTER yet push and pop things into it and magically do not get a segfault. I, of course, *do* get a segmentation fault. I think it would be helpful if you would post, somewhere, working code for situations like this. I have flipped now through video of lecture 4 like 5 times and NOWHERE do you initialize the thing yet magically your code works, so obviously you DID initialize it when you actually did the exercise. Since it is not in the video anywhere though, the person attempting to follow along is totally lost. This is one example, there are many others I keep coming across when I did the interpreter class.

  10. @David C — thanks for the feedback, the example with the uninitialized stack pointer is very valid, and should be addressed in the following up videos and also in the comments to the video. I have updated the source code skeleton to include this parts. Please let me know if you see other cases to be updated.

  11. Just finished the byte code interpreter class (virtual machine), I am struggling with my system with having some segmentation faults in some scenarios that I haven’t been able to figure out – I believe not pushing something on the stack at some point because I can find cases where I get at end of execution a pop error about empty stack. That said, I learned a lot. I wish there was some email or something where a student could write to ask questions or point out situations where something is maybe missing, rather than comments here being the only communication option. Also, I am wondering – do you have plans to do the JIT compiler class you mentioned at the end of the video?

  12. @David Clifton, thanks for the feedback, David – yes, lower-level VMs, especially with specifics of C++ may have harder to debug issues, and segfaults may happen. Usually recommendation is to go over the debugging via lldb and similar tools, and trying executing step-by-step each line, starting from the very beginning in main function. You can also contact me via email, and yes – the JIT compiler may be following soon after the class on a static Typechecker.

  13. “You can also contact me via email..” – but I don’t see your email address published anywhere. Maybe you could put it inside the lectures for the paid course in notes or similar so you don’t have to post on public internet.

  14. @David Clifton, it’s my name at gmail.com, aslo Twitter DM or messaging system on Udemy/Teachable should work.

  15. Hi your courses are amazing thanks a lot! The animation are neat (especially the ones in the “Automata Theory” course”) which software are you using? After Effects?

  16. @Yannick – thanks for the feedback! Yes, this is a combination of the Good Notes, After Effects, live editing, etc.

  17. Hi Dmitry,
    I enrolled in the entire programming language bundle and absolutely loved it! You are a genius who can explain even the most complicated concepts in the most elegant way!!!
    Could you pls let me know when the JIT compiler and LLVM course will be released? Can’t wait for those two courses!!

    I’m interested in further research into languages and would like to learn more about enabling concurrency and parallelism. Want to know deeply why Python is stuck with a GIL but JVM/CLR have full concurrency?

    My goal is to develop an easy to use toy language for high performance computing using parallelism (threads, actors and CSP)

    Thank you for everything you’re doing for us!!

    Regards,
    Vamsi

  18. Hi Vamsi – thanks for your feedback, glad you liked the courses, and glad to see PL enthusiasts as yourself interested in deeper topics. Yes, there might be a course on concurrency and parallelism in general (processes, threads, green processes, shared memory, locks, message passing, etc) – as all these are usually parts of a general purpose PLs. The next course though should be on Static Typechecker, followed by JIT module for the EvaVM.

  19. What’s the difference between “Programming Languages Ultimate Bundle 1” and “Programming Languages Ultimate Bundle 2”? Is it just one course more in “Programming Languages Ultimate Bundle 2” or other difference, thanks!

  20. Dmitry, I just finished the Building a Parser from scratch course and would like to say it has really helped explain a lot of the concepts I was missing trying to figure out how I would do this in a project I have been working on.. I am a JAVA programmer and now looking for the next step to implement in my project, which would implementing and running the parsed code.. Never stop learning!

  21. Kevin Rauer — thanks for the feedback, glad the course is useful, and glad to see more enthusiasts like yourself involved in parsers and compilers. More courses in the area to come!

  22. Hey Dmitry ! I’m so glad to found a amazing course here and thanks a lot for your great work, I’ve noticed that you mentioned a course named ” Programming language with LLVM ” in ” Build a Virtual Machine for programming language “, but I can’t find any link of that course. Is that still in preparation ? Can’t wait for that ! 🍻

  23. Hi ShenQingchuan, thanks for the the feedback, glad you liked the courses. And yes, LLVM course is a work in progress and is coming soon!

  24. Dear Dmitry, just trying to connect with you. I just sent you a message on facebook regarding a special request for my son who is IT geek and his IT hero is… YOU :). would you please have a look at it, Thanks, Natalia Buchova

  25. Hi, which is the optimal order to take your courses? (learning path)

  26. I am considering getting your courses. However, I don’t want to have issues right after I start and that seems to be the case in the LLVM module. I did the preview of lesson 1 and then it went to Lesson 2. I was unable to go back and repeat lesson 1. No matter what I tried it would go to lesson 2.

    Also the quality on some of the videos if sub par. Are these going to be fixed. I noticed someone commented 3 months ago but nothing has been fixed.

    Want to buy….. but.

    P.S. I noticed that you are not using a secure website for your personal website.

  27. @Bruce – thanks for the interest. Yes, you should be able to get back to any previous lectures, and move on your own pace (please let me know on which platform you observed the issue). The quality of the videos should be 1080 HD, different platforms may use different encoding though.

  28. Hello Dmitry! First of all, thank you so, so much for your work! Even by a few demo videos on YouTube it’s clear you’ve put a lot of effort in these courses. My question is about purchase models: what is the difference between “lifetime” and “per-month” on your full programming language course bundle? Lifetime gives access to all existing courses at the present moment, that is clear, but how does per-month payment work? Videos are not some continuous service that you could charge for like Spotify or YouTube Premium, so i am really confused.. Thanks in advance!

  29. @Elena Krittik – thanks for the feedback, glad you find the courses useful! The lifetime access as it is – one time purchase, and have access to the content. Monthly subscription is per month – you can cancel the subscription any time, but also lose access to the content.

  30. I have watched all of your courses, I love them, any plans on releasing a new course? JIT module maybe?

  31. Hampus – thanks for the feedback, glad the courses are useful! Yes, a mini-course on JIT (as an extension for VM course) may come up, but also a series on AI and Neural Networks.