Wie kann ich mich optimal auf mein praktisches Informatikstudium vorbereiten?

2 Antworten

Mathe schauste dir einfach nochmal n Tag alles aus der Schule an, damit's wieder im Kopf ist, dann passt das. Gerade Logarithmengesetze, Binomische Formeln und diverse Summen und so braucht man oft. Vorkurs ist auf jeden Fall Pflicht, sonst haste ab der 2. oder 3. Mathevorlesung riesen Probleme.

Programmieren solltest du dir Java ansehen, gerade so Fallstricke wie "String mit .equals() vergleichen", das musste dir merken, auch den ganzen Getter/Setter-Müll in Java. Schau dir die Syntax und Unterschieden an, dann sollte reichen, der Großteil ist ja gleich (gibt Klassen etc etc). Java GUI macht man mit AWT oder neuer JavaFX. Kannste dir mal ansehen, ist aber auch relativ ähnlich zu C#.

SQL ist noch was, was mal rankommen wird, aber das ist eher ne light-light-version. Ansonsten kommt vieles mal. Haskell hab ich bisher nur gehört, dass es das gibt, hab selbst aber schon mit Python, VHDL, Prolog und anderen arbeiten müssen - aber das ist meist echt nicht schwer. Muss man sich nicht drauf vorbereiten. 

Ansonsten sag doch mal was es sonst so an Fächern gibt, hab kA was du im 1. Semester so hast..


PS: Wenn du etwas mit Linux/der Komandozeile umgehen kannst ist das gut. Ab und zu braucht man die Konsole mal (auch unter Windows) oder muss via SSH paar Kleinigkeiten machen.

Danke für die Tipps.

Java - Getter, Setter - sehe ich das recht, dass es dafür streng genommen einfach gar keine eigene Syntax gibt und man sich à la Basic (so hab ich's noch gelernt) einfach mit entsprechenden Kapselmethoden dazu behelfen muss?

Prolog könnte ich mir noch ein bisschen anschauen, eine SQL-Einführung hatte ich schon mal.

SSH, danke, ist auch mal notiert. Cmd-Kenntnisse sind rar vorhanden, aber die Batchsyntax ist einfach der letzte, allergrößte ***.

Alle Fächer kenne ich noch nicht, aber Kurse wie Betriebssystemlehre, Softwaredesign, Computergrafik wird es wohl geben ...

0
@KnorxyThieus

Ja, in Java macht man dafür Methoden. Echt hässlich aber naja..

Meine keine Batch-Dateien schreiben, eher so Grundlagen: zu nem Ordner navigieren, Dateien/Ordner anlegen/löschen, Dateien bearbeiten (mit vim oder nano zB), Dateiberechtigungen ("777" und so ;) ).

Das kannst du nachschauen! "<deine Uni> praktische informatik studienverlaufsplan", einfach in Google reinwerfen. Ist auf den Websiten der Uni/Fakultät echt meist kaum auffindbar.

1
@triopasi

Guter Tipp, danke!

Softwarearchitektur, Analytische Mathematik, Betriebssysteme, Programmiertechnik, Digitale Systeme, Modellierung, ... reicht erstmal!

0

Lies https://www.gutefrage.net/frage/vorbereitung-aufs-informatik-lehramtsstudium#answer-253526597 .

Das dort empfohlende Buch von Gumm & Sommer wäre in deiner Situation wohl der beste Einstieg.

Mit GUI-Programmierung würde ich mich zunächst überhaupt nicht beschäftigen. Fast alles, was es dazu gibt, ist längst überholt (denn heute geht der Trend dahin, GUIs nur noch auf Basis von CSS3, HTML5 und JavaScript zu implementieren). Während des Studiums wirst du wahrscheinlich nur Programme zu schreiben haben, die ganz ohne GUI auskommen - sie lassen sich dann auch gut aus anderen Programmen heraus aufrufen.

Auch funktionale Programmierung wird dir wahrscheinlich gar nicht begegnen. Wenn doch, nutze am besten Microsoft F# (nichts anderes nämlich ist derzeit als Werkzeug für funktionale Programmierung auch nur annäherend so nützlich).

