Have you been curious about this whole coding craze? Maybe you’re interested in learning more about computer programming skills, or maybe even the thinking behind creating a coding game? Today, we’re talking to Mark Engelberg, a former NASA researcher, educator, and inventor of several games, including the new ThinkFun //CODE series. As a programmer himself, Mark has plenty of insights into anything you may want to know about the world of programming!
When did you become interested in programming?
I vividly remember the day my father, a programmer at IBM, brought home one of the first IBM PCs, borrowed from his office, along with one of the first computer games – a text adventure game called Adventure (also known as Colossal Cave). I was amazed by the capabilities of this new kind of machine, but I was especially mesmerized by the idea that it was possible to create a whole virtual world inside the computer.
In 7th grade, I had the opportunity to take a programming class at school. Once I had the basics down, I bought a book that explained how to program a text adventure game. I started programming my own interactive world to explore, and shared it with my friends. I was hooked.
What is your favorite coding language?
My favorite language is one you might not have heard of: Clojure, a dialect of Lisp that runs on the JVM. Clojure excels at modeling real-world problems as data, and makes it incredibly easy to write algorithms that transform and process that data. Clojure especially shines for building concurrent programs that need to operate on data in parallel. Clojure is often described as a dynamic, functional, concurrency-oriented programming language.
What is computational thinking?
I would define computational thinking as the set of skills that allow you to harness computers to solve problems, build applications, and design and run simulations. To do those things, you need to understand how computers process instructions and how computer programs are structured; you need to learn Boolean logic, data structures, and algorithms; you need to learn how to abstract specific solutions into general-purpose solutions.
What kind of careers can you have as a computer programmer?
Some of the more obvious options are web programming, data analytics, building desktop and mobile applications, cryptography, cybersecurity, artificial intelligence, game programming, financial systems, virtual reality, robotics, medical technology, smart appliances, digital forensics, etc. These days, it's hard to think of a business that hasn't been touched by computing.
If someone wants to learn code but doesn’t want to be a programmer, how could they use that knowledge?
The wonderful thing about knowing how to program is that it empowers you in everything you do, regardless of career. Maybe as a biologist, you could use programming to build a simulation to understand how a certain disease might spread. Maybe as a dancer, you could use programming to build a website and automate certain sound and lighting cues for the dance performance. In any field, knowing programming will give you an edge over those who don't. Also, learning programming builds powerful problem-solving skills, which is always useful.
How early can kids start learning how to code?
Kids can start learning the core concepts of programming from a very early age, as early as 4 or 5. Kids who learn the fundamentals early will discover they have a natural knack for coding when they eventually have the opportunity to learn a specific programming language. A good time to learn a programming language is whenever the child is comfortable typing and has completed pre-algebra. Block-based programming languages for kids can help bridge the gap and keep them excited about programming until they reach the level of maturity to tackle a text-based programming language.
How did you come up with the concept of the //CODE series?
I designed the //CODE series to make it possible for kids to learn the fundamentals of computer science by playing through a sequence of puzzles, unplugged, i.e., away from the computer. I started with the goal in mind – what core concept do I want to teach with each game? – and then brainstormed up a puzzle that would be a fun way to exercise and build that skill. Each game in the series went through several iterations until I felt I had something that would be both educational, and fun to play.
What sort of coding skills do the //CODE games teach children?
On the Brink teaches procedural abstraction. Rover Control teaches flow control constructs, and exercises the #1 most critical skill for mastering programming – the ability to step through a program in one's head. Robot Repair teaches Boolean logic and digital gates, and introduces students to one of the most important and famous computer science problems ever devised.
Do you have a question for Mark that we haven’t addressed? Interested in learning more about Mark’s career in virtual reality, game design, or programming languages? Head on over to Mark’s AMA (Ask Me Anything) forum on Reddit on August 17th to get your answers!