Frage

Ich bin über (mit anderen Programmierern) einer Programmierung & Algorithmen Club in meiner High-School zu beginnen. Die Sprache der Wahl ist C ++ - Tut mir leid, ich nicht ändern kann. Wir können die Schüler übernehmen haben wenig bis gar keine Erfahrung in den oben genannten Themen.

Was denken Sie, sind die grundlegenden Konzepte sollte ich konzentrieren?

Ich weiß, dass etwas lehren, die mir schon offensichtlich ist, ist keine leichte Aufgabe. Ich weiß, dass die erste Sitzung eine extreme Aufmerksamkeit gewidmet werden sollte - nicht Studenten abschrecken - daher bitte ich Sie,

.

Edit: bemerkte ich, dass wahrscheinlich der wichtigste Unterschied zwischen Programmierern und Anfänger „Denkweise des Programmierers“ ist - ich meine, Probleme Konzeptualisierung, wie Sie wissen, Algorithmen. Ich weiß, es ist nur eine Frage der Übung, aber wissen Sie, jede Art von Übungen / Konzepte / Dinge, die Entwicklung in diesem Bereich anregen könnten?

War es hilfreich?

Lösung

Programmierung Spaß!

Mögliche Dinge zu sprechen, würde über die Programmierung Wettbewerbe werden, die entweder Ihr Verein selbst halten konnte oder es könnte in lokal eingeben. Ich konkurrieren an der Universität (ACM) Ebene in der Programmierung Wettbewerben und ich weiß für eine Tatsache, dass sie sie auf den unteren Ebenen haben auch.

Diese Art von Ereignissen kann wirklich etwas Kampfgeist ziehen und bringt die Vereinsmitglieder näher.

Die Dinge müssen entweder Programmierung nicht immer über. Vielleicht deuten auf eine LAN-Party, wo Sie spielen, diskutieren Programmierung, etc. könnte auch eine gute Idee sein.

Im Hinblick auf den aktuellen Themen zu gehen, die Programmierung / Algorithmus verwendet, würde ich als eine Gruppe vorschlagen, einige diese Programmierung Probleme in diesem Programmierwettbewerb Primer „ versucht Programmierung Herausforderungen ": Amazon Link-

Sie beginnen mit ziemlich grundlegenden Programmierproblemen und langsam Probleme Fortschritte, die verschiedene Datenstrukturen erfordern wie:

  • Stacks
  • Warteschlangen
  • Wörterbücher
  • Bäume
  • Etc

Die meisten Probleme sind in C ++ gegeben.

Schließlich sie in fortgeschritteneren Probleme Fortschritte denen Graph Traversal und beliebte Graph-Algorithmen ( Dijkstra etc), Combinatrics Probleme usw. Jedes Problem ist Spaß und in kleiner „Geschichte“ wie Format gegeben. Aber gewarnt werden, sind einige von ihnen sehr schwer!

Edit: Pizza und Soda schadet nie, entweder, wenn es darum geht, die Menschen bekommen für Ihre Clubtreffen zu zeigen. Unser ACM Club hat Pizza jede Sitzung (einmal im Monat). Auch wenn die meisten von uns noch würde zeigen, ist es ein schöner Eisbrecher. Speziell für neue Clubs oder Mitglieder.

Andere Tipps

Breaking it Down

Für mich, was über die Programmierung einzigartig ist, ist die Notwendigkeit, brechen Aufgaben in klein genug, um Schritte für den Computer . Dies variiert je nach Sprache, aber die Tatsache, dass Sie nur bis 100 zu zählen, ein „for-Schleife“ können schreiben dauert gewöhnungsbedürftig.

Das „top-down“ -Ansatz kann mit diesem Konzept helfen. Sie beginnen mit einer Master-Funktion für Ihr Programm zu schaffen, wie

filterItemsByCriteria();

Sie haben keine Ahnung, wie das funktionieren wird, so dass Sie es nach unten in weiteren Schritten brechen:

(Hinweis: Ich weiß nicht, C ++, so ist dies nur ein allgemeines Beispiel)

