Programmiersprache für Informatikunterricht

Ein paar Gedanken meinerseits die ich mal in den Raum werfen möchte:

- Ich habe selbst ein Fachabi in "Informatik" gemacht. Dort wurde Turbo Pascal unterrichtet. Es war ein Witz. Ich habe den Unterricht mit 1.0 bestanden, alle "Programme" mehr oder weniger aus dem Handgelenk hingeschrieben.
Programmieren konnte ich danach keinen Deut. Beim Studienbeginn, wo auf einmal mehr gefordert war als zwei if-Abfragen, ein paar Tastatureingaben und eine Tabelle auf dem Bildschirm ausgeben, stand ich bis auf das bischen was ich mir in der Überbrückungszeit noch in weiser Vorraussicht angeeignet hatte, vor dem nichts. Der Unterricht war, wie übrigens auch der ganze Rest des "Informatik"-Fachabis (treffender wäre Tippsenausbildung gewesen), völlig wertlos.

- Mittlerweile hatte ich dann doch so einiges mit "echtem" Programmieren im echten richtigen Leben zu tun. Begegnet ist mir ganz viel C, C++, Java und .Net, etwas Assembler, zunehmend Python und Perl. Nirgendwo hat sich jemals irgendwer für Pascal oder gar ein Klickibunti-Delphi interessiert. Wer nach der Schule eine Ausbildung oder gar einen direkten Berufseinstieg anstrebt ist mit einer Pascal-Programmieranleitung völlig fehlbedient. Er darf dann eh nochmal in eine Sprache mit C-naher Syntax einsteigen.

- Prinzipiell ist die Sprachdebatte dennoch fruchtlos. Programmieren lernen kann man in jeder Sprache, sogar in Pseudocode (da wirds halt mit dem basteln schwer;)). Wichtig ist nicht, irgendwelche Syntax zu pauken. Damit schafft man "Code-Monkeys", die zwar ein Programm schreiben aber keine wirkliche Peilung haben was da vor sich geht. Im Programmierunterricht sollte es meiner Meinung nach vor allem darum gehen die grundlegenden Konzepte zu vermitteln. Das geht in jeder Sprache. Danach kann sich jeder die benötigten Sprachen in deutlich geringerer Zeit selbst beibringen. Leider passiert aber genau das meist nicht. Der Unterricht läuft frei nach dem Motto ab "um das zu tun müsst ihr da for blah blah hinschreiben"). Sowas ist völlig wertlos. Hätte der Lehrer die zwei Stunden pro Woche investiert den Schülern eben die grundlegenden Konzepte zu vermitteln statt sie ein tolles GUI-Programm zusammenklicken zu lassen, hätten sie deutlich mehr davon. Und wahrscheinlich wäre noch Zeit geblieben um mal die Funktionsweise eines einfachen Prozessors und ein bischen boolesche Logik durchzugehen oder mal in Richtung relationale Datenbanken zu schauen. Dinge, die die Schüler weiterbringen.

- Informatik ist Informatik verdammt nochmal. In der Informatik geht es nicht darum einen Webserver aufzusetzen, eine Website hinzuklatschen, Linux installieren zu können oder ein buntes Programm zu schreiben. Das ist Informationstechnologie.
Informatik ist angewandte Mathematik. Theorie. Algorithmen, formale Sprachen, Rechnerarchitektur, Logik etc. pp. Ein Unterrichtsfach mit dem Namen "Informatik" sollte meiner Meinung nach genau das vermitteln.
Wer käme auf die Idee im Mathematikunterricht nur das bedienen eines Rechenschiebers oder Taschenrechners (und sonst nichts) zu vermitteln?
Genau das findet aber im "Informatik"-Unterricht an den meisten (Ausnahmen existieren) Schulen derzeit statt. Im gleichen Atemzug wird sich gewundert warum die Abbrecherquote beim universitären Studiengang Informatik deutlich über 50% liegt, wenn die Jungs (und die drei Mädels die bis dahin durchgehalten haben) merken, was Informatik ist. Das hier Computer gebaut werden, nicht GUIs zusammengeklickt und Linux zurechtgefrickelt.
Vielleicht hab ich da eine radikale Meinung, aber in meiner Studienzeit habe ich durch Fachschaftstätigkeit zu viele "Informatik-LKler" an der Uni verzweifeln sehen, und wie oben beschrieben waren meine eigenen Erfahrungen auch nicht die besten. Zwei Jahre Fachabi waren für mich verschenkte Zeit. (Das ist nicht übertrieben).

