You are here

General Information and Communication Technology I (GenICT, 350101)

This course is held jointly by Michael Kohlhase (MK), Herbert Jaeger (HJ), Jürgen Schönwälder (JS) and Peter Baumann (PB).

Class sessions: Tuesday 8:15-9:30 and Thursday 11:15 - 12:30, CS Lecture Hall (Research I)

Course topics: This course gives a broad (and in a few places, also a bit more in-depth) introduction to Computer Science for non-CS students. We want to demonstrate both theoretical foundations of CS as Computer Science, and we want to provide practical knowledge helping students to cope with understanding and handling Computers, electronic documents and data, and the Web. Roughly the first half of the semester is devoted to theoretical foundations and core concepts (Kohlhase and Jaeger), and the second half of the semester to the practical real-world stuff (Schönwälder and Baumann). Throughout the semester, students will be introduced stepwise to one of the main programming languages of today, Python. Planned coverage:

  • Introduction to Information Processing (course notes)
    • Introduction to Programming in general and python as the course language
    • Encoding and computing numbers on the computer
    • Encoding and translating symbolic information (also known as "texts"...)
    • Describing the structure of programs and programming languages (regular expressions, XML)
    • Legal foundations of Intellectual Property (Copyright, etc.)
  • From Symbols to Computing (course notes)
    • Boolean logic (what "bits" are and how they are combined to give "digital computation")
    • Complexity: some computer programs take very long to load or complete, others are fast -- must this be so? (introducing elementary notions from computational complexity)
  • Computer Architecture and Distributed Systems (course notes)
    • Computer components (processor, core, memory, parallel and serial busses)
    • Interpreter / compiler / emulator / virtual machines
    • Program execution (processes), system level view on processes
    • Resource management (memory, cpu) and interprocess communication
    • Introduction to the Internet (IP addresses, domain names, autonomous systems, content caches, ...)
    • Network (in)security (TLS, VPNs, PGP, wifi security, ...)
  • Databases and Web Applications (course notes)
    • Databases: what is a database; tables; the database query language SQL
    • Web services: WWW, http, HTML, Web requests
    • Security: Web, mail, databases

Supporting material:

Grading and exams: The course is taught in four sections. Every section ends with an exam (~45 minutes) covering the content of the ending section. Each exam is worth 20% of the final grade. Together, the four exams determine 80% of the final grade. The remaining 20% can be gained by submitting homeworks. The homeworks in each section will count 5% of the final grade. Homeworks have to be submitted through jgrader.

Schedule (for the lecture; will be filled with substance as the semester evolves)

Sep 2 Introduction; course planning (Kohlhase, Jaeger, Schönwälder, Baumann)
Sep 4 MK: Intro to programming and python
Sep 9 MK: representing and computing with numbers (positional number systems)
Sep 11 MK: encoding characters and strings
Sep 16 MK: computing with strings (regular expressions, grammars, etc.)
Sep 18 Mihnea Iancu (MK away): structured documents & Markup (HTML, CSS)
Sep 23 MK: wrap-up & exam
Sep 25 HJ: from bits to truth values and logical operations (Lecture notes Jaeger 1.1, 1.2)
Sep 30 HJ: Boolean functions and Boolean expressions (Lecture notes Jaeger 1.3) Exercise sheet Jaeger_1
Oct 2 HJ: Some concepts of logic and  (Lecture notes Jaeger 1.4)
Oct 7 HJ: Normal forms of Boolean expressions. Boolean circuits.   (Lecture notes Jaeger 1.5, 1.6, 1.7)  Exercise sheet Jaeger_2
Oct 9 HJ: Reducing logic inference to satisfiability (Lecture notes Jaeger 1.8). Turing machines. (Lecture notes Jaeger section 2, up to (including) page 22 )
Oct 14 HJ: how to measure computing time: Turing machines and big-O notation. (Lecture notes Jaeger section 2, to end)
Oct 16 HJ: wrap-up and exam
Oct 23 JS: computer components (processors, memory, busses)
Oct 28 JS: computer system software (compiler, interpreter, emulator, virtual machines) [exercise sheet gict1-2014-m3-p1]
Oct 30 JS: operating systems (processes, resource management, interprocess communication)
Nov 4 JS: computer networks (Internet, addresses, names, routing, content-delivery networks, local-area networks) [exercise sheet gict1-2014-m3-p2]
Nov 6 JS: network (in)security (TLS, VPNs, PGP, Wifi security)
Nov 11 JS: wrap up and exam
Nov 13 PB: databases (why databases? information modelling; first steps with SQL)
Nov  18 PB: querying databases (more SQL; keys and joins)
Nov  20 PB: more about databases (transactions; how can we make databases fast? Big Data)
Nov  25 PB: Web services (WWW, http, HTML, and more; 3-tier architectures)
Nov  27 PB: Web services (in)security (databases, Web, mail)
Dec  2 PB: wrap-up and exam
Dec  4 wrap-up