Meiner Ansicht nach sollte heute jeder Informatik-Student spätestens nach dem ersten Semster einen eignen, selbst implementierten Webauftritt haben. Meist reicht ein statisch implementierter oder einer auf Wordpress-Basis, so dass PHP-Kenntnisse zunächst nicht erforderlich sind.

Baldmöglichst zu lernen, statt MS Windows auch Linux zu nutzen, würde ich heute ebenfalls von jedem Studenten der Informatik erwarten.

Wenn du mit VBS und sogar Python umgehen kannst, wird es nicht notwendig sein, andere Skriptsprachen zu erlernen (Ausnahme Linux: dort sollte man mit bash umgehen können, wenigstens rudimentär). Microsofts PowerShell zu beherrschen ist nicht notwendig, denn sie ist vor allem für MS Windows Systemadministration gedacht und gar nicht so handlich, wie ich mir wünschen würde.

Da du praktische Informatik studieren möchtest - womit dann ja auch Software Engineering Methodik eine deiner Hauptinteressen sein sollte - rate ich dir, zu lesen, was sich hinter den Links im Abschnitt Methodisches im Navigationsmenü der Seite http://greiterweb.de/spw/ findet.

Insbesondere solltest du dann auch wissen, was sich während der letzten 40 Jahre als das am wenigsten nützliche (XP) und als das mit großem Abstand am meisten nützliche (SST) Software-Entwicklungsmodell ergab: http://greiterweb.de/spw/Agile_XP_vs_SST.htm .

Danke für deine detaillierte Antwort! :-)

Das Buch klingt gut, wenngleich mir einiges schon bekannt vorkommt. Ich denke darüber nach!

F# läuft mit .NET, klingt also gut - aber private Zwecke brauche ich das wohl nicht ...

Linux und Bash sind notiert, danke schön. Hatte ich die PowerShell irgendwo erwähnt? Da ist mir auch nur das Grundgerüst geläufig, aber bei Eventhandlern hab ich es dann hingeschmissen :)
VBS und Python wie gesagt nur ein bisschen, aber im Prinzip ist es ja eigentlich immer dasselbe, wie Exceptionhandling, Queues oder so dort laufen, ist schnell gegoogelt!

Die Links werde ich mir mal zu Gemüte führen, das klingt mir zwar ein wenig spanisch, aber soll sich ja gerade ändern.
SST heißt zusammengefasst eigentlich nur: Sorgfältig planen, Arbeitshierarchie, Programmieren ist so schön, dass man darüber das Design vergessen könnte (kenne ich) ...? ^^

Ein Punkt fällt mir gerade noch ein: Wie bald wird Versioning relevant werden? Dazu fehlt mir nämlich auch noch jeder Ansatz, Git lauert beständig in meinem Visual Studio, aber ich weiß nicht, was ich damit soll ... Meine Grundfrage: Wenn ich das nutzen würde, wie könnte ich verschiedene Branches, etwa einer für Bugfixes, einer für neue Features, später wieder zusammenführen? Immer nur in mühevoller Copy'n'Paste-Arbeit?

Anderswo auf GF las ich gestern noch, man solle sich hüten, durch Autodidaktik einen schlechten Programmierstil zu pflegen: https://www.gutefrage.net/frage/vorbereitung-fuer-ein-informatikstudium-in-einem-jahr#comment-163626222
Was hältst du davon? :)

0
@KnorxyThieus

Branches (im Sinne eines Version Management Systems wie etwa Git oder Subversion) wieder zusammenzuführen, ist tatsächlich sehr schwierig.

Meine Erfahrung: Branches sollten nur angelegt werden, wo man davon ausgeht, dass man sie nie wieder wird zusammenführen müssen. Gutes Beispiel wären Versionen eines Systems, welche kundenspezifisch zu gestalten sind (d.h. welche so gestaltet werden, dass sie in der angepassten Form für keineswegs alle Kunden interessant sind).

