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 - 3 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 - 3, 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. Develop a game an Arduino kit such as the Arduboy.

  12. Write some obfuscated code ala IOCCC.

  13. Produce a coding quine.

  14. Animate a short visualization or story using low-level graphics primitives.

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
Thursday, February 11 Proposal Description of proposed project.
Thursday, February 18 Progress Status report of current progress.
Tuesday, February 23 Hackathon Group work period.
Thursday, February 25 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 midnight Thursday, February 11, 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 midnight Thursday, February 18, which provides the following information:

  1. Addresses the questions and expectations 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:

Each group will setup a booth which will present information about their project and allow other students to interact with their artifact.

During class, students will be allowed to visit other booths to try out the artifacts and to learn about the computing history involved with each project.

Think of it like a mini "science fair". In addition to the interactive artifact or demonstration, each group booth should also provide the following information:

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

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

  3. Summarize what was accomplished and what was learned.

This information can be presented on a poster or as a slideshow on a computer.

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 have one group member 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).