- http://en.wikipedia.org/wiki/The_Cruelty_of_Really_Teaching_Computer_Science ... 'nuff said.
 
Wo ist der Unterschied zwischen Grund- und Leistungskurs? Gibt es da gravierende Unterschiede?
 
Keine Ahnung, ehrlich gesagt, da ich nur Fachabi hatte. Prinzipiell ist meine Erfahrung aber, das bis auf wenige Menschen die meist von Schulen im süddeutschen Raum kamen (sehr auffällig) so ziemlich jeder mehr oder weniger völlig unvorbereitet an die Uni kam. Nach den ersten Vorlesungen lag das durch den "Informatik"unterricht aufgebaute Bild über die Fachrichtung völlig in Scherben. Ein gutes Drittel kam nach ein paar Wochen meist nicht wieder. Müsste alles nicht sein.
 
wahnsinn auf was für super schulen warts ihr denn, uns wurde informatik nur als enrichment kurs angeboten. Und nicht als irgend ein relevantes fach das in der zukunft von bedeutung sein könnte. hätt ich das gewusst hätte ich heute kein probleme in der uni mit Java und XML :(

mc
 
Kai90 schrieb:
Daher gehören da stink normale PCs hin mit Linux.
Bitte denkt doch einmal nach! Was kostet ein PC an Geld? Richtig! Viel. Kauft man sich einen günstigen Komplett-PC ist meist Windows dabei. Windows ist und bleibt wohl das am meisten genutze System. Nur weil Linux "umsonst" ist, heißt das nicht, dass es zum Lernen besser geeignet wäre.

Es ist schön, dass Du (kkl2004) Dir vorher darüber Gedanken machst und Dich mit dem Thema befasst. Daß Du statt Delphi C bevorzugen würdest, zeigt, dass Du so gut wie keine Erfahrung mit Programmiersprachen hast. Konzeptionell sind das total unterschiedliche Ebenen.

Pascal ist eine wunderbare Einstiegssprache um das eigentliche Konzept der Softwareentwicklung zu verstehen. Delphi bietet relativ einfache Möglichkeiten, ein grafisches Interface zu erzeugen, ohne dabei zu sehr in OOP zu schwimmen.

PHP ist in dem Sinne keine Sprache - auch wenn es mehr an einem solchen Konzept dran ist als HTML. Java ist eine sehr angenehme Möglichkeit, Software zu entwickeln und trotz der kompletten Abnahme der Speicherverwaltung ist es rein objektorientiert (obwohl es Leute gibt, die damit auch anders entwickeln) und damit für Neueinsteiger schwierig.

Mein Tip: Laß es auf Dich zukommen. Lerne daraus. Vergleiche später mit anderen Möglichkeiten und zieh dann Deine eigenen Schlüsse. Jetzt dagegen zu streben, weil man über Hören-Sagen "weiß" das es besser geht, ist wohl kaum der richtige Weg. ;)
 
ähm... ich habe gerade eben eine Arbeit darüber geschrieben, wieso man im Informatikunterricht Java verwenden sollte, und nicht zB. Visual Basic oder C.

Falls jemand lust hat das durchzulesen, kann er/sie sich das PDF runterladen:
http://www.small-hosting.net/java-macuser.pdf

Kommentare sind erwünscht (Achtung: es ist nicht korrigiert - dh. möglicherweise sind Rechtschreibfehler und komisch klingende Sätze drinnen :D )
 
Emp schrieb:
Informatik ist angewandte Mathematik. Theorie.
Uii, wenn Du Dich da mal nicht zu weit aus dem Fenster lehnst. Meine Erfahrungen mit angewandter Mathematik haben zwar teilweise mit Computern und Software zu tun, aber Informatik hat größtenteils so gut wie gar nichts mit (angewandter) Mathematik gemein.

Aber gut fand ich das Wort 'Theorie' danach. ;) Insgesamt ist es vielleicht eine Signatur wert. :D

