CSA Unit 4 Project
Name(s) __________________________________________________ Period _______ Date _____________________
[EXEMPLAR] Abstract Data Art Project Planning Guide
Data visualizations are powerful tools to present information and convey patterns and relationships.
Sometimes visualizations are charts or graphs, and other times they are more abstract pieces of art. Your goal
is to create a visual representation relating at least two categories from your dataset that engages your viewer
and encourages them to learn more about your chosen topic.
Project Requirements
Use your knowledge of object-oriented programming, one-dimensional (1D) arrays, and algorithms to create
your data visualization program:
● Create at least two 1D arrays – Create at least two 1D arrays to store the data that will make up your
visualization.
● Implement one or more algorithms – Implement one or more algorithms that use two-way or
multi-selection statements with compound Boolean expressions to analyze the data.
● Use methods in the Math class – Use one or more methods in the Math class in your program, such
as to perform calculations on the values in your dataset and display the results, choose random values
from the dataset, or display images or shapes at random locations.
● Create a visualization – Create an image or animation that conveys the story of the data by illustrating
the patterns or relationships in the data.
Note: This may be abstract! Others do not necessarily need to know what the story or pattern is right
away, but you do need to be able to explain it to them.
● Document your code – Use comments to explain the purpose of the methods and code segments and
note any preconditions and postconditions.
Optional Features
● Incorporate user interaction – Use methods in the Scanner class to obtain user input to interact with
your data visualization program.
● Use inheritance and polymorphism – Create classes to represent the types of data with overridden
methods and use a 1D array of a superclass type to store the objects.
● Use static variables, constants, and/or static methods – Use static variables to represent values
that are shared by all objects of a class, a constant to represent a value that doesn't change, and/or a
static method to represent a behavior that doesn't require an object or as a helper method.
1
Project Rubric
Category Extensive Evidence Convincing Evidence Limited Evidence No Evidence
One-Dimensional (1D) Creates more than one Creates more than one Creates one one-dimensional Does not create a
Arrays one-dimensional (1D) array one-dimensional (1D) array (1D) array by reading the one-dimensional (1D) array.
by reading the contents of by reading the contents of contents of a text file into the
text files into the 1D arrays. text files into the 1D arrays. 1D array.
AND OR
Creates a new 1D array Creates one one-dimensional
containing values to address (1D) array using an initializer
a question for the scenario. list to assign values.
Algorithms Implements more than one Implements one algorithm Implements one algorithm Does not implement an
algorithm using the using a one-dimensional (1D) using a one-dimensional algorithm using a
one-dimensional (1D) arrays. array. array but does not use one-dimensional (1D) array.
two-way or multi-selection
AND AND statements with compound
Boolean expressions to
More than one algorithm uses The algorithm uses two-way analyze the data and create
two-way or multi-selection or multi-selection statements the visualization.
statements with compound with compound Boolean
Boolean expressions to expressions to analyze the
analyze the data and create data and create the
the visualization. visualization.
Math Class Uses more than one method Uses one method in the Math Uses one method in the Math Does not use any of the
in the Math class to perform class to perform calculations class to perform calculations methods in the Math class.
calculations on the values in on the values in the dataset on the values in the dataset
the dataset and displays the and displays the results in the but does not display the
results. visualization. results in the visualization.
AND/OR OR OR
Generates a random number Generates a random number Generates a random number
that is used in some part of that is used in some part of but does not use it as part of
the visualization. the visualization. the visualization.
2
Category Extensive Evidence Convincing Evidence Limited Evidence No Evidence
Data Visualization Creates an animation that Creates an animation or Creates an image or Does not create an image or
illustrates the patterns or image that illustrates the animation that conveys the animation that conveys the
relationships in the dataset. patterns or relationships in chosen topic but not the chosen topic.
the dataset. patterns or relationships in
AND the dataset itself.
Uses sound effects or music
to emphasize the story or
theme of the chosen topic.
Documentation Uses single and multi-line Uses single-line comments to Uses single-line comments to Does not use comments to
comments to explain the explain the functionality and explain the functionality and document the functionality
functionality and purpose of purpose of methods and code purpose of methods in the and purpose of methods or
methods and code segments segments in the program program code segments in the
in the program program
3
Step 1: Identify the story you want to convey
List the types of values you will use in your project, and explain the story you want to convey about the data
based on the patterns and relationships you identified.
Note: You may want to use two types of values from the same dataset or two different datasets.
Value #1 Platforms Dataset: Best Selling Video Games
Value #2 Title Dataset: Best Selling Video Games
The Story
Video games are most likely to be successful if they are multi-platform. So game designers
should design games from the start to be multi-platform. What is the most popular single
platform for games?
Sketch the visual you want to create to convey the story that illustrates the patterns or relationships you
identified.
4
(Optional) Getting Data
If you want to use your own dataset, here are some websites you can search:
● Kaggle, https://www.kaggle.com/
● Data.gov, https://catalog.data.gov/dataset
● World Bank, https://databank.worldbank.org/home.aspx
● UNICEF, https://data.unicef.org/resources/resource-type/datasets/
● United States Census Bureau, https://data.census.gov/cedsci/
● U.S. Bureau of Labor Statistics, https://www.bls.gov/data/
● NASA, https://data.nasa.gov/browse
There are many other websites with datasets in addition to these that you can explore and use!
After you find the dataset you want to use, copy and paste the values you want to use for your project into a
text file in Java Lab. You should have one text file per column of data you want to use.
1. Copy one column of values from your chosen dataset.
2. In Java Lab, create a new file and change the .java extension to .txt. Be sure to give the text file a
meaningful name.
3. Paste the values into the text file you created.
5
Step 2: Create UML diagrams for your classes
Create a UML diagram for your class that
will represent the scene and any additional
classes you might need.
6
Step 3: Decide how you will use Math class methods
Plan how you will use one or more methods in the Math class in your program. Identify any methods you will
need to implement, and write pseudocode for it below.
The _random_______________ method in the Math class will be used to:
Randomly draws each platform image based on the number of times the platform appears in
the platform list
Pseudocode for _drawPlatformsData______________________________________________ method
create an array containing the data values from platformCount()
loop through the data values
get a random x location
get a random y location
draw the platform image at the random x and y location using the count as the size
7
(Optional) Step 4: Decide how users will interact with
your data visualization program
Plan how users will interact with your data visualization program. Identify any methods you may need to
implement, and write pseudocode for it below.
Users should be able to:
Pseudocode for __________________________________________________ method
8
Step 4: Decompose the Problem
Class: DataScene
Method mostSalesPlatform
Precondition(s)
Platform and sales data in array
Postcondition(s)
Returns the platform with the most sales.
Pseudocode
Initialize platform sales array
For each game
Add the sales of the game to the corresponding platform sales in the array
Initialize variable to track max sales
For each platform
If sales is greater than current max sales
Update max sales
Return max sales platform and sales
9
Class: DrawScene
Method platformCount
Precondition(s)
Platform data in array
Postcondition(s)
Counts the number of times each platform appears in the platforms list
Pseudocode
Initialize platform count array
For each game
Add the platform of the game to the corresponding platform count in the array
Return array
10
Day 1 Reflection
What did you accomplish today?
What do you need to do next?
What obstacles are in your way?
Day 2: Software Engineers
How are you being a problem-solver while you are working on your project?
How are you being creative while you are working on your project?
11
Prioritize Updates and Changes
Software engineers constantly update and change their code to reflect different priorities. They may have
limited time, money, or resources to make every possible change they may want. Similarly, you have limited
time to update your code to implement the feedback you received from the code review.
Follow the steps to create a prioritized worklist to help you focus on completing what is most important first.
You might not get through every item on this list, and that's okay!
Steps to Prioritize Updates and Changes
1. List each change or update that needs to be made based on the feedback from your code review.
2. In the Priority column, indicate which item you will complete first (#1), second (#2), third (#3), and so
on until you have numbered each item on your list.
3. If you want, rewrite your list so that it is in priority order.
4. Complete one item at a time, starting with Priority #1. Cross it off when you finish, then move on to the
next item on your list!
Priority # Update or Change Notes
12
Day 2 Reflection
What did you accomplish today?
What do you need to do next?
What obstacles are in your way?
13
End of Project Reflection
Describe your project.
What are two things about your project that you are proud of?
Describe something you would improve or do differently if you had an opportunity to change something about
your project.
14