Zusammenfassung
Dieser Eintrag ist keine weitere Lektion, sondern die abschließende Bilanz des Kurses: Er ruft die sieben Lernziele in Erinnerung, die sich der Studienplan zu Beginn gesetzt hat, zeigt in einer einzigen Abbildung, welchem von ihnen jede Lektion jeder Einheit zugeordnet wurde, erklärt, wie jedes Lernziel im Lauf der acht inhaltlichen Einheiten bearbeitet wurde, unterscheidet die Lernziele, die eine eigene Einheit haben, von denen, die den ganzen Kurs durchziehen, fasst zusammen, was der Kurs über C++ hinaus mitgibt, lehrt, die Selbsteinschätzung nach Lernziel zu lesen, die den ersten Versuch der Abschlusstests zusammenführt, und nennt, was der Kurs an Programmieren in C++ II weitergibt.
Lernziele
- Die sieben übergeordneten Lernziele des Kurses nennen und erkennen, in welchen Einheiten und Lektionen jedes bearbeitet wurde.
- Die Lernziele, die eine eigene Einheit haben, von denen unterscheiden, die mehrere durchziehen, insbesondere das Lösen von Problemen mit seinem Zyklus aus Kompilieren und Debuggen sowie das Spezifizieren und Testen, und erklären, wie die letzteren geübt werden.
- Im Gelernten das, was in jeder Sprache gilt, von seiner Form in C++ trennen und erklären, was der Kurs an Programmieren in C++ II weitergibt.
- Anhand der Selbsteinschätzung nach Lernziel, der Abbildung und der Herausforderungen jeder Synthese entscheiden, welche Einheiten und welche Lektionen man wiederholen sollte.
Was sich der Kurs vorgenommen hat
Der Kurs entstand mit einem Gesamtziel: zu lehren, korrekte Programme von Grund auf zu schreiben, und dabei die Programmierung selbst, nicht eine Sprache, zu seinem Gegenstand zu machen. Er wählte dafür ein anspruchsvolles Instrument, C++, weil es die Maschine nicht verbirgt: Es zwingt dazu, die Typen zu deklarieren, trennt die Kompilierung von der Ausführung, macht den Speicher, die Kosten des Kopierens und die Grenzen jeder Zahl sichtbar und bestraft mit undefiniertem Verhalten, was andere Sprachen verschleiern. Die Lektion über den Studienplan hat dieses Ziel in sieben übergeordnete Lernziele entfaltet, die man mit der Nummerierung vor Augen haben sollte, mit der die Abbildung sie anführt:
- Probleme mit Programmen lösen: festlegen, was hineingeht und was herauskommt, einen Algorithmus entwerfen, ihn von Hand nachvollziehen und ihn schreiben, kompilieren, ausführen und debuggen, wobei die Meldungen und die Warnungen des Compilers gedeutet werden.
- Für jedes Datum den passenden Typ wählen und über die Grenzen seiner Darstellung nachdenken: den Wertebereich der Ganzzahlen, den Überlauf, die Rundung bei Gleitkommazahlen und die Kodierung des Textes.
- Korrekte Ausdrücke bilden und dabei den Vorrang, die Typkonvertierungen, die Nebeneffekte und das kennen, was der Standard undefiniert lässt.
- Den Kontrollfluss mit korrekten Entscheidungen und Schleifen entwerfen, die terminieren, und ihre Korrektheit mit einer Invariante begründen.
- Ein Problem in Funktionen mit klaren Schnittstellen zerlegen, wählen, wie die Parameter übergeben werden, und Probleme durch Rekursion lösen.
- Zusammengesetzte Daten (Folgen, Tabellen, Datensätze, Text und Dateien) mit den grundlegenden Algorithmen und mit der Standardbibliothek darstellen und verarbeiten und dabei ihre Kosten abschätzen.
- Größere Programme in mehrere Dateien gliedern, sie mit einer Vorbedingung und einer Nachbedingung spezifizieren, sie systematisch testen und ihre Korrektheit begründen.
Jede Lektion des Kurses hat außerdem ihre eigenen Einzelziele genannt. Die Lektionen sagen nicht, welchem übergeordneten Lernziel jedes dient; diese Zuordnung ist eine Lesart von außen, nach derselben Methode wie in den anderen Kursen der Website. Jedes Einzelziel wird einem übergeordneten Hauptziel und, falls es sie berührt, weiteren Nebenzielen zugeordnet; jedes zählt in seinem Hauptziel ganz und in jedem Nebenziel zur Hälfte, und die Lektion wird als Hauptziel mit dem übergeordneten Lernziel verbunden, das das meiste Gewicht auf sich vereint, und als Nebenziel mit den übrigen, die etwas Gewicht erhalten. Bei Gleichstand entscheidet das Lernziel der Einheit und, wenn keines es ist, das mit der kleineren Nummer; so wird die Lektion über Variablen und Speicher, deren Einzelziele sich zu gleichen Teilen auf 1 und 2 verteilen, mit 2 verbunden, dem Lernziel ihrer Einheit. Die Einführungen folgen derselben Regel. Die Synthesen hingegen folgen einem eigenen Kriterium: Ihr Hauptziel ist das Lernziel ihrer Einheit, denn ihre Kette der Begriffe, ihr Abschlusstest und die meisten ihrer Herausforderungen führen zusammen, was die Einheit gelehrt hat; die Einheit über Text und Dateien, die kein eigenes Lernziel hat, wird zu 6 gezählt, dem drei ihrer vier Lektionen angehören. Wenn dem so ist, nimmt der ganze Kurs die Gestalt eines Rückgrats an: Der Kopf ist das Gesamtziel; die Säule die Reihenfolge der Einheiten, jede mit ihrem Abschnitt; jede Lektion ist ein Knoten dieses Abschnitts, mit ihrem Hauptziel verbunden, und die sieben Lernziele schweben um die Säule, getragen von den Lektionen, die sie speisen.
Inhalt wird geladen…
Abgeschlossen
Melde dich an, um deinen Fortschritt zu speichern