Aber im Prinzip hast Du recht. Programmieren kann man mit fast jeder Sprache lernen. Allerdings eignen sich einige mehr und andere weniger. C oder sogar C++ wäre in meinen Augen für einen Kurs mit zu viel Overhead belastet.
 
Emp schrieb:
Informatik ist angewandte Mathematik. Theorie. Algorithmen, formale Sprachen, Rechnerarchitektur, Logik etc. pp.
Genau, das Informatikstudium ist ein verkapptes Mathematikstudium. Meines Wissen kann man durch das Grundstudium theoretisch (hier schließt sich der Kreis ;)) sogar ohne Computer durchkommen, zumindest war es zu meiner Zeit noch so.

Pingu
 
Informatik ist also nur etwas für denkbereite Leute, die einen Computer auch ohne GUI erkennen würden?
 
Sym schrieb:
Uii, wenn Du Dich da mal nicht zu weit aus dem Fenster lehnst. Meine Erfahrungen mit angewandter Mathematik haben zwar teilweise mit Computern und Software zu tun, aber Informatik hat größtenteils so gut wie gar nichts mit (angewandter) Mathematik gemein.
Ich denke ehrlich gesagt nicht, dass ich mich damit weit aus dem Fenster lehne. Wichtige und disziplinprägende Teilgebiete in der Informatik sind z.b. Numerik und Kryptologie, Diskrete Mathematik( z.b. mit Kombinatorik und Wahrscheinlichkeitstheorie), Graphentheorie, Optimierungsalgorithmen, Komplexitätstherie, formale Sprachen... Allessamt angewandte Mathematik.
Wenn man es weiter fassen will, so wie es der Durchschnittsbürger definitiv tun würde, kann man auch die Ingenieursmathematik, z.b. aus den Bereichen Elektrotechnik, Zuverlässigkeitsanalyse etc. noch unter angewandte Mathematik ablegen, und damit muß sich zumindest an der Uni ein Informatiker herumschlagen.
Die Liste könnte beliebig weitergehen und noch um Felder aus der theoretischen Informatik oder dem Knowledge Engineering ergänzt werden... Aber ich denke "you get the picture".
 
martinibook schrieb:
Informatik ist also nur etwas für denkbereite Leute, die einen Computer auch ohne GUI erkennen würden?
Informatik ist in erster Linie etwas für Leute die Spaß an der Mathematik und an abstraktem Denken sowie dem formalisieren von Wissen und Vorgängen haben, auch wenn es bisweilen staubtrocken und theoretisch wird. Informatik ist in erster Linie etwas für Leute die zum formalisieren und abstrahieren gar keinen Computer brauchen. Der Computer ist dann das Werkzeug, so wie das Zeichenbrett für den Architekten.
 
superstar schrieb:
ähm... ich habe gerade eben eine Arbeit darüber geschrieben, wieso man im Informatikunterricht Java verwenden sollte, und nicht zB. Visual Basic oder C.

Falls jemand lust hat das durchzulesen, kann er/sie sich das PDF runterladen:
http://www.small-hosting.net/java-macuser.pdf

Kommentare sind erwünscht (Achtung: es ist nicht korrigiert - dh. möglicherweise sind Rechtschreibfehler und komisch klingende Sätze drinnen :D )
Die Fehler sind der Hammer. ;)

Nein, der Text ist ok. Allerdings hört er sich für mich zu sehr Pro-Java an. Ich würde vielleicht ein paar Punkte einbringen, für die Java nicht oder wenig geeignet ist. Portierbarkeit ist gerade im Bereich GUI teilweise immer noch ein Problem. Apple hat auch seinen eigenen "Java-Kompiler", was zum Beispiel auch Probleme mit sich bringt.

C++ ist genauso plattformunabhängig, wenn man es richtig angeht. Bei vielen Sprachen ist das so. Erwähnenswert wären mehr Informationen über den ByteCode und was dieser für Vorteile bringt.

Zu guter letzt würde ich das Literaturverzeichnis nicht nur auf reine Java-Angaben beschränken. Ein Vergleich zu anderen Sprachen ist dann wesentlich glaubhafter.

Aber alles im allem ein Text der für Anfänger geeignet ist.
 
superstar schrieb:
ähm... ich habe gerade eben eine Arbeit darüber geschrieben, wieso man im Informatikunterricht Java verwenden sollte, und nicht zB. Visual Basic oder C.

