1.1 1.2 1.3 1.4 2.1 2.2 2.3 2.4

Python programming 1&3

Python is a programming language that is relatively easy to use for beginners, but commonly used by experts as well. It is a general purpose language, meaning it can be used to create many types of computer programs. It is often used for quickly automating tasks, data analysis, artificial intelligence and for creating web applications. In this module, we'll learn the basics of imperative programming using Python.

Learning goals:

  • Declare and assignment variables.
  • Output text and read user input.
  • Branch using if, elif and else.
  • Use loops.
  • Use comments and whitespace to improve readability.
  • Define and use functions that take arguments and return a value.
  • Give variables and functions concise but descriptive names.
  • Convert other types to string, concatenate strings and take substrings.
  • Create, search, modify and iterate lists.
  • Find and solve bugs in a program using a debugger.
  • Use dictionaries to model relations.
  • Read and write files.
  • Use modules to split a program into logical parts.
  • Gracefully handle errors by throwing and catching exceptions.
Welcome ➤ Linux

Introduction to Python

Implement your first interactive application.

Loops

Implement your first loopy application.

Functions & string manipulation

Define and use functions that take arguments and return a value. Convert other types to string, concatenate strings and take substrings. Give variables and functions concise but descriptive names.

pair
Lists

Implement your first interactive application.

Debugging & exceptions

Use a debugger to find bugs in your code faster.

Dictionaries

Use dictionaries to model relations.

Working with files

Read and write files.

Modules

Use modules to split a program into logical parts.

Practice exam

Implement a well-known board game as a terminal application.

5 ects
Exam

Implement a well-known board game as a terminal application.

Static web 1&3

At its core, the world wide web consists of a collection of documents that link to each other. The documents are written using HTML and styled using CSS. Both are languages intended to be understood by computers, but are not programming languages. We will learn these languages to be able to create decent-looking web pages. Later on, we'll build on this knowledge to create web applications.

Learning goals:

  • Write valid and semantic HTML.
  • Apply styling to a site using plain CSS.
  • Apply basic graphical design principles for fonts, colors, spacing and alignment.
  • Create web sites that look and work well on any screen size.
  • Use icons and fonts.
  • Construct HTML forms to collect user input.
Welcome ➤ Linux

HTML

Write valid and semantic HTML.

2 days
pair
CSS basics

Apply styling to a site using plain CSS.

Graphics design basics

Apply basic graphical design principles for fonts, colors, spacing and alignment.

Web forms, fonts & icons

Construct HTML forms to collect user input. Use icons and fonts. Apply basic graphical design principles for fonts, colors, spacing and alignment.

2 days
pair
Responsive layouts

Create web sites that look and work well on any screen size. Apply styling to a site using plain CSS. Write valid and semantic HTML.

Advanced CSS

Pseudo classes, transitions, animations, opacity, shadows, gradients and background images.

Practice exam

Based on a description, create a decent-looking responsive static web site.

5 ects
Exam

Based on a description, create a decent-looking responsive static web site.

SQL databases

Applications usually work on (large amounts of) information. Such information is often stored in a database that is controlled by a database management system. The system we'll be working with is PostgreSQL. Like other well-known database systems (such as Oracle, MySQL and Microsoft SQL Server) one can interact with it using the SQL computer language in order to store and retrieve data. We will be learning how to represent real-world objects as an SQL database, and how to efficiently generate all kinds of useful reports from this data.

Learning goals:

  • Use SQL select queries to read, search, write, update and delete records.
  • Write SQL queries involving joins.
  • Describe real-world objects using Entity Relationship Diagrams.
  • Use GROUP BY and aggregate functions to calculate statistics.
  • Use subqueries.
  • Create normalized database tables based on an Entity Relationship Diagram.
  • Use indexes to enhance query performance.
  • Use foreign keys to guarantee data consistency.
  • Use views to simplify complicated database queries.
Welcome ➤ Linux

Queries

Use SQL select queries to read, search, write, update and delete records.

Join the fun

Write SQL queries involving joins.

Aggregate functions

Use GROUP BY and aggregate functions to calculate statistics.

pair
Modifying data and subqueries

Use subqueries. Use SQL select queries to read, search, write, update and delete records.

Data modeling

Describe real-world objects using Entity Relationship Diagrams. Use foreign keys to guarantee data consistency.

