Informatikwissen auf Hochschulniveau: Themen und Bücher?
Informatikwissen auf Hochschulniveau: Themen und Bücher?
Hallo NG
Ich merke immer wieder, dass mir ein gewisses Grundwissen im Umgang mit dem Computer und ihm zugrunde liegender Technik fehlt. Ich muss ständig das Wie und Warum in Erfahrung bringen und dafür oft viel mehr Zeit als für die Lösung des eigentlichen Problems investieren.
Vor ca. sechs Jahren habe ich erstmals einen eigenen PC zusammengebaut. Lange davor hatte ich sonst nur eingen Amiga, an dem nur gespielt hatte. Ach ja, davorich hatte einen COSMOS Elektronikbaukasten, den ich irgendwann mit Starkstrom geröstet habe. Sogar von klein auf habe ich immer wieder die Dinge auseinandergenommen und wieder zusammengabut. Meine erste Uhr, die ich geschenkt erhalten habe, musste ich auch auseinandernehmen. Wieso ich damals keine technische Ausbildung gewählt habe, lag an anderen Umständen.
Vor ca. vier Jahren bin ich in die Informatikbranche eingestiegen und bin seither als Entwickler in einem Datawarehouse tätig. Gleichzeitig bzw. während 2 Jahren liess ich mich zum sogeannten Applikationsentwickler ausbilden, wobei der Fokus mehr vorgehensorientiert als technisch war. Seit knapp zwei Jahren beschäftige ich mich intensiv mit Debian und habe in der Zwischenzeit ein kleines Netzerwerk aufgebaut. Vor kurzem habe ich angefangen C zu lernen und möchte irgendwann ernsthaft Software entwickeln.
Nun versuche ich mir einen "Fahrplan" zu erstellen, wie ich mein Wissen auf das Hochschulniveau bringen kann. Ich benötige ledeglich die Themenbereiche und die dazu benötigte Bücher. Dies sind die Gebiete (inkl.Bücher), wo ich schon dabei bin sie zu studieren oder bald in Angriff nehmen möchte:
In Arbeit
Linux
-- Selflinux
-- Rute User's Tutorial and Exposition (Paul Sheer)
-- Harderning Linux (John H. Terpstra u.a.)
HTML
-- HTML - Von der Baustelle bis JavaScript (Helmut Erlenkötter)
-- Selfhtml
Debian
-- Debian GNU/Linux PowerPack (Peter H. Ganten & Wulf Alex)
-- The Debian System - Concepts and Techniques (Martin F. Kraft)
-- Debian GNU/Hurd
Networks
-- Computer Networks - A Systems Approach (Larry L. Peterson & Bruce S. Davie)
-- The TCP/IP Guide (Charles M. Kozierok)
C Programing Language
-- C und Linux (Martin Gräfe)
-- C - A Software Engineering Approach (Peter A. Darnell & Philip E. Margolis)
-- C - A Reference Manual (Samuel P. Harbison III & Guy L. Steele Jr.)
Zu tun
Kernel
-- Linux Kernelarchitektur (Wolfgang Mauerer)
-- Lions' Commentary on Unix 6th Edition with Source Code (John Lions)
Java
-- Java-Applikationen (Helmut Erlenkötter)
-- Java - How To Program (Harvey M. Deitel & Paul J. Deitel)
-- Java ist auch eine Insel (Christian Ullenboom)
Eventuell
Assembler
-- Assembler - Maschinennahes Programmieren von Afang an (Reiner Backer)
-- Assembler Programmierung (Wolfgang Link)
Ich freue mich auf Eure Antworten.
Ich merke immer wieder, dass mir ein gewisses Grundwissen im Umgang mit dem Computer und ihm zugrunde liegender Technik fehlt. Ich muss ständig das Wie und Warum in Erfahrung bringen und dafür oft viel mehr Zeit als für die Lösung des eigentlichen Problems investieren.
Vor ca. sechs Jahren habe ich erstmals einen eigenen PC zusammengebaut. Lange davor hatte ich sonst nur eingen Amiga, an dem nur gespielt hatte. Ach ja, davorich hatte einen COSMOS Elektronikbaukasten, den ich irgendwann mit Starkstrom geröstet habe. Sogar von klein auf habe ich immer wieder die Dinge auseinandergenommen und wieder zusammengabut. Meine erste Uhr, die ich geschenkt erhalten habe, musste ich auch auseinandernehmen. Wieso ich damals keine technische Ausbildung gewählt habe, lag an anderen Umständen.
Vor ca. vier Jahren bin ich in die Informatikbranche eingestiegen und bin seither als Entwickler in einem Datawarehouse tätig. Gleichzeitig bzw. während 2 Jahren liess ich mich zum sogeannten Applikationsentwickler ausbilden, wobei der Fokus mehr vorgehensorientiert als technisch war. Seit knapp zwei Jahren beschäftige ich mich intensiv mit Debian und habe in der Zwischenzeit ein kleines Netzerwerk aufgebaut. Vor kurzem habe ich angefangen C zu lernen und möchte irgendwann ernsthaft Software entwickeln.
Nun versuche ich mir einen "Fahrplan" zu erstellen, wie ich mein Wissen auf das Hochschulniveau bringen kann. Ich benötige ledeglich die Themenbereiche und die dazu benötigte Bücher. Dies sind die Gebiete (inkl.Bücher), wo ich schon dabei bin sie zu studieren oder bald in Angriff nehmen möchte:
In Arbeit
Linux
-- Selflinux
-- Rute User's Tutorial and Exposition (Paul Sheer)
-- Harderning Linux (John H. Terpstra u.a.)
HTML
-- HTML - Von der Baustelle bis JavaScript (Helmut Erlenkötter)
-- Selfhtml
Debian
-- Debian GNU/Linux PowerPack (Peter H. Ganten & Wulf Alex)
-- The Debian System - Concepts and Techniques (Martin F. Kraft)
-- Debian GNU/Hurd
Networks
-- Computer Networks - A Systems Approach (Larry L. Peterson & Bruce S. Davie)
-- The TCP/IP Guide (Charles M. Kozierok)
C Programing Language
-- C und Linux (Martin Gräfe)
-- C - A Software Engineering Approach (Peter A. Darnell & Philip E. Margolis)
-- C - A Reference Manual (Samuel P. Harbison III & Guy L. Steele Jr.)
Zu tun
Kernel
-- Linux Kernelarchitektur (Wolfgang Mauerer)
-- Lions' Commentary on Unix 6th Edition with Source Code (John Lions)
Java
-- Java-Applikationen (Helmut Erlenkötter)
-- Java - How To Program (Harvey M. Deitel & Paul J. Deitel)
-- Java ist auch eine Insel (Christian Ullenboom)
Eventuell
Assembler
-- Assembler - Maschinennahes Programmieren von Afang an (Reiner Backer)
-- Assembler Programmierung (Wolfgang Link)
Ich freue mich auf Eure Antworten.
hi,
Zum "Hochschulwissen" gehört in erster Linie das Wissen um Methodik, nicht um die Programmiersprache an sich. Dazu gehört zum Bsp. ein schönes Buch über Allgorithmen:
http://mitpress.mit.edu/algorithms/
Die Bücher des Andrew S. Tanenbaum sind auch lesenswert, z.b.
http://www.cs.vu.nl/~ast/books/mos2/
oder "Distributed Systems".
Bücher zu UML dürften eigentlich auch nicht fehlen..
mfg
mauser
Zum "Hochschulwissen" gehört in erster Linie das Wissen um Methodik, nicht um die Programmiersprache an sich. Dazu gehört zum Bsp. ein schönes Buch über Allgorithmen:
http://mitpress.mit.edu/algorithms/
Die Bücher des Andrew S. Tanenbaum sind auch lesenswert, z.b.
http://www.cs.vu.nl/~ast/books/mos2/
oder "Distributed Systems".
Bücher zu UML dürften eigentlich auch nicht fehlen..
mfg
mauser
Da hast du dir einiges vorgenommen 
Allerdings wird Assemblercode in den meisten Fällen kaum noch gebraucht, und auch C braucht man im Normalfall nicht, wenn man keine Gerätetreiber oder sonstigen Kernel-Code schreiben muss. Für stinknormale "Anwendungen" wäre C++ angesagter und da musst du dich neben der Spache auch mit APIs / Libraries beschäftigen (STL, POSIX, Glibc, GTK/Qt etc...)

