6 ECTS credits
150 h study time

Offer 1 with catalog number 1015400ANR for all students in the 1st semester at a (A) Bachelor - preliminary level.

Semester
1st semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Taught in
Dutch
Faculty
Faculty of Sciences and Bioengineering Sciences
Department
Computer Science
Educational team
Wim Vranken (course titular)
Activities and contact hours
26 contact hours Lecture
39 contact hours Seminar, Exercises or Practicals
Course Content
CONTENTS:
 
• What is computer science?
In-silico Experiments
Computational processes
Processes and Languages
Programming Languages and Turing Completeness
 
• First steps in Python
The read-eval-print loop as Python interpreter
Errors: Syntax Errors and Runtime Errors
Expressions, values and types
Numbers, strings, operators, calling built-in functions
Statements, variables and assignment
Defining modules and importing modules
Tuples and operations defined on tuples
Plotting graphs using Matplotlib
 
• Functions
Defining and Calling Functions
Anatomy of functions: local variables, optional parameters, blocks
Booleans, operators on booleans, relational operators
If-tests and predicates, nesting if-tests
Case Studies: solving quadratic equations, vector arithmetic, identifying noble gasses
Debugging with the print statement
 
• Recursive Functions
Recursive functions
Recursion on numbers: linear processes, logarithmic processes
Tree recursion on numbers: exponential processes
Profiling and Tracing for recursive functions: the time module
Case study: binary numbers and bin-dec conversions
Big O notation for computational processes
 
• Lists and Iteration using for
Lists and operations defined on lists, list mutation
Nested lists
Lists vs. tuples
List comprehensions
Processing lists using recursion
Processing lists using the for construction
Cast studies: simulating protein expression and drawing the logistic map
 
• Numeric Approximation and Iteration using while
Declarative knowledge vs Operational knowledge
Numeric integration: the rectangle method
Numeric integration: the trapezoidal method
Calculating Square roots using brute-force
Unbounded iteration: the while statement
Calculating Square roots using Newton’s method
Calculating Zeroes of a function
 
• Object-Oriented Programming - Part 1: Objects
Objects, attributes and methods
Build-in objects: complex numbers, strings, lists
Classes
Case Study 1: Numpy for scientific computing
Case Study 2: VPython for 3D scenes
Case Study 3: Conways’s Game of Life
 
• Collective Data Types
Sets
Dictionaries
Files: reading and writing records
Processing files as series of records
 
• Object-oriented Programming - Part 2: Classes
Classes and Encapsulation
Inheritance and Overwriting
Case Study: A Canon Game (Model-View-Controler)
 
• Introduction to Algorithms: Searching and Sorting
The search problem
Linear Search
Binary Search
The sorting problem
Insertion Sort
Selection Sort
Quicksort: naive version and in-place version
Performance of sorting
Theoretical limitation (O(n.long(n)) of comparative sorting
 
• Limits to Computability
Cantor’s diagonalisation argument
The Halting problem
Rice's Theorem
Course material
Handbook (Recommended) : Practical Programming, An Introduction to Computer Science Using Python 3.6, Jennifer Campbell, Paul Gries, Jason Montojo, 3de, The Pragmatic Bookshelf, 9781680502688, 2017
Digital course material (Required) : Oefeningen en taken, K. Pinte, Webstek: http://soft.vub.ac.be/soft/teaching/courses/cs
Additional info
Course text (in Dutch): “Inleiding tot de computerwetenschappen” by W. De Meuter ,V. Jonckers and K. Pinte.
 
Learning Outcomes

Knowledge and understanding

- The student can situate computer science as the study of computational processes and can explain the difference with computer engineering and computer skills.
- The student is able to explain the basic elements, the combination techniques and the abstraction techniques of the Python language.
- The student can explain and apply the algorithms and data structures presented in the course. They can also situate their applicability and scalability.
- The student is aware of the existence of libraries for visualisation and scientific computing.
- The student has a basic insight into how data files are read and written from within executing programs.
 
 

Application of knowledge

- The student is able to write a Python program that meets a number of qualitative requirements for a relatively simple assignment. They have to be capable of executing and testing the program.

- The student can recognise Python's language constructs behind similar constructs in related programming languages. They are capable of discerning the peculiarities of Python syntax when studying an algorithm.

- The student is capable of using libraries for scientific computing.

- The student can read and write a file from within a Python program.

 

Making judgements

- Students can judge the applicability of a given programming technique, data structure or algorithm in a given situation. They can estimate the advantages and disadvantages of their choice.

- For a given problem, the students can judge on whether an application needs to be written from scratch or whether existing libraries can be used.

- Students know that there are limits to computability and can judge whether a computer application can be written for a given problem (or not).

Communication

- Students master the vocabulary required to explain the concepts covered in the course.

- Students can document their own code and can communicate the rationale of their choices within their documentation

Learning skills

- When learning a new programming language, students can relate the Python language constructs covered in the course to related elements of the other programming language. In this way, they can speed up the process of learning new programming languages.

- Students have the skills to evaluate and use existing libraries based on documentation.

Grading

The final grade is composed based on the following categories:
Written Exam determines 30% of the final mark.
Practical Exam determines 60% of the final mark.
PRAC Practical Assignment determines 10% of the final mark.

Within the Written Exam category, the following assignments need to be completed:

  • Theorievragen with a relative weight of 1 which comprises 30% of the final mark.

Within the Practical Exam category, the following assignments need to be completed:

  • Programmeeroefeningen with a relative weight of 1 which comprises 60% of the final mark.

Within the PRAC Practical Assignment category, the following assignments need to be completed:

  • WPO oefeningen with a relative weight of 1 which comprises 10% of the final mark.

Additional info regarding evaluation

The final mark consists of three components:

1. Evaluations of short programming assignments during the practicals, which work towards a final project that is finished during the WPO

2. Theory questions that are answered during the final exam (online, in the VUB computer rooms, with no external internet access allowed).

3. Programming assignments that are solved during the final exam, in the programming environment used during the WPO (online, in the VUB computer rooms, with no external internet access allowed).

Allowed unsatisfactory mark
The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.

Academic context

This offer is part of the following study plans:
Bachelor of Philosophy and Moral Sciences: default (only offered in Dutch)
Bachelor of Physics and Astronomy: Default track (only offered in Dutch)
Bachelor of Chemistry: Default track (only offered in Dutch)
Bachelor of Bioengineering Sciences: Profile Cell and Gene Biotechnology (only offered in Dutch)
Bachelor of Bioengineering Sciences: Profile Chemistry and Bioprocess Technology (only offered in Dutch)
Bachelor of Bioengineering Sciences: Initial track (only offered in Dutch)
Bachelor of Mathematics and Data Science: Standaard traject (only offered in Dutch)