Hardwarenahe Programmierung =========================== Lehrveranstaltung im Wintersemester 2016/17 Hochschule Bochum, Campus Velbert/Heiligenhaus Prof. Dr. rer. nat. Peter Gerwinski Copyright © 2012–2017 Peter Gerwinski **Diese Lehrmaterialien sind freie Software.** Sie dürfen diese gemäß den jeweils angegebenen Lizenzen ([CC-BY-SA 3.0](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/CC-BY-SA-3.0), [GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/GNU-GPL-3), [modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/BSD-MODIFIED)) studieren, kopieren, modifizieren und/oder weitergeben. Für Details siehe [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/README). Vortragsfolien: --------------- * [10.10.2016: Einführung, Einführung in C (bis Schleifen)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161010/hp-20161010.pdf) * [17.10.2016: Einführung in C (Funktionen bis Arrays)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161017/hp-20161017.pdf) * [24.10.2016: Einführung in C (Strings)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161024/hp-20161024.pdf) * [31.10.2016: Einführung in C (ab Strukturen), Bibliotheken einbinden und verwenden](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161031/hp-20161031.pdf) * [07.11.2016: Bibliotheken (Präprozessor, make), Algorithmen (Differentialgleichungen)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161107/hp-20161107.pdf) * [14.11.2016: Algorithmen (Rekursion)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161114/hp-20161114.pdf) * [21.11.2016: Algorithmen (Aufwandsabschätzungen), Hardwarenahe Programmierung (Bit-Operationen, I/O-Ports)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161121/hp-20161121.pdf) * [28.11.2016: Algorithmen (Aufwandsabschätzungen), Hardwarenahe Programmierung (Interrupts)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161128/hp-20161128.pdf) * [05.12.2016: Hardwarenahe Programmierung (volatile-Variable, Byte-Reihenfolge – Endianness)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161205/hp-20161205.pdf) * [12.12.2016: Hardwarenahe Programmierung (Speicherausrichtung – Alignment), Objektorientierte Programmierung (dynamische Speicherverwaltung, Konzepte und Ziele)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161212/hp-20161212.pdf) * [19.12.2016: Hardwarenahe Programmierung (Binärdarstellung von Zahlen), Objektorientierte Programmierung (Unions, GUI)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161219/hp-20161219.pdf) * [02.01.2017: Special: Software und Urheberrecht, Exploits](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170102/hp-20170102.pdf) * [09.01.2017: Objektorientierte Programmierung (virtuelle Methoden, C++), Datenstrukturen (Stack und FIFO)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170109/hp-20170109.pdf) * [16.01.2017: Datenstrukturen (Stack und FIFO, verkettete Listen)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170116/hp-20170116.pdf) * [23.01.2017: Datenstrukturen (verkettete Listen, Bäume)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170123/hp-20170123.pdf) * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/hp-slides-2016ws.pdf) Tafelbilder: ------------ * [07.11.2016: Differentialgleichung „von Hand“ lösen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161107/photo-20161107-125323.jpg) * [09.11.2016: schräger Wurf](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161109/photo-20161109-141233.jpg) * [21.11.2016: Bit-Operationen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161121/photo-20161121-125907.jpg) * [12.12.2016: Termine für Praktika und Klausurtutorien](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161212/photo-20161212-124818.jpg) * [12.12.2016: links: Alignment; rechts: Array von Zeigern auf unterschiedliche Objekte](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161212/photo-20161212-125316.jpg) * [14.12.2016: Binärdarstellung negativer Zahlen (1)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161214/photo-20161214-111912.jpg) * [14.12.2016: Binärdarstellung negativer Zahlen (2)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161214/photo-20161214-112815.jpg) * [14.12.2016: Binärdarstellung negativer Zahlen, Endianness und Alignment](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161214/photo-20161214-115434.jpg) * [19.12.2016: Praktikum, Binärdarstellung negativer Zahlen, Array mit Zeigern auf Objekte](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161219/photo-20161219-124242.jpg) * [02.01.2017: SQL Injection](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170102/photo-20170102-130102.jpg) * [09.01.2017: Virtuelle Methodentabellen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170109/photo-20170109-124857.jpg) * [23.01.2017: Binärer Baum, Klausur-WLAN, Praktikumstermin](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170123/photo-20170123-125804.jpg) * [30.01.2017: Musterlösung zu den Übungen vom 23.1.2017](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170130/photo-20170130-130345.jpg) * [30.01.2017: Erläuterungen zu Übungsaufgabe 4 vom 19.12.2016](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170130/photo-20170130-150616.jpg) Übungsaufgaben: --------------- * [03.10.2016: Hello, world!, Grafik-Bibliotheken](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161003/hp-uebung-20161003.pdf) * [10.10.2016: Multiplikationstabelle, Fibonacci-Zahlen, Schaltjahr ermitteln](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161010/hp-uebung-20161010.pdf) * [17.10.2016: Fehlerhaftes Programm, Hello, world!, Primfaktorzerlegung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161017/hp-uebung-20161017.pdf) * [24.10.2016: ROT13-Verschlüsselung, Programm analysieren, Kalender-Berechnung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161024/hp-uebung-20161024.pdf) * [31.10.2016: Datum-Bibliothek, Fehlerhaftes Programm](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161031/hp-uebung-20161031.pdf) * [07.11.2016: Strings, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161107/hp-uebung-20161107.pdf) * [14.11.2016: Fakultät, Strings, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161114/hp-uebung-20161114.pdf) * [21.11.2016: Zahlensysteme, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161121/hp-uebung-20161121.pdf) * [28.11.2016: Länge von Strings, fehlerhaftes Programm, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161128/hp-uebung-20161128.pdf) * [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161205/hp-uebung-20161205.pdf) * [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161212/hp-uebung-20161212.pdf) * [19.12.2016: Bürgerentscheid, Lokale Variable im Speicher, Blinkende LEDs, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161219/hp-uebung-20161219.pdf) * [09.01.2017: Objektorientierte Programmierung mit dem C-Datentyp _union_, Objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170109/hp-uebung-20170109.pdf) * [16.01.2017: Stack-Operationen, Iterativer Floodfill, Doppelt verkettete Listen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170116/hp-uebung-20170116.pdf) * [23.01.2017: Ternäre Bäume, Aufräumen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170123/hp-uebung-20170123.pdf) Musterlösungen zu den Übungsaufgaben: ------------------------------------- * [10.10.2016: Multiplikationstabelle, Fibonacci-Zahlen, Schaltjahr ermitteln](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161010/hp-musterloesung-20161010.pdf) * [17.10.2016: Fehlerhaftes Programm, Hello, world!, Primfaktorzerlegung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161017/hp-musterloesung-20161017.pdf) * [24.10.2016: ROT13-Verschlüsselung, Programm analysieren, Kalender-Berechnung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161024/hp-musterloesung-20161024.pdf) * [31.10.2016: Datum-Bibliothek, Fehlerhaftes Programm](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161031/hp-musterloesung-20161031.pdf) * [07.11.2016: Strings, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161107/hp-musterloesung-20161107.pdf) * [14.11.2016: Fakultät, Strings, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161114/hp-musterloesung-20161114.pdf) * [21.11.2016: Zahlensysteme, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161121/hp-musterloesung-20161121.pdf) * [28.11.2016: Länge von Strings, fehlerhaftes Programm, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161128/hp-musterloesung-20161128.pdf) * [05.12.2016: Trickprogrammierung, Ausgabe von Hexadezimalzahlen, Thermometer-Baustein an I²C-Bus](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161205/hp-musterloesung-20161205.pdf) * [12.12.2016: Daten im Speicher, Zeigerarithmetik, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161212/hp-musterloesung-20161212.pdf) * [19.12.2016: Bürgerentscheid, Lokale Variable im Speicher, Blinkende LEDs, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161219/hp-musterloesung-20161219.pdf) * [09.01.2017: Objektorientierte Programmierung mit dem C-Datentyp _union, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170109/hp-musterloesung-20170109.pdf) * [16.01.2017: Stack-Operationen, Iterativer Floodfill, Doppelt verkettete Listen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170116/hp-musterloesung-20170116.pdf) * [23.01.2017: Ternäre Bäume, Aufräumen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20170123/hp-musterloesung-20170123.pdf) Praktikumsunterlagen: --------------------- * [Versuch 1: RSA-Verschlüsselung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161017/hp-2016ws-p1.pdf) * [Versuch 2: Basketball-Simulation](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161107/hp-2016ws-p2.pdf) * [Versuch 3: Druckknopfampel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161121/hp-2016ws-p3.pdf) * [Versuch 4: Objektorientiertes Grafik-Programm](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/20161219/hp-2016ws-p4.pdf) Skript: ------- * [Hardwarenahe Programmierung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/script/hp-2016ws.pdf) Original-Materialien einschließlich Beispiel-Programme und LaTeX-Quelltexte: ---------------------------------------------------------------------------- * [common – gemeinsame Dateien für Skript und Vortragsfolien](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws/common) * [script – Skript zur Lehrveranstaltung](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws/script) * [201????? – Vortragsfolien und Beispiele](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws) Low-Level Programming ===================== Course in winter semester 2016–17 Bochum University of Applied Sciences, Campus Velbert/Heiligenhaus Prof. Dr. rer. nat. Peter Gerwinski Copyright © 2012–2017 Peter Gerwinski **These teaching materials are Free Software.** You may study, copy, modify, and/or distribute them according to their respective licences ([CC-BY-SA 3.0](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/CC-BY-SA-3.0), [GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/GNU-GPL-3), [modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/BSD-MODIFIED)). See the file [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/common/README) for details. * [common – common files for lecture notes and slides](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws/common) * [script – lecture notes](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws/script) * [201????? – slides and examples](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws) * [hp-slides-2016ws.pdf – all slides in 1 file](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2016ws/hp-slides-2016ws.pdf)