Falls jemand lust hat das durchzulesen, kann er/sie sich das PDF runterladen:
http://www.small-hosting.net/java-macuser.pdf

Kommentare sind erwünscht (Achtung: es ist nicht korrigiert - dh. möglicherweise sind Rechtschreibfehler und komisch klingende Sätze drinnen :D )
Ich würde an Deiner Stelle das ganze mal von Deinem Deutschlehrer kontrollieren lassen. Oder ist das die neue, deutsche Rechtsschreibung? Denn die Kommasetzung ist noch schlechter als meine.

Inhaltlich:
Der zweite Satz ist eine persönliche Meinung von Dir. Trotzdem stellst Du Ihn als allgemeingültig hin. Außerdem fehlt der Vergleich; besseren im Vergleich zu welchen anderen; unter welchen Randbedingungen (z.B. für die militärische Enwicklung (DASA/Dornier) habe ich noch in ADA programmiert, wegen Zertifizierung)? Jede Embedded Software ist praktisch in C geschrieben, insbesondere wenn es um Abnahmen für sicherheitsgerichtete (Roboter, Medizintechnik, Eisenbahntechnik) oder gar sicherheitskritische (Flugzeugtechnik) Geräte geht. Denn kein TÜV oder gar die BG würde die Abnahme eines Java-Programms zulassen.
So gesehen findet die gesamte professionelle Entwicklung im Embedded Bereich nur in C (gegebenfalls in Assembler) statt.

Nur soweit für den Anfang, ich werde jetzt nicht die ganze Arbeit zerpflücken. Ich will Dich ja nicht ganz demotivieren ;).

Pingu

EDIT: Die Einführung für die Geschichte ist übrigens Falsch. SUN ist, wie auch Apple und SGI, eine Hardwarefirma. Wobei durch die "eigene" Hardware nur eigene Software darauf läuft. Das heißt die Softwareentwicklung läuft nur "nebenbei", damit die Firmen ihre Hardware verkaufen können. Java war ein Versuch von SUN, um Entwickler von anderen Plattformen wegzulocken, deswegen diese vermeintliche Plattforunabhängigkeit. Leider ist dies aus Sicht von SUN etwas schief gegangen, bzw. die Pläne sind nicht aufgegangen. Das das heutzutage gerne etwas anders dargestellt wird, ist wiederum eine andere Sache. Ich sage nur, gerade bei Strategieentscheidung bei Firmen ist auch sehr viel Politik dabei.
Unabhängig davon ist Pascal Java Jahren voraus. Denn Pascal hat in den 70er Jahren das Konzept des Plattforumabhängigen Zwischenkodes (P4) bereits eingeführt. Dies wurde z.B. bereits auf dem Apple II umgesetzt. Ich empfehle Dir mal den Wikipedia-Artikel zu Pascal durchzulesen. Übrigens stammt gerade Pascal von dem von Dir zitierten Herrn Wirth.

EDIT2: Übrigens genau das was Du unter "Problemfälle" schilderst, kann in Pascal nicht passieren. Pascal muss man strukturiert programmieren.
 
Zuletzt bearbeitet:
Emp schrieb:
Ich denke ehrlich gesagt nicht, dass ich mich damit weit aus dem Fenster lehne. Wichtige und disziplinprägende Teilgebiete in der Informatik sind z.b. Numerik und Kryptologie, Diskrete Mathematik( z.b. mit Kombinatorik und Wahrscheinlichkeitstheorie), Graphentheorie, Optimierungsalgorithmen, Komplexitätstherie, formale Sprachen... Allessamt angewandte Mathematik.
Ja sicher. Ein Teil der gelehrten Informatik fällt in den Bereich der angewandten Mathematik. Allerdings macht die Informatik sich da die Mathematik zu nutze. Sie 'ist' also nicht sondern nutzt. Für mich ein großer Unterschied.
Für mich fällt die Informatik als ein Ergebnis aus der Mathematik heraus. Und nur weil Numerik und Kryptolgie in der Informatik gelehrt und ebenso benötigt werden, sind es dennoch Bereiche der Mathematik, die eher angekratzt als Tief behandelt werden - was eben auch nicht nötig ist, weil es dafür eben die Mathematik gibt.
 
