AI Summary
[DOCUMENT_TYPE: user_assignment]
**What This Document Is**
This document contains a set of assignments for CS 784, a Programming Languages course at Wright State University. It focuses on core concepts within imperative and functional programming paradigms, and explores how these concepts are implemented and simulated within different language models. The assignments are designed to deepen understanding of foundational principles, moving beyond simply *using* programming languages to understanding *how* they work internally. Expect a focus on the relationship between environments, stores, and the execution of code.
**Why This Document Matters**
This assignment set is crucial for students enrolled in CS 784 seeking to solidify their grasp of programming language theory. It’s particularly beneficial for those aiming to understand interpreters, compilers, and the underlying mechanisms that power the languages they use daily. Working through these assignments will prepare you for more advanced topics in language design and implementation. It’s best utilized *during* the course, alongside lectures and readings, to reinforce learning and identify areas needing further clarification.
**Common Limitations or Challenges**
These assignments are not a substitute for attending lectures or completing assigned readings. They require a solid foundation in basic programming concepts and a willingness to engage with abstract ideas. The assignments do not provide complete, ready-to-run code solutions; instead, they challenge you to *develop* those solutions yourself. Furthermore, this document does not offer detailed explanations of prerequisite concepts – it assumes a certain level of prior knowledge.
**What This Document Provides**
* Exploration of the distinction between l-values and r-values in programming.
* Exercises relating to sharing and aliasing of data within programs.
* Investigations into side-effect causing primitives in functional programming.
* Tasks involving extending a base language to support variable assignment.
* Challenges focused on simulating language features like `letrec`.
* Problems centered around the concepts of objects and classes.
* Implementation exercises involving stack data structures.
* Exploration of message passing as an object-oriented paradigm.