Introduction to Computer Science (Fall 2017)  
Course:  Introduction to Computer Science (CH08320101)  
Instructor:  Jürgen Schönwälder  
TA:  Steven Abreu, Malte Aaron Granderath, Alexandru Hambasan, Tudor Cristian Maiereanu, Mohit Shrestha, Mihail Tarigradschi  
Lectures: 


Start:  September 5, 2017  
Contents: 
The course covers the fundamental concepts and techniques of computer science in a bottomup 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 higherorder 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 (bigO notation) and we introduce abstract data types. 

Course Materials:  
Books: 


Links: 


Schedule: 


Tutorials: 


Groups: 


Dates: 


Grading: 
The final grade is made up of the final exam (30 %), quizzes (30 %), the midterm exam (20%) and homework assignments (20 %). It is required to submit the solution for homeworks assignments electronically. Late submissions will not be accepted. Homeworks may need to be defended in an oral interview. Any programs which have to be written will be evaluated based on the following criteria:
Source code must be accompanied with a README providing an overview of the source files and giving instructions how to build the programs. A suitable Makefile is required if the build process involves more than a single source file. For any questions stated on assignment sheets, quiz sheets, exam sheets or during makeups, we by default expect a reasoning for the answer given, unless explicitely stated otherwise. 