32

When I attended a Mind, Brain, and Learning conference a few years ago, a lecturer posed the following question (paraphrased): If I ask you to figure out the cube root of a number like 150 in your head, and ask Albert Einstein or Richard Feynman to do the same, they will probably come up with the answer faster than you do. But who will be using more of ...


27

Don't overcomplicate things. Your first instinct, that the computer only has one hand, was the correct one. This is a regular problem that new teachers have, and it sometimes takes a few years of frustration to burn out the idea that everything you say must be formally true. If we say something that is untrue, the reasoning goes, the students will remember ...


22

Re-evaluate what you think is "right", because you aren't but isn't right in computer science This is simply incorrect. Your student can create two variables called LeftHand and RightHand. Copy value "red" from position 1 to LeftHand, copy value "green" from position 4 to RightHand, copy values back to positions 4 and 1 ...


16

Your problem is that you tried to let your student "program" without establishing a language. Thus they were free to write their own "language" in which you can do two things at once because you have two hands. If you'd asked them to rotate 3 objects, they would have picked up the third pencil in their mouth or so. You could have asked ...


9

About 20 years ago, I interviewed at a rather well known American software company. I met with about a dozen people over a day that lasted from 8:30 to 4:30. One of the questions was to come up with an algorithmic solution to blindly traversing a space that looked like this, from one end to the other: +----+ | | | | | +---------+ | | +-...


7

When I was about eight years old, my teacher asked the class to describe fool-proof ways to make a cup of tea, or to strike a match then use it to light something like a gas-flame or a cigarette. How would that not meet your citeria?


6

Why 5 operations when one suffices??? (The subsection of above showing the more usual machine instructions as "macros" implemented in terms of that one instruction) Being sparse and minimal is great. But before that you need to wonder what CS really is about. Here's some quotes from computer scientists that help you clarify your thoughts on that ...


5

I didn't write any myself, but I encountered several self-modifying MS-DOS batch files (this is possible due to the OS closing the batch file before executing each line), especially during the $1980$'s. I'm not sure if batch files fit within your definition of "programs", or if this usage was from too long ago since the needs & reasons for this ...


5

This question reminds me of when a student failed to understand why a third variable was needed to exchange the value of two variables (i.e. to swap A and B, C=A, A=B, B=C). I managed to illustrate this to them by placing an item (mobile phone) in each of their hands, and asking them to swap the items between the hands. On attempting to do this, they ...


4

They took both their hands, picked up the second and fourth pencils (each in one hand), and swapped them! That works in reality... but isn't right in computer science. It depends on your paradigm. You are teaching the swap algorithm you know, but haven't explained to the students (or at least in the question) what things are. Here is a perfectly valid ...


4

My go-to answer for this question would be CS Unplugged, an open-source "collection of free learning activities that teach Computer Science through engaging games and puzzles that use cards, string, crayons and lots of running around". It has been around and maintained for at least 18 years now... and even if it may be a bit low-level for high ...


4

But I would like to teach algorithmic thinking per se, independent of the underlying programming language. The current classic book is "Introduction to Algorithms" Third Edition by Thomas H. Cormen (WorldCat) It is a collage level book but then again so are computer algorithms.


4

First, I am not sure what the five operations you mention are. And, or, xor, not are only four, and if you include the negations, you get nand, nor, and xnor. I don't know whether you mean to move higher or lower on the abstraction ladder when you say "five operations". Here are some possibilities: The point at which is all becomes concrete is, ...


4

Why not teach people how computers work right away? A driving lesson does not start with a mechanic course. A cooking class does not begin with a chemistry class. A house painter can start working before they know how to make paint and pigments. Musicians don't learn to build an instrument before they learn to play it. The content of a curriculum should be ...


4

Buffy Ben Victor Eijkhout all in different ways talked of levels. Let me try enumerating them for you from established sources. (Summarizing for brevity) Weste Eshraghian book on CMOS VLSI gives these levels Digital VLSI design is often partitioned into five levels of abstractions: architecture design, microarchitecture design, logic design, circuit design, ...


3

While it is possible to do as you suggest, and many people do it, I question its wisdom. There are many aspects to consider. The most important, however, is that if you are teaching CS then the likely most important idea (meta) is abstraction itself. CS is full of abstractions, with programming and programming languages being one of the key elements and so, ...


3

I haven't tried to build this but it seems to have the right characteristics The Animal Game In theory, new animals could be captured with new classes, extending the known list. The user thinks of an animal and the program asked a series of yes-no questions to "guess" the animal: "Does it have antlers?" etc. Depending on the answer, it ...


3

Analogies & metaphors are imperfect, so let's share the expectation that they are just illustrative. Rules of what is possible (and not) are very important, and we can compare the rules of pencils moved with hands and what computers can do — but we need to define both, in part so the rules for the metaphor can be compared with the those of a computer. ...


3

I do the swap example pretending to have two largish (2-hands-to-lift) boxes side-by-side on a desk (with only enough room for two boxes). After we lift the first we have to look for a place to put it, which feels like creating the temp variable. But I don't think swap is an especially good example with lists. It's easier to explain swapping just any two ...


3

In thinking about this, and especially the answer of Graham, I think that what we really do in the standard three step process is a two handed swap without thinking of it. So, it is a failure of the metaphor, actually. So, here is a reframing of the standard process: Pick up one stick with the left hand (i.e. temp is associated with the left hand). THEN, ...


2

Ben's answer is great, but allow me to suggest that you don't need to "respond" to the two-handed approach at all: just say when you're explaining the problem in the first place that they can only use one hand and they can only hold one item at a time. Students are less likely to need a justification this way, because you haven't changed the rules ...


2

check this https://youtu.be/8hly31xKli0 Algorithms and Data Structures - Full Course for Beginners from Treehouse freeCodeCamp.org


2

I preferred to wrap up what in the comments & what is new here This course is usually called Algorithms Design & Analysis, I haven't taught say in 10 yrs but those are classics: -The famous K-nuth The art of Computer Programming vols 2,3 -Sartaj Sahni book, I can't remember the name now, but it exactly explains the point; it starts with an outline ...


2

Graham pointed out that the assumtions of the question are wrong. And Peter Cordes elaborated a bit in the comments. Considering a target VLIW (Very Long Instruction Word) architecture can help sharpen this argument further. The basic idea of VLIW is that a Very Long Instruction "horizontally" packs a number of instructions per single VL-...


2

Maybe you have a point that there is a level to the hardware that is explainable. However, I don't see how it enlightens the use of a programming language. Besides, I don't think you realize how much the explanation that you seem to be proposing is also an abstraction. How precise are you going to explain how a computer works? Independent functional units? ...


2

I teach year 8, some of this: Boolean logic, combining Boolean logic to make a memory bit, and an adder. We also go the other way to discover how to make logic with dominos, switches (Shannon), cogs, etc. However the bottom up approach is not the best way. Noor is the top down. You need both. Many CS principles are true independent of how they are ...


1

We have before us a question that is apparently of very little interest to almost everyone: What makes this particular machine that is powered by electricity different from electrical machines that don't answer questions? We know that computers manipulate symbols. How do symbols touch the world and cause lights to go on, cars to turn left, nuclear missiles ...


1

My go-to source for algorithmic thinking is The Science of Programming by David Gries (one of my mentors in CS). Algorithms are expressed in an abstract language that was also used (and made popular for exposition) in the papers of Dijkstra. The basis of the algorithmic thinking was to examine preconditions and postconditions for a problem and to work from ...


Only top voted, non community-wiki answers of a minimum length are eligible