filterItemsByCritera() {
  makeCriteriaList();
  lookAtItems();
  removeNonMatchingItems();
}

Sie dann brechen jeden der weiter unten. Schon bald können Sie festlegen, all die kleinen Schritte, die sie braucht, um Ihre Kriterien Liste zu machen, usw. Wenn alle kleinen Funktionen arbeiten, das großen arbeiten.

Es ist eine Art, wie die Spiele Kinder spielen, wo sie immer wieder zu fragen: „Warum?“ nach allem, was sagen Sie, es sei denn Sie „wie?“

zu halten, haben zu fragen

Verknüpfte Listen -. Eine klassische Interview-Frage, und das aus gutem Grunde

Ich würde versuchen, mit einer C-Untergruppe zu arbeiten, und nicht versuchen, mit dem OO Zeug zu starten. Das kann eingeführt werden, nachdem sie einige Grundlagen zu verstehen.

Grüße!

Ich denke, Sie werden immer WAY vor sich eine bestimmte Sprache zu zwingen und die Arbeit zu bestimmten Themen und ein Lehrplan .. Es klingt wie Sie (und einige der Responder) sind „verwirrend eine Beratung Programmierung Club“mit‚einer Programmier Klasse führenden‘. Sie sind sehr verschiedene Dinge.

Ich würde die Gruppe zusammen bekommen, und die Gruppe sollte entscheiden, was genau sie will aus dem Club zu bekommen. Im Wesentlichen macht eine „Charta“ für den Verein. Dann (und nur dann) können Sie Bestimmungen wie die bevorzugten Sprache / Plattform zu machen, wie oft gerecht zu werden, was in den Sitzungen geschehen wird, usw.

Es kann sich herausstellen, dass der beste Ansatz eine „Umfrage“ ist, wo verschiedene Sprachen / Plattformen erforscht werden. Oder es könnte sich herausstellen, dass der beste Ansatz ist ein „aktuelles“ ein, wo es Thema Änderungen (wie ein Buch-Club) in regelmäßigen Abständen (in diesem Monat ist Zeiger, im nächsten Monat ist die Sortierung, die folgende ist Rekursion, etc.) und dann treten Beispiele und Diskussionen in verschiedenen Sprachen.

Als beiseite, würde ich eine „sprachunabhängig“ Orientierung für den Club in Betracht ziehen. Ermutigen Sie die Kinder verschiedene Sprachen und Plattformen zu erkunden.

Viel Glück und eine gute Arbeit!

Nun, es ist ein Programmierclub, so sollte es Spaß machen! So würde ich sofort taucht in eine Hand auf Erfahrung sagen. Beginnen Sie mit zu erklären, was eine Methode main () ist, dann haben die Schüler ein Hallo Welt Programm schreiben. Nach und nach dem Programm Hallo Welt verbessern, damit es funktioniert hat und druckt Benutzereingaben.

Ich würde sagen, nicht in Algorithmus gehen zu schnell für Anfänger, lassen Sie sie mit C ++ spielen zuerst.

Jemand oben erwähnt, „Spaß macht Programmierung“. Es ist interessant, heute, dass die Menschen im Interesse des Lernens nicht lernen. Die meisten Menschen wollen sofortige Befriedigung .

