Computer sind aus unserem Alltag nicht mehr wegzudenken. In beinahe jedem modernen elektronischen Gerät verrichten Mikrocontroller und Mikroprozessoren häufig unbemerkt ihre Arbeit. Obwohl wir täglich mehrere hundert Male mit Computern, Smartphones und anderen prozessorgesteuerten Geräten interagieren, weiß kaum jemand, was sich intern eigentlich genau abspielt. Was passiert also, wenn wir zum Beispiel auf den Powerknopf eines Computers drücken?
Genau hier werden wir in dieser Veranstaltung ansetzen. Den TeilnehmerInnen wird vermittelt, wie ein Computersystem aufgebaut ist und wie es intern funktioniert. Dies geschieht im Wesentlichen auf zwei verschiedenen Ebenen. Im ersten Teil werden wir uns der Funktionsweise und dem Zusammenspiel der grundlegenden Komponenten eines Computersystems widmen. Dazu untersuchen und programmieren wir erst in Assembler, dann in C einen ATmega 328p, ein weit verbreiteter und günstig erwerbbarer Mikrocontroller auf 8-Bit-Basis. Die Komplexität dieses Systems ist geringer als die eines modernen PCs. Dadurch ist es für Lehrzwecke optimal geeignet und erlaubt es, die wichtigen Konzepte auf unterster Ebene zu verstehen und bis ins Detail nachzuvollziehen. Im zweiten Teil gehen wir auf die Funktionsweise (und aktuellen Probleme) moderner Computersysteme ein und lernen einige aktuelle Konzepte zur Leistungssteigerung kennen.
Art der Veranstaltung: Semesterkurs bestehend aus einer wöchentlichen Vorlesung am Montag 15:30 bis 17:00 s.t. und praktischen Übungen zuhause.
Der Betreuer wird wöchentlich eine freiwillige Übungsstunde in Präsenz für Fragen und Hilfestellungen zu den Hausaufgaben anbieten. Der Termin hierfür wird in der ersten Vorlesung festgelegt. Ansonsten geschieht die Betreuung individuell über Email.
Teilnehmer/innen anderer Fachrichtungen (sowohl Bachelor als auch Master) sind herzlich willkommen (siehe unten für Voraussetzungen)
Flexnow und Benotung: Der regelmäßige Besuch der Vorlesung und der Übungen ist ein notwendiges Kriterium zum Bestehen der Veranstaltung. Üblicherweise gibt es folgende Möglichkeiten die Veranstaltung einzubringen
Wahlbereich: unbenotet
studienbegleitende IT-Ausbildung: benotet
(Die Note ergibt sich zu 100% aus der Benotung des Abschlussprojekts.)
Leistungspunkte: 6
Modulname: M 61.2
Weitere Informationen zum Kurs sowie Anmeldung ohne Exa/Spur-Zugang: maximilian.stefinger@stud.uni-regensburg.de oder fritz.wuensch@ur.de
Interesse an der Thematik wird vorausgesetzt. Erforderliche Vorkenntnisse:
Grundlegende Programmierkenntnisse in einer beliebigen Sprache (Stichworte: Datentypen, Logische Operatoren, Verzweigungen, Schleifen, Rekursionen), z.B. C/C++-Kurs
Grundkenntnisse im Bereich der Elektronik wie sie im Elektronik-Grundkurs vermittelt werden
Den TeilnehmerInnen wird - in Theorie und praktischen Übungen - vermittelt, wie ein Computersystem aufgebaut ist und wie es intern funktioniert. Dies geschieht im ersten Teil mithilfe eines Arduino-Board mit umfangreichem Zubehör.
Im zweiten Teil gehen wir auf die Funktionsweise (und aktuellen Probleme) moderner Computersysteme ein.
Zeichen- und Zahlendarstellung im Computer
Aufbau und Bestandteile eines Mikrocomputersystems
Architektur des Rechners und des Microcontrollers
Maschinenbefehle und Assemblerprogrammierung
Interrupts
Peripheriebausteine und die Kommunikation mit dem Prozessor
Serielle und parallele Schnittstellen
weitere Schnittstellen, Anschluss von Sensoren, Steuerung und Regelung
Speichermedien (Hauptaugenmerk: SRAM, DRAM, FLASH)
Mainboard und Chipset
Interne und externe Peripheriebusse (PCI(E), (S)ATA, USB, FireWire, ...)
Prozessoreigenschaften und Architekturen
Cachesysteme
Memory Management
Performancesteigerung (Pipelining, Multithreading, Superskalarität, ...)