@jens & @sparrow: Ich glaube ihr verwechselt "Themen / Teilbereiche aus der Mathematik" mit der "Mathematik als ganzes"! Informatik besteht ja auch nicht nur aus der Softwareentwicklung, sondern diese ist nur *ein* Teil davon, den man aber eben *nicht* vollständig aus dem Gesamtkomplex herauslösen kann. Genauso ist das mit der Mathematik. Man braucht *vieles* aus verschiedenen Gebieten der Mathematik, um Softwareentwicklung i.A. betreiben zu können. Für andere Themen aus der Informatik braucht es wiederum andere Mathematik, teilweise aber auch dieselbe. Dennoch ist es schwer, das kleinste gemeinsame Vielfache der Mathematik für ein Studium der Informatik zu extrahieren, eben weil Informatik an sich auch extrem vielseitig ist.
Aus diesem Grund gibt es ja ein "Grundstudium", welches jedem Informatiker eine solide Basis an Grundlagen schaffen soll. Im Hauptstudium (Master?) findet zumeist auch eine Spezialisierung statt. Für diese werden dann separat benötigte Grundlagen vermittelt, die *nicht* jeder Informatiker benötigt.
Aber imho braucht es schon einiges an Mathematik, um ein solides Fundament für die Grundlagen der Informatik zu schaffen (ohne die man eben auch keine Softwareentwicklung betreiben kann!). Ob man nun "Differentialrechnung" zu den Grundlagen zählt oder nicht, darüber kann man natürlich vortrefflich streiten. Aber es gibt schon viele Aspekte, ohne die man sich schwer tun wird, grundlegende Themen der Informatik zu erfassen.
Ich werfe mal alleine das Thema Zeitkomplexität in den Raum... da sollte man schon wissen, was ein Logarithmus ist
Wofür das alles?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@jens: Die Informatik ist aus der Mathematik hervorgegangen. Das ist im Grunde angewandte Mathematik. Wobei Mathe hier nicht unbedingt das Rechnen in der Schule meint, sondern eher so Logik, Grammatiken, Graphentheorie, Mengenlehre, und so weiter. Und diese Sachen findet man eigentlich auch ständig in der Anwendung — wenn man nicht CRUD-Oberflächen programmiert mit wenig bis gar keiner Programmlogik. Wobei selbst dort ist es sehr nützlich sein kann das relationale Modell und die dahinterstehende Mengenlehre verstanden zu haben wenn ein RDBMS involviert.
@sparrow: Bei Entscheidungen zur Verladung bei einem Logistikunternehmen hat man doch in der Regel mit einem Optimierungsproblem und/oder Graphenalgorithmen zu tun‽ Welches Zeitveralten bei verschiedenen Operationen auf Datenstrukturen anfallen kommt in der Realität doch auch ständig vor. Danach wählt man schliesslich aus welche Datenstrukturen man verwendet um ein Problem zu lösen. Und sei es nur die Wahl zwischen Liste, Wörterbuch, und Mengentyp. Ab und zu hat man dann aber auch Probleme wo man eine Queue braucht, oder eine Heap-Struktur. Wie sollte man ohne Wissen um das Laufzeitverhalten die richtige Wahl treffen?
@allgemein: Insgesamt lehrt einem die Mathematik im Informatikstudium auch strukturiert an ein Problem heran zu gehen und das sauber und exakt formal auszudrücken. Nichts anderes macht man am Ende ja mittels einer Programmiersprache um einen Lösungsweg exakt und formal für den Rechner zu beschreiben. Oder zum Beispiel bei deklarativen Ansätzen das Ergebnis mit Eigenschaften und Bedingungen so zu beschreiben das der Rechner den Lösungsweg von den Ausgangsdaten zum beschriebenen Ergebnis finden kann.
@sparrow: Bei Entscheidungen zur Verladung bei einem Logistikunternehmen hat man doch in der Regel mit einem Optimierungsproblem und/oder Graphenalgorithmen zu tun‽ Welches Zeitveralten bei verschiedenen Operationen auf Datenstrukturen anfallen kommt in der Realität doch auch ständig vor. Danach wählt man schliesslich aus welche Datenstrukturen man verwendet um ein Problem zu lösen. Und sei es nur die Wahl zwischen Liste, Wörterbuch, und Mengentyp. Ab und zu hat man dann aber auch Probleme wo man eine Queue braucht, oder eine Heap-Struktur. Wie sollte man ohne Wissen um das Laufzeitverhalten die richtige Wahl treffen?
@allgemein: Insgesamt lehrt einem die Mathematik im Informatikstudium auch strukturiert an ein Problem heran zu gehen und das sauber und exakt formal auszudrücken. Nichts anderes macht man am Ende ja mittels einer Programmiersprache um einen Lösungsweg exakt und formal für den Rechner zu beschreiben. Oder zum Beispiel bei deklarativen Ansätzen das Ergebnis mit Eigenschaften und Bedingungen so zu beschreiben das der Rechner den Lösungsweg von den Ausgangsdaten zum beschriebenen Ergebnis finden kann.
Ein "reines" Informatik-Studium soll schon ein bißchen mehr vermitteln als ein VHS-Kurs zum Thema Programmieren. Nach dem Studium sollen die Absolventen (idealerweise) fähig sein, sich von der Methodik her relativ zügig in alle möglichen Themenbereiche der Informatik einarbeiten zu können. Da geht es nicht darum, ein paar Zeilen PHP-Code hinklatschen zu können. Daher ist die Mathematik entsprechend wichtig.
Klar gibt es bestimmt auch etliche Studenten, die einfach nur programmieren möchten. In dem Fall sollte man sich aber besser eine Ausbildung zum Programmierer aussuchen oder von Anfang an etwas studieren, was mehr mit angewandter Programmierung zu tun hat. Beispiele wären Wirtschaftsinformatik oder ein Studienfach, wo man halt ein paar IT-bezogene Kurse dazuwählen kann. Da kommt man dann immer noch (mitunter nicht zu knapp) mit Mathematik in Berührung, aber man sieht möglicherweise eher den praktischen Zusammenhang zur später gewünschten Tätigkeit.
Es ist halt das typische Problem bei der Wahl des Studienfachs: Oftmals hat man ganz andere Vorstellungen von dem, was man sich ausgesucht hat und wird dementsprechend enttäuscht von seinem Studium sein. Wenn man so etwas merkt, dann sollte man sein Studium IMHO aber auch früher oder später abbrechen, anstatt sich bis zum Ende durchzuquälen. Es gibt wie gesagt auch Ausbildungen oder eben Studienfächer in Bereichen, die einem vielleicht eher zusagen.
Klar gibt es bestimmt auch etliche Studenten, die einfach nur programmieren möchten. In dem Fall sollte man sich aber besser eine Ausbildung zum Programmierer aussuchen oder von Anfang an etwas studieren, was mehr mit angewandter Programmierung zu tun hat. Beispiele wären Wirtschaftsinformatik oder ein Studienfach, wo man halt ein paar IT-bezogene Kurse dazuwählen kann. Da kommt man dann immer noch (mitunter nicht zu knapp) mit Mathematik in Berührung, aber man sieht möglicherweise eher den praktischen Zusammenhang zur später gewünschten Tätigkeit.
Es ist halt das typische Problem bei der Wahl des Studienfachs: Oftmals hat man ganz andere Vorstellungen von dem, was man sich ausgesucht hat und wird dementsprechend enttäuscht von seinem Studium sein. Wenn man so etwas merkt, dann sollte man sein Studium IMHO aber auch früher oder später abbrechen, anstatt sich bis zum Ende durchzuquälen. Es gibt wie gesagt auch Ausbildungen oder eben Studienfächer in Bereichen, die einem vielleicht eher zusagen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Als erstes mächte ich, wie BlackJack vor mir, eine Lanze für Scheme und zpeziell PLT Scheme/Racket brecken. Ich finde das ist eine exzellente Sprache zum lernen von Programmierung. Sie ist in vielerlei Hinsicht deutlich simpler als Java oder C oder ähnliche Sprachen und in vielerlei hinsicht auch deutlich mächtiger. Das war die erste funktionale Sprache die ich benutzt habe, und ich hatte viele Abende Kopfschmerzel als ich "The Little Schemer" gelesen habe, aber seitdem war die Art von Code die ich in Python schreibe ziemlich anders. Und Racket hat auch eine echt praktische Umgebung um Programmieren zu lernen. Das was man in C völlig vergeblich sucht und in Java evtl. von BlueJ repräsentiert wird.
Aber man muss sich halt klar sein, dass Informatik keine Lehre über Computer ist. Computer sind nur Werkzeuge die benutzt werden um diese Informatik zu betreiben, aber etwa so relatiert zu Informatik wie Taschenrechner zu Mathematik oder Teleskope zu Astronomie. Klar, es gibt Felder die sich praktischer mit Computern beschäftigen, aber ein Von-ganz-unten-nach-ganz-oben-Ansatz zum lernen über Computer ist Zeitlich schwer machbar, evtl überhaupt nicht möglich (weil Intel z.B. weniger begeistert ist sein komplettes CPU-Wissen an Unis weiterzugeben, wir haben im Jahr 2008 über ne alte AMD-CPU aus den 80ern gelernt) und schon gar nicht nützlich, weil das Feld sich so schnell ändern kann dass die CPU die man 2 Jahre lang von Grund auf geändert hat nun komplett obsolet ist. Daher muss man irgendwo Grenzen ziehen. Bei uns war die Grenze "Konzepte der Mikroprogrammierung", wir sind nicht auf die Ebene gegangen wo E-Techniker beheimatet sind und auch nicht auf die darunterliegende Ebene wo Physiker sich wohl fühlen. Und selbst wenn man von der CPU ausgeht, wie bootet ein System. Da stellt sich die Frage, was für ein System? Eine x86-Kiste? Ein Smartphone? Ein Mainframe? Ein Batch-System? Ein verteiltes Cluster? Wenn man soweit ist dass ein OS bootet, welches OS? Man kann nicht jedes OS im Detail betrachten, das ist teils wiederrum technisch nicht machbar weil der Code nicht verfügbar ist und teils auch nicht praktikabel weil die komplexität erdrückend ist. Daher schaut man sich in der Regel Spielzeugsysteme an, damit man einen überblick über wichtige Konzepte hat, etwa Scheduling, dann ist man in der Betriebssystemsvorlesung.
Nun kann man weiter gehen und sich überlegen wie man Daten organisiert. Dabei kann man natürlich auch nur einen kleinen Bereich abdecken, also pickt man sich die interessantesten Algorithmen und Datenstrukturen raus (ist auch wieder eine Vorlesung). Dann weiß man schonmal wie man effizient mit Daten arbeiten kann. Nun kann man weiter hoch gehen und das mit Relationaler Algebra verbinden und raus kommen RDBMS. Man kann noch weiter gehen und dann kommt man etwa im Web an, mit seinen myriaden von Frameworks die teilweise Halbwertszeiten von Wochen haben.
Also klar, man weiß in Informatik nicht von Grund auf wie Computer funktionieren. Aber egal was man macht, man weiß nie wie irgendetwas von Grund auf funktioniert, dafür ist unsere Welt zu komplex um alles zu wissen. Was man aber als Informatiker kann ist, wenn einen eines der Gebiete interssiert, dass man das Handwerkszeug hat, sich zu erarbeiten wie die Details funktionieren.
Aber man muss sich halt klar sein, dass Informatik keine Lehre über Computer ist. Computer sind nur Werkzeuge die benutzt werden um diese Informatik zu betreiben, aber etwa so relatiert zu Informatik wie Taschenrechner zu Mathematik oder Teleskope zu Astronomie. Klar, es gibt Felder die sich praktischer mit Computern beschäftigen, aber ein Von-ganz-unten-nach-ganz-oben-Ansatz zum lernen über Computer ist Zeitlich schwer machbar, evtl überhaupt nicht möglich (weil Intel z.B. weniger begeistert ist sein komplettes CPU-Wissen an Unis weiterzugeben, wir haben im Jahr 2008 über ne alte AMD-CPU aus den 80ern gelernt) und schon gar nicht nützlich, weil das Feld sich so schnell ändern kann dass die CPU die man 2 Jahre lang von Grund auf geändert hat nun komplett obsolet ist. Daher muss man irgendwo Grenzen ziehen. Bei uns war die Grenze "Konzepte der Mikroprogrammierung", wir sind nicht auf die Ebene gegangen wo E-Techniker beheimatet sind und auch nicht auf die darunterliegende Ebene wo Physiker sich wohl fühlen. Und selbst wenn man von der CPU ausgeht, wie bootet ein System. Da stellt sich die Frage, was für ein System? Eine x86-Kiste? Ein Smartphone? Ein Mainframe? Ein Batch-System? Ein verteiltes Cluster? Wenn man soweit ist dass ein OS bootet, welches OS? Man kann nicht jedes OS im Detail betrachten, das ist teils wiederrum technisch nicht machbar weil der Code nicht verfügbar ist und teils auch nicht praktikabel weil die komplexität erdrückend ist. Daher schaut man sich in der Regel Spielzeugsysteme an, damit man einen überblick über wichtige Konzepte hat, etwa Scheduling, dann ist man in der Betriebssystemsvorlesung.
Nun kann man weiter gehen und sich überlegen wie man Daten organisiert. Dabei kann man natürlich auch nur einen kleinen Bereich abdecken, also pickt man sich die interessantesten Algorithmen und Datenstrukturen raus (ist auch wieder eine Vorlesung). Dann weiß man schonmal wie man effizient mit Daten arbeiten kann. Nun kann man weiter hoch gehen und das mit Relationaler Algebra verbinden und raus kommen RDBMS. Man kann noch weiter gehen und dann kommt man etwa im Web an, mit seinen myriaden von Frameworks die teilweise Halbwertszeiten von Wochen haben.
Also klar, man weiß in Informatik nicht von Grund auf wie Computer funktionieren. Aber egal was man macht, man weiß nie wie irgendetwas von Grund auf funktioniert, dafür ist unsere Welt zu komplex um alles zu wissen. Was man aber als Informatiker kann ist, wenn einen eines der Gebiete interssiert, dass man das Handwerkszeug hat, sich zu erarbeiten wie die Details funktionieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Das sollte eigentlich für fast alle Studiengänge gelten: die Vermittlung von Grundlagen, partiellen Spezialwissen, die Fähigkeit strukturiert zu denken sowie lernen zu lernen, nicht nur unter Anleitung, sondern auch selbständig. Das ist sicher ein hoher Anspruch, aber dazu ist ein Studium schließlich auch da.Leonidas hat geschrieben:Was man aber als Informatiker kann ist, wenn einen eines der Gebiete interssiert, dass man das Handwerkszeug hat, sich zu erarbeiten wie die Details funktionieren.
Leider scheint dieses neuhumanistische Bildungsideal nicht gerade die Vorlage für Bologna gewesen zu sein. SCNRkbr hat geschrieben:Das sollte eigentlich für fast alle Studiengänge gelten: die Vermittlung von Grundlagen, partiellen Spezialwissen, die Fähigkeit strukturiert zu denken sowie lernen zu lernen, nicht nur unter Anleitung, sondern auch selbständig. Das ist sicher ein hoher Anspruch, aber dazu ist ein Studium schließlich auch da.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
"lernen zu lernen" sollte IMHO schon in der Schule vermittelt werden... Aber naja, unser Schulsystemkbr hat geschrieben:Das sollte eigentlich für fast alle Studiengänge gelten: die Vermittlung von Grundlagen, partiellen Spezialwissen, die Fähigkeit strukturiert zu denken sowie lernen zu lernen, nicht nur unter Anleitung, sondern auch selbständig.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich würde da durchaus eher sagen: "Aber naja, die vielen Eltern..." Die meisten schulischen (Leistungs-)Probleme werden im Elternhaus verursachtjens hat geschrieben: "lernen zu lernen" sollte IMHO schon in der Schule vermittelt werden... Aber naja, unser Schulsystem
Und dieser Anspruch kann höchstens ab Klasse 11, also dem tatsächlichen Gymnasium gelten. Zuvor geht es primär um Grundlagenwissen, welches imho besser frontal als durch "Gruppenarbeiten" oder ähnlichen Mumpitz "erarbeitet" wird! Zumal leider nicht jeder Mensch dazu fähig ist - hören viele nicht gerne, die Realität zeigt es jedoch
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das was die Schule nicht schafft, sollen also die Eltern nachholen? Deswegen auch die immer weiter Steigende Anzahl an Nachhilfe?Hyperion hat geschrieben:Ich würde da durchaus eher sagen: "Aber naja, die vielen Eltern..." Die meisten schulischen (Leistungs-)Probleme werden im Elternhaus verursacht
@jens: Kann man auch umdrehen: Was die Eltern nicht schaffen soll also die Schule nachholen? Es geht dabei ja nicht um Schulstoff sondern die grundlegende Erziehung. Ich denke da fällt schon noch einiges in die Verantwortung von Eltern was heute teilweise der Schule rüber geschoben wird und die dann überfordert.
eine erfolgreiche Bildungskarriere beginnt ab Geburt, wo Neugierde, Spaß am Lernen, Geduld und Ausdauer vermittelt wird. Wenn die Kinder mit 6 in die Schule kommen, und nicht wenigstens Grundlagen dieser Grundlagen da sind, ist es leider meistens schon zu spät. Wer nicht mit 2 Bilderbücher anschaut, wird mit 20 auch nicht freiwillig ein Informatikbuch lesen.
Ich denke, dass eine "Bildungskarriere" (was für ein Wort) auch erfolgreich sein kann, wenn man nicht von Anfang an der perfekte Einser-Schüler war. Vieles an Wissen lässt sich im späteren Leben nachholen. Es muss nur ausreichend Interesse und Motivation vorhanden sein. Natürlich lernt man in jungen Jahres vieles deutlich leichter als mit Anfang 30. Das heißt aber nicht, dass man einen Menschen abschreiben sollte, wenn er nicht seit seiner Geburt als absolut lernwillig aufgetreten ist. Den umgekehrten Weg gibt es ja genau so: Die viel versprechende Bildungskarriere findet ein jähes Ende, weil das Kind dank falscher Freunde oder traumatisierender Ereignisse "in der Gosse" landet.