Software Carpentry workshop for MAT at QMUL, Feb 2013¶
Post-workshop links¶
Dates/Where¶
- 6th-7th February 2013 -- MAT lab
Planned schedule¶
Day 1 - 9.30am to 3pm
- Day 1 - Morning
- Day 1 - Lunch 12 - 12.30
- Day 1 - Afternoon
Day 2 - 10am to 4pm
- Day 2 - Morning
- Python modules and NumPy - material in preparation - 60 mins - Luis
- Coffee
- Audio files and more NumPy - material in preparation based on this from Codasign - 80 mins - Luis
- Day 2 - Lunch - 12.30 to 1.15
- Day 2 - Afternoon
- Post-workshop assessment exercise
Register for soundsoftware siteNo, the exercise will use BitBucket as well (though we tell them about the SoundSoftware site)- Take the exercise from the last bit of the afternoon (based on ISMIR, but not quite the same) and complete some aspect of it.
- Do this within version control on soundsoftware - add one of us as project member
Actual schedule¶
The timings we actually ended up having.
Day 1 - 9.30am to 3pm
- Wait for people to arrive - 15 mins
- Short intro - Chris - 5 mins
- Shell - Steve - 60 mins
- Coffee - 15 mins
- Intro to Python - Luis - 50 mins
- Lunch - 40 mins (12.00 - 12.40)
- Version control - Chris - 80 mins
- Data - Steve - 60 mins (inc. words from Pat at the start)
Day 2 - 10am to 4pm
- Wait for people to arrive - 15 mins
- Python functions - Luis - 95 mins
- Coffee - 10 mins
- Audio in Python - Luis - 45 mins
- Lunch - 60 mins (12.45 - 13.45) (inc. words from Pat at the end)
- Testing - Chris - 60 mins
- Coffee - 20 mins
- Preview assessed exercise - 5 mins
- What We Know - Chris - 50 mins
MAT lab computer setup¶
Computer lacks:
- Login for Luis (and Steve?) fixed
- hg and EasyMercurial fixed
- Matplotlib fixed
- iPython fixed
- Nose fixed
- pip unsure
- scikits.audiolab unsure
- Emacs with a window (as opposed to in terminal) - Aquamacs? use textwrangler
Computer does have:
- A text editor (TextWrangler)
- Python 2.7 system install
- NumPy
Detailed plan for schedule¶
Day 1¶
9am (?) to 2pm.
Day 1 is rather short because of the MAT lab being booked by someone else from 2pm.
Morning
- Intro to Shell (SJW)
- Directories: pwd, cd, mkdir, ls
- Files: cp, mv, rm, cat, editors
- scripts #!/bin/bash
- access control: chmod
- Finding stuff: grep, find, locate, which
- Regular expressions
- Shell wildcards
- Background tasks: &, fg, bg
- Disk usage: du, df
- Tying things together > < |
- commands history, tab autocompletion
- variables
- doing stuff somewhere else: ssh
- doing serious stuff: sudo
- Directories: pwd, cd, mkdir, ls
- Files: cp, mv, rm, cat, editors
- scripts #!/bin/bash
- access control: chmod
- Finding stuff: grep, find, locate, which
- Regular expressions
- Shell wildcards
- Background tasks: &, fg, bg
- Disk usage: du, df
- Tying things together > < |
- commands history, tab autocompletion
- variables
- doing stuff somewhere else: ssh
- doing serious stuff: sudo
- More possibilities:
- dot
- wget
- rsync
- mounting network (home) directories
- working on octave
- Version Control (CC) (exercise over lunch?)
- Creating repositories on SSW
Afternoon
- Data Management (SJW) - Should content be integrated into discussion of shell / be before VC ?
- Rationale
- File formats - open vs. proprietary, lossy vs. lossless
- Open formats should remain accessible in the future
- The actual output from a lossy data format may vary depending upon how it's decoded
- Converting files - ImageMagick convert, mplayer (to wav) + lame/flac/ogg, ffmpeg
- Backing up
- Archiving
- "standard" compression tools good on text-like files especially if areas of content are similar
- special compression needed for complex binary data which varies a lot e.g. FLAC
- Publishing
- Documenting
- Available facilities in C4DM (relevance for MAT ?)
- Rationale
- File formats - open vs. proprietary, lossy vs. lossless
- Open formats should remain accessible in the future
- The actual output from a lossy data format may vary depending upon how it's decoded
- Converting files - ImageMagick convert, mplayer (to wav) + lame/flac/ogg, ffmpeg
- Backing up
- Archiving
- "standard" compression tools good on text-like files especially if areas of content are similar
- special compression needed for complex binary data which varies a lot e.g. FLAC
- Publishing
- Documenting
- Available facilities in C4DM (relevance for MAT ?)
Day 2¶
10am to 4pm.
Morning
- Python (LF)
- Variables
- strings, integers, floats, lists, sets and dictionaries
- By reference vs. by value
- Control-of-flow
- Libraries and modules - pip, easy_install
- OOP, objects and classes ?
- Variables
- strings, integers, floats, lists, sets and dictionaries
- By reference vs. by value
- Control-of-flow
- Libraries and modules - pip, easy_install
- OOP, objects and classes ?
- Python for research
- NumPy
- Matplotlib
- SciPy
- Python for Audio/Media: audioop, ossaudiodev, wave, aifc, sunau, PyMedia, pygame (sndarray, mixer, mixer.music), libpd (?), Python Audio Tools, scikits.audiolab, Medussa
- NumPy
Afternoon
- Software engineering
- feedback cycles
- Unit Tests and TDD
- nose
- feedback cycles
- Unit Tests and TDD
- nose
Note: We need to have some sort of evaluation so that we can give attendees a mark (some exercise to be submitted via version control a week later?)
Outcomes¶
Note some of these are C4DM-specific for the C4DM version of the workshop
- Students to have their own version control repository on soundsoftware.ac.uk and to know how to use it (command-line and easyHg)
- Removal of fear of the command-line
- Knowledge of basic UNIX shell commands
- Knowledge of basic Python
- Knowledge of (some) Python libraries for media research
- Understanding of the need for data management and how to manage data
- Understand facilities available at C4DM
- Know where to go for more info
- Software Carpentry - software-carpentry.org
- Version control / project management - soundsoftware.ac.uk
- Python - python.org
- Data management - SoDaMaT
- Improved practices for software engineering, souce code management, data management