You are here

General Information and Communication Technology I (GenICT, 350101), Fall 2015

Note: this course webpage is preliminary, created by copying the 2014 course page. The four lecturers are contemplating changes. However, this page should give a fair impression of the course's nature.

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, ...)
  • 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 (will be adjusted to reality as the semester evolves)

Sep 1 (MK) Admin Stuff, Introduction to Information Processing
Sep 3 (MK) no lecture
Sep 8 (MK) Intro to programming and python
Sep 10 (MK) representing and computing with numbers (positional number systems)
Sep 15 (MK) encoding characters and strings
Sep 17 (MK) computing with strings (regular expressions, grammars, etc.)
Sep 22 (MK) structured documents & Markup (HTML, CSS)
Sep 24 (MK) module final exam
Sep 29 From Symbols to Computing (HJ): Introduction. Elementary Boolean functions
Oct 1 (HJ) Boolean expressions. Interpretations. Exercise sheet Jaeger-1
Oct 6 (HJ) Satisfiability. Conjunctive normal form. Exercise sheet Jaeger-2
Oct 8 (HJ) From satisfiability to artificial intelligence. Landau "big-O" notation.
Oct 13 (HJ) Turing machines. Measuring computer runtime.
Oct 15 (HJ) module final exam
Oct 22 Databases and Web Applications (PB)
Oct 27 (PB)
Oct 29 (PB)
Nov 3 (PB)
Nov 5 (PB)
Nov 10 (PB)
Nov 12 (PB)
Nov  17 (JS) boolean functions, logic circuits, ripple carry adder
Nov  19 (JS) von neumann computer architecture, simple central processing unit, machine language [assignment #1]
Nov  24 (JS) higher level programming languages, compilation vs. interpretation, virtual machines
Nov  26 (JS) abstractions provided by operating system, communication [assignment #2]
Dec  1 (JS) Internet, distributed systems
Dec  3 (JS) module final exam