#### Blueprint CS Foundations

# What is CS education?

Computer science (CS) is the theoretical study and creative application of the capabilities and limitations of computers. K-12 CS education in New York City emphasizes the creative application of computer science, or creative computing because it:

- Provides hands-on experience that can lead to multiple pathways for future learning.
- Can be adapted to meet the needs of all schools, teachers, and students.
- Engages teachers and students with current technologies and problems.

To better understand the emphasis on creative computing over its theoretical study, let's consider this example: Computers are useful in solving tedious problems such as sorting lists. If you are trying to sort a list of all 1.1 million students in NYC alphabetically, you will want to use a computer.

An educator emphasizing the theoretical study of CS may ask students, "How can we use a computer to alphabetically sort a list of 1.1 million names?" This problem is quite large for a spreadsheet, therefore students will have to give the computer instructions by using a programming language. Students will grapple with the computational concepts of algorithms, programming, and data. This will lead to discussions about different methods for sorting the names in the list, the efficiency of different methods, and a potential higher-order mathematical understanding of computation.

An educator emphasizing the creative application of CS might ask students, "How can we use a computer to design a mural with the names of all 1.1 million students in the NYC school system?" This project has too many parts to consider all at once, so students will have to analyze the project and decompose it into smaller parts.

What messages could this mural send? What should it look like? How do we want to display the names? A computer can be useful in helping us design the display of the names. If students want to communicate how people may view the mural, they can use a creative programming language, like Scratch or Processing, to make an animation. If we want to display the names alphabetically, students can use a programming language with a sort function. If we want to group the names by shared interests between students, students can prototype representing relationships between names in the computer. This leads to student-driven discussions, layered with many computational concepts like abstraction, algorithms, programming, data, and networks.

Both approaches lead to a rigorus discussion of computer science practices and concepts. However, the student-driven discussion of the creative computing approach provides an entry point for all students.

## Hands-on experience that leads to multiple pathways for future learning

The size or significance of computing problems will vary between computer science beginners and experts, and both groups will come to understand the capabilities and limitations of computers through hands-on experience. Students can prepare for many different CS pursuits by learning the habits of experts; prototyping ideas in an iterative process, clearly communicating work with others, analyzing their work, as well as the work of others.

Let’s consider an example to better understand what this looks like in the classroom.

An educator can instill fundamental CS practices in groups of elementary students that are competing to give robots instructions to complete a maze the fastest. These students can engage in an iterative process to determine the sequence of instructions that will get the robot through the maze. Once students have successfully developed instructions, the competition requires them to show their work and to communicate the reasons why their instructions may be the fastest. While one group is showing their work and sharing their thoughts, other groups can consider how they might learn from their peers to make their own robots complete the maze faster. Students learning from each other is a sign of a successful CS classroom.

Engaged students that are familiar with the Analyze, Prototype and Communicate practices can continue to take on new and different CS challenges. The practices required to instruct robots to move through mazes are those required to program robots to navigate Mars.

## Adapting to meet the needs of all schools, teachers, and students

Computer science is often simplified into "coding" or programming. Programming is just one concept in computer science, and focusing on it can reinforce a stereotype of computer science that is not accessible to all schools, teachers, and students.

Rigorous CS education can focus on other concepts such as Abstraction, Algorithms, Data, and Networks, and never ask teachers or students to write code. This opens up possibilities for CS education and hopefully, makes it more adaptive to schools needs.

Creative computing of CS can enable students to understand the capabilities and limitations of computers without ever having to write code. Examples of creative computing with no programming are:

- Designing a set of instructions that when followed yield a piece of art.
- Documenting and modeling the physical infrastructure of the Internet.
- Analyzing literature, with the help of data, about the number of times characters appear together.

## Engaging teachers and students with current technologies and problems

From 1950 to 2016, computers went from occupying a room to fitting on a wrist. This rate of change shows no sign of slowing, therefore teachers and students that are preparing for the future must work with the most current technologies and problems. Current computer science technologies often have lower barriers to entry over their predecessors, in exchange for more specific uses or purposes. The most prominent example of this is the Scratch visual programming language.

While it’s easy to get started with Scratch because of the drag-and-drop, color-coded interface, projects in Scratch are limited in the type of data they can handle. This is a negligible trade-off for beginners and the benefit is not having to learn how to read, write, and comprehend a text-based programming language. There are other examples of current technologies with low barriers to entry that allow students’ understanding of computers to grow more sophisticated over time.

- Makey Makey is a game controller, without casing or buttons, that plugs into a computer as a keyboard, giving students the ability to explore a new dimension of computing and electricity.
- Thimble/Codepen are examples of online code editors with communities of projects that give students the opportunity to create and publish their own web pages.
- Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts that enables students to innovate on their ideas and those of others.
- Arduino is an open-source microcontroller, or mini computer, that gives students a platform to consider the multitude of ways humans can interact with computers.
- Jupyter Notebooks are novel interfaces for writing Python that allow students to analyze data sets associated with large systemic issues and understand computing’s role in these systemic issues.

Creative computing gives teachers and students the opportunity to explore these technologies hands-on, with very little prerequisite knowledge. Students develop confidence with these technologies by frequently reusing and remixing each other's projects. That confidence translates into students creating their own artifacts that they can share with their school, community and beyond. With constructive feedback loops, students can broaden the technologies they work with to include those used in open-source, private, and public sectors.

# What are we trying to teach?

In Math class, students hold a pencil. They may hold that same pencil in English, but what they’re asked to produce, how they’re trained to think and question – look different. In neither class is the pencil the focus.

In computer science, the computer is the pencil.

Your students have used computers to convey their thinking -- to get it on a document, on a slide, in a picture, or on a piece of paper. Our hope is that these resources will help you create a classroom in which students think with the computer, where the computer becomes "a bicycle for the mind," a tool for empowering and unlocking our students' curiosity and creativity.

We'll be tackling everything from recommended programming languages and courses of study, to the arrangement of tables and chairs in your classroom. There is a lot to digest (and a lot that we are still learning,) but these resources were put together by folks who love teaching computer science and learned to teach it, just like you, while in the classroom.

A final thought before we jump into the nitty-gritty. Why CS4All? After all, not everyone will become a computer programmer, and that is totally fine. Not every student will become a novelist, but every student has the right to read great literature, to be exposed to the possibility that she can create something great and enduring. CS4All is about unlocking potential. Our objective is not to produce coders, but young people who think about code and are not afraid to try to read and write it.

In the history of computer science, we have mostly been content to wait for prodigies to drive innovation. We believe there is more prodigious talent in our students that can be unlocked by learning to create and iterate. These resources are a commitment to equity, to unlocking more unrealized potential in all our students, in as many ways as we possibly can.