Deep programming

All about the principles behind programming and process control

Deep Programming

The minor Deep Programming elaborates on important principles, different paradigms and modern developments in computer programming. Systems Programming and Equational Programming are advanced courses on programming in the imperative language C and the functional language Haskell. Compiler Construction provides in-depth knowledge on building compilers for translating source code from a high-level to a lower-level programming language. Secure Programming focuses on cryptography in software development. Concurrency & Multithreading teaches foundations and programming principles for multicore computing. This minor aims to turn students into highly skilled programmers and is an excellent preparation for entering a Master program in Computer Science.

Secure Programming
Through a series of practical assignments the students are called to develop programs that incorporate useful features for security purposes. The students have the chance to become familiar with APIs (OpenSSL) for cryptographic operations, such as symmetric/asymmetric encryption, cryptographic hashing, cryptographic protocols, digital certificates, encrypted sockets, and SSL/TLS.
Deep understanding of core cryptography is not needed. Basic concepts of cryptography are introduced and refreshed in the course. The focus is mostly on using cryptographic elements for software development.

Systems Programming
The course is a combination of lectures and lab assignments.
During the course, the student is taught how to program in C, use POSIX APIs for process control and networking, understand memory management, use low-level debugging and verification tools, and use performance
profiling tools.

Compiler Construction
This course gives an introduction to the internals of modern compilers and allows students to gather practical, hands-on experience on building compiler components.

Concurrency & Multithreading

This course provides a comprehensive presentation of the foundations and programming principles for multicore computing devices. Learning objectives are: fundamental insight into multicore computing; algorithms for multicore computing; analyzing such algorithms; concurrent datastructures; multicore programming. 

Equational Programming
To obtain basic knowledge of functional programming (using Haskell) and its foundations via lambda-calculus and equational reasoning. 

More information on the courses

This minor is accessible to third year bachelor students Computer Science and related bachelors.
VU students can find information about enlisting on VUnet. If you are not a VU student, you can get the information on application here.
For further questions on the contents of this minor you can contact the programme coordinator W.J. Fokkink at

Samenvatting Deep Programming




1 semester (30 EC)


1 September


This minor is accessable to third year bachelor students Computer Science and related bachelors.


Informatica, Wiskunde en Bedrijf