Teach ein bisschen Logik Programmierung mit. Dies hilft mit (und ist) Problemlösung. Die Klassierung, die ich in meinem Kopf haben, sind Ratespiele.

  • Haben sie ein Programm, das zwischen 0 und 100 an einer Anzahl errät.
  • Haben sie einen Black-Jack-Klon machen ... Ich habe dies getan in basic: - (

Machen Sie Papier Anweisungen.

  1. Erklären Sie die „Spiegelei“ Geschichte. Fragen Sie den auditorischen, was sie tun würden sich Spiegeleier zu machen. Machen Sie sie beachten Sie den Schritt, den sie zu denken. Wahrscheinlich erhalten Sie weniger als 5 Stufen-Algorithmus. Dann erklären sie, wie viele Schritte abgewertet werden sollte, wenn wir einen Computer braten Eier vermitteln wollen. So etwas wie:
1) Go to the Fridge 
2) Open the fridge door 
3) Search for eggs 
4) If there are no eggs - go to the shop to buy eggs ( this is another function ;) ) 
5) If there are eggs - calculate how many do you need to fry 
6) Close the fridge door 
7) e.t.c. :)
  1. Starten Sie mit den Grundlagen von C - Syntax Semantik e.t.c, und parallel zu, dass die sehr grundlegenden Algorithmen wie Blase Art erklären.
  2. Nach dem auditorischen ist vertraut mit strukturierter Programmierung (dies kann einige Wochen oder Monate dauern könnte, je nachdem, wie oft Sie die Lektionen machen), können Sie auf C ++ vorrücken und OOP.

Der Inhalt in Deitel & Deitel der C ++ Programmierung ist eine anständige Einführung und die Übungen am Ende jedes Kapitels vorgeschlagen sind nette Spielzeug Probleme.

Im Grunde Sie sprechen: - Kontrollstrukturen - Funktionen - Arrays - Zeiger und Strings

Sie möchten vielleicht mit einer Einführung in die STL folgen zu lassen ( „ok, jetzt, da wir es auf die harte Art und Weise getan haben ... hier ist eine einfachere Option“)

Beginnen Sie, indem sie ein Problem wie zum Beispiel zu verstehen, zu sortieren. Dies ist sehr einfach, und sie sollten recht schnell beziehen können. Sobald sie das Problem dann präsentieren sie mit den Werkzeugen / Lösung zu sehen, es zu lösen.

Ich erinnere mich, wie es sich anfühlte, als ich zum ersten Mal ein Beispiel merge-sort zeigen war. Ich konnte alle Schritte folgen, aber was zum Teufel war ich? Machen Sie dann sehnen sie eine Lösung für ein Problem, und sie werden das Werkzeug und Lösung viel besser verstehen.

beginnt mit einem einfachen „Hallo Welt“ Programm. Dies führt Fundamentaldaten wie Variablen, das Schreiben in einen Stream und Programmablauf.

Dann fügen Sie die Komplexität von dort (verkettete Listen, Datei io, bekommen eine Benutzereingabe, etc).

Der Grund, warum ich mit Hallo Welt beginnen sagen, weil das Kind wird ein laufendes Programm wirklich schnell zu sehen bekommen. Es ist fast ein unmittelbares Feedback-da sie ein laufendes Programm von Anfang an geschrieben haben werden.

IMO, Big-O ist eines der wichtigsten Konzepte für Programmierer beginnen zu lernen .

Haben Sie einen Debug-Wettbewerb. Geben Sie Codebeispiele, die einen Fehler enthalten. Haben Sie einen Wettbewerb zu sehen, wer die meisten oder am schnellsten finden.

Es ist ein ausgezeichnetes Buch, wie sie nicht in C ++ zu programmieren, dass Sie mit beginnen nutzen könnten.

Sie lernen immer am besten aus Fehlern und ich ziehe von einem anderen zu lernen.

Es wird auch solche mit wenig Erfahrung kann durch siehe Code lernen, auch wenn der Code nur fast funktioniert.

Pseudocode sollte ein allererster sein.

Edit: Wenn sie insgesamt Programmierung Anfänger sind, dann würde ich die erste Hälfte nur über die Programmierung machen. Sobald Sie auf ein Niveau, wo über Algorithmen sprechen würde Sinn machen, dann Pseudo-Code ist wirklich wichtig, unter den Nägeln zu erhalten.

Vielen Dank für Ihre Antworten!

Und wie würden Sie sie tatsächliche Problemlösung lehren?

Ich kenne eine Reihe von Studenten, die C ++ Syntax und ein paar grundlegenden Algorithmen kennen, aber sie können das Wissen, das sie wissen nicht, wenn sie reale Probleme zu lösen - sie wissen nicht, den Ansatz, die Art und Weise, ihre Gedanken zu transkribieren in eine Reihe von strengen Schritten. Ich habe nicht über ‚High-Level‘ -Ansätze wie die dynamische Programmierung, gierig etc., aber über grundlegende algorithmische Mentalität sprechen.