Über solche Anwendung hinaus, wird ein Version Management System einfach nur garantieren, dass man

  • stets Zugriff hat auf die jeweils aktuellste Version sämtlicher Mitarbeiter im Team (was sehr wichtig ist, da man so keinerlei Stubs allein nur für Testzwecke zu implementieren braucht)
  • und im Fall von Fehlentwicklung stets die Möglichkeit hat, auf eine ältere, noch nicht schief gelaufene Version des entstehenden Systems zurückzugreifen.
1
@KnorxyThieus

Was Programmierstil betrifft, so bin ich der Meinung:

  • An sinnvolle, weit verbreitete Konventionen sollte man sich halten.
  • Das aber ist nur der rein formale - eher triviale - Aspekt von Programmierstil. Viel wichtiger ist der inhaltliche Aspekt: Code sollte so gestaltet sein, dass er möglichst robust arbeitet und möglich gut verständlich ist. Solches zu erreichen ist viel Erfahrung notwendig. Nur wenige Programmierer erreichen hier wirklich viel. Je mehr sie erreichen, desto mehr Freiheit, ihren Code zu gestalten, sollte man ihnen einräumen.
1
@KnorxyThieus

Meine Erfahrung (aus etwa 30 Jahren als Mitarbeiter eines großen Software-Hauses): Dass man Versionen, die man bewusst getrennt voneinander weiterentwickelt hat, wieder zusammenführen musste, habe ich kein einziges Mal erlebt.

0
@grtgrt

Und was mache ich dann im Programmieralltag, wenn ich ein neues Feature entwickle, vor dessen Abschluss aber schon Sicherheitslücken schließen sollte? Einfach lokale Kopien vom Projektordner erstellen? :o

0
@KnorxyThieus

Während man ein neues Feature entwickelt, ist es ja noch nicht in Gebrauch. Sicherheitslücken in der neuen Version der Software müssen also erst beseitigt sein, wenn sie in Betrieb genommen werden soll.

Parallel dazu wird man in der alten Version eben erst erkannte Sicherheitslücken sofort provisorisch beseitigen (durch Patching). Dabei gewonnenenes Wissen wird helfen, in der neuen Version solche Lücken gar nicht erst entstehen zu lassen, d.h. sie auf sehr viel grundsätzlichere Art als durch Patches auszuschließen.

Ein Zusammenführen der alten mit der neuen Version in eine einzige wird nie passieren oder notwendig sein: Schließlich ist die neue ja als Fortentwicklung der alten entstanden und dafür gedacht, sie zu ersetzen.

0
@grtgrt

Das läuft doch aber im Wesentlichen darauf hinaus, dass ich an irgendeinem Punkt Code, Ressourcen oder eben auch nur Erkenntnisse aus einem nicht weitergeführten Branch in einen anderen umkopieren muss, oder?

Wie macht es denn z. B. Microsoft mit den verschiedenen Insider- und Releaseringen? Mir wird schon ganz schwindlig vor lauter Chaosphobie ... 😵

0
@KnorxyThieus

Dass da irgendwo in einem Branch schon berücksichtigte Erkenntnisse in einen anderen übernommen werden, ist sicher richtig. Es handelt sich hierbei allerdings nur äußerst selten um wirkliches Kopieren von Code: Solche Codefragmente passen an der Zielstelle einfach nicht gut genug.

1
@grtgrt

Danke, und sorry für die Verzögerung.

Nur noch eine Frage zu diesem Punkt: Wie häufig erstellt man in etwa einen neuen Branch (im echten Job): Stündlich? Täglich? Wöchentlich? :)

0
@KnorxyThieus

Eher wöchentlich, wenn nicht noch seltener.

Typischerweise dann, wenn man etwas ausprobieren möchte, von dem man noch nicht weiß, ob man damit Erfolg haben wird (es also dann auch behalten möchte).

1
@grtgrt

Mach ich täglich ^^ Aus Hobby programmieren anstatt geschäftlich ist wahrscheinlich schon so wie durch den Wald zu tanzen anstatt zu prozessieren ;)

Danke für deine Tipps noch mal.

0

Was möchtest Du wissen?