Programming Expectations

General rule for our system: As much boilerplate as possible, no fancy bashrcs, aliases or IDEs.

Requirements for a VM

  • Browser
  • WiFi access (should come from base OS)
  • User account (!)
  • Python 2.7.x (incl. offline documentation)
    • IPython
    • NumPy
    • Matplotlib
    • SciPy
    • ASE
    • pip
  • MicroMegas
  • OOFEM
  • Text Editor (Sublime Text? - they should at least be able to use the mouse, syntax highlighting)
  • htop
  • paraview
  • jade (DEM) (?)
  • should use as few resources as conveniently possible
  • users should be able to install software when they know how to do it
  • fipy

Should be tested on the WW8 CIP pool computers, the WW8 laptops, one OS X machine, one Windows Machine, WW CIP pool, electronical engineering CIP pool

Provide a test suite for the tutors/admins to see if everything is working correctly.

General Skills

  • google
  • working with documentations (especially Python)
  • with regards to plotting: should the student be in the situation when he has to plot a function with a singularity he should be able to recognize this and adjust the limits accordingly to sensible values. Prime examples: Lennard-Jones-Potential, stress field of a dislocation, etc. etc.
  • know the relevance of backups
  • using htop
  • killing stuck programs (while loops are lame)
  • knowing the limitations of the computer (memory, cpu speed)
  • extracting the algorithm from a mathematical formula

Shell

  • navigation in the directory tree
  • copying files
  • moving files
  • deleting files
  • opening a text editor
  • working with the text editor

Python

General

  • functions
  • modules
  • learn how to read exceptions (→ debugging)
  • debugging
  • common “pitfalls” (float numbers, numbering starts at 0)
  • execution of script in the shell (chmod, shebang, starting from ipython console)
  • proper directory structure for “projects” (doc, tests, bin, output)

Standard Library

  • printing
  • text formatting
  • reading a file
  • parsing a file
    • as a whole
    • line by line
  • writing to a file
  • boolean logic
  • binary operators
  • conditionals
    • if
    • elif
    • else
  • data containers
    • tuple + slicing
    • list + slicing
      • append
    • dict
  • loops
    • while loop
    • for loop (with else, introduce iterators before!)
    • breaking out of a loop
    • loop-recursing (is that really a loop inside a loop?!)
  • range

NumPy

  • NumPy array
    • initializing
      • zeros + shape
      • ones + shape
      • full + shape
      • zeros_like
      • ones_like
      • full_like
    • shape
    • slicing
    • reading from file
    • writing to file
  • they should know that the default binary operators act element-wise
  • arange
  • linspace
  • stacking arrays
  • meshgrid
  • linear algebra
    • dot product
    • cross product
    • determinant
    • solving systems of equations

Matplotlib

  • plot types
    • line plot
    • scatter plot
    • pcolormesh
    • contour plot
  • working with figures
  • working with axes
  • plotting interactively
    • plot.hold
    • plot.ion → ax.set_ydata → plot.ioff
  • saving the figure in a file
  • closing figures
  • adding a title
  • adding labels
  • setting linestyle (color, marker, linetype)
  • setting limits
  • subfigures
  • changing the colorscale
  • changing the colormap

Possible Tasks

Log In