Marc van Zee

Google Research, Zurich




  • View all projects with descriptions on Github.
  • Mostly skilled in Java (over 50.000 LOC).
  • Skilled in C (over 10.000 LOC).
  • Moderately skilled in Javascript, SQL, Prolog, Netlogo, 2APL (over 5.000 LOC).
  • Recently picked up interest in the Go programming language, AngularJS and Node.JS (over 3.000 LOC).

Selected Projects

  • Go

    SAT Solver

    A simple implementation of a SAT solver that can use either a recursive or an iterative algorithm. It is based on Knuth's SAT0W watchlist-based backtracking algorithm. The iterative code follows Knuth's version much closer, but is a bit more complicated. The recursive version is more untuitive and easier to understand.

    Developed for fun.

  • Javascript

    Using a Neuroheadset as a Robot-Controlling Device

    The Emotiv Epoc is a neuroheadset that promises to be able to read one's mind using EEG measurements. When you wear it, it can separate 16 different thoughts, all based on a direction or a movement (for example: left, rotate forward, push, etc.). I developed a robot using digital production techniques and connecting the EPOC to it. By connecting two actions (push and pull) to two directions of the robot (forward and backward) using Javascript, I am able to control with my mind after a training period of about a month.

    Developed during an internship at Fablab, Amsterdam. Video of me controlling the robot

  • 2APL

    Starcraft AI for teamwork

    The main goal of this project to design (an aspect of) the AI in the game Starcraft, Broodwar and in this way enhance the gameplay for the human user. We have chosen to research cooperation between multiple AI players within an Real-time Strategy game. We have used the Multi-Agent System (MAS) paradigm to steer (small groups of) units in the game, such that they were able to outperform the default A.I. of the game in situations where teamwork was crucial.

    Developed together with Frank van Meeuwen and Roemer Vlasveld.

  • Java

    Random Project

    We started this project with a question: What is the essence of an object? By breaking down the essence, you create boundaries, or rules that can be used in an algorithm that generates objects. This idea is tested on a chair. We define a chair by pointing out ten points and their relations with each other. We add mass to the chair, and have developed algortihms that translate these chairs to STL format, so that models can be sent to a 3D printer. Jesse continued with this project and built actual chairs based on them.

    With Jesse Kirschner from Kirschner3D

  • Java

    Pursuer Evader Tracking game using a Self-Organising Map

    In the Pursuer Evader Tracking (PET) game there are two players: a pursuer and an evader. The evader tries to get away from the pursuer, while the pursuer has the task to catch it. The game is played on an infinitely large, two-dimensional field, where the agents have a constant startposition, but a random starting direction. The pursuer is moving fast, while the evader is able to turn faster. In this simulation I developed an A.I. that controls the behavior of the evader using a Self-Organizing Map (SOM).

    I developed this final assignment as Teaching Assistant for the course Introduction Adaptive Systems by Dr. Gerard Vreeswijk

  • Java

    Handwritten Digit Recognition using a Neural Network

    The MNIST database (Mixed National Institute of Standards and Technology database) is a large database of handwritten digits. I develop a neural network that is able to recognize these handwritten digits after a period of training. It is a three-layers feedforward neural network with backpropagation. The 256 input nodes correspond to the pixels of an image, and the 10 output layers correspond to the digits.

    Developed as part of Teaching Assistant task: student assignment for the course Introduction Adaptive Systems by Dr. Gerard Vreeswijk

  • Java

    Learning Optimal Plan Revision Strategies

    In order to specify situated agents - artificial systems that display effective, rational behavior in dynamic and often unpredictable environments - one of the key issues is to ensure that the agent responds to changes both appropriately and timely. There must be a rational balance between reasoning and acting. We develop a testbed consisting of an agent situated on a Markov Decision Process, By observing features of the environment, the agent is able to learn appropriate plan revision strategies through reinforcement learning.

    Intention Reconsideration as Metareasoning (Marc van Zee, Thomas Icard), In Bounded Optimality and Rational Metareasoning NIPS 2015 Workshop (BORM2015), 2015.

  • Netlogo

    Flow Control in a Decentralized Network using a Cellular Automaton

    This is a simulation of a cellular automata that models adaptive transport. White particles are transported over a green road, which is protected by brown walls. When the particles collide, they will die and a new road is created, perpendicular to the original one. This results in a cross-section. When a different particle reaches this crossing, it will become the flow controller of that crossing. Flow controllers have a red colour and decide whether particles are allowed to go through.

    For the course Introduction Adaptive Systems by Dr. Gerard Vreeswijk

  • Netlogo

    Optimizing Moonlanding using Genetic Programming

    This is a simulation that tries to land a moonlander as good as possible using genetic programming. The optimalisation goal is to let the moonlander land as quick as possible with as much remaining fuel as possible. I have divided this goal into two sub-goals: (1) Landing the moonlander as quick as possible; (2) Landing the moonlander with as much remaining fuel as possible. I have first tried to optimize these subgoals as much as possible, and then combined the solutions to find an optimal combination.

    For the course Introduction Adaptive Systems by Dr. Gerard Vreeswijk