Winter Semester 2023/2024

Summary

This class is a first introduction to Computer Science.

Supplementary Reading

Grading

  • Weekly exercise assignments are not to be turned in and graded in this class. However, you are strongly encouraged to work on them before they are discussed in the exercise session on Wednesday
  • The grade for this class is determined by one final exam
  • There will be a “mock exam” 3-4 weeks before the final exam. Passing the mock exam will add a grade bonus of 1/3 of a grade step to your final grade. Note that the pass/fail decision is not affected by the bonus, and the top grade can be achieved without the bonus.

Topics

Oct 18, 2023

Introduction, Boolean algebra (see notes, Wikipedia article on Boolean algebra)

Oct 24, 2023

Boolean algebra (ctd.), binary logic and logic gates (see notes)

Oct 25, 2023

Discussion of Exercise Sheet 1 - solutions; positional number systems (begin, see notes)

Oct 31, 2023

Discussion of Exercise Sheet 2 - solutions; positional number systems (ctd., see notes)

Nov 7, 2023

Integer representations, two’s complement (see notes); floating point arithmetic (notes, see the floating-point converter for a nice illustration of the bit format; more background can be found in the Wikipedia article on floating point arithmetic and, far more advanced, the paper by Goldberg titled What Every Computer Scientist Should Know About Floating-Point Arithmetic)

Nov 8, 2023:

Discussion of Exercise Sheet 3 - solutions; floating point arithmetic (ctd.)

Nov 14, 2023:

Mitigation of floating point issues; character encodings (start): ASCII (see notes)

Nov 15, 2023:

Discussion of Exercise Sheet 4 - solutions; character strings; from ASCII to Unicode (for background reading, see Wikipedia article on Unicode, discussion of C vs. Pascal strings on Stack Overflow)

Nov 21, 2023:

No class, please watch this short video on UTF-8, and this introduction to finite state machines

Nov 22, 2023:

Discussion of Exercise Sheet 5; finite state machines (begin, see notes, slides from Uni Tübingen)

Nov 28, 2023:

Finite state machines (ctd.)

Nov 29, 2023:

Discussion of Exercise Sheet 6; regular expressions (Regular expressions and FSMs from Isaac Computer Science; further background reading: Regular Expression Matching Can Be Simple And Fast); Conversion from non-deterministic to deterministic FSMs; conversion from regular expressions to FSMs and back

Dec 5, 2023:

Beyond regular languages (notes; for background reading, see Chomsky hierarchy, Turing machine and a nice elementary discussion with a bit more details than covered in the book by Forouzan, Chapter 17.

Dec 6, 2023:

Discussion of Exercise Sheet 7; quick overview on computer architectures, for background reading see Moore’s law, (breakdown of) Dennard scaling. For more background on instruction set architectures, please watch the video from the 2017 Turing award lecture and/or read the edited transcript.

Dec 12, 2023:

Operating systems (begin): Memory management, process scheduling, concurrency (notes; Forouzan, Chapter 7)

Dec 13, 2023:

Dining philosophers problem (see Wikipedia; for background reading, see the original Chandy/Misra paper, the Dijkstra/Tannenbaum solution - not covered in class - can be found in more readable pseudocode here)

Dec 19, 2023:

File systems: mounting, soft links vs. hard links, network file systems (brief mention), RAID (see class notes)

Dec 20, 2023:

Discussion of Exercise Sheet 8; file systems (ctd.)

Jan 9, 2024:

Error detection and correction: Parity, Checksums, Hamming codes (see class notes; also see this online Hamming code calculator; background video on cyclic checksums which explains the concept in more detail than covered in class)

Jan 10, 2024:

Discussion of Exercise Sheet 9; error detection and correction (ctd.)

Jan 16, 2024:
Error detection and correction (ctd.)
Jan 17, 2024:

Discussion of Exercise Sheet 10; Computer networks (For background reading, see Forouzan, Chapter 6 or this slide stack from FRA-UAS)

Jan 23, 2024:

Routing algorithms: link state routing (see class notes)

Jan 24, 2024:

Mock Exam

Jan 30, 2024:

Discussion of mock exam; solutions

Jan 31, 2024:

Routing algorithms ctd.: distance vector routing; Introduction to relational databases: motivation, relations, tuples, attributes, domains (see, e.g., Lecture 1 from this course)

Feb 6, 2024:

Relational algebra and simple SQL queries (see, e.g., Lecture 2 from this course or Lecture 18 from this course); for example databases for use with Libreoffice Base, see here

Feb 7, 2024:

Discussion of Exercise Sheet 11; further practice problems for the final exam