Schemas

Create normalized database tables based on an Entity Relationship Diagram. Use foreign keys to guarantee data consistency.

pair
Indexes & views

Use indexes to enhance query performance. Use views to simplify complicated database queries.

Practice exam

Based on a description, create a schema and write a series of well-performing queries.

5 ects
Exam

Based on a description, create a schema and write a series of well-performing queries.

Object-Oriented Programming

Object-Oriented Programming (OOP) is a way of programming using objects than contain data as well as code. This can make it easier to organize larger computer programs. We'll learn how to apply the various OOP concepts in Python.

Learning goals:

  • Create and use simple classes with a constructor, methods and instance variables.
  • Create inheritance hierarchies to model real-world objects.
  • Use static methods and class variables.
  • Utilize third-party libraries.
  • Create well-described interfaces that hide underlying details.
  • Decompose a larger program into logical parts.
  • Effectively use a documentation generator to document a public interface.
  • Use refactoring to improve code quality.
  • Implement design based on class diagrams.
Python ➤ Exam

Classes

Classes, objects, attributes and methods.

Attribute access

Private attributes and uniform access.

Inheritance

Create inheritance hierarchies to model real-world objects.

Class diagrams

Implement design based on class diagrams.

2 days
pair
Static & abstract classes

Tic Tac Toe Pro, OOP-style!

Documentation & OOP libraries

Write the documentation for an OOP library and extend it.

2 days
Practice exam

Implement a library and two OOP applications that use it.

5 ects
2 days
Exam

Implement a library and two OOP applications that use it.

Dynamic web 2&4

In period 1.1 we learned how to create a static (non-interactive) web page. In this module, we'll learn how to add interactivity by adding a dynamic backend consisting of Python, the Flask framework and an SQL database. We'll also learn about the use of a test plan, to make sure your dynamic web site does what it's supposed to do.

Learning goals:

  • Create web apps using Flask and Jinja2.
  • Create Python programs that fetch and modify data in a database.
  • Use an Object Relation Mapper.
  • Implement user authentication and authorization following best practices.
  • Recognize and protect against common security bugs in web apps.
  • Create validated web forms.
Python ➤ Exam StatWeb ➤ Web forms, fonts & icons

Flask basics

Use Flask and Jinja2 to create a dynamic web site.
SQL ➤ Exam

Python SQL

Create Python programs that fetch and modify data in a PostgreSQL database.

Flask SQL

Add a database, multi-user support and game review to Lingo.

2 days
Hacking

Recognize and protect against common security bugs in web apps. Implement user authentication and authorization following best practices.
OOP ➤ Inheritance

2 days
pair
Object Relational Mapping

Use an Object Relation Mapper.

Form handling

Handle forms and field validation.

2 days
Practice exam

Implement a secure dynamic web site, using HTML, CSS, Flask, SQLAlchemy and WTForms, based on a given set of wireframes.

5 ects
2 days
Exam

Implement a secure dynamic web site, using HTML, CSS, Flask, SQLAlchemy and WTForms, based on a given set of wireframes.

UX design 2&4

Up until this point in the study program, you have always been provided with a pretty clear description of what the end result of an assignment should actually do. In this module, you'll learn techniques to create a functional design yourself, based on the wishes of a client. To keep your designs very practical, our focus will be on the User Experience (UX) part of the design. You will design user interactions using wireframes and descriptions of interactivity.

Learning goals:

  • Effectively interview stakeholders with regard to requirements.
  • Translate business requirements to a functional design.
  • Conduct user studies.
  • Draw wireframes to rapidly describe user interfaces.
  • Describe real-world objects using Entity Relationship Diagrams.
  • Create UX designs for different device types.
Welcome ➤ Linux

Domain modeling and wireframing

Create a domain model and wireframes for a case description that has been worked out using Example Mapping.

pair
Example Mapping

Create an example map, a domain model and wire-frames for a case description.

User testing

Take an existing design, user test it, learn about human factors, make a redesign

2 days
pair
A more complex design

Create interview questions, a domain model and a UX design for a more complex case study.

Ideation

Before creating a design for your new app you need to come up with an idea. But how to choose an idea that will work.

5 ects
2 days
UX Project

Create a complete functional design for an app idea you have invented.

Algorithms & data structures 1&3

