Computer-Science

Mathematical Foundations of Computer Science

About

  • Module: Mathematical Foundations to Computer Science (CH-233)
  • Semester: Fall 2026
  • Prerequisites: None
  • Instructor: Jürgen Schönwälder
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
  • TA (Group A): Bobokhidze, Nutsa
  • TA (Group B): Hajizada, Leyla
  • TA (Group C): Ali, Muhammad
  • TA (Group D): Saidi, Zineb
  • TA (Group E): Tesfaye, Nahom Tewodros
  • TA (Group F): Ullah, Rehmat
  • TA (Group G): Zeynalli, Mustafa
  • Lecture: Tuesday, 11:15-12:30 (RLH-172)
  • Lecture: Friday, 08:15-09:30 (RLH-172)
  • Tutorial: Friday, 09:45-11:00 (RLH-172)
  • TA Tutorial: Wednesday, 17:00-18:00 (East Hall 4)
  • Dec Exam: TBD
  • Dec Exam Review: TBD
  • Jan Exam: TBD
  • Jan Exam Review: TBD

Content and Educational Aims

The module introduces students to the mathematical foundations of computer science. Students learn to reason logically and clearly. They acquire the skill to formalize arguments and to prove propositions mathematically using elementary logic. Students are also introduced to fundamental concepts of graph theory and elementary graph algorithms.

After establishing the concept of algorithms, the first part covers basic elements of discrete mathematics, leading to Boolean algebra, propositional logic, and predicate logic. Students learn how to use fundamental proof techniques to prove (or disprove) simple propositions. The second part of the module introduces students to basic concepts of algebraic structures like groups, rings, and fields and different structure preserving maps (homomorphisms). Students study how these abstract concepts relate to problems in computer science. The last part of the module covers the basic elements of graph theory and the different representation of graphs. Elementary graph algorithms are introduced that have a wide range of applicability in computer science.

Mathematical Foundations of Computer Science

About

  • Module: Mathematical Foundations to Computer Science (CH-233)
  • Semester: Fall 2025
  • Prerequisites: None
  • Instructor: Jürgen Schönwälder
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
  • TA (Group A): Bhave, Aneesh Archis
  • TA (Group B): Gherasim, Mihnea
  • TA (Group C): Kanapelka, Arseni
  • TA (Group D): Maghri, Ahmed
  • TA (Group E): Mutaeva, Olesia
  • TA (Group F): Tafani, Anja
  • TA (Group G): Treshcheva, Olesia
  • Lecture: Tuesday, 11:15-12:30 (RLH-172)
  • Lecture: Friday, 08:15-09:30 (RLH-172)
  • Tutorial: Friday, 09:45-11:00 (RLH-172)
  • TA Tutorial: Thursday, 17:30-18:30 (WH-8)
  • Dec Exam: Thursday, 2025-12-18, 16:00-18:00 (ICC West Wing, ICC East Wing, IRC Seminar Room II, IRC Seminar Room III)
  • Dec Exam Review: Tuesday, 2026-01-20, 13:00-14:00 (Research I, R.1-53 Lecture Hall)
  • Jan Exam: Friday, 2026-01-30, 16:00-18:00 (ICC West Wing, ICC East Wing)
  • Jan Exam Review: Tuesday, 2026-02-24, 13:00-14:00 (TBD)

Content and Educational Aims

The module introduces students to the mathematical foundations of computer science. Students learn to reason logically and clearly. They acquire the skill to formalize arguments and to prove propositions mathematically using elementary logic. Students are also introduced to fundamental concepts of graph theory and elementary graph algorithms.

After establishing the concept of algorithms, the first part covers basic elements of discrete mathematics, leading to Boolean algebra, propositional logic, and predicate logic. Students learn how to use fundamental proof techniques to prove (or disprove) simple propositions. The second part of the module introduces students to basic concepts of algebraic structures like groups, rings, and fields and different structure preserving maps (homomorphisms). Students study how these abstract concepts relate to problems in computer science. The last part of the module covers the basic elements of graph theory and the different representation of graphs. Elementary graph algorithms are introduced that have a wide range of applicability in computer science.

Mathematical Foundations of Computer Science

