CS 105 - Understanding Our Algorithmic World

CS 105 - Project

Goals

  • Demonstrate some of what you have learned this semester
  • Find ways to apply CS concepts to something that is interesting to you

The project

The project will serve as the capstone for the course -- your opportunity to both show me what you have learned and to apply CS to something that you care about.

CS concepts

I will be looking for some evidence that you are making use of CS concepts in your project. Some examples include the use of abstraction, appropriate use of high-order blocks, conditionals and loops, the use of data structures like lists. All projects should be rooted in something we did in class, such as turtle graphics, multimedia processing, data analysis, game playing, or simulation.

Novelty

I will be looking for a certain degree of novelty in your projects. I am not looking for you to create something wholely new that no one has ever done before -- just something different from what we did in class. For example, a project that involved a simulation of frogs hopping around, getting sick when they touch one another would be a bit too similar to what we did together.

I want you to use the things that we have done, but I want to see them re-mixed, combined, and augmented.

I would love to see you apply these tools to other things you are interested in (academic or not). You are welcome to try and duplicate something you saw somewhere else (but it would be better if it wasn't a Snap! example where you have access to the blocks).

Functionality

By functionality, I mean that it should work. There shouldn't be blocks that I can't click or weird effects if things are started in the "wrong" order. Bricks should do what they say they do.

I will also be considering what you promised you would do. I understand that goals can shift when problems that seemed straightforward turn out to be less so, so I won't focus so much on the proposal, though that will inform my thoughts. I will primarily focus on what you say it does versus what it actually does.

Complexity

This is the final project for the class, so I expect a fair degree of complexity. I will look at the number of novel blocks you have created, the length of your scripts, and your use of complex concepts (like higher order blocks, cloning, and message passing).

Style and design

We haven't focused too much on style and design this semester, but I'll still be looking at it with regard to your projects. Things that I will be looking for are

  • it is obvious how to run the project and how to interact
  • neat script areas without script blocks that are not part of the project
  • comments that describe what things are and how they are used
  • blocks that are of the right type and in an appropriate palette
  • block names and variable names that make sense
  • variables that are at the appropriate level (script, sprite, or global)

Additional deliverables

In addition to the project itself, I would like you to produce two additional deliverables.

Proposal

The purpose of the proposal is to make your ideas about what you want to do more concrete. This is both for you and for me. I will read through the proposals and give you feedback about the feasibility of your idea. I will do my best to try to identify points that will be overly challenging, or ideas that are too trivial.

The proposal should be very specific. "I want to do something with sound" would be too vague. "I want to make a simplified version of a Tenori-on" would be more specific, though it would be good to know in what ways it will be simplified (this is not a bad project idea, though slightly challenging). If there is a visual aspect to the project, a sketch would be wonderful.

In addition to the description of what you want to do, please describe

  • what pieces of the project you think can be "borrowed" from earlier assignments
  • what you will need to figure out or learn to complete the project

Write-up

Along with your project submission, I would like a brief write-up. The following points should be covered

  • what did you make
  • how does one use it
  • what was the most challenging piece
  • what didn't work the way you planned, OR what more would you like to do to it given more time

Assessment

To assess the projects, I will be looking at all of the above factors. Each factor will be scored as "Exceeding expectations", "Meets expectations", "Below expectations", or "Not assessable". Note that you do not need to "exceed" in every category.

I will convert these scores to numbers (3-0) and average them together to create a single final score on your project.

Submitting

Proposal (due 2020-11-12)

I would like the proposal submitted as a PDF document. Visit the assignment page to submit.

Project Snap! page (due 2020-12-09)

Submit the project file in the usual way. If your file is still small enough to share, share the project using the instructions from exercise 1.

Otherwise, save the file to your computer and upload it to canvas.

Visit the assignment page on Canvas to submit the URL or the file.

Writeup (due 2020-12-09)

For the writeup, please submit a PDF document at the assignment page