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.

Students must choose five of the following six constrained-choice courses for a total of 30 EC:

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.

Advanced Network Programming
The course covers recent advancements in networking technologies in general-purpose computing. It focuses on two main themes:
End-host networking and network infrastructure. For the practical assignment, students will have to design, implement, and benchmark a distributed key-value using RDMA networking technology on the DAS-5 cluster.

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 data structures; multicore programming. 

Equational Programming
This course provides students with basic knowledge of functional programming (using Haskell) and its foundations via lambda-calculus and equational reasoning. 

Project Autonomous Driving*
Project Autonomous Driving is a course that builds on the course Pervasive computing. Notice that Pervasive Computing is therefore a prerequisite for this course. The main goal is to build and program the agent for a microcontroller‐based autonomous car. At the end of the project, the students participate in an international competition organized yearly by NXP.

*Only a maximum of 20 students can participate in this course. See study guide for more details about the selection procedure.

More information on the courses

This minor is accessible to third-year Computer Science, Artificial Intelligence and Information Sciences bachelor students of VU Amsterdam.
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 Atze van der Ploeg (a.j.vander.ploeg@vu.nl).

Samenvatting Deep Programming

Taal

Engels

Duur

1 semester (30 EC)

StartDatum

1 September

Toelatingseisen

This minor is accessible to third-year Computer Science, Artificial Intelligence and Information Sciences bachelor students of VU Amsterdam.

Interessegebied

Informatica, Wiskunde en Bedrijf

Faculteit

Bètawetenschappen

;