Everybody uses computer; but not everybody can program one. If we have (or almost have) eliminated computer illiteracy, then the next goal would be coding illiteracy. Alan Perlis first made the claim in 1961 that computer science, and programming explicitly, should be part of a liberal education. This of course doesn’t meanthat we all need to and actually want to program, just like we don’t need or want to play piano. Learning to code can be a practical skill, and is increasingly valuable as such, yet the basic assumption of this course is that: learning to code is first and foremost a general educational tool—its value consists of teaching children how to think and to explore the unknown.
Learning a programming language that can be applied in real world scenarios such as Python is very different from learning a block-based visual programming languages such as Scratch. It can be a major challenge because students need to learn manythings at once: to type, to format code, to master the syntax required by the specific language, and to understand some basic concepts in computer science. These require hard works on the part of learner and often do not lend to easy and quick payoff.
With the right environment, however, even the toughest jobs can be fun and intuitive. This courses adopts CodeCombat, a platform that offers real coding from the very first moment. More importantly, it maintains a strongly motivated and thoroughly engaged learning by shaping the process into a continuous challenge to beat the game. By carefully yet quietly strengthening the importance of typing, formatting, syntax mastery and debugging skills, this course will deliver not only the essentials of python language, but also communicate to the students what it feels to be a programmer who solves real programs instead of answering questions in a textbook.
Python is taught everywhere. So it is important to emphasize that we teach this class with a very non-traditional pedagogy. Thevast majority of programming language books and courses proceed systematically from basic data types, mathematical operations, variables to more advanced topics such as functions and classes. There is nothing wrong with this traditional approach. But it does not take children’s psychology into consideration, in which case the sooner one gets to make something visuallyappealing and emotionally rewarding the better the learning experience would be. I believe that learning should be more dynamic, active and rewarding. Thiscourse, in consequence, doesn’t start from printing “hello world.”
We prioritize concrete hands-on experiences and self-paced learning progression. We encourage the students to know how things work by observing and copying from examples, by doing them without theoretical explanation beforehand. Only after students have gained considerable practical experience around a concept do we introduce the concept in all its theoretical and abstract dimension.
This curriculum is divided into four units. They loosely correspond to the idea of “immersive programming world” in CodeCombat where you proceed to the next world only after you have completed most levelsin the previous world and meet a significantly difficult challenge (read: boss fight).
Unit 1A will be the Kithgard Dungeon. This is a warming-up unit. If your students need to take a trail class before comittment, this is where they do it. The majority of students can finish this unit without any help from the instructor as there is no real challenges if they choose to follow only the levels on the path. However, for students without previous experience in text-based programming language,this is a huge step. They need to deal with many things at once: typing,format, syntax, parenthesis, statement order, execution logic, debugging, etc. They also need to pay close attention to indentation as Python relies on indentation to structure the code. I hope that this unit will give them what I believe the most important things in their first encounter with coding: confidence and pleasure.
Unit 1B, the Backwoods Forest will be the first real unit that require some teaching. Here the students are exposed to basic computer science concepts (e.g., object and method; Boolean and arithmetic operations; parameter and argument) and the most essential programming techniques such as loops, conditionals. It normally takes around 10 hours to finish.
Unit 2 will reinforce what they have learned in unit one and introduce array operations and a variety of ways of flow control. In this unit students will be immersed in the world of Sarven Desert.
Unit 3 is housed within the Cloudrip Mountain. It represents the final stage of this curriculum, by the end of which students will be able to acquire all the necessary skills to explore python programming independently, with the help of classmates and online community.
An individual student’s progression in the course is indicated by the level he/she is currently on. Advancing to a certain level means that he/she has completed all previous levels (possibly with instructor’s help). For a list of levels and their corresponding skill sets, see next page. We have also designed quizzes and final-exam challenges to gauge a student’s grasp of basic CS concepts. Apart from all these objective measurements, we also believe it is very important to observe and report individual student’s learning style and the specific hurdles he/she has experienced.