Вы находитесь на странице: 1из 9

Principles of Comp Sci Final Project

The Goal of this Project


This is your chance to show off everything that you have learned so far this semester
in a project of your choice and design. You can design almost anything you want,
using all of your programming knowledge to produce something that is interesting,
useful and challenging. Ultimately, you should spend most time designing algorithms
and writing code, as opposed to developing sprite graphics. Think about the vast
amount of knowledge you have gained (and you HAVE learned a lot!) and apply it in a
fun way!
You and your teammates will embark on a grandeur journey to complete a
masterpiece.

Important Dates

Project Proposal: due Nov. 14, 2014


Final Project: due Dec. 16, 2014

Project Proposal
In short, you should convince us your project will be awesome and worth an A! Tell
us what your project is about. Is it a game? A sound-based application? After
describing the main purpose, discuss the "scope" of the projectthe types of things
users will and will not be able to do with it. This can include a basic plot line for a
game or movie, a list of options for a utility, and so on.
This is a non-technical document and should describe big ideas more than the
technical details of how it will be done. However, it should also be clear that you have
an idea of where to start working on the project. Although you will be able to tweak
your project idea after your proposal has been submitted, the gist of it should stay the
same. Make sure that you are happy with your idea since you'll be spending a good
bit of time with it.
We are more worried about the content of your proposal than the length of it. Make
sure that you give us enough detail to judge the difficulty of your proposed project. In
addition, please make sure you include details of everyone who is in your project
group.

Project Submission

Each of you will need to submit an individual reflection to schoolloop


Only One (1) person from each group should submit these four (4) files.

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project

Project File
Summary Write-Up
Collaborative Group Reflection
Video Presentation

All four of these items listed above should be completed as a group. You may choose to
split up work between your group members, but all members should contribute equally to
the final product.
Join a Group:
Project File. This is the XML file with all of the code you wrote as a group. It should be
named either the title of your project AND include your names in the file.
Summary Write-up. This should be a PDF or plain text file and is described below.
Video Presentation. This should be a video demonstrating your final. See the video
section below for some helpful guidelines.

Basic Project Guidelines


In order to receive full credit, there are a few simple requirements which each
part of your project must meet. Refer to this list as you complete your project. Dont
worry about length, you should meet the majority of these simply by using common
sense, and little bit of teamwork. Weve included the whole list for your convenience.
1. Your project should be completed in Snap.
2. You should work in a group of 2 or 3 students. Expectations will be higher for groups of
3 than groups of 2.
3. Your project must be G-Rated. Pretend your overly-strict mother is watching you
work...but not in a creepy way!
4. You must have a clear way to run your program. In Snap, that means using the Green
Flag is going to be the best option.
5. You should use script variables at least once. (Really, we promise you dont want 100
variables cluttering up the left side of Snap!).
6. You should appropriately comment your code. See the Style section below for some
helpful tips!
7. Create your own blocks. (Again, youll thank us later. We promise. <3)
8. Use lists in your project in some way.
9. "Style" points will be awarded for nicely structured code. See below for things which
may be considered good style.
10. Finally, your project should not be trivial for (you or) your group to finish. We
expect it to take time, but it should also be an idea which you can accomplish. Well help
you judge the difficulty of your project, but some hard work is good for the soul.

Summary Write-up Guidelines


You dont need to write a novel for these questions. The questions youve answered in
the progress report will be very similar to your individual summary.
CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


1. State the area of focus your group chose to explore.
2. Describe the purpose of your collaborative program and how it relates to your area of
focus.
3. If you used anything other than Snap, describe what you did.
4. Describe how a user runs and interacts with your program. Provide details that allow a
novice user to experience the full functionality of your program. This must include
sufficient detail for a novice user to perform actions such as clicking on buttons or filling
in text boxes. He or she should be able to run your program from beginning to
end.
5. Demonstrate that your program illustrates abstraction.
1. Identify and select a segment (or segments) of code from the program that
illustrates the use of abstraction. Upload a pdf document with cut-and-pasted
code, either as text or a screenshot.
2. Your answer should be no more than one page of code.
3. Explain how the selected code illustrates the use of abstraction.
4. Explain how the code fits into the overall program you wrote.
5. Include supporting visuals and non-textual representations if needed, and upload
them as pdfs.
6. Demonstrate that your program illustrates a complex algorithm.
1. Identify and select a segment or segments of code in the program that illustrates a
complex algorithm. Upload a pdf document of cut-and-pasted code, either as text
or a screenshot. Your answer should be no more than one page of code.
2. Describe the purpose of the selected algorithm and how fits into the overall
program you wrote.
3. Explain how the selected code implements the algorithm.
4. Include supporting visuals and non-textual representations if needed, and upload
them as pdfs.
7. Explain how your program demonstrates the appropriateness and effectiveness of your
chosen language and programming environment by describing your use of programming
elements and how they allowed you to manage the complexity of the program.
8. Identify and discuss one significant runtime error or bug you encountered while writing
the program. Include:
1. What was the error or bug?
2. What process did you use to discover it?
3. What modifications did you make to the code to fix it?