Allerdings wird Assemblercode in den meisten Fällen kaum noch gebraucht, und auch C braucht man im Normalfall nicht, wenn man keine Gerätetreiber oder sonstigen Kernel-Code schreiben muss. Für stinknormale "Anwendungen" wäre C++ angesagter und da musst du dich neben der Spache auch mit APIs / Libraries beschäftigen (STL, POSIX, Glibc, GTK/Qt etc...)
Auch Java geht (ja, kratzt mich, schlagt mich...).
Was ich ganz interessant fand, war http://www.der-pragmatische-programmierer.de/
Ich hab nur das erste Buch gelesen, könnte mir aber vorstellen, das die anderen ähnlich gut sind - ich kenn den Übersetzer
Dort geht es weniger direkt um Programmiermethodik sondern eher um die Konzepte, die dahinter stehen, worüber man sich sonst noch Gedanken machen soll usw...
Aber eines solltest du dir klar machen: An den Hochschulen wird die reine Theorie gelehrt und das Praktische muss man nebenbei selber machen (zumindest ist das bei den Informatikern oft so) -> Die Theorie ist oft grauenvoll langweilig.
Dein Plan ist ziemlich umfangreich, vllt. solltest du eher etwas kleiner anfangen...
Was ich ganz interessant fand, war http://www.der-pragmatische-programmierer.de/
Ich hab nur das erste Buch gelesen, könnte mir aber vorstellen, das die anderen ähnlich gut sind - ich kenn den Übersetzer

