Table of Contents
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