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
    • Introduction - material - 5 mins - Chris
    • Shell - material - 45 mins - Steve
    • Short coffee break
    • Python - material - 90 mins - Luis
  • Day 1 - Lunch 12 - 12.30
  • Day 1 - Afternoon
    • Version control - material - 90 mins - Chris
    • Data management - material - conversation points in area outside lab - 60 mins - Steve

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
    • Testing - material - 90 mins - Chris
    • Set the assessment exercise; coffee
    • What We Know - material - 50 mins - Chris
  • Post-workshop assessment exercise
    • Register for soundsoftware site No, 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

  • 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 ?)

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 ?

  • 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

Afternoon
  • Software engineering
    • 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

intro.pdf - Intro slide, PDF 171 KB, downloaded 100 times Chris Cannam, 2013-02-05 05:19 PM

intro.pptx - Intro slide, PowerPoint 534 KB, downloaded 55 times Chris Cannam, 2013-02-05 05:19 PM