Dort geht es weniger direkt um Programmiermethodik sondern eher um die Konzepte, die dahinter stehen, worüber man sich sonst noch Gedanken machen soll usw...
Aber eines solltest du dir klar machen: An den Hochschulen wird die reine Theorie gelehrt und das Praktische muss man nebenbei selber machen (zumindest ist das bei den Informatikern oft so) -> Die Theorie ist oft grauenvoll langweilig.
Dein Plan ist ziemlich umfangreich, vllt. solltest du eher etwas kleiner anfangen...
- Keruskerfürst
- Beiträge: 47
- Registriert: 05.08.2006 15:42:07
Hallo,
das was Du Dir da vorgenommen hast, ist Fertigkeiten zu lernen. An den Unis wird versucht Konzepte zu lehren. Man bildet die Leute nicht auf etwas unbedingt aktuelles aus, wobei die Beispiele, wie z.B Java, aktuell sein sollen. Es geht darum, dass die Leute auch sich schnell reinfinden sollen, wenn es z.B mal kein Java mehr geben sollte oder so. Es geht darüber hinaus auch darum, dass die Leute eigenständig auch etwas erfinden sollen, wenn es das nicht gibt. Also nicht zu schauen, ok. es gibt html, c++, Assembler, das lerne ich mal, sondern darum, oh das gibt es nicht?, dann mach ich es mal.
Das sollten alle universitären Ausbildungen gemein haben, das Kreative.
Um das gesagte aber wieder zu entschärfen, es ist auch wahr, dass die Leute das meiste dann später im Job lernen
Und ein Hochschulabschluss ist sicher auch eine soziale Etikette. Wenn Du einen Personaler vor Dir hast, der hat meist BWL studiert. Der kann Deine Skills halt nur über Abschlüsse, Zertifikate und durchgeführte Projekte einschätzen.
Allerdings haben ja auch einige OS Entwickler gezeigt, dass man nicht unbedingt einen Uni Abschluss braucht, um gute Software zu machen.
Um auf die Konzepte zurück zu kommen, also Modellierung ist sicher wichtig, Spezifikation und Entwurfmuster sind wichtig, Allgorithmen und Datenstrukturen sind wichtig, Datenbanken und Retrieval auch, Automatentheorie und formale Grammatiken auch. Das sind nur einige Beispiele.
F
das was Du Dir da vorgenommen hast, ist Fertigkeiten zu lernen. An den Unis wird versucht Konzepte zu lehren. Man bildet die Leute nicht auf etwas unbedingt aktuelles aus, wobei die Beispiele, wie z.B Java, aktuell sein sollen. Es geht darum, dass die Leute auch sich schnell reinfinden sollen, wenn es z.B mal kein Java mehr geben sollte oder so. Es geht darüber hinaus auch darum, dass die Leute eigenständig auch etwas erfinden sollen, wenn es das nicht gibt. Also nicht zu schauen, ok. es gibt html, c++, Assembler, das lerne ich mal, sondern darum, oh das gibt es nicht?, dann mach ich es mal.
Das sollten alle universitären Ausbildungen gemein haben, das Kreative.
Um das gesagte aber wieder zu entschärfen, es ist auch wahr, dass die Leute das meiste dann später im Job lernen

