Project: Survey
This is an individual project. This means that all of your work must be your own. If you need help on something, you may ask other people for help, however, the scripts that you create must be your own work.
In this project, you will apply your understanding of data abstraction and higher order functions to create a survey and analyze the data by creating relevant summary statistics following the specificiations listed on this page.
On the last day of this project, we will have a gallery walk to show everyone the progress that you’ve made!
Here is an example of what the final program can look like:
Survey requirements:
Plan out your survey including the analysis you will do of the data that you collect.
Define your survey questions. You must ask the user for their name, their grade, and at least one other question. The other question(s) must only be multiple choice or ask for a numerical answer. Please ask only school-appropriate questions.
Come up with three simple research questions that you want to answer using the data that you collect. These simple questions will be about summarizing the behavior of everyone who responded to your survey.
For example: If you asked “How many books have you read so far this month?” you could analyze the data to answer the following research questions:
What is the average number of books people have read so far this month?
What is the maximum number of books people have read so far this month?
How many people have read at least two books this month?
Come up with two more complex research questions that you want to answer using the data that you collect. These questions should ask how something differs between different groups of respondents rather than just summarizing something about all respondents.
For instance, in the book survey, you could analyze the data to answer research questions such as:
How does the average number of books people have read so far this month differ between grades?
How does the number of people who have read at least two books this month differ between grades?
Program Specifications:
Open Assignment and create a Snap! program that can administer and analyze your survey. You program must meet all of the following specifications:
Defines a “survey response” Abstract Data Type with a constructor and all relevant selectors.
For example:

Implements a data collection feature connected to the “Answer Survey” sprite.
When the sprite is clicked, the program should collect data from the user by asking the questions and gathering their responses using the
askandanswerblocks. (You may, of course, write a custom block to abstract asking and question and reporting the answer.)For example:

It should then store the collected data as an instance of the ADT that you created above in the list named by the provided variable

Adds code to the block
to put ten or so example responses into 
Implements a data analysis feature connected to the “Analyze Survey” sprite.
When the sprite is clicked, the program should allow the user to choose from one of the five research questions that you planned when defined your survey.
The code must process the data to answer your five research questions by using the two higher order functions that you learned from this unit (some questions may only need one of them or both) plus the new one introduced by your teacher.
When using
, you must have at least one instance where you use a self-developed predicate block for the condition in the keep.For example, you could make a predicate block like
and use it in your keepYou can use
with a selector from your ADT to get a list of all the values for a particular part of your ADT from a list of instances of your ADT. For instance if you have a
selector for the grade value in a survey response you could use
to extract a list of all the grade values in your survey responses.
Leaves the code in the “Answer” and “Analyze” sprites alone.
You can make cosmetic changes, such as changing where the sprites are or changing the costumes but you should not change their scripts.