An algorithm is a list of rules to follow in order to solve a problem. A data structure is a particular way of organizing data so that it can be used effectively. We'll be learning to select suitable algorithms and data structures, to reason about their efficiencies and to implement them. We'll approach this by studying a few of the common ones. Along the way, we'll also learn how to create a properly documented and unit-tested self-contained module out of them.

Learning goals:

  • Create unit tests to validate whether a module works as intended.
  • Implement algorithms expressed in pseudo-code.
  • Select algorithms based on algorithmic time/space complexity.
  • Knows how and when to use arrays (lists), maps (dictionaries), linked lists and trees.
  • Effectively use recursive functions.
  • Use graphs to store and process data.
  • Understand, implement and use sorted data structures such as trees and heaps.
  • Use backtracking to find optimal solutions to a class of problems.
Python ➤ Exam

Algorithms & complexity

Select algorithms based on algorithmic time/space complexity.

Data structures

Knows how and when to use arrays (lists), maps (dictionaries), linked lists and trees.

2 days
pair
Recursion

Effectively use recursive functions.

Sorting

Implement algorithms expressed in pseudo-code.

Priority queues

Efficiently keep data in a (large) list ordered at all times using trees or heaps.
OOP ➤ Classes

Backtracking

Use backtracking to find optimal solutions to a class of problems.

2 days
Graphs

Use graphs to store and process data.

Practice exam

Solve an algorithmic problem.

5 ects
Exam

Solve an algorithmic problem.

Android programming 1&3

In this module, we'll learn a second programming language: Java. We'll use it to create apps for the Android platform.

Learning goals:

  • Program in Java.
  • Write multithreaded programs.
  • Create and control Views and work with Android APIs.
  • Use Android Studio to design ConstraintLayouts suitable for any screen size.
  • Create and spawn Android activities, carefully managing their lifecycles.
  • Create lists with and without a custom view on Android.
  • Exchange data with an HTTP server on Android.
  • Use Android Room to store and retrieve local data.
OOP ➤ Exam

3 days
Java

Learn the Java language.

pair
Multithreading

Write multithreaded programs.

My First App

Create your first Android application.

Layouts

Implement the user interface for an app.

Activities & lifecycles

Create and spawn Android activities, carefully managing their lifecycles.

Lists

Create lists with and without a custom view on Android.

Networking

Exchange data with an HTTP server on Android.

2 days
Room

Use Android Room to store and retrieve local data.
UX ➤ UX Project

5 ects
3 days
Android Project

Create an awesome Android app of your own choosing!

Software teams

Software is usually developed in teams. This can be a lot of fun, but it also brings some challenges... This module provides you with some theory about working as part of a professional development team, as part of a larger company. You'll also practice your presentation skills.

Learning goals:

  • Know what it means to be an employee in terms of expectations, procedures, the law, contracts and salary.
  • Employ personal time management techniques in order to be happier, healthier and more effective.
  • Reflect on the use of various software project management models and their differences.
  • Understand the function of and interaction between employee roles within software companies.
  • Create simple software in a small, informally managed team.

Business safari

Experience life at a software company!

Business safari

Experience life at a software company!

Business safari

Experience life at a software company!

2 days
End-of-quarter project

A two-day team project.

2 days
End-of-quarter project

A two-day team project.

2 days
End-of-quarter project

A two-day team project.

Project management

Compare the approaches to project management taken by the three companies you visited.

5 ects
0 days
Grading

The previous assignments will make up your grade.

Low-level programming 2&4

How does a computer work? How would you program one without the use of a high-level programming language like Python? Let's find out! And while we're at it, we'll as learn how to interface with hardware components! Although only relatively few software developers do this type of low-level work on a regular basis, knowing about what "lies underneath" does make every developer more effective.

Learning goals:

  • Work with binary data, bits and bytes.
  • Explain the basic operation of a CPU, and its relation to memory and I/O.
  • Understand how the call stack works.
  • Use data types, variables, control flow, functions and terminal I/O in Rust.
  • Manually manage heap memory for a simple program.
  • Use and define traits and generics in Rust.
  • Use polymorphism in Rust.
  • Understand and use pointers.
  • Optimize applications for performance.
  • Work with low-level graphics primitives.
  • Write simple programs in an assembler language.
Alg ➤ Exam

2 days
Gates, bits, bytes, numbers