Und ein Hochschulabschluss ist sicher auch eine soziale Etikette. Wenn Du einen Personaler vor Dir hast, der hat meist BWL studiert. Der kann Deine Skills halt nur über Abschlüsse, Zertifikate und durchgeführte Projekte einschätzen.
Allerdings haben ja auch einige OS Entwickler gezeigt, dass man nicht unbedingt einen Uni Abschluss braucht, um gute Software zu machen.
Um auf die Konzepte zurück zu kommen, also Modellierung ist sicher wichtig, Spezifikation und Entwurfmuster sind wichtig, Allgorithmen und Datenstrukturen sind wichtig, Datenbanken und Retrieval auch, Automatentheorie und formale Grammatiken auch. Das sind nur einige Beispiele.
F
Hallo Leute
Vielen Dank für Eure Beiträge.
Was die Uni ausmacht, war mir schon klar. Ich hatte nur keine Ahnung, welche Bücher da empfholen werden. Gleichzeitig fehlt mir auch das breite Theoriewissen, welches man sich währen dem Uni-Studium aneignet. Zum Beispiel was sind die Eigenschaften der verschiedenen Betriebssysteme und Rechenarchitekuren oder wie ist der Aufbau und die Funktionsweise eines Prozessors usw.
Ist es überhaupt möglich solche Ingenieursfähigkeiten zu erlangen, ohne die Vorteile eines methodischen Uni-Studiums zu geniessen?
Nochmals vielen Dank.
Grüsse
Vielen Dank für Eure Beiträge.
Was die Uni ausmacht, war mir schon klar. Ich hatte nur keine Ahnung, welche Bücher da empfholen werden. Gleichzeitig fehlt mir auch das breite Theoriewissen, welches man sich währen dem Uni-Studium aneignet. Zum Beispiel was sind die Eigenschaften der verschiedenen Betriebssysteme und Rechenarchitekuren oder wie ist der Aufbau und die Funktionsweise eines Prozessors usw.
Ist es überhaupt möglich solche Ingenieursfähigkeiten zu erlangen, ohne die Vorteile eines methodischen Uni-Studiums zu geniessen?
Nochmals vielen Dank.
Grüsse
Es sollte sicherlich möglich sein, denn die Hauptleistung bei einem Studium, erbringt immer noch der Student. Und gerade die unselbstständigen sind nicht gerade toll.Lutheyus hat geschrieben: Ist es überhaupt möglich solche Ingenieursfähigkeiten zu erlangen, ohne die Vorteile eines methodischen Uni-Studiums zu geniessen?
Am wichtigsten sind doch Motivation und Interesse. Das kann man nicht lehren.
Schau Dir doch einfach mal ein Paar Studienpläne von FHs und Unis an und entscheide, was Dich interessiert. Ferner denke ich, dass Du durch die Partizipation an Opensource Projekten sehr viel lernen kannst, da die häufig ein sehr hohes Niveau haben.
Allerdings geht aus Deinem Posting nicht hervor, was Du genau lernen willst.
Betriebssysteme und vielleicht noch Compilebau dazu machen einen kleinen Teil eines solchen Studiums aus.
Es wäre gut zu wissen, was Du damit vorhast. Willst Du Dich beruflich verbessern? Wenn ja an welche Bereiche denkst Du?
Wenn Du als Sysad arbeiten willst, brauchst Du Uni wissen nicht immer.
Wenn Du Anwendungsentwicklung machen willst, auch nicht unbedingt. Programmierer brauchen eigentlich auch nicht studiert haben. Die Ingenieure sollten eigentlich auf einer abstrakteren Ebene arbeiten. Dass das nicht so ist, verdanken will teilweise der IHK, die die gute Idee mit den Informatik-Ausbildungsberufen gegen die Wand gefahren haben. Deshalb arbeiten so viele Ings als überbezahlte Programmierer und die Firmen beschweren sich über Standort kosten, wobei die Ings das nicht stört, weil sie für das selbe Geld sich weniger anstrengen müssen.
Gruß,
Sam
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
IMHO nein. Nichts was Du oben an Büchern aufgezählt hast wird bei einem Informatik Studium auf diesem Abstraktions Niveau gelehrt. Das was Du aufgezählt hast ist schon ein Schritt weiter in Richtung Praktische Anwendungen aber auf einer Technischen Universität wird das nicht gelehrt.Lutheyus hat geschrieben: Ist es überhaupt möglich solche Ingenieursfähigkeiten zu erlangen, ohne die Vorteile eines methodischen Uni-Studiums zu geniessen?
Auf einer TU hast Du eher so allgem. Sachen wie Algorithmen und Datenstrukturen, Mathematik (in den ersten Semestern) und später Spezialisierungen in gewissen Teilgebieten. Das Wissen ist Meilenweit von den Büchern oben entfernt.
Wenn Du das Wissensniveau einer TU Abgängers haben willst musst Du ein Studium machen - nur durch Bücher (durch die oben schon gar nicht) lesen ist das nicht machbar - Dir fehlt der Dialog.
Wenn Du wirklich an Literatur interessiert bist, wie Sie an einer Hochschule gelehrt wird dann suche auf den offiziellen Seiten einer TU eine Vorlesung und sieh nach welche Literatur empfohlen wird (die ISBN der Bücher ist meist vorhanden).
markus
/edit
Nach dem ich den Thread nochmals überflogen habe möchte ich noch kurz etwas sagen weil ich des öfteren den Eindruck habe die Menschen verwechseln etwas.
Zwischen einen Informatik Studium und der Fähigkeit in der Praxis mit einem POSIX Betriebssystem auf hohem Niveau zu arbeiten besteht kein kausaler Zusammenhang. Das sind zwei verschiedene Welten - deto jedes andere technische Studium.
Das waren nur Beispiele. Kurz gesagt, möchte ich über alles soviel Bescheid wissen, um bei einer Problemstellung einen möglichen Lösungsansatz ausarbeiten zu können. Falls ich dabei mehr Detailkenntnisse benötige, werde ich auf jeden Fall in der Lage sein, mir diese zu erarbeiten. Beispielsweise hatte ich vor ein paar Monaten die technische Machbarkeit eines Wireless-Internets untersucht, wobei das System auf Linux basieren und die Anbindung an das Internet mittels einem 2-Weg Satelitentssytem erfolgen sollte. Natürlich ist dies nichts neues und sogar habe ich später preiswerte Fertiglösungen gefunden.Sam hat geschrieben:Allerdings geht aus Deinem Posting nicht hervor, was Du genau lernen willst.
Betriebssysteme und vielleicht noch Compilebau dazu machen einen kleinen Teil eines solchen Studiums aus.
Ich möchte an neuen Ideen und Konzepten arbeiten. Interessant finde ich das Konzept von GNU/Hurd. Oder auch SOA, das meiner Meinung nach der nächste logische Schritt in der Weiterentwicklung der Systemarchitektur eines Unternehmens ist. Sogar die Idee eines Bytecode Betriebssystems finde ich äusserst interessant. Die neulich verwaiste Debianpakete cscope udn cbrowser würde ich z. B. gerne weiterpflegen, da ich sie selber verwende und ausserdem sehr nützlich finde. Nur soweit bin ich noch nicht.Sam hat geschrieben:Es wäre gut zu wissen, was Du damit vorhast. Willst Du Dich beruflich verbessern? Wenn ja an welche Bereiche denkst Du?
Grüsse
Ok,
also ich stimme nicht mit Markus überein, dass man so etwas nicht im Selbsstudium lernen kann. Der Dialog ist wichtig, da stimme ich mit Markus überein. Aber den Dialog gibt es auch im Netz. Allerdings ist so eine Ausbildung an der Uni wesentlich effektiver, durch die Hilfestellungen, die der Kunde Student bekommt.
Ich finde es auch gut, dass Du schon Open Source Projekte im Sinn hast. Allerdings wäre ich vorsichtig mit verwaisten Sachen und würde mich fragen, ob es nicht einen Grund gibt, warum sie verweist sind. Kenne cscope angeschaut und hab den Eindruck, dass moderne IDE solche features anbieten. Vielleicht täusch ich mich da.
Schau Dir slbst mal so eine IDE an (Werbung):
http://www.mono-project.com/MonoDevelop
Gibt es für Sarge bei Backports.org
Und dazu ein Einstieg:
http://www.mono-project.com/Monkeyguide
Oder wenn es Java sein soll, ist eclipse auch sehr inspirativ.
Microkernel sind sicher ein spannendes Thema, bei Service Oriented Architecture seh ich Buzzgefahren
Ansonsten viel Erfolg mit dem Lernen...
also ich stimme nicht mit Markus überein, dass man so etwas nicht im Selbsstudium lernen kann. Der Dialog ist wichtig, da stimme ich mit Markus überein. Aber den Dialog gibt es auch im Netz. Allerdings ist so eine Ausbildung an der Uni wesentlich effektiver, durch die Hilfestellungen, die der Kunde Student bekommt.
Ich finde es auch gut, dass Du schon Open Source Projekte im Sinn hast. Allerdings wäre ich vorsichtig mit verwaisten Sachen und würde mich fragen, ob es nicht einen Grund gibt, warum sie verweist sind. Kenne cscope angeschaut und hab den Eindruck, dass moderne IDE solche features anbieten. Vielleicht täusch ich mich da.
Schau Dir slbst mal so eine IDE an (Werbung):
http://www.mono-project.com/MonoDevelop
Gibt es für Sarge bei Backports.org
Und dazu ein Einstieg:
http://www.mono-project.com/Monkeyguide
Oder wenn es Java sein soll, ist eclipse auch sehr inspirativ.
Microkernel sind sicher ein spannendes Thema, bei Service Oriented Architecture seh ich Buzzgefahren

Ansonsten viel Erfolg mit dem Lernen...