Collaborative Group Reflection


Working collaboratively, prepares responses for each of the following prompts:
1. Include the name(s) of your group members.
CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


2. Describe the purpose of your collaborative program. (100 words max)
3. Identify the programming language you used to develop your program.
4. Demonstrate that your program illustrates abstraction.
1. Identify and select a segment of code from the program that illustrates the use of
abstraction. Upload a PDF document with copy-and-pasted code, either as text or
a screenshot.
2. Explain how the selected code illustrates the use of abstraction. (100 words max)
5. Demonstrate that your program illustrates a complex algorithm.
1. Identify and select a segment or segments of code in the program that illustrate
the most complicated algorithm in your program. Upload a PDF document of
copy-and-pasted code, either as text or a screenshot.
2. Generally describe what the algorithm does. (100 words max)
6. Discuss how you incrementally developed your program. What did you create first? What
came next? What problems did you encounter and solve? (100 words max)

Video Guidelines (and Tips!)


Your group should make a 1 minute video which demonstrates your project. It should
be a screen recording showing a working project, and have a little bit of explanation
about how it works and what your insanely awesome project does. Upload this file
with your submission to bCourses. Remember, we arent here to judge the quality of
your video, only the code! Have fun and show off your hard work, the more
entertaining the video, the better!
Additional tips about capturing the video are here. Feel free to ask any questions on
Piazza if you need help.

Complexity Guidelines
Appropriate complexity for this code will revolve around well executed code or an
advanced internal algorithm. Needlessly repetitive code or a large number of sprites or
sound effects created outside of Snap! will not be considered in determining your
projects complexity for grading. Rather complexity of design, such as how code is
organized and used for different sprite and blocks, successful implementation of a
difficult programming task, well coded complicated algorithms (such as Dijkstras
Algorithm, the A* algorithm, and many others) or statistical analysis programs, will
all be considered in whether difficulty of the project meets the minimum
requirements.

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


As an example: A piano which has keys that can be played is not complex enough.
However, a piano which can record the notes and beats at which the piano is played is
acceptable (allowing for playback of recorded songs would be even better!). A maze
game is not ambitious enough unless it has features such as AI opponents and
powerups or a random generator and solver.
If you are working in a group of three, you program should be even more complex,
possibly adding in two of these types of elements into your program.
Hopefully, this, combined with input from your TAs in lab will give you an idea of an
acceptable complex project. After submitting your proposal the TA will respond with
formal feedback on your teams project idea and whether the idea is under ambitious,
over ambitious, or just right. Remember, the idea should be for you to tackle a
difficult problem, but one which is within your reach.

Style
Obviously, youd like to be as stylish as possible. These tips will help you accomplish
that goal. Nicely styled code may go far beyond this short list, but following these will
lead you in a positive direction. Style isnt merely being pedantic; good style will
keep your thoughts organized and make debugging and building out a project much
easier over time.

A reasonable number of descriptive comments. Comments should explain what a more


complex block of code does, not simply how it does it. (Dont comment everything, but
make sure you do comment where its helpful!)
Using Script Variables within blocks and scripts where appropriate and global variables
only for items which require global access.
Dont Repeat Yourself is a common saying among coding ninjas. Simply put: Avoid
repetitive code. Instead of hardcoding cases, thing about how you could use loops or
blocks or lists more effectively.
Following conventions for blocks. (i.e. Predicate blocks should only return True or
False).
Using descriptive and helpful variable or block names. Not only will these help you and
your partner, but they will help the readers too.
Breaking more complex problems into smaller parts. Make simple, but useful blocks and
split your code into sections to make the program more readable.
If you have input from a user, try checking (or validating, as its called) the answer to
make sure its a value you expect.

Project Ideas
If you want some suggestions for your project we recommend looking at the
below categories. Please remember that projects should not include any gore or

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


violence; all projects must be G-Rated. Projects generally fit in one of the
following broad categories:

GWAP

Educational Game

This can be any kind of program that takes in inputs and provides some kind of
result via internal algorithms such as a graphing calculator or a genetics
probability calculator and demonstrator.

Art based program

A computer algorithm that plays a game intelligently such as an AI for Connect


Four.

(Statistical) Analysis

Educational oriented program that aims to be helpful and instructive for its users
such as an open heart surgery walk through or a math learning game. (Note: A
typing tutor game should be avoided unless you have a specific and exceedingly
creative inspiration regarding implementation and design)

Artificial Intelligence

Any Game With A Purpose such as mentioned in our readings.

