1
$\begingroup$

I am an undergraduate CS student half way through my degree. I have started taking an online(Youtube) course on Programming Languages. The course contents include the following topics:

First-class functions, Pattern Matching, Type Inference, Type classes, Monads, Continuations, Objects & Inheritance, Modules, Generics, Memory Management, Concurrency. The course is primarily using Haskell and JavaScript to teach these concepts.

Now, I am not entirely sure whether a course on Compiler Construction is a prerequisite to this course or not. What other courses should be a prerequisite to this course?

Note: I have not had a course on Compiler Construction (CC) yet (I am currently in 5th semester of my degree and CC course is offered in the 7th), although I have a little bit of experience of programming in functional languages.

$\endgroup$
0

2 Answers 2

4
$\begingroup$

Typically a CS curriculum will have Programming Languages (or Programming Language Principles) either prior to Compiler Construction or concurrent with it. The course you describe is more like a "Principles" course.

Having the compiler course after the principles course has the advantage that it is reasonable to make the source language in the compiler course more "interesting". Normally a compiler is built for a single language so it is a bit more specific than the "languages" or "principles" course.

It is possible to do the compiler course first, but it would probably need to use a simpler "source" language than if the students had more breadth of experience.

$\endgroup$
3
$\begingroup$

I teach a Programming Language Principles before a Compiler course. I do have to talk a little about compilers, about 1 hour, just to discuss the compiled/interpreted distinction.

It is useful to teach this course after a Data Structure course (taught in C) so one can discuss complexity of some recursive code (naive reversing a list for example if the list is a linked list...) and give some intuition to the students on how some data types are implemented.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.