Ben I.
Moderator
  • Member for 4 years, 8 months
  • Last seen this week
How to explain the concept of a variable to a 9-year old?
Accepted answer
98 votes

Buffy's lovely answer shows well how two variables can refer to the same thing, but since we are in early cognitive development and working with Scratch, in which you can't pass parameters, and can't ...

View answer
How do you teach something when you don't know it yourself?
Accepted answer
61 votes

This is a vital question, perhaps the vital question, for a CS educator to deal with, because technologies will keep pushing us. There is no end to this particular merry-go-round. I have been stuck, ...

View answer
Learning fundamental differences between functional programming and Object Oriented Programming
Accepted answer
59 votes

There are beautiful answers to this question already here, and I will not try to reiterate any of the ground that has already been covered. However, something important that I have not seen here so ...

View answer
What are healthy, productive ways to encourage students to progress to more advanced constructs as opposed to staying with the familiar?
54 votes

I'm afraid that there is no single silver bullet. The problem you've pointed to is very real, and isn't limited to students. All of us tend to stick to our own familiar toolsets because, well, it's ...

View answer
Should CS students be doing their tests on paper?
53 votes

100% yes. In beginning courses, it's practically a cognitive requirement. Let me see if I can break down for you why it is so important. It comes down to what we can know that the student knows. ...

View answer
What controversies in computer science education exist today?
52 votes

There is a big controversy about the purpose of "Computer Science" education specifically. This controversy has become hotter the the last few decades as CS has come to the fore as an ...

View answer
Why did the percentage of CS bachelor's degrees going to women peak in 1984?
46 votes

Obviously, there is no way to definitively know the answer to this question. But my favorite theory has to do with the advent of the home PC, and the original marketing of computer games to boys. ...

View answer
Real life examples of 0-indexing
45 votes

You can get at this concept very intuitively in strings before you ever get to arrays. Take a string like "hello world" and ask them a subtle-sounding point: does the string begin here: "*hello world"...

View answer
Why isn't there one language to use instead of different programming languages?
42 votes

I'm going to echo what Buffy said, but in a different manner. All of the great languages have a sort of direction that they point in. For instance, the Excel language (yes! The one from the ...

View answer
How to teach the importance of indentation
Accepted answer
41 votes

It has taken me a long time to get to a point where my students regularly indent properly. I basically use a 4-part strategy. (My work here in the context of AP Computer Science, so my examples are ...

View answer
Why is computer science hard?
39 votes

First, I somewhat dispute the premise of the question. I don't necessarily believe that it is harder. I think there may be some other elements at play. Unlike many other college fields, students ...

View answer
How do you deal with Lone Rangers in group projects?
38 votes

This is really a separate approach from my first answer, which has received some push-back. It's worth noting that many of these loners are simply students who are substantially ahead of the curve. ...

View answer
When mentoring individuals, teach clean coding and simple/effective thinking or let them do it their way?
Accepted answer
36 votes

As someone who has now taught CS for many years, let me first reassure you that teaching clear, clean coding is entirely worthwhile. I think this is especially true for those who will not go off into ...

View answer
Problematic student at a very high level
Accepted answer
35 votes

The best way to deal with this kind of student is to head it off at the pass. If you can get the student at the beginning, you can often prevent the problem from festering in the first place. I have ...

View answer
Teaching algorithmic thinking without a programming language
32 votes

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 ...

View answer
Is there some meaningful percentage of students who can't learn to program?
29 votes

As I indicated in the question, it has been my experience that there are certain kids who never seem to come along. My data is drawn from a rather small group (definitely under 1000 kids learning CS ...

View answer
How to respond to the two-handed approach to swapping
Accepted answer
27 votes

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 ...

View answer
How can we teach good naming practice for students learning Java?
27 votes

Fair warning, I do not demand any particular naming convention (such as NetBeans) from my students. This leaves me with variable naming only for the purpose of clarity. I speak constantly to my ...

View answer
What are good examples that actually motivate the study of recursion?
26 votes

One good example is to make permutations of all of the letters in a word of arbitrary length. It's quite tricky to do iteratively, since you essentially have to recreate the program stack to get it ...

View answer
Why teach C using scanf without talking about command line arguments?
Accepted answer
25 votes

I think that the rationale is so you don't have to introduce arrays and array notation on day 1. Typically, arrays enter into the picture at roughly the same time as loops, which would take place a ...

View answer
What could be the possible advantages of teaching Scheme as first programming language?
24 votes

There's one more reason I'd like to add to those here, less high-minded, but also a genuine consideration. One of the practical difficulties of teaching an introductory course is that the students ...

View answer
Why do we count starting from zero?
23 votes

When I've explained this to beginning students, I don't stray far from your third reason, though I agree that the beginning of arrays is early to introduce the concept of memory addresses. Among ...

View answer
Should teachers enforce standardization of spacing and braces?
22 votes

Our two deities are clarity and efficiency. Standardization makes a great deal of sense in industry, where large numbers of programmers may work with the same lines of code and must be able to make ...

View answer
How do I teach "math equality" vs. "CS assignment" vs. "CS equality logic operator"?
Accepted answer
21 votes

I actually cover this idea in my very first lesson in AP Computer Science, because I have found that students find the different uses of = to be confusing, indeed. I run a unit based on Tom Roger's ...

View answer
What's the benefit of prohibiting the use of techniques/language constructs that have not been taught?
20 votes

Where it stems from is, of course, because the lab is not the thing that the instructors want solved. After all, the lab problem is not an unsolved problem, and it will only be unique (if at all) in ...

View answer
How to teach students not to use jump statements
Accepted answer
20 votes

I don't believe that your question is entirely valid; some languages require jumping. The first principle, therefore, is to follow the norms of your language. However, I suspect that you are asking ...

View answer
How do you make your CS lectures more interesting?
Accepted answer
20 votes

Kill 'em with clarity. I have a working memory that borders on handicapped, which has forced me into a solution that I have not seen others do. This is going to sound like total anti-orthodoxy, ...

View answer
Should the first Programming/Algorithms class be taught in pseudo-code?
18 votes

No, it shouldn't. It's an appealing idea, but when kids are just starting in programming, one of the few straws they have to grasp at is that it is, on some level, very concrete. I type: std::cout &...

View answer
Should test cases be made available to students for assessed assignments?
18 votes

I've always released a number of test cases for the purposes of clarity. I do have to double- and triple-check that my unpublished test cases are nevertheless unambiguously specified in the ...

View answer
How to share solutions in a way they won't get uploaded
17 votes

I don't have real answers, and I suspect there are none. I also reuse prompts, if only because good ones are almost absurdly hard to come up with, write-ups and supporting code take time, etc, etc, ...

View answer
1
2 3 4 5
10