Computer Science Practices

The intertwined methods by which computer science is studied and applied.

Each practice is composed of a progression of skills, based on Webb’s Depth of Knowledge, that educators can utilize to structure CS lessons based on their students’ needs.



I can develop a deeper understanding of computing applications.

Students interact with computing applications created by government, industry, startups, nonprofits, researchers, artists and many others.They need to evaluate and respond to the ways that these applications affect their lives, their families and friends, as well as their communities.

In order build their ability to analyze computing applications, educators should help students develop these skills:

Skills for Analyzing
Skill Definition Example

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.



I can express my ideas by making computing projects.

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 students use computers in a limited way. When students practice prototyping computing projects, they are creating their own applications; using computers in different ways than when they use a word processor or web browser.

There are many versions of and names for the prototyping process such as the engineering design process, design thinking process, and others that map to process and skills discussed below:

Skills for Prototyping
Skill Definition Example

Use testing to solve a multi-step puzzle, complete a multi-step tutorial, fix a broken computing artifact, complete an incomplete computing artifact.

Using a Javascript coding tutorial I made a website that has a button that displays the date and time on the page when I click it.


Imagine, create, and test possible computing artifacts that try to express a idea or solve a problem.

The idea or problem is provided and has a single, specific constraint.

I created a button that triggered Javascript to change the text on my website. The code was the same as displaying the date and time, but the paragraph already had text in it and instead of inserting the date and time, I inserted text I wrote as a String.


Research, imagine, plan, create and test possible computing artifacts that try to express an idea or solve a problem.

The idea or problem is provided but does not have specific constraints.

I created an interactive “About Me” website that lets users get random facts about me by clicking a button. I had to research how to randomly choose from a list of facts about me. I had planned to do more, but that took a long time so next time I’ll try to plan better.


Identify an interesting and significant idea or problem and research, imagine, plan, create and iterate computing artifacts that try to express that idea or solve that problem.

The idea or problem is not provided and does not have specific constraints.

I wanted to create a website that could collect the location of businesses in my neighborhood that need to throw away food at the end of the day so people or food banks could pick up that food.

I researched how to build a form on my website for users to input information, how to save that information in a database, and display the data on a page on my site. I had trouble working with databases so I couldn’t save the data after a person leaves the website. I plan on figuring out how to make that work so the website will be useful to my community.



I can engage others in my ideas and work on computing concepts.

Students will have to communicate the complex thought processes behind their computer science work when they collaborate with professors, advisors, project leaders, customers and others across a range of different fields. 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.

Skills for Communicating
Skill Definition Example

Talk, draw, sing, etc. about a computing application, why you think it’s interesting, or why you made it.

“I made a circuit with two lights and button. When I’m not pushing the button, one light is on and the other is off and pushing the button reverses which one is on and off. I like this because it reminds me of a digital lock on a door, like in the movies!”


In your own words talk, draw, sing, etc. about your understanding of how a computing application works. What did you discover about how it works while playing, testing, or creating it?

“I used code that recognizes when the button in my circuit pushed if it is pushed, it turns on one light and turns off the other. That’s called an if-statement and it let’s me tell the computer how to make a simple decision.”


Talk, draw, sing, etc. about your understanding of computing concepts to a group of people. Consider how you might help your audience better understand your presentation - e.g. including relevant and practical examples or hands-on activities. Capture feedback that might be useful to improve your presentation.

“I used code to make the button in my circuit do something simple, but interesting. The code is running on a small chip called a microcontroller. Anyone can program a microcontroller, so let’s all try to do a very simple blinking light activity together now. Once we do it, I’d love to hear what questions you have about microcontrollers.”


Engage in a deep discussion around computing concepts by asking questions, researching and presenting evidence, and drawing on your firsthand experiences using computing concepts.

Computers are getting smaller and can be embedded anywhere which could make our lives better, but how do we protect people’s privacy? Because small computers can’t store large amounts of data, people’s personal data is sent over the Internet to databases. What if I don’t want my data sent thousands of miles away?