19 Apr

Drawing Julia Sets

Facilitator: Arnaud Chéritat

We will review techniques for drawing Julia sets. Methods covered include classical algorithms from the 80’s and more recent ones, and a few tricks from the teacher. We will focus on quality and the workshop will include some general advice about images. Prerequisites include knowledge of complex numbers and rudiments of programming. The goal is for students to be able to draw their own Julia sets, and we have specific projects in mind.


  • What prerequisite knowledge or skills will the workshop assume?

    Complex numbers, basics of programming.

  • What specific preparation or tasks should participants have completed prior to the beginning of the workshop?

    In short : install GCC and libpng, compile “hello world”, know basics of (typed, procedural) programming. For details, see the bottom of the page for this workshop.

  • What outcomes should participants expect to achieve by the end of the workshop?

    Be able to draw their own Julia sets.

  • Will there be specific projects for participants, or should participants have their own projects in mind already?

    The workshop leader will provide one (or several) specific projects.

A summary of preparation needed for this workshop, but be sure to read and do the details described here:
  1. Participants should have a computer system with a C++ compiler, and learn how to compile a basic “Hello world” program. In my examples I will use GCC, which is either already shipped or easy to install on Linux and Mac. On Windows, installing Cygwin is a simple way to allow the installation and use of GCC. I will provide a few weeks before the workshop installation instructions for GCC on the three main systems. For participants that want to use another compiler, they will have to deal with the installation and compilations by themselves.
  2. I will also provide a piece of code PNGImg.cc that will be included in all the programs. It will be used as a black box to save an array of pixels into a PNG image. This piece of code makes use of the libpng C library, which should be installed on the participant’s system. On Linux, Mac and Cygwin, this procedure is generally simple and I will provide instructions. I will also provide a test code for the participant to see if the installed libpng library does work with PNGImg.cc.
  3. Familiarity with C++ is not required but I will assume that the participant has basic knowledge of programming: for loops, if then else, functions (aka methods, procedures, subroutines). Since C++ is a typed language, the participant should get familiar with that aspect (no need to learn pointers, though). We will barely use the advanced features of C++, so no need to learn them in advance.