About

  • Module: Mathematical Foundations to Computer Science (CH-233)
  • Semester: Fall 2024
  • Prerequisites: None
  • Instructor: Jürgen Schönwälder
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
  • TA (Group A): Babayev, Gazanfar
  • TA (Group B): Borovlev, Petr
  • TA (Group C): Cprljakovic, Bogdan
  • TA (Group D): Mitov, Rumen Valentinov
  • TA (Group E): Nuredini, Kejsi
  • TA (Group F): Paniukhin, Nikita
  • TA (Group G): Valean, Andrei-Gheorghe
  • TA (Group H): Valladares, Zaara
  • Lecture: Tuesday, 11:15-12:30 (RLH-172)
  • Lecture: Friday, 08:15-09:30 (RLH-172)
  • Tutorial: Friday, 09:45-11:00 (RLH-172)
  • TA Tutorial: Wednesday, 10:00-11:00 (West Hall, Seminar Room 2)
  • TA Tutorial: Friday, 19:00-20:00 (Research II, Lecture Hall)
  • Dec Exam: Friday, 2024-12-20, 12:30-14:30 (ICC Eastwing + Conference Hall)
  • Dec Exam Review: Thursday, 2025-01-16, 13:00-14:00 (Research I, R1-120)
  • Dec Exam Review: Monday, 2025-01-20, 15:00-16:00 (Research I, R1-120)
  • Jan Exam: Wednesday, 2025-01-22, 12:30-14:30 (ICC-East Wing)
  • Jan Exam Review: Friday, 2025-02-21, 13:00-14:00 (East Hall, Seminar Room 3)

Content and Educational Aims

The module introduces students to the mathematical foundations of computer science. Students learn to reason logically and clearly. They acquire the skill to formalize arguments and to prove propositions mathematically using elementary logic. Students are also introduced to fundamental concepts of graph theory and elementary graph algorithms.

After establishing the concept of algorithms, the first part covers basic elements of discrete mathematics, leading to Boolean algebra, propositional logic, and predicate logic. Students learn how to use fundamental proof techniques to prove (or disprove) simple propositions. The second part of the module introduces students to basic concepts of algebraic structures like groups, rings, and fields and different structure preserving maps (homomorphisms). Students study how these abstract concepts relate to problems in computer science. The last part of the module covers the basic elements of graph theory and the different representation of graphs. Elementary graph algorithms are introduced that have a wide range of applicability in computer science.

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).

Introduction to Computer Science

About

  • Module: Introduction to Computer Science (CH-232)
  • Semester: Fall 2022
  • Instructor: Jürgen Schönwälder
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
  • TA (Group A): Devkota, Charchit
  • TA (Group B): Güler, Sinem Bilge
  • TA (Group C): Perial, Razvan Andrei
  • TA (Group D): Schuster, Lars Florian
  • TA (Group E): Stefanovska, Tea
  • TA (Group Z): Banjade, Ayam (online students)
  • Class: Tuesday, 11:15-12:30 (RLH 172)
  • Class: Friday, 08:15-09:30 (RLH 172)
  • Class: Friday, 09:45-11:00 (RLH 172)
  • Tutorial H: Wednesday, 20:00-21:00 (East Hall 1)
  • Tutorial Y: Thursday, 20:00-21:00 (online, Teams)
  • 1st Module Exam: Saturday, 2022-12-17, 09:00-11:00, 11:30-13:30 (CLAMV and Lab 3)
  • 2nd Module Exam: Monday, 2023-01-30, 09:00-11:00 (CLAMV and Lab 3)

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).

Introduction to Computer Science

About

  • Module: Introduction to Computer Science (CH-232)
  • Semester: Fall 2021
  • Instructor: Jürgen Schönwälder
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)
  • TA (Group A): Aydin, Ahmed Hamza
  • TA (Group B): Bodaveli, Nikolozi
  • TA (Group C): Panthi, Bivek
  • TA (Group D): Ramos Alves, Julia
  • Class: Tuesday, 11:15-12:30 (SAC Hall 3)
  • Class: Friday, 08:15-09:30 (SAC Hall 3)
  • Class: Friday, 09:45-11:00 (SAC Hall 3)
  • Tutorial: Monday 18:00 to 19:00 (Group A, Ahmed Hamza Aydin, Teams)
  • Tutorial: Tuesday 20:00 to 21:00 (Group D, Julia Ramos Alves, West Hall 6)
  • Tutorial: Wednesday 18:00 to 19:00 (Group C, Bivek Panthi, Teams)
  • Tutorial: Thursday 19:00 to 20:00 (Group B, Nikolozi Bodaveli, West Hall 6)
  • 1st Module Exam: Friday, 2021-12-17, 09:00-11:00 (SCC Halls 3+4)
  • 2nd Module Exam: Friday, 2022-01-28, 08:00-10: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).

Introduction to Computer Science