How does a computer work on the lowest level?

2 days
CPU

Discover how CPUs work by implementing a virtual one yourself.

pair
Assembly & the stack

Let's implement functions using a call stack in SAX16 assembly!

2 days
Hello Rust

Use data types, variables, control flow, functions and terminal I/O in Rust.

2 days
More Rust

Use data types, variables, control flow, functions and terminal I/O in Rust.

pair
Generics, traits & lifetimes

Use and define traits and generics in Rust. Understand and use pointers.

Polymorphism

Smart pointers and dyn traits.

Graphics

Create real-time graphical animations.

5 ects
3 days
Exam

Use Rust to create a graphical game.

Client-side web 2&4

Many modern web applications are 'single-page', meaning they don't have the concept of pages that you navigate between. Examples include Google Maps, WhatsApp Web and the Spotify web-client. Instead of having the server create HTML pages, the HTML is created from within the browser itself using the JavaScript programming language. The client-side JavaScript program usually communicates with one or more servers through an application programmers interface (API) to exchange data. Let's learn how to build such web apps! And yes, that implies learning JavaScript too. We'll also learn how to perform automated tests on the user interfaces that you've created.

Learning goals:

  • Program in JavaScript.
  • Use the Node.js ecosystem, including packages and build tools.
  • Create single-page applications in JavaScript.
  • Build tidy REST APIs using Node.js and express.js.
  • Manipulate the browser DOM to add interactivity to web sites.
  • Use Svelte to implement a web app.
  • Create (progressive) web apps that install as native apps and work offline.
  • Create API tests using Cypress.
  • Create end-to-end tests using Cypress.
UX ➤ UX Project DynWeb ➤ Exam

JavaScript & the DOM

Enhance a web page using client-side-only JavaScript.

Node.js

Create a web app using Node.js.

2 days
pair
REST and test

Design a tidy REST API, implement it using Express and test it with Cypress.

2 days
Single-Page Applications

Implement SPA in vanilla JavaScript.

2 days
Svelte

Create a declarative/reactive user interface using Svelte.

End-to-end tests

End-to-end testing using Cypress.

2 days
Progressive Web Applications

Build progressive web applications, featuring offline functionality as well as SEE real-time communication.

5 ects
3 days
PWA Project

Implement front-end, backend-end and testing for a PWA of your own design.

Open Source

When working for a company, software developers are often asked to improve upon pre-existing software projects. Let's learn and practice how to do that, by adding to an Open Source project of your choice! This skill will come in handy when doing your internships.

Learning goals:

  • Analyze a large and complex pre-existing code base.
  • Implement new features on top of a pre-existing code base.
  • Adhere to a code base's coding standards and contribute changes upstream.
  • Effectively explain things in a presentation.
Alg ➤ Exam Android ➤ Lists

Git Introduction

Introduction to source control

2 days
Amaze

Add a feature to a pre-existing code base.

4 days
LMS42

Add features to or improve upon a pre-existing code base, for real.

Open Source Project preparation

Choose an Open Source project and select/create one or more issues you'd like to work on.

Five minute pitch

Effectively explain things in a presentation.

5 ects
7 days
Open Source Project

Extend an Open Source project of your choosing to add some nice features.

Protocols & parsers 1&3

Many computer programs need to communicate complex data with users or with other computer programs. Protocols and computer languages exist to make this possible. We'll learn about some common protocols (such as those used by the internet) and how to work with them, about encryption, and about how to create a parser to have your program 'understand' a computer language.

Learning goals:

  • Understand the basics of the Internet Protocol.
  • Program TCP and UDP clients and servers.
  • Asynchronous programming.
  • Implement a simple protocol based on a specification.
  • Effectively apply (a)symmetric encryption.
  • Write regular expressions to match complex patterns in strings.
  • Create parsers for domain specific languages.
  • Interpret or compile computer languages.
DevOps ➤ IP

UDP

Implement a client for a UDP-based protocol.

2 days
pair
TCP & asyncio

Write asynchronous servers and clients for a TCP-based protocol.

Cryptography

Effectively apply (a)symmetric encryption.

Regular Expressions

Learn about the swiss army knife for working with strings.

2 days
Parsers & interpreters

Build a recursive descent parser and interpreter for a simple language.
Low-level ➤ Assembly & the stack

2 days
Advanced parsers and compilers

