Kurse für Leute, die mit der Programmierung vertraut sind, beinhalten sehr oft ein Code-Projekt, was ich für eine gute Art zu lernen halte. Solche Projekte sind jedoch oft zu künstlich und daher nicht besonders lohnenswert.
Was sind Ihre Ideen für die Belohnung von Code-Projekten? (Vorzugsweise leicht zu beginnen und erweiterbar für Fortgeschrittene!).
Bearbeiten:
@Mark: Danke für den Link, obwohl ich mehr an Projekten für Leute interessiert bin, die völlig neu in der Programmierung sind (der Link scheint sich mehr auf Leute zu beziehen, die bereits in mindestens einer Sprache geübt sind und zu lernen versuchen ein neues - das typische SO-Publikum, das ich sagen würde :) -).
@Kevin, Vaibhav, gary: Ich habe an Leute gedacht, die das Programmieren in einer Sprache lernen, also wissen manche am Anfang des Kurses nichts über Kontrollstrukturen (und noch weniger über irgendeine Art von Syntax). Allerdings habe ich in einem ziemlich großen Projekt nachgedacht (typischerweise in den 1k-10k-Zeilen des Code-Bereichs, möglicherweise in Gruppen von 2 oder 3 Studenten). Das war, was an meiner Schule für die Anfänger gemacht wurde, und es schien für sie zu funktionieren ... außer dass die meisten von ihnen ihre Projekte ziemlich langweilig fanden, um daran zu arbeiten!
Wie schon mehrmals erwähnt, ist das, was Sie dem Anfänger beibringen möchten, sehr wichtig für das Projekt.
Mein Rat an Sie, so etwas zu planen:
1) Vermeiden Sie ein Computerspiel
Ein Computerspiel, während es Spaß macht zu bauen, belohnt den Programmierer nicht früh mit Ergebnissen (es ist sehr komplex). Sie möchten sich auf kleine, aber nützliche Anwendungsprogramme konzentrieren, z. B. einen Port-Scanner . Das Beispiel dort ist ein wenig komplex, aber es ist eines der besten Lernprojekte, die ich im Web gesehen habe.
2) Grafiken früh lernen
Es ist lohnend, die Früchte Ihrer Arbeit schon früh zu sehen, und es motiviert Sie, weiter zu gehen. Ob Sie WinForms, MFC oder die Win32-API, OpenGL oder DirectX verwenden, lehren Sie es früh.
3) Viele kleine Lektionen mit detaillierten Informationen
Diesem Prinzip folgt das oben verlinkte Port-Scanner-Projekt, und es funktioniert gut. Unterrichten Sie jedes Teil gründlich und geben Sie dem Anfänger Zeit, die Lektion zu lernen. Ich denke, ZophusX hatte ein gutes Format, um die Informationen zu geben. Es ist schade, dass er seine Seite meistens verlassen hat.
4) Es braucht Zeit
Übereile die Dinge nicht. Niemand wird in ein paar Wochen ein stellarer Programmierer. Versuchen Sie und machen Sie die Lektionen einfach, aber einnehmend und bauen Sie weiter aus Ihren vorherigen Lektionen.
5) Erhalten Sie früh und oft Rückmeldung
Sie denken vielleicht, dass ein Projekt unglaublich interessant ist, oder eine bestimmte Lektion oder so, aber Sie sind nicht derjenige, der lernt. Ihre Schüler werden es sehr schätzen, wenn Sie sie früh fragen, wie die Dinge laufen und worüber sie mehr wissen möchten. Sei flexibel genug, dass du einige dieser Anfragen annehmen kannst.
6) Viel Spaß beim Lehren
Viel Spaß. Leidenschaft ist ansteckend, und wenn Ihre Schüler sehen, wie sehr Sie das Thema genießen, wird auch etwas von dieser Begeisterung auf sie abfärben.
Ich hoffe, das hilft!
Einige gute lohnende Projekte, in Bezug darauf, was Sie lernen können und welche in Bezug auf Komplexität ziemlich skalierbar sind, sind:
Der Schlüssel besteht darin, ein Projekt so einfach auszuwählen, dass einige seiner Funktionen sofort sichtbar werden, wenn Sie sich den Projekttitel ansehen. Und wenn Sie wirklich einen Gedanken bekommen, werden Sie weitere Funktionen entdecken, die Sie hinzufügen können.
Das Projekt sollte genug Schwierigkeiten haben, so dass seine Eigenschaften jenseits der Reichweite des Anfängers zu liegen scheinen und ihn dadurch motivieren, die ganze Zeit etwas Neues zu lernen.
Wenn Sie in Ihrem Unternehmen neue Leute ausbilden, ist es sehr lohnend, sie als interne Ressourcen an einem Live-Projekt anzuhängen.
Dies erhöht die Arbeitsbelastung der Hauptentwickler ein wenig (weil sie die ganze Arbeit, die der Praktikant macht, überprüfen muss), aber es ist ein langer Weg in Bezug auf Training und Entwicklung der Person.
Ich denke, dass Spiele und Puzzles ein guter Anfang sind, da sie viel Spielraum für die Entwicklung komplexerer Versionen bieten können. Zum Beispiel kann ein tic-tac-toe -Programm anfangs als einfaches Befehlszeilenprogramm erstellt werden, bei dem zwei Spieler das Spiel spielen können.
Dieser Schritt kann verwendet werden, um zu zeigen, wie eine einfache Datenstruktur oder ein Array das Spielbrett darstellen kann, einfache Eingabe, um Benutzerbefehle / -bewegungen zu erhalten, einfache Ausgabe zur Anzeige des Spielbretts und Eingabeaufforderungen usw. Dann können Sie anfangen zu zeigen, wie Algorithmus kann verwendet werden, um Player vs Computer-Modus zu ermöglichen. Ich mag den einfachen magischen quadratischen mathematischen Algorithmus für tic-tac-toe , da er auf sehr einfacher Mathematik basiert. Danach ist der Himmel das Limit, Verbesserungen der Benutzeroberfläche, Datei-I / O zum Laden und Speichern von Spielen, erweiterte Algorithmen, um den Computer besser spielen zu lassen usw. Komplexere und befriedigendere Spiele können immer noch mit Textmodus oder einfachen Grafiken erstellt werden / p>
Ich habe das Sokoban Spiel verwendet, um im Laufe der Jahre viele Techniken zu zeigen.
Das einfachste Spiel, das ich benutzt habe, ist ein Nummernlisten-Umkehrspiel. Dies beinhaltet eine gemischte Liste von Zahlen von 1-9. Der Player kann eine Anzahl von Ziffern angeben, die auf der linken Seite der Liste umgekehrt werden sollen. Ziel ist es, die Liste sortiert zu bekommen. Das ist großartig für absolute Anfänger. Jeder kleine Teil des Spiels kann separat geschrieben und getestet werden.
Es hängt wirklich davon ab, was Sie dem Anfänger beibringen wollen. Wenn Sie versuchen, Syntax zu lehren, dann sind einfache "Hello World" -Programme und solche, die jede ungerade Zahl zwischen 1 und 100 ausspeien, in Ordnung, um sie zu starten. Wenn Sie versuchen, Datenstrukturen zu unterrichten, dann vielleicht so etwas wie ein 20-Fragen-Spiel oder ein einfaches Sortierprogramm. Wenn Sie versuchen, Rekursion zu lehren, dann vielleicht ein breites erstes Suchprogramm. Wenn Sie versuchen, Datenbankmanipulation beizubringen, dann wäre etwas wie ein Auftragsverfolgungssystem angebracht.
Sehen Sie sich Codebeispiele im Buch Python-Programmierung für den absoluten Anfänger
Text Abenteuer.
Tags und Links language-agnostic