Get in touch with your artistic side by creating a visual or musical program that
acts as a medium for user to exercise or practice their creative talents such as a
drawing program that saves images and can redraw how they were drawn or a
musical instrument trainer.

Simulation

Rules are given for a system and then variables can be changed either via random
input or user defined input for the program so that it can run a simulation on the
elements involved for the user. Such examples include a traffic simulator, a fish
tank, or a physics simulator. (Note: a physics simulator is extremely difficult and
should only be attempted for a final project with constant monitoring from a TA)

Hardware Projects
If you are interested, we have hardware that you can work with on this project that is
compatible with Snap:

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


Device

Compatibility

Description

Hummingbird

Snap

Microcontroller with a number of inputs and outputs to


help Snap and your program interact with the real
world.

Finch

Snap

Small wheeled robot with different sensors and


functions which can be accessed via Snap.

Hardware projects can be incredibly exciting but do be aware that there can be extra
difficulty in getting everything to work correctly. Please note, hardware is limited,
and will be available on a first-come, first-serve basis.

Example Projects
Please don't use another person's project to start creating your own -- we want you to
start from scratch. Nevertheless, getting inspiration from other projects, programs is
encouraged. Here are some past CS10 projects that may be good for generating ideas.
These were made by past CS10 students as final projects. Please note that the
requirements for the project have changed somewhat since previous semesters. Many
of these projects were Final projects from previous semesters, so your
project isnt expected to be as complex as the ones listed here, but feel free to shoot
for the moon!

Wireless Finch http://www.youtube.com/watch?v=Zh5zArIAHDw

Texas Holdem http://www.youtube.com/watch?v=o_EcccPTqio

Sentence Parser http://www.youtube.com/watch?v=Tl0i4WpN4-Y

Minesweeper http://www.youtube.com/watch?v=fsOn4eBn1Og

Inception Tic-Tac-Toe http://www.youtube.com/watch?v=jSBYEwJb2V8

Grading Rubric
This is a preliminary (i.e. subject to change) breakdown of how your project will be
graded.
Task

Points

Project Proposal

3 pts

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


Project Milestone Report

3 pts

Project Summary

3 pts

Individual Reflection

3 pts

Collaborative Group Reflection

3 pts

Style

5 pts

Meeting Basic Project Guidelines

20 pts

Meeting your Goals & Complexity Guidelines

20 pts

Total

60 pts

Extra Credit Opportunities


We have some ways that you can earn a couple extra points on your project. These are
meant to be fun things for you to consider working on, but dont do them solely for
the points! (It may take more time than they are worth in points, but can also be
enjoyable).
Social Relevance. A small amount of extra credit will be available for the project if you

choose a highly socially relevant topic (education, health, etc). The amount of extra
credit will be based on the size of the population impacted and how much they are
impacted by your project.
Hardware Usage. If your project effectively uses any of the hardware mentioned
above, a small amount of extra credit may be available. Talk to a TA to get some
ideas for how to best use the available hardware. Snap is also compatible with
Lego Mindstorms and Leap Motion. While we dont have any to loan, you could talk
to your TA if you have your own and want to explore this option.

Tips
1. Comments and good naming. As you work through your project, we ask that you
comment your code to make it easier for us to grade, and also to make it easier for any
person who wants to know how your code works.
2. Saving and backups. Please save copies of your projects frequently. Make sure to export
your project as an XML file regularly to have multiple, working backup copies. In
particular, if you think that your project is at a stable state, save a non-cloud backup copy,

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014

Principles of Comp Sci Final Project


before you make any substantial changes to it. Emailing it to yourself or project partners
is a good method of backing up your work. This will allow you to "rollback" to a stable
copy of your project if you make a substantial buggy change. Dropbox automatically
records all past saved versions of your project.
3. Sharing files. Use a service like Dropbox, Box.net, or Google Drive for sharing files
with your group. (All are free!) Some even have the advantage of automatically saving
previous versions of your files which is definitely handy.
4. In-lab project work days. We will have labs devoted to time to work on your project.
Make sure all your group members meet at the same time, if possible. (Remember, you
may attend any lab section time!) Use the opportunity to get instant feedback from your
TA or bounce ideas off of your fellow classmates. Feel free to help others (and get help
too!) even from those not in your group.
5. Import tools and libraries. Dont forget to import tools and libraries in Snap! for some
useful pre-built blocks. In addition, feel free to use any code you have already made
yourself in lab or in homework.

A Final Word of Warning


Getting to design projects of your own can be exciting, and it is very easy to
underestimate how long it will take to accomplish a particular goal. Remember
although the TAs will be happy to help you bring your idea to life, you won't have
lab-like guidelines for making this happen. It may take a lot longer to make your
project than you think. That being said, don't hold back if you think you can make
something truly grand! We're here to help you realize an idea you love!

CS10: The Beauty and Joy of Computing

Midterm Project Specification, Spring 2014