About

  • Module: Introduction to Computer Science (CH-232)
  • Semester: Fall 2020
  • Instructor: Jürgen Schönwälder
  • TA: Chhetri, Maulik
  • TA: Gjoni, Petri
  • TA: Karki, Aabishkar
  • TA: Paudel, Subigya
  • TA: Pham, Tuan
  • TA: Sota, Henri
  • Class: Tuesday, 11:15-12:30 (ICC East Wing)
  • Class: Friday, 08:15-09:30 (ICC East Wing)
  • Class: Friday, 09:45-11:00 (ICC East Wing)
  • Tutorial: Tuesday, 19:30-21:30 (Group A, Petri)
  • Tutorial: Tuesday, 19:00-21:00 (Group B, Henri)
  • Tutorial: Wednesday, 19:00-21:00 (Group C, Maulik)
  • Tutorial: Monday, 19:00-21:00 (Group D, Subigya)
  • Tutorial: Tuesday, 19:00-21:00 (Group E, Tuan)
  • Tutorial: Wednesday, 20:00-22:00 (Group F, Aabishkar)
  • 1st Module Exam: Friday, 2020-12-18, 09:00-11:00 (SCC Hall 1-3)
  • 2nd Module Exam: Wednesday, 2021-01-27, 17:00-19:00 (ICC East Wing)
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)

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).

Introduction to Computer Science

About

  • Module: Introduction to Computer Science (CH-232)
  • Semester: Fall 2019
  • Instructor: Jürgen Schönwälder
  • TA: Balani, Eglis
  • TA: Blaceri, Romelda
  • TA: Chen, Tianyao
  • TA: Kabadzhov, Ivan
  • TA: Shandro, Jovan
  • Class: Tuesday, 11:15-12:30 (CNLH)
  • Class: Friday, 08:15-09:30 (CNLH)
  • Class: Friday, 09:45-11:00 (CNLH)
  • 1st Module Exam: Saturday 2019-12-14 09:00-11:00 (SCC Hall 3+4)
  • 2nd Module Exam: Saturday 2020-01-25 08:00-10:00 (ICC East Wing)
  • Office Hours: Monday, 11:15-12:30 (Research I, Room 87)

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).

Introduction to Computer Science

About

  • Course: Introduction to Computer Science (CH08-320101)
  • Semester: Fall 2018
  • Instructor: Jürgen Schönwälder
  • TA (Group D): Bayer, Jonas
  • TA (Group E): David, Marco
  • TA (Group B): Huynh, Dung Tri
  • TA (Group C): Mana, Irsida
  • TA (Group A): Pal, Abhik
  • Class: Tuesday, 08:15-09:30 (Lecture Hall Research II)
  • Class: Tuesday, 09:45-11:00 (Lecture Hall Research II)
  • Class: Thursday, 11:15-12:30 (Lecture Hall Research II)
  • Midterm: Tuesday, 2018-10-30, 08:15-09:30 (Campus Center, east wing and west wing)
  • Final: Thursday, 2018-12-20, 16:00-18:00 (SCC Hall 3+4)
  • Office: Monday, 11:15-12:30 (Research I, Room 87)

Content

The course covers the 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.

To develop a theoretical notion of computation, we introduce basic concepts of discrete mathematics with a focus on inductively defined structures. The functional programming language Haskell will be introduced and used as the primary programming language for the course. We cover a basic subset of Haskell that includes types, recursion, tuples, lists, strings, and higher-order functions. Back on the theoretical side, we cover the syntax and semantics of Boolean expressions and we explain how Boolean algebra relates to logic gates and digital circuits. On the technical side, we introduce the representation of basic data types such as numbers, characters, strings and dates as well as the basics of computer architecture and assembly programming. On the algorithmic side, the course introduces the notion of correctness and elementary complexity theory (big-O notation) and we introduce abstract data types.

Introduction to Computer Science

About

  • Course: Introduction to Computer Science (CH08-320101)
  • Semester: Fall 2017
  • Instructor: Jürgen Schönwälder
  • TA: Abreu, Steven
  • TA: Granderath, Malte Aaron
  • TA: Hambasan, Alexandru
  • TA: Maiereanu, Tudor Cristian
  • TA: Shrestha, Mohit
  • TA: Tarigradschi, Mihail
  • Class: Tuesday, 08:15-09:30, Lecture Hall Research II
  • Class: Tuesday, 09:45-11:00, Lecture Hall Research II
  • Class: Thursday, 11:15-12:30, Lecture Hall Research II

Content

The course covers the 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.

To develop a theoretical notion of computation, we introduce basic concepts of discrete mathematics with a focus on inductively defined structures. The functional programming language Haskell will be introduced and used as the primary programming language for the course. We cover a basic subset of Haskell that includes types, recursion, tuples, lists, strings, and higher-order functions. Back on the theoretical side, we cover the syntax and semantics of Boolean expressions and we explain how Boolean algebra relates to logic gates and digital circuits. On the technical side, we introduce the representation of basic data types such as numbers, characters, strings and dates as well as the basics of computer architecture and assembly programming. On the algorithmic side, the course introduces the notion of correctness and elementary complexity theory (big-O notation) and we introduce abstract data types.