Ich studiere ebenfalls Informatik, mit Nebenfach Mathematik und kann mich nicht ganz entscheiden, welches der beiden Fächer mehr Spaß macht
Die Aussage "Uni-Informatiker lernen nichts richtiges" stimmt meiner Erfahrung nach nicht, trotzdem scheint man so grob einteilen zu können:
Möchtest du nachher als reiner Programmierer in leicht- bis mittelkomplexen Projekten arbeiten oder Dinge wie Firmennetzwerke planen, installieren und pflegen, also in diesem 'bodenständigen' Bereich der praktischen/angewandten Informatik arbeiten, ist sicherlich eine Fachinformatiker-Ausbildung das richtige. Dort lernt man das was man braucht, ist schneller fertig, kann eher Geld verdienen und musste/durfte sich nicht mit übermäßig theoretischen Dingen beschäftigen.
Nach einem Uni-Studium wirst du einen solchen Job eher seltener annehmen, sondern je nach deiner Fachrichtung in andere Bereiche gehen. Hier erst kurz was zu den Fachrichtungen: Mit dem Uni-Studium wirst du dich früher oder später auf eine der drei Hauptrichtungen festlegen (nicht explizit, sondern durch die Anzahl der Kurse aus diesen Bereichen):
- - technische Informatik: Entwurf und Progammierung von eingebetteten Systemen, Rechnerarchitektur, Verteilte Systeme, Netzwerktechnologien, Übertragungstechnik (Sprachen: VHDL, Verilog, etc.)
- theoretische Informatik: Algorithmen, Datenstrukturen, Komplexitätstheorie, Quantencomputer, Kryptographie
- praktische/angewandte Informatik: schrittweise Modellierung von komplexen Problemstellungen, z.B. per UML, Projektmanagement, Programmieren
Je nach Bereich (TI - tech, TH - theo, PI - prakt) kann man sich nachher verschiedene Tätigkeiten (mit grober Zuordnung) vorstellen:
- - (alle) allgemein Forschung/Entwicklung z.B. erst als studentische Hilfskraft und nachher als wissenschaftlicher Mitarbeiter in Arbeitsgruppen der Professoren oder in uni-nahen Forschungsinstituten.
- (TI) Hardwareentwurf bei Chipherstellern
- (TI) Mitarbeit in Software/Hardware-Projekten z.B. für Auto- oder Flugzeughersteller
- (TI) Programmierung von FPGAs/Microcontrollern
- (TH) Aufbau/Pflege/Implementierung großer Grid-Cluster (Supercomputer)
- (TH) Entwurf optimaler Algorithmen in Netzwerken (z.B. Peer-to-peer)
- (TH) Grafikkartenhersteller: Verbesserte 3D-Fähigkeiten
- (TH) 3D-Engine-Programmierer
- (PI) Personalmanagement großer Softwarefirmen
- (TH) Entwurf kryptografischer Protokolle für spezielle Aufgaben
- (PI) Programmierer
- (PI) Projektdurchführung: Umwandlung von der komplexen Idee in ein funktionierendes Programm
Es gibt also eine ganze Menge Bereiche, in denen man nachher arbeiten kann. Man gelangt dabei leicht in Aufgaben hinein, die ein Studium notwendig machten:
Möchte man Datenbanken einbinden, so muss man einfach nur SQL anwenden können. Zur Erweiterung bestehender DBMS ist aber ein fundiertes Wissen über relationale/objektrelationale Datenbanken in ihrer formalen Präzision unerlässlich.
Möchte man Verschlüsselung nutzen, kann man dies ohne weiteres tun - man nehme AES, RSA oder ElGamal. Möchte man diese Protokolle aber auf spezielle Anwendungsgebiete anpassen, oder zukunftsfähig halten, bzw. die Schwächen verstehen, muss man exakt die mathematischen Grundlagen und Angriffsmöglichkeiten dahinter verstehen.
Möchte man Spiele programmieren, fuxt man sich in die 3D-Engine-API rein und nutzt sie. Wenn man aber neue Konzepte in die 3D-Engine oder gar in die Grafikkarten einbringen (so wie BSP-Trees, Shading, Clipping), muss man eine Menge Mathe anwenden und teilweise abgefahrene Algorithmen effizient implementieren.
Möchte man Peer-to-peer-Netzwerke einsetzen, kann man das tun. Möchte man sie aber entwickeln, so muss man viel über Graphentheorie und effiziente (randomisierte, approximative) Algorithmen wissen.
... in der Art kann man sicher noch viele 'Gleichnisse' aufstellen. Allgemein kann man wohl sagen, dass die Früchte der Arbeit als Uni-Informatiker nachher irgendwo von anderen Leuten genutzt werden können (natürlich auch von einem selbst). Man ist also häufig eine Stufe 'dahinter', quasi in der Meta-Ebene
Dafür beschäftigt man sich aber mit allen theoretischen Details, wofür als Grundlage Mathematik benötigt wird.
Die Wahl deines Nebenfaches sollte wohlüberlegt sein. Z.b. eignet sich für einiges eher Mathematik, für anderes E-Technik, oder BWL, oder Medienwissenschaft.
An Voraussetzungen wird eigentlich nur die Bereitschaft zum Lernen erwartet. In jeder Vorlesung ging es bisher bei 0 los. (Sofern man bei Mathe ggf. die Brückenkurse besucht). Z.b. beim Programmieren. Was ist eine if-Bedingung, oder eine for-Schleife, wofür nutzt man sie ? Suuuuperlaaangweiiiliigg. Dann aber geht es ratz-fatz weiter - da muss man dranbleiben oder kanns aufgeben. Denn z.B. beim Programmieren gings nachher in derselben Vorlesung um die Monitoringfunktionen zur Synchronisation paralleler Threads.
Bei "Rechnerarchitektur" ging es erst ganz banal um ein AND-Gatter, ein ODER-Gatter, etc. Irgendwann dann aber wurde alles zusammengeschustert zu einem kompletten Prozessor mit MMU, ALU, Cache, inkl. Pipelining-Strategien.
Also mein Tipp: Wenn, dann ganz oder gar nicht: Also jede Vorlesung durchziehen oder gar nicht erst anfangen.
Inkl. Vorlesungsnachbereitung kommen da durchaus ganz normale 30-35-Stunden-Wochen zusammen, dafür hat man aber dann auch keinen Stress, da man mit der Vorlesung Schritt hält (es geht alles Schritt für Schritt, aber manchmal bedeutet das Ausfallenlassen einer einzigen Vorlesung schon viel Stoff nachzuholen). Bereitschaft/Fähigkeit zum selbstständigen Lernen ist also unerlässlich. Insbesondere eine gute Struktur beim Lernen hilft hier sehr (Organisation der Unterlagen, Notizen, etc.). Da ich vorher völlig chaotisch war, hat diese Umstellung bei mir einige Zeit gedauert, sich aber bewährt.
Selbst wenn du nachher beruflich ganz andere Wege einschlägst, hast du damit gelernt, dich selbstständig in Probleme reinzufuchsen und erst aufzugeben, wenn andere schon seit Wochen aufgegeben haben, bzw. nach anstrengenden Problemen tatsächlich ein Ergebnis zu liefern. Man gewinnt also eine Menge Ausdauer beim Konzentrieren und lernt, sich auch über Wochen hinweg trotz Mühen zu motivieren.
Zu Mathe: Ohne Mathe-Nebenfach hält sich das meiner Meinung nach in Grenzen und kann (mit Engagement) durchaus auch von ungeübten Personen erlernt werden. Einige Profs können das auch richtig gut vermitteln.
Bzgl. Studienort:
Ich hatte damals einige Rankings und sämtliche Internetseiten der 'guten' Unis angesehen. Da ist natürlich die Frage, welche Kriterien man selbst für wichtig erachtet. Mir war z.B. wichtig, wie die Professoren bewertet werden (nichts ist nerviger, als unfähige Professoren, zwei Vorlesungen fallen mir dazu ein, die anderen waren alle top vermittelt) und wie die Drittmittel der Uni aussehen (mehr Geld = bessere Lehrbedingungen stimmt leider) und wie das Angebot an uni-nahen Einrichtungen wie Forschungsgruppen und Instituten so ist (denn ich wollte in eine solche rein). Aufgrund dessen kam ich nachher auf Karlsruhe, Paderborn oder Aachen und habe mich nachher für Paderborn entschieden, da dies in der Nähe war, Informatik hier das Aushängeschild ist und daher die Informatiker höherer Semester ein eigenes überschaubares Gebäude haben, in dem überdurchschnittlich viele Institue drin sind (
--->) wo dann auch mal so schönes gemacht wird wie Grid-Computing (
--->) und Roboter-Fussball (der
RoboCup war 2005 in PB) und Hydra (
--->) stammt auch von hier.
Bislang habe ich es absolut nicht bereut, sondern ganz im Gegenteil. Aber ich denke auch jede andere 'gute' Uni wird genügend ähnliche Möglichkeiten bieten, und selbst die im Ranking schlechteren werden wohl i.O. sein, insbesondere wenn man gar nicht in uni-naher Arbeit mitmachen möchte.
So, das wars aber erstmal, jetzt habe ich über eine Stunde geschrieben, dabei muss ich noch pauken, denn morgen früh schreibe ich eine Klausur (Kryptographie - OTP/PRG/PRF/DES/AES/RSA/ElGamal)
MFG