Fundamentals of Computer Science (B-KUL-H01B6B)
![](/resources/images/icons/icon-docent.png)
Aims
Foremost this course aims to teach students methods to solve and implement small to middle-large problems in a higher programming language. Emphasis is put on the concepts of problem-solving thinking and programming, rather than the programming language itself. The correct design and implementation of algorithms is an important aspect, but much attention is also paid to general engineering principles for mastering the complexity of software design.
In order to evaluate algorithms, algorithmic time complexity and correctness are important concepts. Students must be able to develop an algorithm, prove its correctness, and be able to make profound statements about its time complexity.
The relationship between software design and the final execution on a computer must be obvious for the student. Understanding this relationship is crucuial in gaining an understanding of the actual design cycle of software in practical situations.
The goals of the course are:
- Students must be able to translate a given problem to a software design;
- Students must udnerstand the basic principles of computer programming;
- Students must be able to prove the correctness of a computer program, and also derive its time complexity;
- Students must know how a computer executes its programs, and what influence this can have on the correctness of programs in general.
Previous knowledge
Basic concepts of mathematical logic, reasoning, proving theorems.
Prior knowledge of a higher programming language is not necessary.
Students will only be able to register for the courses of the Bachelor of Engineering Science if they can present proof of participation in a positioning test. For more information, visit the website.
Order of Enrolment
This course unit is a prerequisite for taking the following course units:
H01O9A : Data Base Systems
H01D8B : Numerical Mathematics
H0H17A : Digital Technology in Architecture
H01P5B : Computer Architecture and Software Systems
H0N65A : Introduction to Databases
Identical courses
This course is identical to the following courses:
G0N28A : Principles of Computer Programming
Is included in these courses of study
Activities
4 ects. Fundamentals of Computer Science: Lecture (B-KUL-H01B6a)
Content
Cf separate course modules for specific content of lectures, exercises and practical sessions.
*
The list below gives an overview of the content of the lectures. The topics are not necessarily taught in this order.
- Introduction: Algorithms and programs; problem analysis, software design and implementation; the problem of complexity. Programs as models of a problem domain. Architecture of a computer.
- Working with objects: Objects, messages, classes, methods, variables, allocation, reference semantics, typification, simple input and output.
- Defining classes. Definition of constructors and methods, formal parameters, instance variables versus class variables, instance methods versus class methods, mutators & inspectors.
- Control structures: selection commands, while loops, for loops.
- Collections: collections of fixed and variable size, iterators.
- Inheritance: Single inheritance, redefinition of methods, polymorphism and dynamic dispatch, abstract types & interfaces.
- Reasoning about programs: Reasoned construction of programs by means of invariants, proofs of correctness, complexity of algorithms.
- Recursion: Recursion by simple examples: factorial function, greatest common divisor, Towers of Hanoi. Divide and conquer strategy for problem solving.
Python is used as a programming language, because this language offers excellent support for "Programming in the Small"
Course material
Textbook; presentation slides; own texts.
Format: more information
Lectures in large group in auditorium.
1.2 ects. Fundamentals of Computer Science: Exercises (B-KUL-H01B7a)
Content
Cf lectures.
Course material
Exercises are distributed via the electronic learning platform.
Format: more information
Students make exercices in a PC room under supervision of teaching assistants.
0.8 ects. Fundamentals of Computer Science: Laboratory Sessions (B-KUL-H01B8a)
Content
Cf. lectures.
Format: more information
Students implement a small software system. The assignment is distributed during the semester, and students work out their solution outside regular contact moments. They must hand in their program before a specified deadline. Timing varries from year to year.
Evaluation
Evaluation: Fundamentals of Computer Science (B-KUL-H21B6b)
Explanation
During the exam, on computer, the course book and a fixed set of documents may be used. These must be clean in the sense that they may not be overloaded with notes, solutions of excercises, additional programs. The course book may be colored and small notes may be added to it.
If the student has not acquired one or more of the goals of the course, the global result can differ from the average of the individual parts.
Dictionary during tests and exams
Students who have problems with the Dutch language may use up to one translational non-technical dictionary in which no additional notes have been made. Students who wish to use the dictionary must report to the ombudsperson in advance taking into account the following deadlines:
- first exam period: 1 December,
- second exam period: May 1,
- third exam period: 15th of July
The student must present his admission to the supervisor before the start of the exam.
Information about retaking exams
Similar to the first exam chance.