Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

University of Virginia

Programming Languages

University of Virginia via Udacity


This class will give you an introduction to the fundamentals of programming languages. Key concepts include how to specify and process valid strings, sentences and program structures.


  • String Patterns
    • Find and specify classes of strings using regular expressions.,Learn how to escape problematic characters.,Represent a Finite State Machine.
  • Lexical Analysis
    • Breaking strings down into important words.,Write your own lexer that can tokenize HTML strings.,Use regular expressions to parse, lex, and tokenize HTML and JavaScript.
  • Grammars
    • How to specify and deconstruct valid sentences.,Parsing grammars and discovering errors using regular expressions.,Use generators to parse strings.
  • Parsing
    • Turning sentences into trees.,Discover malformed input.,Set precedence to prioritize parsing of strings.
  • Interpreting
    • Simulating programs.,Write an HTML interpreter.,Calling functions and interpreting function definitions.
  • Building a Web Browser
    • Interpreting HTML and JavaScript,Build your own web browser.,Optimize the performance of your web browser.
  • Wrap-up
    • Use regular expressions to parse HTML and JavaScript,Write an HTML interpreter.,Write a JavaScript interpreter.

Taught by

Wes Weimer


3.4 rating, based on 10 Class Central reviews

Start your review of Programming Languages

  • Anonymous
    Taking the course now, after completing Udacity CS101 and Learn Python the Hard Way. The course is much less thorough than CS101 and many concepts are poorly explained.

    For example, after explaining briefly what a token is, the instructor will show a 3 minute video with him using a Lexer to go through tokens, (without any explanation of how it works, why he wrote it that way, what the code does, how it interprets tokens, or anything else), then assign homework problems where you have to make them. You end up rewatching the videos several times and looking for content outside of the class.

    You'll learn, but don't expect explanations as thorough as in CS101 and expect to do self learning just to keep up.
  • Mihai Vinaga
    This course is great. I've written this comment to get it's ratings up, it's unfair that it has only 3.5. If you have at least 2 years of programming under your belt then this is the course for you. The assignments can be a bit hard but not impossible as long as you read them carefully, a habit that I don't have which caused me a lot of pain in this course. A great course prof. Grossman is great and in my opinion if you didn't liked this course then you don't have enough programming experience to take it.
  • Anonymous
    I really enjoyed this class. It was difficult and a lot of work, but it really helped me understand the differences between programming languages and some of the trade-offs between them. It is not an introduction to programming course, you do need to understand basic programming, especially recursion. The languages taught are SML, Racket, and Ruby. In summary, a great course taught by a great professor. Definitely recommend this course and any other course Prof Grossman would teach in the future.
  • Anonymous
    It is interesting how Dan Grossman starts the class by telling you that all assignments are described precisely and with minimum words. Actually the assignments are easy (for experienced programmers) once you get around the terrible instructions. I asked a friend whose job it is to 'translate' government speak to plain english and he thought a lot of the descriptions were terrible. There were similar complaints on the forums. Maybe Dan Grossman needs to consider and take on some of the comments rather than just arrogantly dismissing them outright. I would not recommend this course at all.
  • Thomas Kamara
  • Sachin Patidar
  • Anonymous

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.