LCSC 2019

Overview

Utrecht University, WISM454

  • Instructor: Jan-Willem Buurlage (CWI) <j.buurlage(at)cwi.nl>
  • When: Wednesday 13:15 - 17:00
  • Where: KBG 228

Each week consists of two hours of lectures (theory, C++), followed by two hours for working on exercises.

Schedule

Date Topics
06-02-2019
  • Course overview, topics, grading etc.
  • Random number generation (I), LCRNG
  • C++: Basic introduction.
  • Setting up a development environment
  • Exercises: Set up system, 2.1, 2.2 and 2.6
  • Read: [LN] 2.1 - 2.3, [BS] 2.1 - 2.2
13-02-2019
  • Random number generation (II), general distributions
  • C++: arrays, pointers, classes.
  • Exercises: 2.9, 2.10
  • Read: [LN] 2.4 - 2.5, [BS] 2.3 - 3.2
  • Hand-in: 2.7, 2.8 (due: 26-02)
20-02-2019
  • Random number generation (III): Advanced RNGs, Xorshift, Mersenne Twister
  • C++: polymorphism (II), templates.
  • Exercises: 2.12, 2.13
  • Read:[LN] 2.6, [BS] 3.3 - 3.4
27-02-2019
  • C++: The standard library.
  • Read: [BS] Chapter 4
06-03-2019
  • Extended tutorial
13-03-2019
  • Monte Carlo methods (I)
  • C++: std::function, anonymous functions, smart pointers
  • Exercises: 3.1 -- 3.4
  • Read: [LN] 3.1, 3.2
  • Optional: hand-in RNG code for review.
20-03-2019
  • Monte Carlo methods (II)
  • C++: copy versus move
  • Exercises: 3.8
  • Read: [LN] 3.3
  • Hand-in 2: radiation density (1.6.2 in exercises.pdf). (due: 03-04).
27-03-2019
  • C++: <chrono> and helper classes
  • Tutorial: work on hand-in and report.
03-04-2019
  • C++: <random>
  • Tutorial: work on hand-in and report.
10-04-2019
  • Tutorial: work on hand-in and report.
17-04-2019
  • Deadline Report I
  • No lecture
24-04-2019
  • Genetic algorithms (I)
  • Exercises: 1.7.1, 1.7.2, 1.7.3
  • Read: [LN] 4.1
01-05-2019
  • Genetic algorithms (II)
  • C++: iterators
  • Hand-in 3: iterating over containers (1.8.1 in exercises.pdf). (due: 15-05)
08-05-2019
  • Report I discussions, no lecture
15-05-2019
  • Guest talk: GOMEA, Richard Schoonhoven (UU / CWI)
22-05-2019
  • Finalize Projects
  • C++: unit testing
29-05-2019
  • Tutorial
05-06-2019
  • Tutorial
12-06-2019
  • Final tutorial
02-07-2019
  • Deadline Report II

Reports

Your reports should contain:

  • Stand-alone treatment of the relevant theory.
  • Results of numerical experiments.
  • Description of your software library, with discussions on usage and design choices.

In addition, all exercises listed in the schedule, except those marked hand-in or optional, are expected to be treated in your reports. Do not refer to them explicitely, but rather make them part of the story.

Solutions to hand-in exercises should be handed two weeks after they have been distributed, and are expected to be typeset using LaTeX.

The following table shows how the final grade will be computed.

Grade Weight
Hand-in assignments 20%
Report I 40%
Report II 40%

Handing in your code

When handing in code, please make a single ZIP file containing all source files, headers, and a CMakeLists.txt build file that can be used to compile your code.

Use clang-format to clean up your code. My personal configuration can be found here.

Literature

  • Theory:
  • C++
    • [BS] Bjarne Stroustrop - The C++ Programming Language
    • Scott Meyers - Effective Modern C++

Example code can be found at: http://www.github.com/jwbuurlage/lcsc-2019/