superstar schrieb:
Falls jemand lust hat das durchzulesen, kann er/sie sich das PDF runterladen:
http://www.small-hosting.net/java-macuser.pdf

Kommentare sind erwünscht (Achtung: es ist nicht korrigiert - dh. möglicherweise sind Rechtschreibfehler und komisch klingende Sätze drinnen :D )
Ein paar Anmerkungen:
-"es ist einfacher ein bug-freies Programm in Java..." : Halte ich nicht für ein Argument. Es ist noch einfacher ein bugfreies Programm in Brainfuck zu schreiben. Das macht die Sprache noch lange nicht für die Lehre geeignet.

-" ..header-Dateien" : mir leuchtet da der große Unterschied zwischen dem Einbinden von headern und dem verwenden von Imports und abstrakten Klassen und Interfaces nicht ein.

- "Objektorientierung ... moderne Programmiersprache" ist schlichweg falsch. Funktionale Programmiersprachen sind auch modern aber nicht objektorientiert. Schreib lieber "Objektorientierung ist das bei weitem wichtigste Programmiermodell in der derzeitigen Anwendung".

- "Sicher". Java ist weit davon entfernt sicher zu sein. Ada ist sicher. D ist sicher.
Du willst kein Flugzeug fliegen oder Auto fahren das mit Java programmiert wurde, da sei dir sicher (Wortspiel). Ein Überlauf und Du machst 'nen Abflug (noch ein Wortspiel). Es gab da mal Space-Shuttles bei der Nasa die in Standard C programmiert wurden. Das hat sich geändert seit sich eins durch einen simplen Pufferüberlauf bei einem double-Wert in der Atmosphäre verteilt hat...

Generell schreibst Du m.e.n. zu viel Umgangssprache und zu wenig "Schriftdeutsch". Ausserdem gehst Du in dem Paper zwar viel auf technische Aspekte ein, machst aber nicht klar deutlich warum genau sich mit Java Programmierkonzepte didaktisch besser vermitteln lassen.
 
Pingu schrieb:
Ich würde an Deiner Stelle das ganze mal von Deinem Deutschlehrer kontrollieren lassen. Oder ist das die neue, deutsche Rechtsschreibung? Denn die Kommasetzung ist noch schlechter als meine.

Durch die neue Rechtsschreibung hat sich die Kommasetzung verändert, und dadurch kenne ich mich selber nicht mehr aus... vorher war ich schon verunsichert *g*.

Pingu schrieb:
Inhaltlich:
Der zweite Satz ist eine persönliche Meinung von Dir. Trotzdem stellst Du Ihn als allgemeingültig hin. Außerdem fehlt der Vergleich; besseren im Vergleich zu welchen anderen; unter welchen Randbedingungen (z.B. für die militärische Enwicklung (DASA/Dornier) habe ich noch in ADA programmiert, wegen Zertifizierung)? Jede Embedded Software ist praktisch in C geschrieben, insbesondere wenn es um Abnahmen für sicherheitsgerichtete (Roboter, Medizintechnik, Eisenbahntechnik) oder gar sicherheitskritische (Flugzeugtechnik) Geräte geht. Denn kein TÜV oder gar die BG würde die Abnahme eines Java-Programms zulassen.
So gesessen findet die gesamte professionelle Entwicklung im Embedded Bereich nur in C (gegebenfalls in Assembler) statt.

Man darf nicht vergessen dass es um eine Java-Arbeit handelt. In einem Apple-Buch steht nicht viel über Microsoft. Weiters ist das eine Empfehlung für Schulinformatik-Unterricht - da hat man ziemlich wenig mit "Roboter, Medizintechnik, Eisenbahntechnik, Flugzeugtechnik, TÜV, BG" zu tun.

@ Emp
-" ..header-Dateien" : es stand dort dass man die header Files NICHT verwenden muss, um mit dem Programmieren anzufangen. dh. mit: "public class HelloWorld" kann man schon beginnen.

"es ist einfacher ein bug-freies Programm in Java..." -> Genauer wird es auf der Seite 5 erklärt.

Ansonsten Danke für die Tipps :)
 
