<p>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.</p>
<p>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.</p>

CC BY-SA 4.0
2022-08-31T21:57:35.583Z
2022-08-31T21:57:35.583Z
Jacques Wainer
<p>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 &quot;Principles&quot; course.</p>
<p>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 &quot;interesting&quot;. Normally a compiler is built for a single language so it is a bit more specific than the &quot;languages&quot; or &quot;principles&quot; course.</p>
<p>It is possible to do the compiler course first, but it would probably need to use a simpler &quot;source&quot; language than if the students had more breadth of experience.</p>

CC BY-SA 4.0
2022-08-12T11:32:09.583Z
2022-08-12T11:32:09.583Z
Buffy
<p>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:</p>
<p>First-class functions, Pattern Matching, Type Inference, Type classes, Monads, Continuations, Objects &amp; Inheritance, Modules, Generics, Memory Management, Concurrency.
The course is primarily using Haskell and JavaScript to teach these concepts.</p>
<p>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?</p>
<p>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.</p>

<functional-programming><compiling><language-types>
Should an undergraduate course on Programming Languages precede or succeed the course on Compiler Construction?
# Should an undergraduate course on Programming Languages precede or succeed the course on Compiler Construction?

(Asked by: username_0 on 2022-08-12)

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.

**Tags:** functional-programming, compiling, language-types


---

## 2 answers

### Answer by username_2 on 2022-08-12. Score: 4 | Accepted answer

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.


---

### Answer by username_1 on 2022-08-31. Score: 3

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.


---

