Everyone:

The first book of the semester, Hackers: Heroes of the Computer Revolution, examines the origin of Hackers and their associated culture and philosophy. In doing so, the book recounts elements of computing history that many students may be unfamiliar with.

For the first project, you are to work in groups of 2 - 4 students to modify or re-create a computing artifact from the past that runs in a resource constrained environment. What this means is that the software you develop should run in an environment with low resources (CPU, memory, disk, etc.) such as an Arduino, a Raspberry Pi, or an emulator such as DOSBox.

In addition to creating a software or hardware artifact, students must also provide a presentation on the background or context of their chosen historical artifact and its significance in computing history.

Requirements

Working in groups of 2 - 4, students must create a software or hardware artifact that meets the following requirements:

  1. The artifact is grounded in some element of computing history.

  2. The artifact is interactive and is capable of being manipulated by a user via some sort of input device.

  3. The artifact must run in a resource constrained environment.

  4. The source code is stored on an online repository such as GitHub, GitLab, or Bitbucket.

  5. The project includes sufficient documentation to build, deploy, and use the artifact.

  6. The project README.md must explain the project and its context in terms of computing history and the importance of the historical artifact (between 250 - 500 words).

Keeping it Old School

Because the purpose of the project is to provide you an opportunity to experience what it was like to program on old (ie. resource constrained) computing system, you should avoid using modern programming languages and libraries such as Python and PyGame. Instead, you should focus on C, C++, Scheme, LISP, or even assembly and render your graphics directly.

That said, the artifact, platform, and tools is mostly up to you; use this opportunity to explore something interesting to you.

If in doubt, ask the instructor if you can utilize a particular tool or library.

Ideas

Here is a list of possible project ideas:

  1. Write a text-based MUD such as Zork, Adventure, NetHack, or Rogue.

  2. Compose a musical and graphical demo akin to the Commodore 64 demos.

  3. Program a game in QBasic such as Nibbles or Gorillas.

  4. Prototype an interpreter for LISP, FORTH, or BASIC.

  5. Re-create a classic game such SpaceWar!, Pac-Man, Breakout, Frogger.

  6. Develop a machine emulator for the Z80, 8086, M68K.

  7. Create a telnet BBS system such as Community Memory, PLATO, or CBBS.

  8. Construct a chat bot like ELIZA.

  9. Mod an old game like Doom.

  10. Write a program that generates/plays music (ala Samson or Dompier) (perhaps using MIDI).

  11. Create a scientific visualization using an interesting dataset.

  12. Develop a game an Arduino kit such as the Arduboy.

MVP

Because of the short time-frame, it is not expected that your artifact be polished or feature complete. Instead, it should be more along the lines of a prototype or MVP (e.g. a cool hack).

Timeline

Here is the project timeline:

Date Milestone Description
January 26 Proposal Description of proposed project.
February 2 Progress Status report of current progress.
February 5 Hackathon In-class work period
February 7 Presentation In-class presentations and demonstrations.

More details about each of these milestones is described below.

Proposal

Your group must submit a proposal document by noon on Saturday, January 26, which provides the following information:

  1. Lists the group members and each of their proposed roles.

  2. Describe the proposed project and how it meets the project requirements.

  3. Enumerates any resources required.

Hardware Resources

If you need any hardware resources such as an Arduboy or a Raspberry Pi, please let the instructor know and he will see if he can procure your requests. Please do this sooner rather than later.

Progress

Your group must submit a proposal slide deck (5 - 8 slides) by noon on Saturday, February 2, which provides the following information:

  1. Addresses the questions and expections in feedback email provided regarding the project proposal.

  2. Summarizes the work done this far, in particular the design and implementation details of your artifact.

  3. Enumerates the remaining tasks, with specifics on what you plan on accomplishing during the upcoming sprint week and what you realistically plan on accomplishing before the deadline.

  4. Itemize contributions to the project thus far and what how each member will aid in completing the tasks above.

If possible, provide video or image evidence of your project and your progress.

Presentation

Because we are aiming for a Homebrew Computer Club style presentation, we will basically organize a "science fair" style demonstration environment:

Again, think of it like a mini "science fair" (but much faster). To help you organize your poster, your group must submit a project slide deck (4-6 slides) by 8:00 AM on Thursday, February 7, which provides the following information:

  1. Explains the historical context and background of your artifact.

  2. Describes the overal design and implementation of the artifact (and how each person contributed), focusing on the key concepts and ideas.

  3. Summarizes what was accomplished and what was learned.

This slide deck should be used as the basis for a poster that the group will print out and have available for the class to read during the demonstration.

Rubric

The project will be graded with the following rubric:

Metric Points Description
Proposal 5 Does the proposed project meet the requirements?
Progress 5 How much work did the group do before the hackathon?
Presentation 5 How well did the group present and demonstrate their artifact?
Requirements 7.5 How well did the project meet the requirements?
Technical Challenge 7.5 How difficult was the project?
Execution 7.5 How complete was the project?
User Experience 7.5 How enjoyable was project for end users?

Peer Evaluation

The first two metrics will be graded by the instructor, but the final five metrics will be evaluated based on feedback from your fellow classmates.

Deliverables

Once you have organized your group, please fill out the following form:

Note, while you can always update your submission whenever you have your proposal, code repository, and presentation slides, I would recommend creating place-holder links that you fill-in later (ie. create empty slides for the proposal and presentation and then update those documents later).