86

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 end goal. Make it about that. For example, you've said your son is interested in game development. Encourage him to create a simple game using a language like ...


79

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' misunderstanding of what university is. If I had applied that standard of value to the courses in the bachelor's degree I studied, I think I would only have attended 30 ...


65

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 who don't learn either have little desire to learn or have had poor teaching in the past. Even students with some learning disorders can learn given desire and ...


52

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 RED supercomputer from ~1998, which was the first supercomputer to be able to perform 1 trillion floating point operations in a second (1 TFLOP). It's ...


52

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 easier. We know how to use them already. Enter the Motivating Example. This mythical thing makes a new topic so useful that the new topic is practically a ...


51

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 on students who "just won't get it" Not reflecting on how teaching can improve, since the ones who failed "just won't get it" Noticing "patterns" in the ...


37

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 don’t take it too seriously. It says a lot about what functional programming isn’t (it has no assignment, no side effects, no flow of control) but not much ...


30

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 a student coming in next year who I have already been warned will have this problem, and I plan to show this to my class on the first day: I will then say ...


30

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, obviously? When you were 13, how many people did you know who were interested in the same things as you (even if it was not programming at that time)? Even among ...


28

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 instructions per second. So if you bought one when it was first announced, on November 15, 1971, and were able to keep it running continuously on some task, you could ...


25

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 find the gaps in it. This past semester, I asked every single student that came in to my office to change majors to CS (or to IT) the same first question: "...


25

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 over the course of my career), and @Buffy's idea that these students are satisfying rather than optimizing may well be correct. However, I haven't seen ...


24

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 but god-awful student submission from the previous term. Show them how its an order of magnitude simpler than their shotgun-formatted needlessly complex mess. ...


23

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 style. Within style for example, I might focus particularly on readability vis-à-vis indentation. If a student is marked down on this item, she knows exactly ...


21

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 be this way? Think of it this way: An alien lands on Earth. He sees a human, who encounters another human. The first human flips the second one off. In ...


20

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, but I actually focus very heavily on my Powerpoints to keep things moving and breezy, and it really can work! Fair warning, though: doing this well takes a ...


19

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: Aeronautical Engineering Biochemistry Biology Chemical Engineering Chemistry Civil Engineering Economics Electrical / Electronic Engineering Engineering (General)...


19

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 was furious at the time; because I had lost control of my work, and I didn't want or feel the need for the help at that time. There are two points that I ...


17

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, it's quite likely that the education system they are progressing through has never even tried to teach them that basic skill. But you don't have time to teach ...


17

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/5481 Is Haskell the right language for teaching functional programming principles? No! (As Simon Thompson explains.) I have learn dozens of languages and ...


16

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 functional languages better at recursion? This now becomes a teachable moment on a number of levels: imperative v. functional languages, recursion v. iteration, "...


14

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 way that recursion is a natural way to process anything organized in a tree. Anyone that has worked with files and folders/directories on a computer is already ...


14

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. Fast foward - I use that iPhone as an alarm clock (it can't do much else - we took it off our "plan" or whatever it's called a while ago). I've played the ...


14

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 and the process of learning, but in these things I am at best an amateur. The available evidence, unfortunately, does not demonstrate that anyone can learn to ...


14

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 context that means, often enough, the things they learned earliest and have been practicing with the most. This effect is most pronounced on hard problems that may ...


14

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 with a clear set of goals and progress. This adds direction and structure to the task. The task at hand must have clear and immediate feedback. This ...


13

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 almost all cases. Why? Because functional programming languages intentionally restrict themselves in the name of purity, and then try to demonstrate that they ...


13

Rather than trying to motivate the students, or the reluctant ones, to progress into using your new tool (foreach after for), and finding a new motivating example every time, try to motivate them to be self-interested, lazy coders. Now that I'm under the tar and feathers, I'll explain. People like to find the easiest way, not the best way. Earlier postings ...


12

Share their own struggles. Period. The instructor can start dispelling the myth by sharing his/her own story (replete with self-doubt, struggle, and frustration most likely) about studying computer science. In Harvard's CS50 course, the professor shares his experience of not starting as a CS major and of essentially taking CS50 himself pass/fail. That's in ...


11

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 and she was involved with the school of public health and studied epidemiology. The ability to handle and visualize huge data sets is central in that field. ...


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