CSSE304 - Programming Language Concepts

From RHLUG Wiki
Revision as of 18:46, 15 February 2024 by 137.112.205.104 (talk) (changed the section name "Homework Assignments" to "Coding Assignments")
Jump to navigation Jump to search

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.

As DrRacket does not natively support Git/GitHub features, collaborating with teammates may prove to be more tedious than usual. Some methods for sharing code include:

  • Opening VSCode and use its Git/GitHub features whenever code should be uploaded to GitHub
  • Using Git via command line to upload to GitHub
  • Submit code to Gradescope and add teammates' names to the assignment, then have the teammates copy and paste the submitted code from Gradescope

Coding Assignments

A great way to handle the assignments is to start working on them as soon as they are released. If any questions or roadblocks were to arise from the assignments, then the in-class lectures will likely answer most of the concern with the added bonus of coming to class prepared. Waiting until the last minute to do the assignments will introduce unnecessary headaches and make lecture contents more difficult to grasp.