In this course we treated some cryptograhic protocols, such as DES and RSA. We also studied different techniques such as Zero Knowledge Proofs, Stream Ciphers and Group Computing.
In this course we studied modern database systems more closely, with an emphasis on query-processing. We also looked at the database Monet.
During this course we discussed probabilistic networks. The algorithm of Pearl for inferencing in those networks was treated and also an introduction to sensitivity analysis and the problems in constructing those netwokrs were treated.
In this course we studied techniques to automatically compute schedules that fulfill preset conditions. We used primarily the technique of lineair programming.
In this course we learned techniques that can be used to create a computer model from a current process, so that we can analyze the strengths and weaknesses of this process.
In this course different techniques were treated which are necessary to build a compiler or interpreter, not only for programming languages but also for domain-specific languages.
This course gave an introduction to the financial world, so that student can speak the same language as financial experts.
In this course the programming language C++ was explained, and techniques to use it efficiently for game programming. Also we learned language-independent concepts that are used to create complex games.
During this course we treated several specification and test methods. Our focus lay on methods for distributed software.
In this course we studied the field of graph-algorithms. The emphasis was on efficient algorithms for problems as flow, shortest path, etc.
During this course we had the opportunity to start a virtual company, which gave us the chance to learn what you need in order to start your own company.
This course treated techniques to specify software in such a way, that when later on problems arise, the specification can tell which of the parties made an error. This is particularly handy when drafting a contract in complex IT projects.
In this course we treated techniques that are used to create virtual worlds. Among others we studied the design of such worlds, the simulation of physics and the network technologies needed to create the experience of a real world.
In this course, we learned how to convey general and technical topics orally through presentations and in writing through papers. We also learned how to write a newspaper article on a technical subject and to evaluate each other critically.
This course covered general concepts of operating systems as well as topics related to networking, such as the OSI layer model, Ethernet technology, and wireless communication.
In this course, relational databases were covered. Topics included ER modeling, Relational Algebra and SQL, normalization, and transaction processing. Additional short topics included web databases and databases with XML functionality.
In this course, several data structures were covered, such as linked lists, search trees, AVL trees, heaps, and multiway search trees. In addition, sorting algorithms such as quicksort, mergesort, and heapsort were discussed.
In this course, the functional programming paradigm was introduced using the Haskell language.
This course covered the basics of computer graphics, including ray tracing and the graphics pipeline. Various methods were discussed, such as texture mapping, hidden surface elimination, and lighting/shading. Supporting algorithms and data structures such as BSP trees and Z-buffers were also treated.
This course explained object-oriented programming using the Java language.
This course covered both propositional and predicate logic, as well as the basics of set theory. Various proof techniques were also discussed, such as natural deduction and sequent calculus.
This course covered various mathematical techniques useful for computer scientists.
This course covered a wide range of topics, including object-oriented programming, modeling techniques in UML, and writing tests in JUnit.
For this project, I worked in a team of nine students to build Spectre, a program that visualizes and analyzes data from mass spectrometers, used by biologists to study the presence and quantity of specific proteins. The project involved programming, client communication, and project management. Besides programming, I also helped lead the team, serving as chair during meetings.
This course covered several algorithmic techniques, including dynamic programming and greedy algorithms. Graph algorithms and NP-completeness were also discussed.
This course covered classical synchronization techniques for multithreaded software such as busy-waiting, semaphores, and monitors. Message passing algorithms were also discussed, as well as wait-free synchronization techniques.
This course covered grammars and their properties (including LL grammars) and techniques for parser construction, both using ANTLR and parser combinators in Haskell.
This course introduced various operations on images and techniques for recognizing structures within images.
This course covered contracts and general terms, intellectual property protection, and privacy law, as well as computer crime and how ICT can support legal practice and government.
This course covered linear programming, including the simplex algorithm and its extensions. It also discussed how to formulate real-world problems as linear programming problems.
This course discussed how to prove program correctness using logic. First, Hoare logic for procedural programs was introduced, followed by extensions for object-oriented programs.
This course covered various search algorithms. Uninformed search algorithms such as breadth-first and depth-first search were discussed first, followed by heuristic algorithms such as best-first and A*. Local search algorithms like hill climbing, simulated annealing, and tabu search were also covered, as well as algorithms for adversarial search and constraint satisfaction.
This course thoroughly covered (X)HTML, CSS, JavaScript, PHP, Java Servlets, and XML, with major practical assignments. Later, AJAX, frameworks, and related topics were briefly discussed.
This course discussed various software project management methods such as PRINCE2 in combination with XP, RUP, or DSDM. PMBOK was briefly covered, and cultural differences in international teams were discussed.
This course covered methods for translating customer requirements into an architectural design. The emphasis was on identifying key quality requirements early and ensuring them through established patterns and principles.
This course covered a wide variety of topics, including the Z specification language and aspect-oriented programming. Version control and build tools such as ANT, Make, SVN, and DARCS were also discussed.
This course covered techniques that enable a program to recognize patterns in training data and make predictions for unseen cases based on those patterns.
This course covered various methods for building so-called expert systems—systems that assist professionals in their tasks or make them partially redundant. Techniques for handling natural language and uncertainty were discussed, as well as the limitations of rule-based systems. Because these systems are now considered mature, this course was offered for the last time.
This course covered User-Centered Development, that is, designing software with continuous user involvement. Techniques for making interfaces user-friendly were also discussed.
This course covered several artificial intelligence algorithms, including k-nearest neighbors, neural networks, and the minimax search algorithm.
This course covered various techniques used to compute probabilities and make data-based predictions. Various probability distributions and estimators were discussed.