Difference between revisions of "CSSE304 - Programming Language Concepts"

From RHLUG Wiki
Jump to navigation Jump to search
(changed the section name "Homework Assignments" to "Coding Assignments")
(added more links/resources)
 
Line 6: Line 6:


It is also important to note that 99% of the assignments are coding assignments using Racket, submitted via [https://www.gradescope.com/ Gradescope].
It is also important to note that 99% of the assignments are coding assignments using Racket, submitted via [https://www.gradescope.com/ Gradescope].
The [https://github.com/RHIT-CSSE/csse304 course GitHub repository] is always available and maintained by Buffalo.
{| class="wikitable"
{| class="wikitable"
|Reading
|Reading
Line 35: Line 37:
* Opening [https://code.visualstudio.com/ VSCode] and use its Git/GitHub features whenever code should be uploaded to GitHub
* Opening [https://code.visualstudio.com/ VSCode] and use its Git/GitHub features whenever code should be uploaded to GitHub
* Using Git via command line to upload 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
* Submit code to Gradescope and add teammates' names to the assignment, then have the teammates copy and paste the submitted code from Gradescope.
Please use Claude's old lecture videos as a resource during the later portion of the interpreter project (16/17/18 if numbers don't change). They basically give you a guide as to how to implement the features requested.


'''Coding Assignments'''
'''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.
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.
== Unofficial Advice/Resources ==
[https://www.reddit.com/r/rosehulman/comments/10xznoe/cs_plc_advice/ This] is a surprisingly useful reddit thread with advice from a few students and a professor.
PLC also has a class Discord server linked [https://discord.gg/tAnrnfJ6Dv here.]

Latest revision as of 14:29, 3 March 2024

Class Description[edit | edit source]

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.

The course GitHub repository is always available and maintained by Buffalo.

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)[edit | edit source]

Interpreter Project[edit | edit source]

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.

Please use Claude's old lecture videos as a resource during the later portion of the interpreter project (16/17/18 if numbers don't change). They basically give you a guide as to how to implement the features requested.

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.

Unofficial Advice/Resources[edit | edit source]

This is a surprisingly useful reddit thread with advice from a few students and a professor.

PLC also has a class Discord server linked here.