Fundamentals of Computer Science (B-KUL-H01B6B)

This is a translated version. Original version in Dutch.
6 ECTSDutch64 Second termCannot be taken as part of an examination contract
Holvoet Tom (coordinator) |  Holvoet Tom |  Jacobs Bart |  Vanhoef Mathy
POC Ba I (Sem 1-3) Ingenieurswetenschappen

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.

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.


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

This course is identical to the following courses:
G0N28A : Principles of Computer Programming

Activities

4 ects. Fundamentals of Computer Science: Lecture (B-KUL-H01B6a)

4 ECTSDutchFormat: Lecture30 Second term
POC Ba I (Sem 1-3) Ingenieurswetenschappen

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"

Textbook; presentation slides; own texts.

Lectures in large group in auditorium.

1.2 ects. Fundamentals of Computer Science: Exercises (B-KUL-H01B7a)

1.2 ECTSDutchFormat: Practical20 Second term
POC Ba I (Sem 1-3) Ingenieurswetenschappen

Cf lectures.

Exercises are distributed via the electronic learning platform.

Students make exercices in a PC room under supervision of teaching assistants.

0.8 ects. Fundamentals of Computer Science: Laboratory Sessions (B-KUL-H01B8a)

0.8 ECTSDutchFormat: Assignment14 Second term
POC Ba I (Sem 1-3) Ingenieurswetenschappen

Cf. lectures.

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)

Type : Exam during the examination period
Description of evaluation : Written
Learning material : List of formulas, Course material


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.

Similar to the first exam chance.