Slideshow
Due Monday Sept. 23rd @ 9 am
From this assignment, students will show...
Abstractions and Representations - Recognition
by recognizing tradeoffs or design questions previously as they manifest in Slideshow without explicit prompting.
Technical Reading Comprehension - Recall
by providing witnesses from the paper to answer questions spanning the breadth of the topic.
Technical Writing - Recall
by providing complete sentences and illustrating their intent during the writing activities (e.g. providing a claim, an example or analogy, and an effect or impact).
CodeGen and Metaprogramming - Recall
by describing the language implementation and, where appropriate, applying the vocabulary gained from class discussions.
Language FrontEnd Design - Recall
by evaluating the language design and interface from a user's perspective and, where appropriate, applying the vocabulary gained from class discussions.
Documentation and Usability - Recall
By considering benefits we expect languages to provide via our inclass discussions in the context of a Slideshow user.
Composing Feedback and Evaluation - Recall
By asking questions and determining evaluation criteria about the implementaiton of Slideshow from a metaprogrammer's point of view.
Note: For recall learning objectives, please tell me what skill you had to apply again and where it was originally applied. for recognition learning objectives, please tell me what problem you recognized from the questions and activities in addition to recalling and applying the skill.
Let's begin
The Slideshow paper can be found here in addition to the reading repo.
Please answer the following questions
- What is the domain of Slideshow?
- In a few sentences, describe how Slideshow is implemented.
- What are the primitive abstractions/objects supplied by Slideshow?
- Does Slideshow have a runtime system? If so, what does it do?
- What host language is Slideshow embedded in? What features are borrowed from the host language?
Please write a user story (vignette) for slideshow
Your user story should walk through the experience a user has
making a slideshow for their school project.
Your user story should achieve the following criteria:
- It gives a description of the user, their technical level, their programming experience, and their work/coding environment
- It starts from a task that the user thinks slideshow would be good for
- It references what primitives are used and includes a sample code (or pseudocode) snippet to illustrate what the user is doing
- It compares and contrasts the workflow to state of the art e.g. PowerPoint, Google Slides, LaTeX Beamer
- It summarizes what the user feels or perceives at the end of the task
An example user story for
Troll .
Note, this Troll example user story is missing some analogous features that I would expect in yours for Slideshow (e.g. comparing to
normal work flow), so please use it as a style guide and not as a template.
Please draft a technical email for the designer of slideshow
Note: we are not actually emailing the implementor of Slideshow.
In this technical email you are given the role of Language implementor intern.
Your task is to determine whether it is reasonable to embed Slideshow in Haskell (as a host language) using the metaprogramming techniques we've introduced in class.
At a high level, describe an optimistic approach to tackle this problem to an audience of the Slideshow designer.
Specifically, an audience that will know a lot about slideshow and language design and implementation, but little about Haskell metaprogramming specifically.
Include questions for this audience that you have about the implementation, how it is embedded in its current host language, and what metaprogramming features you might need. These questions should be specific enough and include enough detail such that, given an answer, the way to compare the answer to your optimistic approach is readily apparent.
Determine what evaluation criteria you will use to know if you are successful in implementing slideshow in Haskell. Provide feedback on the design if it helps you justify your evaluation criteria. E.g. If and why you are not supporting any features.
Note: This homework task is not designed to quiz you on your detailed knowledge of either Slideshow nor Template Haskell. Please feel confident to include questions or ask for clarifications, and you will be rewarded for commiting to your understanding as it is even if it might be wrong. This exercise is a first attempt at bringing our technical reading into the mindset of "I can make this too". This mindset is what we will be trying to foster the entire semester.
Also, this homework task is not meant to test your ability to write to another person;
so if you find the framing distracting, please feel free to write your questions in
another format. I found that having a person to "ask questions to" a la rubber duck
debugging is useful.
META.md
META.md should include
- your name
- your utln
- how much time you spent on this assignment
- the witness "proof" for how you earned each learning objective with a note about recall for recall objectives
Please Submit
Contents to be submitted
- your answer to the hw05-1-slideshow/questions.md
- your user story
- your technical email
- META.md
Method of submission
Please commit your changes in the hw05-1 directory of your private repo and push them to the remote server before 9 am.