Ich nehme an, es ist nur wegen des schlechten Lernprozesses sie durchmachten. In anderen Wissenschaften - Mathematik, zum Beispiel - sie sind wirklich brillant

.

Nur weil Sie mit Algorithmen vertraut sind, bedeutet nicht, dass Sie sie umsetzen können und nur weil Sie können Programm bedeutet nicht, Sie einen Algorithmus implementieren können.

Starten Sie einfach mit jedem Thema (halte getrennte Programmierung von der Planung Algorithmen). Sobald sie einen Griff auf jeweils langsam die beiden Begriffe beginnen zusammen zu bringen.

Wow. C ++ ist eine der schlimmsten möglichen Sprachen mit zu beginnen, in Bezug auf die Menge von nicht verwandtem Mist Sie müssen arbeiten, etwas zu bekommen (Java wäre etwas schlechter, ich denke).

Wenn Anfänger in einer vorformulierten lastigen Umgebung lehrt, ist es üblich, mit „hier ist ein einfaches C-Programm zu starten. Wir werden diskutieren, was das alles Mist am Anfang der Datei für die spätere ist, aber jetzt konzentriert sich auf dem Linien zwischen ‚int main (void)‘ und der ‚Rückkehr‘ Erklärung, die in dem alles nützliche Arbeit ist „erreicht.

Wenn Sie über diesen Punkt sind, grundlegende Konzepte zur Deckung umfassen die grundlegenden Datenstrukturen (Arrays, verkettete Listen, Bäume und Wörterbücher) und die grundlegenden Algorithmen (Sortieren, Suchen, etc.).

Haben Sie Ihren Club lernen, wie man tatsächlich Programm in jeder Sprache durch die Konzepte Lehre von Software zu bauen. Anstatt ein Kauf von knapp ein Dutzend Lizenzen für Visual Studio, haben Studenten Compiler verwenden, stellen Systeme, Quelldateien, Objekte und librarys um ihren C-Code in Programme einzuschalten. Ich empfinde dies wirklich der Anfang ist und erlaubt tatsächlich diese Kinder zu verstehen, wie Software auf jeder Plattform zu machen, ohne Krücken, dass viele Bildungseinrichtungen darauf verlassen mögen.

Wie für die Sprache der Wahl - Glückwünsche -. Sie werden feststellen, C ++ ist sehr reich zu machen Sie denken, mathematische Verknüpfungen und Millionen von Möglichkeiten, um Ihren Code zu machen noch mehr leisten (oder ausgefallene Muster zu implementieren)

Auf die Frage: Als ich zum Programm beggining würde ich immer versuchen, ein Problem der wirklichen Leben in mehrere Schritte zu brechen und dann, als ich Ähnlichkeit zwischen Aufgaben oder Daten sehen, die sie transformieren würde ich immer versuchen, ein faulen zu finden, einfacher, meanier Weg, es zu implementieren.

Eleganz kam nach, wenn Muster und reale Algorithmen zu lernen.

Hank: Big O ??? Sie bedeuten, sagen Programmierer beginnen, dass ihr Code von O (n ^ 2) und dein ist von n log n ??

Ich kann ein paar verschiedene Möglichkeiten sieht, dies zu übernehmen:

1) Grundlegende Programmierbausteine. Was sind bedingte Anweisungen, z.B. wechseln und wenn / sonst? Was sind Wiederholungs Aussagen, z.B. für und While-Schleifen? Wie kombinieren wir diese ein Programm zu erhalten, die Abfolge von Schritten, die wir wollen? Sie könnten etwas so einfach wie Aufsummierung ein Lebensmittelgeschäft Rechnung oder Umwandlung Temperaturen oder Entfernungen von metrischen in einem britischen nehmen oder umgekehrt. Was sind grundlegende Variablentypen wie eine Zeichenfolge, integer oder double? Auch hier in Sie Boolesche Algebra für eine fortschrittliche Idee haben könnten oder möglicherweise beibringen, wie Arithmetik zu tun in der Basis 2 oder 16, die einige Leute finden, können leicht und andere finden hart.

