Recall the academic
integrity policy: turn in your own work and cite all sources.
“Creative” (A Light in the
Attic),
by Shel
Silverstein
Design and implement something fun and functional using Haskell and your newfound advanced programming skills.
Will you break free from the creative confines of Wordle? Maybe, maybe not. Either way, be creative!
You may work in groups of either one or two students. Groups of two should propose and implement projects that befit the effort of two people rather than one.
Successful projects may incorporate many flavors. You might take
ideas from a previous programming assignment and extend them in a
substantial way. You might read up on and incorporate optional or more
advanced topics in your implementation — for example, parser
combinators, Traversable
, monad transformers,
generalized algebraic datatypes, zippers, lenses, mutable state, and much more.
See the discussion board for additional suggestions about project ideas, libraries, etc.
The project is worth 15% (~2 homeworks), factored into three milestones. Late days cannot be used for any milestone.
Project details announced | Week 4 | |||
Milestone | Points | Due | ||
---|---|---|---|---|
1 | Proposal | 3 | Fri Nov 10 11pm CT | Week 7 |
2 | Progress report | 2 | Fri Dec 1 11pm CT | Week 9 |
3 | Final submission, report, and presentation | 10 | Thu Dec 7 11pm CT | Week 10 |
Write a proposal that describes your concept and what you hope to
accomplish. The proposal should be roughly a few paragraphs in length,
written in a file called proposal.{txt,html,pdf}
.
Consider organizing your goals into “easy”, “medium”, and “challenge” categories or milestones. Plan how your project might take a variety of forms, depending on how the work progresses.
Consider also what additional topics, beyond those already covered in the course, you might need to carry out your concept. Which of these will you be able to learn on your own, given the scope and timing constraints of the project? What resources have you found that will help you? Would some of these topics require attention dedicated in class and/or office hours?
Feel free to discuss potential ideas with each other, in groups in class or through (either public or private) posts on Ed. As with all your work, document any direct sources of inspiration, either from conversations or other resources such as the internet.
We expect to give a thumbs-up to the vast majority, if not all, proposals that describe a concept involving code and artwork of roughly the same magnitude as one or two homeworks. We will provide feedback and suggestions — and perhaps any required adjustments — within a few days, so that you can get started soon after.
The purpose of this milestone is to encourage steady and significant
progress toward your final submission. Submit work-in-progress code you
have developed. If you would like, you may also include any
documentation or a preliminary report (called
progress.{txt,html,pdf}
).
The final submission will consist of your implementation and a written report submitted to your respository, followed by a presentation. Deadline for final project submissions is Thu Dec 7 11pm CT.
Code
Where appropriate, your implementation should employ functional programming concepts that we have practiced during the course. Organize and comment your code. Follow the style guidelines hinted at by any editors or tools you use.
Report
Write a brief report.{txt,html,pdf}
file that describes
your project, adapting from proposal.*
and
progress.*
as appropriate. Provide a high-level overview of
how the code is organized — for example, which file is which? where do
the different pieces of code live and what do they do? — and how to
view, experience, or interact with your project.
We would like to collect some of the projects you create and share
them, for example, on the course website. If you would like your project
to be posted publicly, please say so in the
public-release.md
file in the starter repo and indicate the
string (name) you would like to be displayed with your project.
Presentation
Afterwards, you will give a brief presentation, roughly 5 minutes, to the course staff, followed by a few minutes for questions, discussion, and hoorays. You may choose whether or not to open the presentation to classmates.
Together, your presentation and report will introduce us to your concept and implementation, before we assess and grade the project.
We will schedule several presentation sessions during finals week divided into 10-minute slots. The times and a signup sheet will follow.
You will have the choice to:
Present and answer questions live over Zoom,
Pre-record your presentation for us to watch (during your slot) and then answer questions live over Zoom; or
Pre-record your presentation for us to watch (during your slot) and then answer questions asynchronously by email or Ed.
Either way, I’d recommend that you practice your presentation; time zooms when you’re “at the podium.” But if you choose to pre-record, don’t worry about adding polish or making it fancy — just record what you might otherwise say if presenting live.