CSSE304 - Programming Language Concepts
Class Description
Topics include syntax and semantics of programming languages. Grammars, parsing, data types, control flow, parameter passing, run-time storage management, binding times, functional programming and procedural abstraction, syntactic extensions, continuations, language design and evaluation. Students will explore several language features by writing an interpreter that implements them.
The first 4 weeks will mainly focus on teaching the semantics of Racket. Racket is a descendant of Scheme, and therefore a dialect of the Lisp family of programming languages. The class will use DrRacket, the IDE that comes installed with Racket, as the default software to write Racket code. The main difficulty of learning this language will be getting used to the functional programming style. Strong programming skills may mitigate the learning curve.
It is also important to note that 99% of the assignments are coding assignments using Racket, submitted via Gradescope.
Reading | Yes (optional) |
Homework | Daily |
Exams | 2 + 1 mini exam |
Final Exam | Yes |
Final Project | Yes |
Flipped Classroom | No |
Advice for Students Taking CSSE 304 (PLC)
Interpreter Project
The interpreter project, starting at week 4, is the first and last project, and thus the largest one. Students will be split into groups of 2 (or sometimes 3) via CATME. It is suggested to meet up with teammates at the earliest convenience once the CATME results are posted to familiarize with each other before diving into assignments. Once the interpreter project starts, individual assignments will slow down to a trinkle so that more time can be allocated to working on the interpreter. Due to this, assignment deadlines will decrease from daily to around twice a week. However, less deadlines do not mean less work to do, as the interpreter milestones may prove to be tedious and progressively more difficult. It is recommended to treat the milestones with as much seriousness, if not more, as the individual assignments.