33
votes
Accepted
Teaching algorithmic thinking without a programming language
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 ...
27
votes
Accepted
How to respond to the two-handed approach to swapping
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 ...
22
votes
How to respond to the two-handed approach to swapping
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 ...
16
votes
How to respond to the two-handed approach to swapping
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 ...
9
votes
Teaching algorithmic thinking without a programming language
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 ...
7
votes
Accepted
Interview lesson on "Computational Thinking"
I would like to suggest my absolute favorite lesson from my intro to CS class. I usually teach it over two class periods, the first being "unplugged" and the second on the computers, but I think you ...
7
votes
How do you assess students' understanding of abstraction?
tl;dr: Just say no.
This question is difficult on many levels. I seems to me to be a land mine of misconceptions and has the possibility to lead to poor teaching practice.
First the difficulties
...
7
votes
Teaching algorithmic thinking without a programming language
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 ...
6
votes
Driven to Abstraction
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 ...
5
votes
Accepted
how can i build up interest in learning some dry but important subjects of BS(CS)?
I hate to be unkind, but I wonder if you are blaming others for your own lack of effort and commitment. I don't think that everything that you need to study needs to be "interesting" before you make a ...
5
votes
Accepted
What non-programming book is vital for learning the CS mindset?
The hardest part of determining anything in computer science is the requirements first. If you don't know what the program should do, then there is no way to do it correctly.
Thus, Winnie the Pooh ...
5
votes
Simple use case for self-modifying programs
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$'...
5
votes
How to respond to the two-handed approach to swapping
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 ...
4
votes
Accepted
Short foundational lessons for 7-8 year olds
If you are merely looking for feedback on this, let me point out, first, that according to Piaget's work, your students seem a bit young for this. They have only just entered the third stage of Piaget'...
4
votes
What non-programming book is vital for learning the CS mindset?
The timeless way of building — Christopher Alexander (https://www.patternlanguage.com/patterns/justsostory.html)
This is a 3 volume book that includes A Pattern Language. This set of books is ...
4
votes
How do you assess students' understanding of abstraction?
Fundamentally, I question the notion that you can test to see if students understand the idea of abstraction beyond a superficial level, even if you don't restrict yourself to asking just multiple ...
4
votes
How do you assess students' understanding of abstraction?
I would probably ask students to demonstrate their understanding of abstraction by writing code demonstrating solutions to a small problem at, say, three different levels of abstraction. I'd probably ...
4
votes
Teaching algorithmic thinking without a programming language
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....
4
votes
Teaching algorithmic thinking without a programming language
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, ...
4
votes
How to respond to the two-handed approach to swapping
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. ...
4
votes
Driven to Abstraction
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 ...
4
votes
Accepted
Driven to Abstraction
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 ...
4
votes
Driven to Abstraction
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 ...
3
votes
how can i build up interest in learning some dry but important subjects of BS(CS)?
Motivation to work through "boring" material can be from knowing that it is the required foundation for more interesting stuff. Or you might try to find some interesting angle to it. Perhaps it is ...
3
votes
How can I build up the understanding of a project?
Each project manager will tell you that the success of your project refers to planning. This can take some effort at first, but in the long run having a clearly defined project plan will save you time,...
3
votes
Accepted
How can I build up the understanding of a project?
I think it would be improper to give you advice on the content of your project. Your professor assigned it so that you would learn something and you will learn more by doing that part yourself.
...
3
votes
How can I improve other programming languages while having command on one language
Looking at Buffy's answer it's clear to me that I've understood the question quite differently, so I will set some context before I get to the point.
However you are good in only one language.
I ...
3
votes
How do you assess students' understanding of abstraction?
Your tennis racket question, is not good. As tells as that is is abstraction, then focuses on the form, when the most important aspect of a tennis racket is its function. Therefore the answer is non ...
3
votes
What non-programming book is vital for learning the CS mindset?
Since you said non-programming, rather than non-CS I'd like to add a couple of very small books by V.J Rayward-Smith:
A First Course In Formal Language Theory
First Course in Computability
Both ...
3
votes
What non-programming book is vital for learning the CS mindset?
I find Henry Petroski's book "To Engineer is Human - The Role of Failure in Successful Design" a useful read.
I also suggest Tracy Kidder's "The soul of a new machine", but mainly because I was there....
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
computational-thinking × 22lesson-ideas × 3
teaching-analogy × 3
self-learning × 2
resource-request × 2
student-motivation × 2
undergraduate × 2
algorithms × 2
project × 2
assessment × 2
adult-education × 2
curriculum-design × 1
best-practice × 1
programming × 1
introductory-lesson × 1
textbook × 1
struggling-students × 1
active-learning × 1
resource-information × 1
cs-theory × 1
homework × 1
code-example × 1
arrays × 1
primary-school × 1
abstraction × 1