2) Algorithmisch was sind ähnliche Bausteine. Das Sortieren ist ein ziemlich einfaches Thema, das breit diskutiert und analysiert werden kann, um zu versuchen, herauszufinden, wie diese schneller zu machen als nur Elemente tauschen, die in der falschen Reihenfolge erscheinen, wenn Sie den Bubblesort lernen, die das Gehirn ist tot Art und Weise zu tun.

3) Kompilieren und Laufzeitelemente. Was ist ein Call-Stack? Was ist ein Haufen? Wie ist das Gedächtnis behandelt, ein Programm auszuführen, z. die Codestücke und Datenstücke? Wie können wir Dateien öffnen und bearbeiten? Was ist Kompilieren und Linken? Was sind Dateien machen? Ein Teil davon ist einfach, aber es kann auch die Augen geöffnet sein zu sehen, wie die Dinge funktionieren, die was kann der Club die meiste Zeit bedeckt.

Diese nächsten 2 sind etwas anspruchsvoller, aber könnte Spaß machen:

Diskutieren

4) verschiedene Ideen hinter Algorithmen wie: 1) Teile und herrschen, 2) Dynamische Programmierung, 3) Brute-Force, 4) Schaffung einer Datenstruktur, 5) Reduzierung um ein Problem zu einem ähnlichen beispielsweise bereits gelöst Fibonacci-Zahlen sind ein klassisches rekursive Problem Programmierer zu geben beginnen, und 6) Die Idee des Seins, „gierig“, wie in einem Beispiel machen ändern, wenn Sie in einem Land, in den Euro-Münzen, wobei a, b und c waren. Sie könnten auch in einigen Graphentheorie Beispiele wie ein minimales Gewicht Spanning Tree, wenn man etwas etwas exotisch wollen, oder die Handlungsreisende für etwas, das einfach sein zu beschreiben, aber ein Schmerz zu lösen.

5) Mathematische Funktionen. Wie würden Sie einen faktoriellen programmieren, die das Produkt aller Zahlen von 1 bis n ist? Wie würden Sie die Summen der verschiedenen arithmetischen oder geometrischen Reihe berechnen? Oder berechnen, die Anzahl von Kombinationen oder Permutationen von r Elementen aus einem Satz von n? Bei einer Reihe von Punkten, annähernd das Polynom, das diese Anforderung erfüllt, z.B. in einer 2-dimensionale Ebene namens x und y Sie 2 Punkte geben könnten und haben die Menschen herauszufinden, was die Steigung und y-Achse ist, wenn Sie bereits Paare von linearen Gleichungen gelöst haben.

6) Listen, die unter Verwendung von verknüpften Listen und Arrays implementiert werden kann. Was ist besser für verschiedene Fälle? Wie setzen Sie grundlegende Funktionen wie Einfügen, Löschen, Suchen und sortieren?

7) Abstrakte Datenstrukturen. Was sind Stacks und Warteschlangen? Wie bauen Sie und Testklassen?

8) Pointers. Dies führt nur zu großen Mengen an Themen wie, wie Speicher zuweisen / de-zuweisen, was ein Speicherleck?

Das sind meine Vorschläge für verschiedene Ansatzpunkte. Ich denke, der eine Diskussion beginnen kann zu einigen interessanten Orten führen, wenn Sie ein paar Leute zusammen zu bekommen, die sprechen nicht dagegen auf dem gleichen Thema Woche für Woche in einigen Fällen als Sortierung kann ein großes Thema sein, gut zu decken, wenn Sie wollen bekommen in die Feinheiten der Dinge.

Ihr Jungs könnten das TinyPIM Projekt von „ C ++ Standard Library von Grund auf neu bauen “und dann, wenn es funktioniert, starten sie Ihre eigenen Erweiterungen zu entwerfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top