MATFeb2013 » History » Version 7
« Previous -
Version 7/19
(diff) -
Next » -
Current version
Chris Cannam, 2013-02-05 03:12 PM
Software Carpentry workshops for MAT/C4DM in QMUL¶
Dates/Where¶
- 6th-7th February 2013 -- MAT lab
Short schedule¶
Day 1 - 9.30am to 3pm
- Day 1 - Morning
- Intro -- 5 mins -- Chris
- Shell - Steve - material from Software Tools For Engineers (ELE595) + Steve's head - 45 mins
- Short coffee break?
- Python intro - Luis - some potential material here from SSI - 10.30 to 12
- Day 1 - Lunch 12 - 12.30
- Day 1 - Afternoon
- Version control - Chris - material here using Bitbucket - 12.30 to 2pm
- Data management points - conversation points in the area outside the MAT lab - 2pm to 3pm
Day 2 - 10am to 4pm
- Day 2 - Morning
- NumPy - Luis - material from Luis, in preparation - takes 1 hour
- Coffee
- Audio file opening etc - Luis - material here from Codasign
- Day 2 - Lunch - 12.30 to 1.15
- Day 2 - Afternoon
- Testing, test-driven development - Chris - outline SWC2013TDD based on ISMIR tutorial - up to 2 hours inc coffee at end
- Philosophical stuff - Feedback cycles - Chris - slides here -- mixture of What We Know and DAFx tutorial stuff with some of Why Crunch Mode Doesn't Work - takes 1 hour at most
- 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
MAT lab computer setup¶
Computer lacks:
- Login for Luis (and Steve?)
- hg and EasyMercurial
- Matplotlib
- iPython
- Nose
- pip
- scikits.audiolab
- Emacs with a window (as opposed to in terminal) - Aquamacs?
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¶
- 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