it-swarm.com.de

Welche Bücher sollte ich lesen, um eine Grundausbildung in Informatik zu erhalten?

Ich war schon immer ein weitgehend unabhängiger Lerner und habe mir bei Wikipedia und verschiedenen Büchern angesehen, was ich kann. Ich befürchte jedoch, dass ich meine Selbsterziehung durch versehentliches Auslassen von Themen und Konzepten verzerrt habe. Mein Ziel ist es, mir das Äquivalent eines Bachelor-Abschlusses in Informatik von einer Top-Universität beizubringen (egal welche).

Zu diesem Zweck habe ich einige akademische Lehrbücher gekauft und angefangen zu lesen:

Sowie ein paar Lehrbücher, die ich aus dem Unterricht an einer mittelmäßig besten staatlichen Universität übrig habe:

Meine Fragen sind:

  • Welche Themen werden in dieser Sammlung nicht behandelt?
  • Gibt es Bücher, die strenger oder gründlicher (oder sogar einfacher zu lesen) sind als ein hier aufgeführtes Buch?
  • Gibt es Bücher, die meine Zeit verschwenden?
  • In welcher Reihenfolge soll ich die Bücher lesen?
  • Was lernt ein MIT oder Stanford (oder UCB oder CMU ...) Undergrad, das ich vermissen könnte?

Software Engineering Bücher sind willkommen, aber im Rahmen des Studiums nur bitte. Ich kenne Code Complete und den Pragmatic Programmer, aber ich suche einen theoretischeren Ansatz. Vielen Dank!

35
Kyle Cronin

Die größten zwei Auslassungen, die ich sehe:

Für Betriebssysteme bevorzuge ich den Tanenbaum anstelle des Silberschatzes, aber beide sind gut:

Und über die Reihenfolge würde das von Ihren Interessen abhängen. Es gibt nicht viele Voraussetzungen, Automaten für Compiler sind die offensichtlichsten. Lesen Sie zuerst das Automatenbuch und dann den Drachen.

Ich kenne nicht alle Bücher, die Sie haben, aber die, die ich kenne, sind gut genug, so dass die anderen auch anständig sind. 

Ihnen fehlen auch einige Logik und diskrete Mathematik Bücher.

Und vergessen wir nicht einige Datenbank-Theorie Bücher!

13
Vinko Vrsalovic

Der beste Ansatz, den ich gefunden habe, ist, Ihre Lieblingsuniversität auszuwählen, auf deren Website zu gehen und die Kurse für das Studium zu überprüfen. Viele der Großen haben ihre erforderlichen Lesungen für jeden Kurs veröffentlicht. Die Open Course Ware von MIT ist ein gutes Beispiel.

Dies funktioniert übrigens auch für Nicht-CS-Studiengänge.

12
therealhoff
9
dacracot

Das MIT hat vor einigen Jahren sein "OpenCourseWare" -Programm eingeführt. Sie stellen Bücher/Hausaufgaben/Vorlesungen online und so können Sie dem MIT Curriculum folgen:

http://web.mit.edu/catalogue/degre.engin.ch6.shtml

6
William Leara

Viele Kurse an Top-Universitäten verwenden kein Lehrbuch, da keines der verfügbaren Bücher gut genug ist. (Ich wurde in Princeton ausgebildet und habe 8 Jahre in Harvard unterrichtet.) Wenn jemand ein Buch empfiehlt, fragen Sie, ob das Buch ist wirklich gut oder ob es gerade das Beste ist, das auf dem Gebiet erhältlich ist

Zum Beispiel in Compiler bin ich kein großer Fan des 'Dragon Book'; Ich habe den Ansatz nie gemocht, und die aktuelle Ausgabe ist sehr veraltet. Ich denke, Sie wären besser mit einem Buch wie Michael Scott's Programming Language Pragmatics , das zwar ein wenig Scattershot ist, aber ein schönes Buch zum Lesen ist. (Ich habe nie daraus gelernt, daher kann ich nicht sagen, was die Schüler davon halten.) Ich kenne kein wirklich gutes Buch über den Compilerbau für den Autodidakt, obwohl Sie vielleicht Cooper und Torczon Entwickeln eines Compilers weil er auf dem neuesten Stand ist und von zwei der besten Compileringenieure der Branche geschrieben wird.

4
Norman Ramsey

Ich kann wahrscheinlich nicht die besten Bücher vorschlagen, aber es gibt einige wichtige Themen, die Sie vermissen:

  • Statistiken
  • Lineare Algebra
  • Graphentheorie und Diskrete Mathematik
  • Computergrafik
  • Wissenschaftliches rechnen
  • Computernetzwerke
  • Softwareentwicklung
  • Datenstrukturen

Einige Themen, die möglicherweise als "optional" betrachtet werden, könnten folgende sein:

  • Kryptographie 
  • Bild-/Musterverarbeitung Und Erkennung 
  • Bioinformatik
  • Internet-Computing
  • Klassische Physik
3
MahlerFive

Tut mir leid, Sie können vier Jahre Universität nicht ersetzen, indem Sie ein Buch oder mehrere Bücher lesen, egal wie gut die Bücher sind. Wenn Sie könnten, warum sollte jemand zur Universität gehen?

3
Graeme Perrow

Zuerst würde ich mir keine Sorgen machen. Aber wenn Sie möchten, dass ein Buch einige der abstrakten CS-Ideen lernt, empfehle ich The Turing Omnibus oder Theoretische Einführung in die Programmierung .

Wenn ich mich dafür entscheiden würde, zwei Programmierer einzustellen, und keiner von ihnen viel Erfahrung hatte, aber einer hatte einen CS-Abschluss und der andere nicht, würde ich denjenigen mit dem CS-Abschluss einstellen. Wenn Sie jedoch zwei Programmierer mit mehr als zehn Jahren Erfahrung vergleichen, spielt der Abschluss kaum eine Rolle.

3
John D. Cook

Die Elemente von Computersystemen

Dieses Buch führt Sie von den Grundlagen des Hardwaredesigns bis hin zum Schreiben von Programmen in objektorientierten Sprachen. Mit einem Simulator bauen Sie einen kompletten Computer auf. Dann schreiben Sie einen Assembler, ein Betriebssystem, einen Compiler (für eine objektorientierte Sprache, die für die Ausführung auf einer VM kompiliert wurde) und dann ein Spiel, das diese Sprache verwendet.

Es ist viel Arbeit, aber die Autoren haben die Aufgabe so einfach wie möglich gemacht. Sie müssen hart arbeiten, um dieses durchzuarbeiten, aber es gibt Ihnen eine vollständige Perspektive der Computerprogrammierung.

Sie können einige Beispielkapitel ansehen und mit den Simulatoren hier spielen.

Sehr zu empfehlen! (auch für CS-Absolventen)

3
Gilad Naor

Ich denke, Sie können die meisten anderen Bücher als Referenz verwenden und einfach Programming Pearls in seiner Gesamtheit absorbieren. Das würde Sie besser machen als 90% der Programmierer, die ich je getroffen habe.

2
Ben Hoffstein
  • Diskrete Mathematik I und II (meine private Schule)
  • Physik I (Missouri Most State Schulen)
  • Statistik I
  • Kryptographie (optional, aber mir hat Gefallen)
  • OpenGL in C++ (optional, aber ordentlich)
  • Systemanalyse und Design (Software Engineering aus Sicht der Unternehmen . Die Klasse war so.)

  • Ethik.

  • Vernetzung (vermittelt Netzwerkalgorithmen , Bitmuster, die Mit Netzwerkdaten befassen).

    Es gibt einige Dinge, die sie verstehen müssen erfordern Hilfe; nicht unbedingt ein Professor (damit tun sie das für ihren Lebensunterhalt), aber vielleicht ein Freund, der die Klasse besucht oder das Feld studiert hat.

Bücher zu diesen Themen lesen heißt nicht, dass Sie sie kennen. Mathe für die Mathematik, Kodierung für den Code usw. hilft Ihnen beim Verstehen und zeigt, dass Sie das Thema am Ende kennen.

2
J.J.

Konkrete Mathematik

1
user9282

Konzepte, Techniken und Modelle der Computerprogrammierung scheint den umfassendsten Überblick zu haben, den ich über die verschiedenen Programmierstile und -techniken auf höherer Ebene gesehen habe.

1
Curt J. Sampson

Sie sollten auch ein Buch über allgemeine Datenbanken haben, ohne auf die Besonderheiten von Oracle, MySQL, SQL Server usw. einzugehen.

Ich würde empfehlen: Datenbanksysteme: Das komplette Buch

1
Ryan Guest

Ich weiß nicht, wie es in den USA ist, aber in meinem Land studieren wir diskrete Mathematik und eine Einführung in die Graphentheorie vor formalen Sprachen und Automaten.

Ich sehe auch kein Buch über Computernetze ... Warum probieren Sie nicht Andrew Tanenbaums Computer Networks ?

1
Pablo Marambio

Vor allem anderen lesen Sie Informatik: eine moderne Einführung . Dies gibt Ihnen eine gute Grundlage und einen Überblick über die Themen, die es zu verfolgen gilt.

Einführung in Algorithmen ist sehr gut. Für eine Einführung in die Funktionsprogrammierung empfehle ich die Arbeit mit ML für den Arbeitsprogrammierer

Bereiche, die den Informatiker vom Programmierer unterscheiden: Grundkenntnisse in diskreter Mathematik, ein grundlegendes Verständnis von VLSI und Systemarchitektur, ein Verständnis der Grundlagen der Kryptographie und Sicherheit, ein Verständnis der Berechenbarkeitstheorie, ein Verständnis der Informationstheorie.

1
moonshadow

Dies ist eine ziemlich gute Liste. Die zwei Themen, die ich definitiv zur Mischung hinzufügen würde, sind diskrete Mathematik und Netzwerke. Andere Themen, die für Sie interessant sein könnten, sind Compiler, Computergrafiken und verteilte Betriebssysteme. Es gibt auch coole Teilbereiche der KI, wie Computer Vision und Machine Learning. Und um all dies zu bewältigen, benötigen Sie definitiv lineare Algebra und Wahrscheinlichkeit.

Selbstverständlich können Sie Informatik nicht wirklich durch das Lesen von Büchern machen. Um jedes Thema wirklich zu verstehen, müssen Sie Projekte in diesem Bereich durchführen. Ich würde auch vorschlagen, sich die Open Courseware von MIT anzusehen, in der Professoren Lehrpläne, Vorlesungsunterlagen und Aufgaben posten.

1
Dima

Bücher zur professionellen Softwareentwicklung, in denen die Funktionsweise von Softwareprojekten, unterschiedliche Methoden und Entwurfsmuster erläutert wird, sind hervorragend. Kenntnisse im Bereich Webdesign sind auch in Bezug auf die Beschäftigung sehr nützlich.

Ich verstehe nicht, warum Sie versuchen, dies selbst zu tun. Selbst eine "mittelmäßig beste" Universität kann Ihnen die Fähigkeiten viel besser beibringen, als Sie sich selbst beibringen können. Es geht darum, Leute zu treffen, die Erfahrung in der Computerbranche haben. 

Es geht nicht um die Universität, es geht um die Anstrengung, die Sie einsetzen, die bestimmt, wie gut Sie es tun.

Meine Antwort ist vielleicht nicht hilfreich für Sie, weil ich nicht weiß, wo Sie herkommen. In Schottland, wo ich wohne, durfte ich kostenlos zur Universität gehen. Dies kann für Sie nicht der Fall sein.

0
Scottm

Ich würde Einführung in die Theorie der Berechnung zur Liste hinzufügen

0
hiena

Die "Gang of Four" Design Patterns Buch . Der Design Patterns Kurs, den ich am College belegte, war wahrscheinlich die vorteilhafteste Klasse, die ich je besucht habe.

0
Mark Carpenter

Dateistrukturen: Ein objektorientierter Ansatz mit C++

Viele gute Informationen zu Blockgeräten und Dateistrukturierung, die Sie in keinem der Bücher finden, die Sie aufgelistet haben. Bei Amazon gab es ein paar kritische Rezensionen, weil die Leute seine Codebeispiele nicht mochten, aber der Sinn des Buches besteht darin, die Konzepte zu vermitteln, nicht jedoch Codebeispiele zum Ausschneiden und Einfügen.

Achten Sie auch darauf, ein Buch über Compiler zu erhalten

0
Robert

Sogar ich bin auf derselben Ebene: Informatik studieren in meiner Freizeit nach der Arbeit; Dies sind einige der Bücher, die ich gerade in meinem Regal habe

  1. Anwenden von UML und Mustern - Larman
  2. Einführung in Algorithmen - Cormen
  3. Diskrete Mathematik und ihre Anwendungen - Rosen
  4. Softwareentwicklung
  5. Fortgeschrittene Programmierung in der UNIX-Umgebung

Wird diese Liste weiter aktualisieren, sobald ich sie beendet habe ... :-)

0
rptr87