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

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:

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
  1. your name
  2. your utln
  3. how much time you spent on this assignment
  4. the witness "proof" for how you earned each learning objective with a note about recall for recall objectives

Please Submit

Contents to be submitted

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.