Zuletzt bearbeitet:
Sym schrieb:
Ja sicher. Ein Teil der gelehrten Informatik fällt in den Bereich der angewandten Mathematik. Allerdings macht die Informatik sich da die Mathematik zu nutze. Sie 'ist' also nicht sondern nutzt. Für mich ein großer Unterschied.
Für mich fällt die Informatik als ein Ergebnis aus der Mathematik heraus. Und nur weil Numerik und Kryptolgie in der Informatik gelehrt und ebenso benötigt werden, sind es dennoch Bereiche der Mathematik, die eher angekratzt als Tief behandelt werden - was eben auch nicht nötig ist, weil es dafür eben die Mathematik gibt.
Ähm - Nein. Dein Modell ist da ein bischen zu einfach. Die Informatik ist nicht einfacher Nutznießer der Mathematik und klaubt dort alles ab. Es bestehen weite Synergieeffekte und es wird auch gemeinsame Forschung betrieben. In einigen der genannten Felder (formale Sprachen, Knowledge Engineering, Zuverlässigkeitsanalyse, Komplexitätstheorie...) wird deutlich mehr von Informatikern geforscht und vorangetrieben als von Mathematikern. Such einfach mal Papers.
Du darfst auch nicht das, was in der Informatik im Grundstudium vermittelt wird mit dem gleichsetzen, was letztlich in der Forschung weitergetrieben wird, aber das ist Dir wohl auch klar.
Informatik und Mathematik sind zu eng und an zu vielen Punkten ineinanderfließend als das man da differenzieren könnte. Nicht umsonst ist Informatik, als Studiengang und deren Fachgebiete, an vielen Unis an den Mathematik-Fachbereichen integriert.
 
superstar schrieb:
Man darf nicht vergessen dass es um eine Java-Arbeit handelt. In einem Apple-Buch steht nicht viel über Microsoft. Weiters ist das eine Empfehlung für Schulinformatik-Unterricht - da hat man ziemlich wenig mit "Roboter, Medizintechnik, Eisenbahntechnik, Flugzeugtechnik, TÜV, BG" zu tun.
Handelt es sich um eine Arbeit oder um eine Empfehlung? Bist Du Lehrer oder Schüler? (Ich bin beim Lesen von Schüler ausgegangen)
 
@ Sym

Einer der neben Informatikstudium gerade "Informatik Lehramt" macht. Quasi als Zweitstudium.
 
superstar schrieb:
@ Emp
-" ..header-Dateien" : es stand dort dass man die header Files NICHT verwenden muss, um mit dem Programmieren anzufangen. dh. mit: "public class HelloWorld" kann man schon beginnen.
Man kann, aber man kommt auch nicht weit. In C++ binde ich iostream ein und dann ist erstmal lange Ruhe. Völlig ungeachtet dessen sollte das Konzept von externen Bibliotheken aber sowieso in den ersten Stunden vermittelt werden (sonst läuft imho etwas ganz gehörig schief), also verstehe ich das Argument nicht.
Bugfreiheit ist imho auf Seit 5 auch nicht dargelegt. Ich finde aber auch nicht das man das muss. Blöd anstellen kann man sich in jeder Sprache. Das sollte keine didaktische Entscheidung beeinflussen.
Ich würde die Punkte herausstellen, dass es in Java leicht ist die Kernkonzepte zu vermitteln, die Konstrukte nicht unnötig überladen sind und das Java und die entsprechenden Entwicklungsumgebungen vom Compiler bis zur IDE auf allen Plattformen vorhanden sind, es also egal ist ob die Schüler ihre Hausaufgaben auf einem Windows-PC, Mac, Linuxrechner oder auf dem PDA machen. Ausserdem die hohe und immer noch wachsende Verbreitung von Java in der tatsächlichen Anwendung (imho das bei weitem schlagkräftigste Argument gegen Pascal).

Edit: Mir ist noch ein Fehler aufgefallen in dem Satz "Jede Variable in Java muss von einem bestimmten Typ (Objekt) sein". Das ist so nicht richtig, denn wie Du ja vorher schonmal geschrieben hast, sind die primitiven Datentypen keine Objekte.
Mir ist auch nicht ganz klar was "Um das Programm zu kompilieren muss man in der Konsole (Eingabeaufforderung)
folgendes eingeben [etc.pp.]" mit dem Thema Java im Informatik-Unterricht zu tun hat.
Ich merke schon, ich bin heute wahrscheinlich zu kritisch. ;) Ist nicht böse gemeint, also nicht falsch verstehen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten