Grundlagen der Computerarchitektur und -programmierung

Aug 14, 2024

Vorlesungsnotizen: Verstehen, wie Computer funktionieren

Grundlagen von Computern

  • CPU (Central Processing Unit):

    • Aus Silizium mit Milliarden von Transistoren, die als Schalter fungieren (An/Aus-Zustände: 1 & 0).
    • Bit: Wert eines einzelnen Transistorschalters.
    • Byte: Gruppe von 8 Bits, kann 256 verschiedene Kombinationen haben.
  • Binärsystem:

    • Binär ist ein Zahlensystem zur Basis 2, das Potenzen von 2 verwendet.
    • Hexadezimal ist ein lesbares Format als Binär und verwendet die Ziffern 0-9 und Buchstaben A-F.

Logikgatter und Berechnungen

  • Logikgatter:

    • Aus Transistoren hergestellt, führen Berechnungen in der Booleschen Algebra durch.
  • Zeichencodierung:

    • ASCII weist Zeichen binäre Zahlen zu, um für Menschen lesbare Anzeigen zu schaffen.

Computerumgebung

  • Betriebssystem-Kerne:

    • Verwalten Hardware und Anwendungen, beinhalten Gerätetreiber.
  • RAM (Random Access Memory):

    • Temporärer Speicher für Daten und Befehle, während "Maschinenzyklen" (holen, dekodieren, ausführen, speichern) vom CPU abgerufen.
  • Taktgeschwindigkeit:

    • Gemessen in Gigahertz, zeigt die Geschwindigkeit der CPU an.
    • Übertakten kann die Leistung verbessern, birgt jedoch das Risiko der Überhitzung.
  • Mehrkern-Prozessoren:

    • Mehrere Kerne führen Anweisungen parallel aus; jeder Kern kann mehrere Threads verarbeiten.

Programmiersprachen und Codeausführung

  • Maschinencode:

    • Binäre Anweisungen für die CPU.
  • Programmiersprachen:

    • Interpreter (z.B. Python): Führt Code zeilenweise aus.
    • Compiler (z.B. C, Go): Konvertiert Code in Maschinencode vor der Ausführung.
  • Grundlegende Programmierkonstrukte:

    • Variablen und Datentypen: Ganzzahlen, Gleitkommazahlen, Zeichenfolgen.
    • Pointer und Speicher: Speicheradressen, Zeigerarithmetik.
    • Speicherverwaltung: Manuell (z.B. C) vs. Garbage Collection (z.B. Python).

Datenstrukturen

  • Arrays: Feste Größe, fortlaufender Speicherplatz.
  • Verkettete Listen: Dynamisch, Knoten mit Zeigern.
  • Stapel und Warteschlangen: LIFO- und FIFO-Datenmanagement.
  • Hash-Maps: Schlüssel-Wert-Paare mit potenziellen Kollisionen.
  • Graphen und Bäume: Knoten verbunden durch Kanten, mit speziellen Strukturen (z.B. binäre Bäume).

Algorithmen und Komplexität

  • Funktionen und Rekursion: Algorithmen als Schritt-für-Schritt-Anleitungen.
  • Big O Notation: Misst Zeit- und Raumkomplexität.
  • Suchalgorithmen: Binäre Suche, Divide-and-Conquer-Strategien.

Programmierparadigmen

  • Deklarativ vs. Imperativ: Verschiedene Ansätze beim Codieren.
  • Objektorientierte Programmierung: Klassen, Objekte, Vererbung und Polymorphismus.

Maschinelles Lernen

  • Überblick: Verwendung von Daten zur Trainierung von Algorithmen für Aufgaben wie Bilderkennung.
  • Modelltraining und Bewertung: Verwendung von Trainings- und Testdaten zur Verfeinerung von Modellen.

Internet und Web

  • Internet-Grundlagen: Netzwerk verbundener Computer unter Verwendung von IP-Adressen und TCP/IP.
  • World Wide Web: Zugegriffen über Browser unter Verwendung von HTTP für den Datenaustausch.
  • Datenbanken: Relationale Datenbanken mit SQL für die Datenmanipulation.

Sicherheit

  • SQL-Injection: Ein häufiger Angriff auf Datenbanken durch Manipulation von SQL-Anfragen.

Lernen und Bildung

  • Interaktives Lernen: Plattformen wie Brilliant bieten interaktive Lektionen, um das Verständnis komplexer Themen zu verbessern.