Don’T Teach Coding by Stephen R. Foster, Lindsey D. Handley

DON’T TEACH CODING

Until You Read This Book

 

 

STEPHEN R. FOSTER

LINDSEY D. HANDLEY

 

 

 

 

 

 

 

 

Wiley Logo

To our students,            
you taught us to teach
.

To our teachers,            
you taught us to learn
.

About the Authors

Dr. Stephen R. Foster is a researcher, author, and co-founder of multiple social enterprises with a mission to teach teachers how to teach coding. A fierce advocate for the power of coding to bring about worldwide change, he has himself coded to generate peer-reviewed scientific results, coded to build educational technology solutions for teachers and students, and coded to bootstrap educational startups and non-profit organizations out of thin air. All in all, these countless lines of code have all been in service of a single vision: to establish coding education as a basic human right across the globe. In short, he codes to teach coding.

Dr. Lindsey D. Handley is a researcher, entrepreneur, teacher, and author. For the last 10 years, the National Science Foundation has funded the research, design work, and the social enterprises that she operates. As a skilled coder, data scientist, and biochemist, she envisions a world in which we no longer suffer from a worldwide shortage of scientific fluency. To this end, she fights for the unification of science and education on two fronts: the use of science to improve education; and the improved teaching of science worldwide. In short, she applies science to design better ways of teaching science.

Together, they are the co-founders and leaders of ThoughtSTEM and MetaCoders.org – two social enterprises that have touched the lives of hundreds of thousands of beginning coders worldwide.

Acknowledgments

Thank you to the following people for taking time to read and provide feedback on earlier drafts: Dr. Jody Kelly, Dr. Shriram Krishnamurthi, Dr. Janet Siegmund, Kelly Foster, Matthew Butterick, and Allan Schougaard. Your contributions helped make this book what it is.

Thank you to the creators of Racket for their trailblazing work in language-oriented programming, without which we wouldn't have been able to design the programming languages for this book about programming languages.

Introduction

If there's one thing this book seeks to address, it is: What are programming languages?

It sounds simple, but answering this question deeply will require us to ask other questions: Why do we call them “languages”? Why are there so many? Why do people fluent in them get paid so much? How are they related to those other things we call “languages” (like English, Spanish, or American Sign Language)? Where do they come from? Where are they going? How do we learn them? What happens in your brain when you do?

And, above all:

How do we teach them?

Japan, Italy, England, and Finland are just a few of the countries that have begun to mandate coding education throughout K-12 public education. Computer science educational standards now exist in 22 U.S. states – two of which have passed legislation that requires coding education statewide from elementary to high school.

As the world embarks on a global change to its collective education systems, it is worth asking some basic questions.

Technically, this book is about what you should know before you start teaching (or learning) a programming language. But the book will also teach you a few simple languages in order to make headway on some of the deeper questions.

There is a structure that frames the four chapters in this book, each of which have five parts – five arcs that recur from chapter to chapter.

The Wizard's Tale is the only fictional arc of the book. At the beginning of each chapter, this narrative introduces the main ideas in a lighthearted way. Sometimes the truest things can only be said in fiction.

The pair of arcs called A Language Without and A Language Within are where you'll learn about coding – one language at a time. In A Language Without, we'll examine how the design of a language gives its users certain cognitive powers, and cognitive pitfalls. In A Language Within, you'll be given exercises to help you actually learn those languages (if you wish) – meditating on the gaining of those powers for yourself, while learning to avoid the pitfalls. The languages will increase in power and complexity as the book progresses – ending with the most powerful kind of programming languages: what computer scientists call “the Turing-complete languages.”

Schematic illustration of a flow diagram arranging the chapters based on the complexity levels.

The arcs called Languages Without and Languages Within will “zoom out” – beyond you, beyond us, beyond this book, beyond the present day. In Languages Without, we'll piece together the epic story of language – literally, the story of stories themselves. It began before this book, indeed before the invention of writing and is still unfolding today. In Languages Within, we'll examine recent neuroscience about how the human brain processes language, how it acquires fluencies – and ultimately, how it earns the right to participate in that epic story of language that is unfolding all around us.

Human beings are linguistic creatures; and programming languages are one of the weirdest linguistic things we've done in the last few thousand years. The bigger our historical lens, the easier it is to see just how weirdly magical they are.

Who Is This Book For?

Mainly, this book is for K-12 teachers of coding, or any educated adult with an interest in the teaching and learning of programming languages. We assume no prior coding knowledge on the part of the reader, however.

This is because, increasingly often in the coming years, teachers who once taught a different subject will find themselves suddenly teaching coding. So we wanted this book to be of use to teachers in those situations. As a rhetorical strategy, we'll often seem to be speaking to the reader as if they were a coding student. If you are a teacher who is also a student, feel free to assume we are speaking to you.

If you are a teacher who is not also a student – ask yourself, why aren't you a student? In this field, the learning never stops. There's always another language, another library, another framework, another tool-chain, another repository, another engine, another platform, another service, another environment, another paradigm, another sub-field, another beautiful idea.

The teaching and learning don't stop. The job titles just change.

Finally, because our goal is to teach coding teachers what all too many do not know before they begin teaching – even expert coders may find insights here that they were never taught (because their teachers did not know). Thus, your expertise in coding will not prevent you from enjoying this book. We expect the book to be readable by: industry veterans while their unit tests run, computer science grad students in between meetings with their advisors, and battle-tested hackers amidst contributions to open-source projects.

Many of us appreciate the power of K-12 education. The students of today will be our colleagues tomorrow.

Let's Do It!

We hope this book will empower teachers and students to write the future of education – one line of code at a time.

At any time, for any reason, join us.

dont-teach.com/coding