98 lines
4.8 KiB
Markdown
98 lines
4.8 KiB
Markdown
# YREA SLS
|
|
*Kyler Olsen*
|
|
*October 2025*
|
|
*Snow College*
|
|
*SE 3250 Survey of Languages Final Project*
|
|
|
|
Language Code Name: YREA **SLS** (*Stack Language Specification*)
|
|
Language Specifications: [sls.purplecello.org](https://sls.purplecello.org)
|
|
Language Specification Repository (Private): [git.purplecello.org](https://git.purplecello.org/KylerOlsen/LangsFinalPlaning)
|
|
Language Implementation Repository (Private): [git.purplecello.org](https://git.purplecello.org/KylerOlsen/YREA-SLS)
|
|
Language Implementation Repository (Mirror on GitHub) (Private): [github.com](https://github.com/SnowSE/final-project-KylerOlsen)
|
|
Assignment Page (Private): [snow.instructure.com](https://snow.instructure.com/courses/1154808/assignments/16233203)
|
|
|
|
## Assignment Description
|
|
|
|
**Overview**
|
|
|
|
In your final project for this course, you will do the following:
|
|
|
|
- Decide on a modest personal project to complete in a new-to-you
|
|
programming language (during class time, we will randomize the list of
|
|
people in the class and allow languages to be selected uniquely on a
|
|
first-come, first-served basis; be prepared to pick the language you want
|
|
and to advocate for the languages that you don't want).
|
|
- Without using AI generated or suggested code, complete your project in
|
|
your assigned language including automated testing. Find a way to make your
|
|
useful implementation concise and elegant enough that you would be able to
|
|
recreate it reasonably quickly without AI assistance (be prepared to
|
|
demonstrate this ability during a one-on-one interview to ensure credit).
|
|
- Using AI help as desired, create a faithful port of your implementation
|
|
(including tests) to:
|
|
- Rust
|
|
- Python
|
|
- Java (optional, but it might be interesting and userful for your
|
|
resume)
|
|
- C# (optional, but it might be interesting)
|
|
- typescript (optional, but it might be interesting)
|
|
- For each ported implementation, add one addition feature (not present in
|
|
the original or other ports).
|
|
- Prepare a report that describes:
|
|
- the problem that your project solves and why you are interested in it
|
|
- a brief description of how the language that you chose and the port
|
|
languages were or were not each a good fit for the project
|
|
- three examples of ideas you learned in the course that you leveraged
|
|
to the implementation in your assigned language elegant, efficient, and
|
|
concise/maintainable (at least one idea should specifically come from
|
|
functional programming) -- make sure to be specific and teach the reader
|
|
something valuable for each of these
|
|
- at least one struggle that you faced (or that you imagine that others
|
|
would likely face) for each language implementation, and what you
|
|
learned from working with the port languages during the porting process.
|
|
- Prepare slides that help you teach the key ideas from your report to the
|
|
class.
|
|
- In a 5-8 minute presentation during the final exam slot, use your slides
|
|
to teach the class and demonstrate your running project including the
|
|
addition port features.
|
|
|
|
Project Scope
|
|
|
|
- Please do something that will be fun and interesting for you!
|
|
- Make sure that the project actually solves a problem that you care about.
|
|
(Entertainment counts, but if that is the problem you care about, then make
|
|
sure that you can make something that actually is entertaining!)
|
|
- I'm expecting you to dedicate about 15-30 hours to the entire project
|
|
(including all three implementations and the report/presentation
|
|
preparation). I'm expecting that your initial implmentation should feel
|
|
like about twice the scope of implementing the game of life in PostScript
|
|
or K.
|
|
|
|
**Languages**
|
|
|
|
For what it is worth, here are a few resources that rank or compare different
|
|
programming languages in terms of popularity or jobs (but they don't equally
|
|
capture how programming in the languages will give you tools for thinking
|
|
about and solving problems):
|
|
|
|
- https://spectrum.ieee.org/top-programming-languages-2025
|
|
- https://www.tiobe.com/tiobe-index/
|
|
- https://survey.stackoverflow.co/2025/technology#admired-and-desired
|
|
- https://survey.stackoverflow.co/2025/technology#most-popular-technologies-language-prof
|
|
- https://tjpalmer.github.io/languish/
|
|
- https://www.geeksforgeeks.org/blogs/top-programming-languages/
|
|
- https://github.com/breck7/pldb
|
|
|
|
Here is the list of programming languages that you will be able to choose from
|
|
for your initial implementation (each language will be chosen by at most one
|
|
student; we will choose during class time on Oct 27):
|
|
|
|
- **C** Kyler
|
|
|
|
**Submission**
|
|
|
|
Submit all material (including report and slides) via github classrooms repo.
|
|
Also, submit your github repo link and the path to the report and slides file
|
|
in the canvas text box for this assignment. The grace period for submission
|
|
ends at 3pm on Monday, Dec 8. Presentations will be 3:30pm - 5:30pm. For full
|
|
credit, you must present and watch the presentations of your classmates.
|