Computer Science Practices

In the sections below, we define CS practices commonly used by individuals studying and applying computing. CS Practices provide structure for activities that students engage in.

Each practice is intertwined with the others and will require time for students to apply concepts, analyze information from multiple sources, as well as design and create artifacts.

Educators must mold the practices to fit the needs of their students. This could mean that only components of a specific practice are covered.

Analyze (AN): The impact of computing

People of all backgrounds must evaluate and respond to the ways that computing affects their lives, their families and friends, as well as their communities. Government, industry, startups, nonprofits, researchers, artists and many others use the principles of computing to accomplish an increasing number of tasks. Some of these tasks we may think of as beneficial or malicious, and we are still not sure of how to evaluate others.




  • Banking
  • Mass communication
  • Automating complex tasks (e.g. gene sequencing)
  • Computer animation
  • Interactive science museum exhibits
  • Automating manufacturing
  • Surveillance
  • Consumer profiling
  • Stock trading
  • Ride-sharing
  • Algorithmic decision-making
  • Self-driving cars
  • Taking control of networked computers
  • Generating fake news

These are just a few examples and the breadth and depth of computing is growing fast. In order to analyze the impact of computing, students should:






Describe an application of computing by detailing who, what, where, when. In this first step, focus on things that can be observed.

A keyboard allows users to input data into a computer. It has keys with letters, symbols and other functions.



Examine the description for patterns, general characteristics, or anomalies. How do the parts of the whole relate to each other and the user?

The letter keys are not arranged alphabetically. Some keys affect the behavior of others. Users need know the placement of, and how to read the keys.



Interpret your analysis by looking for evidence to support an explanation. Test the evidence by researching similar cases, running experiments, or creating models (relates to prototype).

I can draw on personal experience and interviews with others about how they use the keyboard, i.e. from memory, looking at the keyboard, etc.



Evaluate the application of computing, based on your investigation. What are its benefits and evils; and to whom, how much, when and how? What are potential modifications and the arguments for and against?

The keyboard works great for people that memorize the keys and know all the functions. Blind people or people without full control of their fingers may experience difficulties.

Prototype (PR): Computing projects connected to student interests

The goal of the prototyping practice is to help students build a mental model of how to use a computer to create new applications. Computer applications or programs like word processors or web browsers define how we use computers in a limited way. When we practice prototyping computing projects, we are creating our own applications; using computers in different ways than when we fire up our word processor or web browser.

There are many versions of the prototyping process - this is a seven step process that equally weighs:

● Researching and designing what to build (many connections to the analyze practice).

● Building the prototype in iterations, or many small parts, in order to test often and make small changes.

● Recording and reflecting on work and the results of testing.






Identify a problem that can be solved, break it down into smaller parts, and set constraints that limit its goal, features, or complexity.

A school performance (dance, play, etc.) needs three animations of ten minutes each, but we can loop a shorter animation.



Read about the problem, look into how others solve it, find projects you can repurpose / remix, interview people such as experts, or people that might use your prototype.

We researched concert videos with background animations, searched the Scratch community for projects to remix, and spoke to the performance director.



Collaborate to imagine how to solve the problem. Use problem definition, constraints, and research to help you imagine new ideas.

We came together to jot down ideas on chart paper, crossed out ideas that were too hard, and voted on a couple options.



Select a promising solution, build a team, and set roles. Identify materials, break down your project into smaller parts, and set a timeline.

We drew a storyboard for each option, set a timeline to share it with the performance team, and then built it in code.



Work with your team to build enough of the project in order to test it out and get feedback. Be creative about your materials: paper, drawing apps and code. Take pictures or video, and comment on your work or code.

First iteration: We created a slideshow of our animation options using pictures we found and drawings.

Second iteration: We created animations in Scratch to test out with the projector.


Test or Critique

Allow different people to test your prototype without telling them how it works. Take detailed notes and ask questions.

]When critiquing or giving feedback, use the >analyze practice to structure feedback.

First iteration: The performance director and actors said that the theme and colors were good, but the animation was too fast.

Second iteration: The animation was square but the projection was rectangular.



Repeat the process using the information from testing as a new starting point. Repeat the process multiple times!

First Iteration: Slowing down the animation won’t be simple, but can be done.

Second Iteration: We will screen-capture the animation over a background to align its sides to the projection.

Communicate (CO): Understanding computing concepts

Whether it be in college or a career, students will have to communicate the complex thought processes behind their computer science work. Students will inevitably work with collaborators, professors, advisors, project leaders, customers and many others on computing issues or projects. These stakeholders will be interested in the ‘how’ and ‘why’ behind students’ projects and analyses.

Students should practice the skills required to communicate their higher-order CS thinking, go through the analyze and prototype practices, and not just complete those activities.






What did you learn about computing? Make a statement about how a computing concept was used while prototyping or analyzing.

While programming a drawing app, I used the idea of generalization and detail removal to create an eraser that doesn’t erase, but covers the drawing with the background color.



Consider presenting ideas to broader audiences: the entire class, all the teachers in school, the community, etc. Empathize with the backgrounds, knowledge and values of the audience.

I noticed that my classmates struggled with how to erase, because they wanted to erase like they do with pencil and paper. Everyone isn’t comfortable with code, so I will focus on talking about the idea without showing code.



Select the media that works best for the intended audience, be it interactive programs, video, audio, slide decks, blog posts, papers, or instructional activities.

I will ask my classmates to compare and contrast all the ways they fix mistakes on paper. I will then have them use my app to try to guess which of those strategies I’m using.



Explicitly show and explain the application of a computing concept. Why was it significant to your thinking? Why should others care about it? How did it help you? Why was it easy or hard to use? How do you plan to learn more?

Detail removal was important to helping me jump from observing that drawing with the background color was the same as erasing. I wrote code activated by the ‘erase’ button to set the pen color to the background color. I’m curious what other buttons we press that do things in unexpected ways!



Present or publish your work and ask for formative feedback in the form of questions and answers, comments, or user testing. Publishing work and capturing feedback as part of digital portfolios helps work continue after the unit or class ends.

When critiquing, or giving feedback, use the analyze practice to structure feedback.

My presentation went well, but I wish I had planned to show and explain my code. Many students understood the idea quickly, but weren’t sure how to write the code, or how to create an ‘erase’ button. I posted screenshots of my app and pictures of my activity on my digital portfolio.