Skript/Buch/Tutorial Algorithmen und Datenstrukturen?
max-joseph kraus
- programmiertechnik
Hallo,
ich studiere zur Zeit den Aufbaustudiengang Informationsmanagement in der Medizin.
Für das Fach Algorithmen und Datenstrukturen suche ich dirngend (!) nach einem Buch oder Skript, daß mir in einfacher und verständlicherweise (ich bin Arzt, kein Informatiker) die Grundlagen zu Selection-, Insertion und Bubble-Sort, Arrays, Records, Files und Sets, Sortierten Linearen Listen, Stacks, Queues, Rekursiven Prozeduren, Backtracking, Divide et Impera und Quicksort näherbringt. Und das ganze möglichst noch in Java!
Ich möchte die Prinzipien verstehen, die hinter diesen ganzen Begriffen stecken und nicht so sehr im Detail die Implementierung.
Danke in jedem Fall
Max
Hallo Max,
durfte mich letztes Semester auch mit dem Thema rumschlagen. Literaturmäßig wurde uns das folgende Buch (ca. EUR 50) ans Herz gelegt:
Ottmann, Thomas (+ Peter Widmayer)
Algoithmen und Datenstrukturen
Spektrum, Akad. Verlag, 1996
ISBN 3-8274-0110-0
Einige interessante Links: http://www-info1.informatik.uni-wuerzburg.de/de/lehre/2001_ws_2002/pi1/
V.a. die Visualisierung per (Java-)Programm DNS der Uni Marburg ist Recht hilfreich für den Einstieg und Durchblick.
Grüße aus Würzburg
Julian
Hi Max,
Ich möchte die Prinzipien verstehen, die hinter
diesen ganzen Begriffen stecken und nicht so sehr
im Detail die Implementierung.
genau das ist aber Informatik (nicht Programmierung).
Deshalb (und weil Dich ja die Algorithmen interessieren, nicht die Syntax) wäre es m. E. aber auch nicht so entscheidend, ob Du Java als Referenzsprache hast oder beispielsweise das gute alte "Algorithmen und Datenstrukturen" von Niklaus Wirth, dem Erfinder von Pascal und Modula.
In jedem Fall: Das Thema ist grundlegend für viele andere Bereiche - beispielsweise wirst Du _nach_ dem Lesen eines solchen Buches Datenbanken, Suchmaschinen etc. mit ganz anderen Augen sehen als vorher.
Aber das ist kein Einsteigerstoff (ich habe das im 3. Semester Informatik gelernt) ... Grundkenntnisse über Algorithmen wirst Du schon mitbringen müssen, und es wäre auch nicht verkehrt, wenn Du den Begriff "Komplexitätstheorie" zumindest schon mal gehört hättest.
Viele Grüße
Michael
..."Algorithmen und Datenstrukturen" von Niklaus Wirth, dem Erfinder von Pascal und Modula.
»»»» habe ich schon verschiedenes drüber gelesen. Ist das Buch wirklich (so) gut?
In jedem Fall: Das Thema ist grundlegend für viele andere Bereiche - beispielsweise wirst Du _nach_ dem Lesen eines solchen Buches Datenbanken, Suchmaschinen etc. mit ganz anderen Augen sehen als vorher.
»»»» Das hoffe ich und es interessiert mich auch tatsächlich.
Aber das ist kein Einsteigerstoff (ich habe das im 3. Semester Informatik gelernt) ... Grundkenntnisse über Algorithmen wirst Du schon mitbringen müssen, und es wäre auch nicht verkehrt, wenn Du den Begriff "Komplexitätstheorie" zumindest schon mal gehört hättest.
»»»» Habe mich gerade durch Theoretische Informatik durchgewühlt. D.h. ich kann mir jetzt zumindest was vorstellen unter P-NP, kontextsensitiven Sprachen, Turing-Automaten, Halteproblem etc.
Leider aber nur auf einem ziemlich oberflächlichen Level. Der Aufbaustudiengang dauert nur 1 Jahr, viel länger habe ich auch nicht Zeit, das Medizinstudium war schon lang genug.
Trotzdem, ich möchte eben so gut es geht die Grundlagen und Prinzipien verstehen, die hinter dem ganzen stecken. Welche Sprache ist mir letztlich egal, ich lerne eben gerade Java und da würde sich das anbieten.
Du empfiehlst Wirth?
Danke
Max
Hi,
habe ich schon verschiedenes drüber gelesen.
Ist das Buch wirklich (so) gut?
Ich finde es gut. Ich habe allerdings auch Pascal als erste Programmiersprache gelernt - und ich weiß nicht, wie gut modernere Bücher zu diesem Thema sind.
Der Stoff ist allerdings sicher nicht grundsätzlich veraltet; es könnten höchstens ein paar neuere Verfahren fehlen, beispielsweise dürfte das Lempel-Ziv-Verfahren noch nicht so arg alt sein. (Das Wirth-Buch ist aus den 70ern, im Original.)
Was ich an Wirth mag, ist, daß er Sprachen entwickelt hat, die ganz gezielt auf möglichst gute Lernbarkeit optimiert waren. Den wirtschaftlichen Durchbruch haben sie dann überwiegend nicht geschafft (Pascal wurde erst ab dem Modul-Konzept benutzbar, das aber wohl von Borland stammt, nicht von Wirth selbst), weil Wirth auf Software Engineering nicht so viel Wert gelegt hat wie darauf, den Benutzern die Prinzipien beizubringen.
Insofern sind Wirth'sche Bücher eben gerade zum Algorithmen lernen sinnvoll - würdest Du Dein Wissen sofort in Java anwenden wollen, dann wäre Pascal für Dich ggf. zusätzlicher Ballast. Deine Themenliste finde ich auf jeden Fall sinnvoll - Du kannst ja mal ins Inhaltsverzeichnis der entsprechenden Bücher schauen.
es wäre auch nicht verkehrt, wenn Du den Begriff
"Komplexitätstheorie" zumindest schon mal gehört
hättest.
Habe mich gerade durch Theoretische Informatik
durchgewühlt. D.h. ich kann mir jetzt zumindest
was vorstellen unter P-NP, kontextsensitiven
Sprachen, Turing-Automaten, Halteproblem etc.
Recht so. (Ich habe es auch so herum gelernt.)
Leider aber nur auf einem ziemlich oberflächlichen Level.
Wenn Dir 'polynomiell' und 'exponentiell' in diesem Kontext etwas sagt, ist das schon fast genug.
Viele Grüße
Michael