Grades and deadlines
-
Initial deadline: 23:59 on Tuesday 09 December
-
How to submit: Turn in your completed
lab6.1.ymlfile, after you upload your (or your team’s) slides to the shared google folder.Everyone must individually complete and submit their own yml file, even if you worked in a group, and even if you are not in class for the presentations.
To submit on the command line, run:
club -csi413 -plab6.1 -f lab6.1.ymlor
submit -c=si413 -p=lab6.1 lab6.1.yml -
Grading:
In this lab you will complete the following tasks:
-
Learn about an esoteric programming language by using AI tools and reading Internet sources
-
Create an engaging, 7-minute presentation that gives a technical overview of your language with real code examples and connecting to concepts we have learned about in SI413 this semester.
-
Answer the questions in the YAML file and turn it in.
If your submission meets the requirements for each task, you will receive 5 points towards your total lab grade.
-
-
Collaboration
Most of you will complete this during lab time, working with a small group on the same langauge.
If you are not present for lab that day, you will need to work on your own and submit the slides without actually giving your presentation.
-
Resubmissions:
Because of the end of the semester, resubmissions for this lab will not be possible.
Overview
Esoteric programming languages are languages which are interesting, often fun in some way, and which are Turing complete so in principle they could be used for any programming task. But these languages are generally not designed for serious work, and do not have a large user base; rather, they exist as “fun” programming challenges, or to demonstrate a proof of concept that some technique or idea is even possible.
You will form teams of 2 or 3 Midshipmen, select an esoteric programming language from the list below, and then build an exciting 7 minute presentation for your peers.
At most one team can select each language in a given section.
You must upload the slides for your presentation to a shared google folder that your instructor will email out, and each team member must individually complete and submit the YAML file to get credit for the lab.
YAML file
Download, fill in, and submit this file to indicate the work you did and to vote for the best presentations in three categories:
Use of GenAI
We encourage you to use generative AI tools such as Gemini to help research and build your presentation in the short amount of time you have. These tools might be useful to find resources, understand and help generate code snippets in your language, and build parts of the slides.
However, remember that LLMs can and do make mistakes. It is YOUR responsibility to make sure that (1) what you present is accurate to the best of your ability, and (2) you understand what is on your slides and are able to answer clarifying questions about it.
Presentation requirements
Your presentation must not be longer than 7 minutes. It’s December and your classmates have short attention spans, so keep it exciting and engaging!
You should include the following elements in your presentation:
-
A little context or history: who created this language, why does it exist, and what are its key defining/interesting aspects?
-
Some actual small code examples in your language to give the audience an idea of how it works and what code looks like.
-
(If applicable) talk about and possibly show any more significant programs in the language which are written by others. What have people been able to build?
-
(If possible) demo something actually working on a live interpreter.
Throughout your presentation, you should try and connect with topics and vocabulary we have learned this semester in SI413. Remember, your audience has never seen this particular language, but they have all written compilers and interpreters for other languages. Leverage that shared knowledge to make your short presentation time more effective.
The languages
In no particular order, here are the languages you can choose from for today’s lab. I am not giving links to these, although many (all?) should have a page on https://esolangs.org which might be a good place to start:
-
Befunge
2-dimensional programming language that looks like ASCII art
-
Piet
Bitmap images that look like abstract art are interpreted as code. The change in colors correspond to different commands.
-
Hexagony
2-dimensional programming language that works on hexagonal grids, laid out like a honeycomb.
-
Shakespeare
Code is written like it’s a play with stage instructions.
-
Rockstar
Code is written in the style of 80s hair metal band lyrics.
-
Chef
A cooking recipe is interpreted as code.
-
Brainfuck
A minimalist language with only 8 commands, each represented by a single character.
-
Whitespace
Spaces, tabs, and newlines are used in combination to indicate different commands. All “normal” characters are treated as comments.
-
APL
“Array programming language”, actually a legit language (not designed just for fun) which is still in use. Different commands are represented with special symbols.
-
FRACTRAN
A program is a list of fractions, and execution is performed by finding which fraction denominator can be cancelled out by the current state integer.
-
Thue
A programming language based on formal grammars and string rewriting.
-
INTERCAL
A satirical programming language with lots of jokes that were hilarious to nerds in the 1970s.
-
Malboge
A language that is designed to be nearly impossible to program in, based on cryptographic operations and self-updating code.
-
Entropy
A language where all numbers “decay” randomly over time.
-
FlipJump
Designed to be the simplest possible programming language: there is just a single instruction.
-
Whenever
Instructions in this language are executed in an arbitrary random order.
-
Velato
Music (in the form of a MIDI file) is interpreted as a computer program.
-
Chicken
The entire program consists of the keyword
chickenrepeated to indicate different commands.