380 likes | 462 Views
This is a Lecture. On the cruelty of really teaching programming. Tony Jenkins School of Computing University of Leeds tony@comp.leeds.ac.uk http://www.comp.leeds.ac.uk/tony/. On the cruelty of really teaching programming. Tony Jenkins Computing Laboratory
E N D
On the cruelty of really teaching programming. Tony Jenkins School of Computing University of Leeds tony@comp.leeds.ac.uk http://www.comp.leeds.ac.uk/tony/
On the cruelty of really teaching programming. Tony Jenkins Computing Laboratory University of Kent at Canterbury amjj1@cs.ukc.ac.uk
On the cruelty of really teaching programming. Tony Jenkins School of Computing University of Leeds tony@comp.leeds.ac.uk http://www.comp.leeds.ac.uk/tony/
Dijkstra The Cruelty of Teaching Programming
Fortran • FORTRAN – “the infantile disorder” – by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use. • In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included. The Cruelty of Teaching Programming
PL/1 • PL/I – “the fatal disease”— belongs more to the problem set than to the solution set. The Cruelty of Teaching Programming
APL • APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums. The Cruelty of Teaching Programming
BASIC • It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration. The Cruelty of Teaching Programming
COBOL • The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. • With respect to COBOL you can really do only one of two things: fight the disease or pretend that it does not exist. Most Computer Science Departments have opted for the latter easy way out. The Cruelty of Teaching Programming
4GLs • Projects promoting programming in “natural language” are intrinsically doomed to fail. The Cruelty of Teaching Programming
Teaching • The use of anthropomorphic terminology when dealing with computing systems is a symptom of professional immaturity. The Cruelty of Teaching Programming
Uncomfortable Truths • Nearly all computing scientists I know well will agree without hesitation to nearly all of them. Yet we allow the world to behave as if we did not know them... The Cruelty of Teaching Programming
The Truth • We all know that … • … the way we teach programming is broken. • … most of our students cannot program. • But we, or our masters: • … ignore this simple and obvious fact. • … teach in the same way, year after year. • What is going on? The Cruelty of Teaching Programming
A Small Word Cruelty The Cruelty of Teaching Programming
A Statement Teaching Programming is Cruel. The Cruelty of Teaching Programming
Some More Basic Truths • Programming is not difficult. • Programming is enjoyable. • Learning to program is difficult. • Programming is not taught, but learned. • Programming is not learned in lectures. • Programming is a social activity. • Teaching programming is a problem. The Cruelty of Teaching Programming
Programming (1) • Java, Unix. • Objects first. • Deitel and Deitel. • Two lectures a week, twelve weeks. • Four assessments, two tests. • Single working, plagiarism detection. • Declarations, assignments, loops… The Cruelty of Teaching Programming
Programming (1) … • … is what we all do. • … is tried and tested. • … is what all our students negotiate. • … is not being received positively. • … is provoking emotional responses. • … is not a good educational experience. • … is not teaching anyone anything. The Cruelty of Teaching Programming
Students Speak • “It’s boring and difficult.” • “I pity anyone that has to do it.” • “Do something else!” • “It’s Hell!” • “I can’t believe you make us do this.” • “****!” • “It’s not something I intend to pursue.” The Cruelty of Teaching Programming
Programming is … • … fundamental. • … taught in the first semester of the first year. • … (often) required for progression. • … emotive. • … shrouded in mystery and reputation. • … practical. • … multi-levelled. The Cruelty of Teaching Programming
Dijkstra Edsger W Dijkstra, On the cruelty of really teaching computing science. Comm. ACM Vol. 32 (1989) pp 1397-1414. The Cruelty of Teaching Programming
Radical Novelty • Programming presents such a novelty. • It is often beyond existing experience. • Old learning patterns break down. • Such novelties … • … are unwelcome. • … require hard work. • … will be suppressed or denied. The Cruelty of Teaching Programming
Small Perturbations cin >> choice; if (choice = 1) doOptionOne (); else doOptionTwo (); “I’ve spent hours looking at this. It always does option one! What’s wrong?????” The Cruelty of Teaching Programming
Expectations • What do our students expect? • A big party? A 9 to 5 job? • 10 lectures a week? or 20? or 2? • Programming? Word Processing? FSMs? • What do we expect of them? • Experience? “Aptitude”? • Interest? Application? Attendance? • There seems to be a mismatch … The Cruelty of Teaching Programming
Motivation Expectancy Value Motivation The Cruelty of Teaching Programming
Motivation Motivation = Value x Expectancy • Value: • extrinsic • intrinsic • achievement • social • Expectancy • To “pass” The Cruelty of Teaching Programming
Motivation Motivation = Value x Expectancy • “It’s boring and difficult.” • “I pity anyone that has to do it.” • “Do something else!” • “It’s Hell!” • “I can’t believe you make us do this.” • “****!” • “It’s not something I intend to pursue.” The Cruelty of Teaching Programming
Expectations • “not much confidence at the moment” • “turning up in body, not in mind” • “dreading next semester” • “the coursework will destroy me” • “terrible experience” • “gonna get 0 — gonna fail — gonna die” • “hopefully scrape a pass” The Cruelty of Teaching Programming
Motivation Expectancy Value Value and Expectancy The Cruelty of Teaching Programming
Failure • Why do students fail in programming? • Because we teach it badly? • Because we don’t care? • Because it’s too difficult? • Because they don’t put the effort in? • Because they aren’t clever enough? • Because they give up! • Because they expect to fail! The Cruelty of Teaching Programming
A Summary • Students learn only if they are motivated: • They must value success. • They must expect that they will pass. • Our current teaching schemes: • Beat the motivation out of students. • Are based on misunderstandings. • Are cruel. • Future teaching schemes: • Must motivate, encourage, reassure … • Must be based on mutual understanding. The Cruelty of Teaching Programming
Some Quaint Notions • Programming is taught semester 1, year 1. • Programming is taught. • Language and platform matter. • Students don’t want to learn. • Students just want to get a good job. • Students aren’t motivated. • Programming is boring and difficult. The Cruelty of Teaching Programming
A Shorter Summary • Teaching programming is not … • … about syntax. • … about assessment. • … about punishing cheats. • Teaching programming is … • … about motivation. • … about a joint effort. • … about trust. The Cruelty of Teaching Programming
Questions? The Cruelty of Teaching Programming