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 ...
Ben I.'s user avatar
  • 32.9k
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 ...
Ben I.'s user avatar
  • 32.9k
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 ...
Graham's user avatar
  • 1,072
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 ...
Victor Eijkhout's user avatar
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 ...
Flydog57's user avatar
  • 191
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 ...
John Bartucz's user avatar
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 ...
Buffy's user avatar
  • 36k
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 ...
Robbie Goodwin's user avatar
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 ...
Rusi's user avatar
  • 918
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 ...
Buffy's user avatar
  • 36k
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 ...
user2120's user avatar
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$'...
John Omielan's user avatar
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 ...
Kaz's user avatar
  • 151
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'...
Buffy's user avatar
  • 36k
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 ...
ctrl-alt-delor's user avatar
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 ...
Michael0x2a's user avatar
  • 4,005
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 ...
Jerry Coffin's user avatar
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....
Guy Coder's user avatar
  • 934
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, ...
orithena's user avatar
  • 141
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. ...
Jason Goemaat's user avatar
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 ...
Ben I.'s user avatar
  • 32.9k
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 ...
Rusi's user avatar
  • 918
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 ...
Flater's user avatar
  • 1,311
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 ...
vonbrand's user avatar
  • 614
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,...
Raja Ali Haidar's user avatar
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. ...
Buffy's user avatar
  • 36k
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 ...
Peter Taylor's user avatar
  • 1,673
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 ...
ctrl-alt-delor's user avatar
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 ...
Buffy's user avatar
  • 36k
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....
Brian Tompsett - 汤莱恩's user avatar

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