Why Learn to Code?
The applicability of a solid education in Computer Science is tremendous. Computers are all around us and are increasingly part of our daily lives. The next generation should have the skills to be technology producers not simply technology consumers. From being able to quickly develop financial models using code, to programming for data collection and analysis in a scientific lab, or implementing an app for your phone, programming is everywhere. The goals are for students to see technology for what it is, know that they can learn to manipulate that technology through code, and develop the confidence and creativity to solve any challenge.
Code.org, the organization that brought us the Hour of Code, has eye-opening statistics about the opportunities in Computer Science and I urge you to visit their site.
What Are We Teaching?
I remember being at MIT taking 6.001, the introductory computer science class. The language that was used in the class was Scheme, a dialect of Lisp (another computer science language). The most fascinating thing about the class was the focus on the problem solving and structuring the solutions. The focus of the class wasn’t about learning a computer language, we learned all of the syntax we needed in one week, it was about using the language as a tool to solve problems computationally.
Fast forward 20 years of work experience in the field. One thing that held constant is that computing technologies have continued to evolve and be created. The skills that the best computer programmers that I worked with would have were:
- the ability to understand the problem or goal,
- break down larger problems into smaller ones,
- learn new technologies and new languages, and
- creatively figure out how to solve the problem
That in a nutshell is the philosophy behind the Computer Science program at Ideaventions Academy - we are looking to teach kids how to solve problems computationally and practice perseverance when programming. Whether the problem involves physical computing, online computing, or robotics, our goals are for children to learn and appreciate how technologies are created, as well as how to work through challenging situations where their programs and technology don’t behave as expected.
We believe that really being able to accomplish these learning goals, while enjoying themselves, takes time. That is why students are required to take Computer Science every year. Using languages whose syntax is easy to learn (e.g., Scratch is a drag-and-drop language and Python’s syntax is easy to understand), we will work on a series of engaging, fun and creative projects using various technologies (e.g., App Inventor, Raspberry Pi, Arduino), progressively advancing to more difficult challenges.
As Computer Science is not generally taught as a core subject in most high schools, there is no one curriculum that we can use and augment like we are planning to do in other subjects. Additionally, since we have yet to find an Elementary or Middle School in the country that requires Computer Science every year of school, the depth and breadth of a curriculum to span five full years doesn’t exist in the early grades. Therefore, for Computer Science we will be developing our own curriculum that is based on blending our own original content with some of the best computer science projects and technologies available.
Leading the Change
We need a movement in our schools to get more kids coding starting at a young age and hope that our program and the lessons learned from our implementation of a multi-year Computer Science curriculum serves as a model, both regionally and nationally.