diff --git a/docs/index.md b/docs/index.md index 8ddeed3..76367d4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,4 +29,8 @@ Next: Overview - F. [[Memory Management]] (Future) - G. [[Examples and Tutorials]] +**Addendum**: +- [[Missing Features]] +- [[SE 3250 Assignment Details]] + --- diff --git a/docs/missing_features.md b/docs/missing_features.md new file mode 100644 index 0000000..ef94cc7 --- /dev/null +++ b/docs/missing_features.md @@ -0,0 +1,18 @@ +--- +Title: Missing Features +Prev: +Next: +--- + +## Missing Features + +The following sections and language features are known to be missing from the +current version of the language specification, but are intended to be added and +implemented. These are not future plans, but rather features that have been +identified as necessary for a complete language specification. + +- Complete Type Reference +- The `sqrt` operator +- Constants + +--- diff --git a/docs/se_3250_assignment_details.md b/docs/se_3250_assignment_details.md new file mode 100644 index 0000000..b520d7b --- /dev/null +++ b/docs/se_3250_assignment_details.md @@ -0,0 +1,103 @@ +--- +Title: Assignment Details +Prev: +Next: +--- + +# 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: [git.purplecello.org](https://git.purplecello.org/KylerOlsen/LangsFinalPlaning) +Language Implementation Repository: [git.purplecello.org](https://git.purplecello.org/KylerOlsen/YREA-SLS) +Language Implementation Repository (Mirror on GitHub): [github.com](https://github.com/SnowSE/final-project-KylerOlsen) +Assignment Page: [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.