Compile a high level language to SAX16 assembler!

5 ects
2 days
Exam

Create a networked application and extend Saxy.

DevOps 2&4

In many working environments, software developers are not only responsible for solving problems by creating great software, but for testing and deploying it as well. In this module we'll learn about some of the tools and techniques commonly used to do this.

Learning goals:

  • Perform basic Linux system administration.
  • Automate tasks using Linux shell scripting.
  • Encapsulate applications using Docker and Docker Compose.
  • Deploy applications to a public cloud infrastructure.
  • Declare and deploy a simple infrastructure from code.
  • Perform git commits, merges and rebases from the command line.
  • Use a web-based DevOps platform (GitLab) for issue management and merge requests.
  • Write scripts to automatically build, test and deploy apps using GitLab.
Welcome ➤ Linux

2 days
IP

The Internet Protocol.

Scripting basics

Automate simple tasks using Linux shell scripts.
PWA ➤ Single-Page Applications

2 days
pair
Docker

Encapsulate applications using Docker and Docker Compose.

2 days
Cloud

Deploy applications to a public cloud infrastructure.

2 days
pair
Infrastructure as code

Declare and deploy a simple infrastructure from code.

CI/CD

Write scripts to automatically build, test and deploy apps using GitLab.

5 ects
2 days
Exam

Build an application using Docker and scripting.

Technical design

A technical design gives a high-level overview of how a functional design will be implemented. Important technical decisions should be made, hopefully based on more than just gut feeling. The program should be split into logical parts and it should be clear how these parts communicate. All of this should be documented in a way that makes it easy for other software developers to understand what is going on.

Learning goals:

  • Recognize and apply common design patterns.
  • Design class diagrams for non-trivial systems.
  • Create high-level overviews of software architectures.
  • Create graphical software models using PlantUML.
  • Make methodical decisions.
  • Decompose a larger program into logical parts.
  • Design scalable systems.
  • Design reliable systems.
  • Design secure systems.
PWA ➤ PWA Project OSS ➤ Open Source Project

2 days
Class diagrams

Design and implement the class diagram for a complex OOP application.

pair
Design patterns

Learn how to recognize and use design patterns.
DevOps ➤ Cloud

5 ects
6 days
Project

Design the architecture for a software system, choosing technologies with regard for scalability, reliability and security.

Internship 1

During the first year, you have learned to create relatively small applications by yourself. The internships are meant to teach how to cooperatively work on larger applications. It will be on the job learning, as a trainee within a professional development team. Each internship lasts for 12 weeks, 4 days per week. No credits are awarded for completing an internship. Instead, you should showcase results from your internships as part of your graduation portfolio.

Graduation Planning ➤ Apply for internships

Finalize your internship

Found a great place to intern? Make it official!
OSS ➤ Open Source Project

48 days
Intern

Work as part of a team of professional developers.

Free project 1

A programming project of your own choosing. Create something awesome! No credits are awarded for completing the project. Instead, you should showcase it as part of your graduation portfolio.

Graduation Planning ➤ Graduation kick-off

Plan your project

Come up with a great idea and make sure it's doable as well as usable within your portfolio.

20 days
Project work

Work on your project, adding to your portfolio.

Internship 2

Like the first internship, only at another organization. The goal is to get to experience some of the very different ways in which software development processes are managed.

Graduation Planning ➤ Apply for internships

Finalize your internship

Found a great place to intern? Make it official!
OSS ➤ Open Source Project

48 days
Intern

Work as part of a team of professional developers.

Free project 2

Another awesome technical project of your own design! If you like, you can team up with a classmate or two.

Graduation Planning ➤ Graduation kick-off

Plan your project

Come up with a great idea and make sure it's doable as well as usable within your portfolio.

20 days
Project work

Work on your project, adding to your portfolio.

Graduation

Learning goals:

  • Create functional designs.
  • Create technical designs.
  • Implement software.
  • Apply insight to solve problems.
  • Proficiently use common technologies.
  • Quickly and independently learn to use new techniques.
  • Automate software testing and deployment.
  • Collaborate within a development team.

45 ects
10 days
Portfolio defense

Based on the work you did in your internships and free projects, create a portfolio and publicly defend it.

0 days
Bachelor?

Upgrade to a Bachelor-degree? Here's info about making the switch to HBO-IT.