1 / 38

This is a Lecture

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

thane-bruce
Download Presentation

This is a Lecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. This is a Lecture

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

  3. On the cruelty of really teaching programming. Tony Jenkins Computing Laboratory University of Kent at Canterbury amjj1@cs.ukc.ac.uk

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

  5. Dijkstra The Cruelty of Teaching Programming

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

  7. PL/1 • PL/I – “the fatal disease”— belongs more to the problem set than to the solution set. The Cruelty of Teaching Programming

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

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

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

  11. 4GLs • Projects promoting programming in “natural language” are intrinsically doomed to fail. The Cruelty of Teaching Programming

  12. Teaching • The use of anthropomorphic terminology when dealing with computing systems is a symptom of professional immaturity. The Cruelty of Teaching Programming

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

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

  15. A Small Word Cruelty The Cruelty of Teaching Programming

  16. A Statement Teaching Programming is Cruel. The Cruelty of Teaching Programming

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

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

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

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

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

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

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

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

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

  26. Motivation Expectancy Value Motivation The Cruelty of Teaching Programming

  27. Motivation Motivation = Value x Expectancy • Value: • extrinsic • intrinsic • achievement • social • Expectancy • To “pass” The Cruelty of Teaching Programming

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

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

  30. Motivation Expectancy Value Value and Expectancy The Cruelty of Teaching Programming

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

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

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

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

  35. Questions? The Cruelty of Teaching Programming

More Related