Discrete was mandatory. I took it as independent study because I had a time conflict."Formal Languages" not programming languages. Theory of Computation might be that. Pretty much Formal Languages is all state machines. It's the math theory for compilers. Minus the compiler part.
I still have to take Programming Language. Theory of Computation also covered languages.