Main Content

Technical Computer Science (Winter term 2024/2025)

Micro-Controller
Foto: iStock

Lecturer: Prof. Dr. Thorsten Thormählen
Module name: CS 140
Language of lecture: German

Introduction and Motivation

Computer systems are omnipresent in today's professional and private life. Desktop computer, laptop, tablet, mobile phone, washing machine, television, electric toothbrush, vacuum cleaner, etc. - in every household there are numerous devices that contain computers. With the various applications and user interfaces one can easily forget that all these digital computer systems are ultimately based on the simple principle that binary numbers (these are numbers that are represented with zeros and ones) are processed by operations based on Boolean algebra. In a digital computer system you have several electrical circuits, which take over the processing and storing of binary numbers. These circuits are mainly composed of transistors, which can be considered in a simple manner as a miniaturized version of an electrically controlled on/off switch. Complex microelectronic circuits may comprise several 100 million of these very small transistors. Computer systems are capable of running different applications because of their programmability, i.e. the underlying microelectronic circuit behaves outwardly different, depending on which user program is executed. Nowadays, computer systems are typically programmed with high-level languages that make it as simple as possible for a human programmer to implement the desired functionality. Ultimately, these high-level languages must, however, be translated into a device-specific machine language that consists of specific instructions and operands in binary representation. However, often a machine instruction does not directly control the computational units, but executes internally a binary microcode that controls the switches of the computing units.

Qualification objectives

The lecture Technical Computer Science teaches basic knowledge about computer structures and microelectronic circuits. This includes the laws of Boolean algebra, the design and simplification of Boolean circuits, knowledge in the design of sequential circuits as well as knowledge of arithmetic circuits and CMOS transistors. Furthermore, the lecture provides an understanding of the structure and functionality of a central processing unit (CPU), basic skills in machine language programming, and an understanding of different computer architecture concepts. In addition, the course aims at improving the overall ability of the participants to perform scientific work, to solve problems, and to communicate.

Organization

The course consists of a lecture (4 hours per week) and exercises (2 hours per week).
Lecture: Tue 10h15 - 11h45 and Thu 10h15 - 11h45, (H | 04) HS III A3
Exercises: Tue 14h15 - 15h45, (H | 05) HS +5/0010 (HS B)

Course Structure

  1. Introduction and History
  2. Representations of Numbers and Characters
  3. Boolean algebra
  4. Normal Forms
  5. Conversion and minimization
  6. Time behavior and hazards
  7. Logic circuits
  8. Memory
  9. CPU
  10. Machine Language and Assembler
  11. Processor Architectures

Lecture slides

The lecture slides are available as HTML5 websites. It is recommended to use a modern browser (such as Google Chrome, Mozilla Firefox). In Google Chrome, the browser's print function can be used to create a PDF file of the slides.

Currently, not all slides are translated to English (see below). All slides and more details can be found at the German version of this page.

There are two versions of the slides: internal and external. The internal version comprises additional slides that are only available to the students of the University of Marburg. The login will be announced in the lecture.

Teil Kapitel Link Link
1. Introduction and History 1.1 Introduction and Organization
1.2 A Brief History extern intern
2. Representations of Numbers and Characters 2.1 Number Representations extern intern
2.2 Computer Number Formats extern intern
2.3 Character Encoding
3. Boolean Algebra 3.1 Boolean Algebra
3.2 Calculating with Boolean Expressions
3.3 Logic Gates
4. Normal Forms 4.1 Normal Forms
5. Conversion and Minimization 5.1 Conversion to NAND and NOR Circuits
5.2 Minimization with Karnaugh Maps
5.3 Minimization with Quine-McCluskey
6. Time Behavior and Hazards 6.1 Time Behavior and Hazards
7. Logic Circuits 7.1 Regular Logic Circuits
7.2 Arithmetic Circuits
7.3 Sequential Circuits
7.4 State Machines
8. Memory 8.1 Memory
9. CPU 9.1 Microcode-based CPU Simulator
10. Machine Language and Assembler 10.1 x86 Machine Language and Assembler
10.2 Subprograms and Addressing
10.3 FPU, MMX, SSE, x86-64
11. Processor Architectures 11.1 Processor Architectures

Exercise Class

Registration for the exercise class and submission of the assignments is done via thee ILIAS learning platform

Interactive demonstrations

 Several lecture slides contain interactive demonstrations. These are listed here:

1.2 Japanese abacus (Soroban) demo
1.2 Chinese Abacus (Suan Pan) demo
1.2 Napier's Bones demo
2.1 Positional Notation demo
4.1 Normal Forms demo
5.2 Karnaugh Maps demo
5.3 Quine–McCluskey algorithm demo
6.1 Amilosim (A Minimalistic Logic Simulator) demo
9.1 CPU Simulator demo

OnlineClicker.org

During the lectures, short anonymous polls are conducted. Students can participate by opening the website OnlineClicker.org.

OnlineQuestions.org

Of course, questions can be asked at any time. In addition, the tool OnlineQuestions.org is employed, which allows students to submit questions or comments anonymously or to upvote questions of other students.