87 votes
Accepted

How to teach a person to enjoy programming?

Meet him where he lives. Take something he's already interested in and use programming to accomplish some goal within that interest. The act of coding is not the end goal, the final "product" is the ...
82 votes
Accepted

How to answer "functional programming is useless"?

What can I use to show the usefulness of functional programming? This is the wrong question, and by trying to answer it you're falling into a trap of accepting and reinforcing the students' ...
  • 1,683
73 votes

Is there some meaningful percentage of students who can't learn to program?

There are a number of reasons why students don't learn, but few non medical ones why they can't. Leaving aside the medical reasons, such as hormonal imbalance or other disorders, I think that students ...
  • 35.1k
56 votes

Is there some meaningful percentage of students who can't learn to program?

Maybe. It's hard to prove a negative. How does knowing that help educators in any way? If that knowledge helps somehow, how does that compare to all the ways that belief can be harmful? Giving up ...
  • 1,955
55 votes

How to convey how much computing power has grown since the 1960s?

This is really difficult to communicate to anyone who hasn't lived through it (and even to those of us who have). I don't usually go back as far as the 60s. I show my students a picture of the ASCI ...
  • 1,021
55 votes

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

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 ...
  • 31.7k
38 votes

How to answer "functional programming is useless"?

Hughes is absolutely right, and the following paragraph from his paper hits the nail right on the head: Such a catalogue of “advantages” is all very well, but one must not be surprised if outsiders ...
35 votes
Accepted

Problematic student at a very high level

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 ...
  • 31.7k
32 votes

How to convey how much computing power has grown since the 1960s?

Others have mentioned volume of a system and I think that's a great place to start. I have always thought of it like this: According to Wikipedia, in 1971, the 4004 could perform roughly 75000 ...
  • 421
30 votes

Is there some meaningful percentage of students who can't learn to program?

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 ...
  • 31.7k
30 votes

How to teach a person to enjoy programming?

When you point at someone, there are three fingers pointing back at you, so I have some questions for you: How many people do you know who are also interested in programming, outside of work, ...
  • 301
28 votes

Is there some meaningful percentage of students who can't learn to program?

However, every year, I find a small number of students who just don't seem to get it. They get through, but the CS major program becomes harder and harder for them as their four years go by. Must it ...
  • 1,253
26 votes

How to tell a student that s/he should enroll in a different program?

Don't tell them anything. Ask pointed questions. Ask why they chose this course, or this major. Ask where they expect to be in a year or in five years. Make them talk through their plans. Let them ...
  • 471
26 votes

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

I'm not sure the following will work for all students, but I remember this being a transformative "aha" moment in my own education: Show them your code. Preferably contrasted against a functioning ...
25 votes

How do you encourage students to take criticism of their code constructively?

Here a few techniques I use in my class when giving feedback on student code: Use a rubric. CS50 has a clear grading approach: code is assessed along the four axes of scope, correctness, design, and ...
  • 9,032
20 votes
Accepted

How to respond when students ask "is recursion good practice"?

Quite honestly, I would be upfront with them about the debate. Send them to a couple other SE threads: Efficiency: recursion vs loop “Necessary” Uses of Recursion in Imperative Languages Are ...
  • 9,032
20 votes

How do you encourage students to take criticism of their code constructively?

My year 4 teacher at primary school taught me how to shade rounded objects - by doing so on a picture I had been working on for quite some time. I recognise now that it did improve the picture, but I ...
  • 301
20 votes
Accepted

How do you make your CS lectures more interesting?

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, ...
  • 31.7k
19 votes
Accepted

Uses of high school Computer Science: where can it lead other than university CS?

The Russell Group of Universities has published a useful list of recommended A level subjects for different degree options which suggests that other than a CS degree, CS A level is recommended for: ...
  • 806
18 votes

Is there some meaningful percentage of students who can't learn to program?

Consider the posibility that this could be a problem with Java. If your first language is APL, and many fail... is a reflect of the students or APL? Read also: http://lambda-the-ultimate.org/node/...
  • 297
17 votes
Accepted

Dealing with students who are overly motivated

I don't think this is really a CS problem - though of course some individuals do get "addicted" to computing. The root of the problem is that these students don't know how to study - and ironically, ...
  • 613
17 votes

Is there some meaningful percentage of students who can't learn to program?

I firmly believe that, barring actual mental handicap, anyone can learn to program. However, this is purely a belief; a matter taken on faith. It is informed in part by some knowledge of psychology ...
  • 270
16 votes

How to answer "functional programming is useless"?

I think the real trick is in teaching the value of Functional Programming rather than trying to teach the value of Functional Programming Languages. The latter will fail the pragmatic approach in ...
  • 1,031
16 votes

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

There are a number of facets to this question. But the first thing you need to remember is that students (like anyone) will tend to apply solutions that they are most familiar with. In the student ...
  • 35.1k
15 votes

How to respond when students ask "is recursion good practice"?

When I teach recursion, even if I am not at a point in the curriculum where it is possible to introduce trees in coding problems, I always at least provide a high level discussion of trees, and the ...
15 votes

How to convey how much computing power has grown since the 1960s?

I (barely) remember when the first iPhone came out. I remember playing this skeeball app on it, and really enjoying it. I thought it was so cool, and fast, and I thought the phone was sleek and small. ...
  • 4,684
14 votes

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

Rather than trying to motivate the students, or the reluctant ones, to progress into using your new tool (foreach after for), ...
14 votes

How to teach a person to enjoy programming?

Let's take a look at the condition's for Csikszentmihályi's1 flow theory: Flow theory postulates three conditions that have to be met to achieve a flow state: One must be involved in an activity ...
  • 31.7k
12 votes

Problematic student at a very high level

You said he refuses to work, but has mastered the material. How do you know he's mastered the material? I've had students like this in the past. They'll finish 2 weeks worth of assignments in a day ...
  • 3,039
12 votes

Uses of high school Computer Science: where can it lead other than university CS?

Knowledge of programming is extremely useful. One of my programming students at the North Carolina School of Science and Mathematics wound up at the University of North Carolina. She took CS courses ...
  • 2,279

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