Hardwarenahe Programmierung
===========================

Lehrveranstaltung im Wintersemester 2017/18  
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/2017ws/common/CC-BY-SA-3.0),
[GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/GNU-GPL-3),
[modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/BSD-MODIFIED))  
studieren, kopieren, modifizieren und/oder weitergeben.  
Für Details siehe [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/README).

Vortragsfolien:
---------------
 * [09.10.2017: Einführung, Einführung in C (bis Schleifen)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171009/hp-20171009.pdf)
 * [16.10.2017: Ergänzungen zu printf() und scanf(), Seiteneffekte, Funktionen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171016/hp-20171016.pdf)
 * [23.10.2017: Zeiger, Arrays und Strings, Strukturen, Dateien und Fehlerbehandlung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171023/hp-20171023.pdf)
 * [06.11.2017: Bibliotheken, Differentialgleichungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171106/hp-20171106.pdf)
 * [13.11.2017: Parameter des Hauptprogramms, String-Operationen, Präprozessor-Macros, make](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171113/hp-20171113.pdf)
 * [20.11.2017: Hardwarenahe Programmierung: Bit-Operationen, Output-Ports](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171120/hp-20171120.pdf)
 * [27.11.2017: Hardwarenahe Programmierung: Input-Ports, Interrupts, volatile-Variable](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171127/hp-20171127.pdf)
 * [04.12.2017: I/O-Ports, Pull-Up- und Pull-Down-Widerstände, Interrupts, volatile-Variable, Endianness](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171204/hp-20171204.pdf)
 * [11.12.2017: Endianness, Alignment, Differentialgleichungen, Rekursion](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171211/hp-20171211.pdf)
 * [18.12.2017: volatile-Variable (Ergänzung), Aufwandsabschätzungen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171218/hp-20171218.pdf)
 * [08.01.2018: Aufwandsabschätzungen, objektorientierte Programmierung in C](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180108/hp-20180108.pdf)
 * [15.01.2018: Objektorientierte Programmierung in C: unions, virtuelle Methoden, Einführung in C++](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180115/hp-20180115.pdf)
 * [22.01.2018: Datenstrukturen: Stack und FIFO, verkettete Listen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180122/hp-20180122.pdf)
 * [29.01.2018: Datenstrukturen: Bäume](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180129/hp-20180129.pdf)
 * [30.10.2017: Sonderveranstaltung: E-Mail Verschlüsselung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171030/verschluesselung-20171030.pdf)
 * [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/hp-slides-2017ws.pdf)

Übungsaufgaben:
---------------
 * [09.10.2017: Hello-World-Programme, Multiplikationstabelle, Schaltjahr ermitteln](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171009/hp-uebung-20171009.pdf)
 * [16.10.2017: Fibonacci-Zahlen, fehlerhaftes Programm, "Hello, world!"](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171016/hp-uebung-20171016.pdf)
 * [23.10.2017: ROT13-Verschlüsselung, Programm analysieren, Kalender-Berechnung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171023/hp-uebung-20171023.pdf)
 * [06.11.2017: Strings, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171106/hp-uebung-20171106.pdf)
 * [13.11.2017: Datum-Bibliothek, Primzahlen, rotierender Würfel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171113/hp-uebung-20171113.pdf)
 * [20.11.2017: Zahlensysteme, Mikro-Controller, Länge von Strings](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171120/hp-uebung-20171120.pdf)
 * [27.11.2017: Ausgabe von Hexadezimalzahlen, Mikro-Controller](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171127/hp-uebung-20171127.pdf)
 * [04.12.2017: Trickprogrammierung, Thermometer-Baustein an I²C-Bus, XBM-Grafik](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171204/hp-uebung-20171204.pdf)
 * [11.12.2017: Daten im Speicher, Zeigerarithmetik, Text-Grafik-Bibliothek](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171211/hp-uebung-20171211.pdf)
 * [18.12.2017: Fakultät, Strings, Länge von Strings (Neuauflage)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171218/hp-uebung-20171218.pdf)
 * [08.01.2018: Lokale Variable im Speicher, blinkende LEDs, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180108/hp-uebung-20180108.pdf)
 * [15.01.2018: Objektorientierte Programmierung mit dem C-Datentyp _union_, objektorientierte Tier-Datenbank](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180115/hp-uebung-20180115.pdf)
 * [22.01.2018: Stack-Operationen, iterativer Floodfill](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180122/hp-uebung-20180122.pdf)
 * [29.01.2018: Doppelt verkettete Liste, ternärer Baum](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180129/hp-uebung-20180129.pdf)

Tafelbilder:
------------
 * [09.10.2017: gcc für verschiedene Betriebssysteme](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171009/photo-20171009-171328.jpg)
 * [30.10.2017: E-Mail-Verschlüsselung: Zertifizierungsmodelle: Hierarchische Struktur (S/MIME) vs. Web Of Trust (OpenPGP)](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171030/photo-20171030-174900.jpg)
 * [06.11.2017: Fadenpendel: Aufstellung der Differentialgleichung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171106/photo-20171106-170748.jpg)
 * [20.11.2017: Rechnen im Hexadezimalsystem, Bit-Operationen](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171120/photo-20171120-170841.jpg)
 * [27.11.2017: Bitweise und logische Und-Verknüpfung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171127/photo-20171127-170255.jpg)
 * [04.12.2017: Pull-Down- und Pull-Up-Widerstände](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171204/photo-20171204-170812.jpg)
 * [11.12.2017: Abfrage eines Input-Ports mittels bitweiser Und-Verknüpfung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171211/photo-20171211-172508.jpg)
 * [13.12.2017: Schema zur Funktionsweise des Data Direction Registers (DDR) bei ATmega-Mikrocontrollern](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171213/photo-20171213-135353.jpg)

Praktikumsunterlagen:
---------------------
 * [Versuch 1, 11. und 18.10.2017: RSA-Verschlüsselung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171011/hp-2017ws-p1.pdf)
 * [Versuch 2, 8. und 15.11.2017: Basketball-Simulation](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171108/hp-2017ws-p2.pdf)
 * [Versuch 3, 13. und 20.12.2017: Druckknopfampel](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20171213/hp-2017ws-p3.pdf)
 * [Versuch 4, 10. und 17.1.2018: Objektorientiertes Grafik-Programm](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/20180110/hp-2017ws-p4.pdf)

Skript:
-------
 * [Hardwarenahe Programmierung](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/script/hp-2017ws.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/2017ws/common)
 * [script – Skript zur Lehrveranstaltung](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2017ws/script)
 * [201????? – Vortragsfolien und Beispiele](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master)
 * [branch 2016ws – vollständige Lehrmaterialien vom Wintersemester 2016/17](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws)


Low-Level Programming
=====================

Course in winter semester 2017–18  
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/2017ws/common/CC-BY-SA-3.0),
[GNU GPL 3+](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/GNU-GPL-3),
[modified BSD License](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/BSD-MODIFIED)).  
See the file [common/README](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/common/README) for details.

 * [common – common files for lecture notes and slides](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2017ws/common)
 * [script – lecture notes](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2017ws/script)
 * [201????? – slides and examples](https://gitlab.cvh-server.de/pgerwinski/hp/tree/master)
 * [hp-slides-2017ws.pdf – all slides in 1 file](https://gitlab.cvh-server.de/pgerwinski/hp/raw/2017ws/hp-slides-2017ws.pdf)
 * [branch 2016ws – complete teaching materials from winter semester 2016–17](https://gitlab.cvh-server.de/pgerwinski/hp/tree/2016ws)