Computer Programming – The Rules of the Game
A basis of a vector space is a set of vectors in that space that can be used as coordinates for it. [1]
I just read Dan Meyer‘s quick review of the Graspable Math tool. While I did briefly investigate Graspable Math, and also glanced at Desmos, the tool where Dan is head of teaching, what really struck me was how Dan’s writing shows him to be “on the inside” of math teaching and learning. As I am too. That is, there’s a room called “math”, both of us are inside it, and we’re familiar with the rules of the game.
As I love computer programming and am always looking for new ways to teach it, the question arose in my mind: what is the minimal set of constructs to teach students so that they can take off from there and learn the rest of computer programming, in any language, pretty much by themselves?
I did a quick search for “minimal constructs of programming” and found Software Design & Development: Programming Constructs (pdf) from The High School of Dundee in Scotland. Nice and clear, but according to the table of contents, roughly 30 topics. That feels like too many to be minimal.
When faced with the question of how to teach, I usually first turn back to myself – how do I learn? That answer is not likely to be the best or complete answer, because most students are not me. (A valuable lesson for teachers, that I struggle to keep in mind!) But it’s an OK start, and often it’s all I have.
When I learn a new programming language, what constructs do I look for?
- Variables (scalars, vectors; and assignment – same “=” sign means something very different from math)
- Operators (may look very different in, say, Python vs APL vs AWK)
- Conditionals
- Loops
- Input/Output
- Functions (could be an intermediate level topic, but so important for clear code that I put it here)
Maybe also
- Imports (to get access to additional commands)
- Classes (for object-oriented programming — question whether that’s an essential or advanced topic)
And there’s also environment and tools:
- How to edit
- How to compile (if necessary)
- How to run (both in editor and from command line — so “command line” is a concept too)
- How to interact with the program (where do I put input? where do I see output?)
The absolute minimum count of the above is 10 topics. Is that the minimum? Is that the right set? And, is it a set of topics where each one makes sense to a student who is new to computer programming? That last one is so important because (as above), my students are not me.
Thus, towards a second draft of the list, and maybe some hints to what kinds of explanations, exercises, and even learning-support tools (like the math environments mentioned at the beginning of this post, only for computer programming), I want to consider the question in some new ways. Based less on how I learn computer programming, and more on how people, even children, learn things from each other:
If computer programming were an outdoor game played at recess, and I were ten years old, how would I teach my friends the rules of the game?
If computer programming were a dance, what would be the basic steps?
What are your answers to these questions?
קודם כל, הייתי מסבירה את הרעיון הכללי. אתה מכניס משהו, אתה מקבל משהו אחר שהתוכנה עושה. ואז מציגה את המהלכים- את הפעולות עצמן- להדפיס, להכניס משהו, לולאות,- בצורה הכי טכנית ופשוטה שיש. ורק אז, בודקת אם הבינו את המשמעות של הדברים, העמוקה יותר. כי אז באמת אפשר לדעת אם הבינו, כשיש בסיס להבנה.
מבחינת מהו הבסיס, אני לא יודעת אם אני יודעת את כולו ולכן רוב הסיכויים שלא אדע להגיד, אבל מה שכן למדנו הוא בהחלט בכיוון הנכון לבסיס לטעמי
Omer
June 13, 2018 at 3:54 pm