Programming Languages are not fun at (my) university
I'm in my last year in university and so far I've had:
- a Functional Programming course
- a Fundamentals of Programming Languages course
- a Fundamentals of Compiler Design course (starting this semester)
(I probably butchered the translation of the courses' names into English, but you get the idea.)
In my opinion putting too much accent (especially at the beginning) on the theories and logic and maths and whatever magic supports all these is what makes courses like this unfun.
For example, in the first 4 hours of Compilers we mostly talked about finite automata and drew graphs on the table for stuff like "an automaton that accepts the language L = {w in {0, 1}* | w in base 10 is divisible by 3 }". If you see an exercise like this and go "oh boy! this sure is exciting!", I'm happy for you but I'm willing to bet my left nut most people don't find these interesting or fun.
I'm not saying the theory is not important -- I just think that students have to cast a few spells themselves before they become interested in the grammatical rules of Elvish or whatever they use to conjure fireballs. You don't need to know finite automata and regular languages to write a lexer and a parser for arithmetic expressions. Why not start with that, which is a thing students can do and they see immediate and concrete results they can play around with, and gradually introduce the theory as their tasks become more advanced and need new concepts to be solved cleanly and efficiently?