Výuka programování
Na této stránce jsou odkazy na zajímavé články a Internetové stránky týkající se vlastního procesu výuky programování se zaměřením na výuku na vysokých školách. Některé odkazy směřují do databáze ACM, do které má VŠE zaplacen přístup - při přístupu ze ostatních sítí nemusí být tyto dokumenty dostupné.
1. Computing Curricula
Významné profesní organizace již mnoho let zpracovávají doporučení minimálního znalostního základu jednotlivých profesí v oblasti IS/IT - minimální znalosti absolventů obvykle bakalářského studia. Výsledkem jejich práce jsou následující dokumenty:
Computing Curricula 2004 - tento materiál obsahuje základní přehled jednotlivých profesí/bakalářských studijních programů v oblasti IS/IT: Computer Engineering, Computer Science, Information Systems, Information Technology a Software Engineering. Tento dokument zatím není dokončen.
IS 2002 - Model Curriculum and Guidelines for Undergraduate Degree Programs in Information Systems. Materiál popisuje minimální požadavky na absolventy bakalářského programu Information Systems, který se nejvíce blíží obsahu oboru Informatika na VŠE.
MSIS 2000 - Model Curriculum and Guidelines for Graduate Degree Programs in Information Systems. Materiál obsahuje doporučení pro obsah inženýrského studia oboru Information Systems.
Computing Curricula 2001 Computer Science - tento dokument popisuje obor Computer Science. Součástí je diskuse o výuce úvodních kursů programování - podrobně popisuje výhody a nevýhody následujících variant úvodních kursů programování:
- Začít procedurálním programováním (Imperative-first)
- Začínat výukou objektů (Object-first)
- Používat funkcionální programovací jazyk - např. Scheme (Functional-first)
- Úvodní přehledový kurs disciplíny (Breadth-first)
- Začít výukou algoritmů bez počítače (Algorithms-first)
- Začít technickým popisem počítačů (Hardware-first)
Autoři dokumentu doporučují začít výukou objektů.
Computing Curriculum - Software Engineering - v tomto dokumentu z roku 2004 jsou popsány minimální znalosti a povinné předměty oboru absolventu bakalářského studia Software Engineering.
Výše uvedené dokumenty můžete stáhnout též ze stránek jednotlivých organizací podílejících se na jejich vytvoření, např. ze stránek ACM: Association for Computer Machinery.
2. Vybrané statě a příspěvky na konferencích týkající se úvodních kursů programování
Přístup object-first
Michael Kölling je jedním z autorů výukového vývojového prostředí BlueJ a je též autorem/spoluautorem několika zajímavých příspěvků o výuce objektově orientovaného programování v Javě. Doporučuji pozornosti následující:
- Kölling M., Rosenberg J.: Guidelines for Teaching Object Orientation with Java. Proceedings of the 6th conference on Information Technology in Computer Science Education (ITiCSE 2001). Canterbury, 2001.
- Kölling M., Barnes D.J.: Enhancing Apprentice-Based Learning of Java. Proceedings of the 35th Technical Symposium on Computer Science Education (SIGCSE 2004). Norfolk, USA, 2004.
- Kölling M., Quig B., Patterson A., Rosenberg J.: The BlueJ system and its pedagogy. Journal of Computer Science Education, Special issue on Learning and Teaching Object Technology, Vol 13, No 4, 249-268. Dec 2003.
Zajímavé jsou i příspěvky, které popisují použití různých grafických prostředí pro výuku pochopení objektů v úvodních týdnech výuky programovaní, na které teprve poté navazuje výuka programovacího jazyka:
- Sanders D., Dorn B.: Jeroo: a tool for introducing object-oriented programming. Technical Symposium on Computer Science Education, Proceedings of the 34th SIGCSE technical symposium on Computer science education. Reno, Nevada, USA, 2003.
- Cooper S., Dann W., Pausch R.: Teaching Object-first In Introductory Computer Science. Technical Symposium on Computer Science Education, Proceedings of the 34th SIGCSE technical symposium on Computer science education. Reno, Nevada, USA, 2003.
- Lister R.: Teaching Java first: experiments with a pigs-early pedagogy. Proceedings of the sixth conference on Australian computing education - Volume 30. Dunedin, New Zealand, 2004.
Přístup model-first
V poslední době se na konferencích věnovaných výuce programování objevují zajímavé příspěvky prosazující začínat výuku analýzou a návrhem (tj. modelováním).
Přístup test-first
Zvyšování významu testování při tvorbě softwaru (viz např. extrémní programování) se projevuje i v názorech na význam testů pro vzdělávání programátorů. Příkladem tohoto trendu může být i začlenění velmi dobré grafické podpory do BlueJ. Jedním z propagátorů výuky testy řízeného vývoje již v prvních úkolech úvodních kursů programování je S. H. Edwards:
Výuka programování ve dvojicích (Paired programming)
Pod vlivem extrémního programování část vyučujících zkouší při výuce programování posadit k jednomu počítači dva studenty. Dle příznivců tohoto přístupu to má následující výhody:
- studenti se nerozptylují ničím jiným (např. procházením webu, čtením pošty),
- studenti mají mnohem menší ostych se zeptat druhého studenta než vyučujícího,
- studenti mají lepší možnost porovnávat své schopnosti se schopnostmi jiných studentů,
- Williams, L., Yang, K., Wiebe, E., Ferzli, M., Miller, C., Pair Programming in an Introductory Computer Science Course: Initial Results and Recommendations, OOPSLA Educator's Symposium 2002, November 2002.
- Nagappan, N., Williams, L., Wiebe, E., Miller, C., Balik, S., Ferzli, M., Petlick, M., Pair Learning: With an Eye Toward Future Success, Extreme Programming/Agile Universe 2003.
- VanDeGrift T.: Paired programming/ collaborative learning: Coupling pair programming and writing: learning about students' perceptions and processes. Proceedings of the 35th SIGCSE technical symposium on Computer science education. Norfolk, Virginia, USA, 2004.
3. Další odkazy
P. Norvig ve svém článku Teach Yourself Programming in Ten Years reaguje na knihy typu "Naučte se Javu za 7 dní".
Éric Lévénez zobrazil na časové ose historii programovacích jazyků.
Jak správně bastlit software.
Více konfigurátorem než programátorem