Introduction to Computer Science
About
- Module: Introduction to Computer Science (CH-232)
- Semester: Fall 2023
- Prerequisites: None
- Instructor: Jürgen Schönwälder
- Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
- TA (Group A): Aksay, Enes Yusuf
- TA (Group B): Borsos, Matheas-Roland
- TA (Group C): Dobrescu, Ana-Maria
- TA (Group D): Konstantinovikj, Darko
- TA (Group E): Madriaga, Ivanna Judea
- TA (Group F): Shopov, Georgi Krasimirov
- Class: Tuesday, 11:15-12:30 (RLH 172)
- Class: Friday, 08:15-09:30 (RLH 172)
- Class: Friday, 09:45-11:00 (RLH 172)
- General Tutorial: Tuesday, 20:00-21:00 (West Hall 2)
- Haskell Tutorial: Wednesday, 21:00-22:00 (West Hall 2)
- General Tutorial: Thursday, 20:00-21:00 (West Hall 2)
- 1st Module Exam: Wednesday, 2023-12-20 09:00-11:00 (SCC Halls 1-2 and 3-4)
- 2nd Module Exam: Tuesday, 2024-01-23 09:00-11:00 (ICC East Wing)
Content and Educational Aims
The module introduces fundamental concepts and techniques of computer science in a bottom-up manner. Based on clear mathematical foundations (which are developed as needed), the course discusses abstract and concrete notions of computing machines, information, and algorithms, focusing on the question of representation versus meaning in Computer Science.
The module introduces basic concepts of discrete mathematics with a focus on inductively defined structures, to develop a theoretical notion of computation. Students will learn the basics of the functional programming language Haskell because it treats computation as the evaluation of pure and typically inductively defined functions. The module covers a basic subset of Haskell that includes types, recursion, tuples, lists, strings, higher-order functions, and finally monads. Back on the theoretical side, the module covers the syntax and semantics of Boolean expressions and it explains how Boolean algebra relates to logic gates and digital circuits. On the technical side, the course introduces the representation of basic data types such as numbers, characters, and strings as well as the von Neuman computer architecture. On the algorithmic side, the course introduces the notion of correctness and elementary concepts of complexity theory (big O notation).