MATFeb2013 » History » Version 2

Chris Cannam, 2013-02-05 11:20 AM

1 1 Chris Cannam
h1. Software Carpentry workshops for MAT/C4DM in QMUL
2 1 Chris Cannam
3 1 Chris Cannam
h2. Dates/Where
4 1 Chris Cannam
5 1 Chris Cannam
*  6th-7th February 2013 -- MAT lab
6 1 Chris Cannam
7 1 Chris Cannam
h2. MAT lab computer setup
8 1 Chris Cannam
9 1 Chris Cannam
Computer lacks:
10 1 Chris Cannam
11 1 Chris Cannam
* Login for Luis (and Steve?)
12 1 Chris Cannam
* hg and EasyMercurial
13 1 Chris Cannam
* Matplotlib
14 1 Chris Cannam
* iPython
15 1 Chris Cannam
* Nose
16 1 Chris Cannam
* pip
17 1 Chris Cannam
* scikits.audiolab
18 1 Chris Cannam
* Emacs with a window (as opposed to in terminal) - Aquamacs?
19 1 Chris Cannam
20 1 Chris Cannam
Computer does have:
21 1 Chris Cannam
22 1 Chris Cannam
* A text editor (TextWrangler)
23 1 Chris Cannam
* Python 2.7 system install
24 1 Chris Cannam
* NumPy
25 1 Chris Cannam
26 1 Chris Cannam
h2. Short schedule
27 1 Chris Cannam
28 1 Chris Cannam
*Day 1 - 9.30am to 3pm*
29 1 Chris Cannam
30 1 Chris Cannam
* Day 1 - Morning
31 1 Chris Cannam
** Intro and get settled down - 20 mins - with coffee?
32 1 Chris Cannam
** Shell - *Steve* - material from Software Tools For Engineers (ELE595) + Steve's head - 30 min to 10.30
33 1 Chris Cannam
** Python intro - *Luis* - some potential material "here":https://bitbucket.org/softwaresaved/boot-camp-oxford-2012/src/09d7142640725f78620511ec83ce756b491fdcdb/PythonIntroScript.docx from SSI - 10.30 to 12
34 1 Chris Cannam
35 1 Chris Cannam
* Day 1 - Lunch 12 - 12.30
36 1 Chris Cannam
37 1 Chris Cannam
* Day 1 - Afternoon
38 1 Chris Cannam
** Version control - *Chris* - material "here":/projects/easyhg/wiki/SC2012BootcampPlan using Bitbucket - 12.30 to 2pm
39 1 Chris Cannam
** Data management points - conversation points in the area outside the MAT lab - 2pm to 3pm
40 1 Chris Cannam
41 1 Chris Cannam
*Day 2 - 10am to 4pm*
42 1 Chris Cannam
43 1 Chris Cannam
* Day 2 - Morning
44 1 Chris Cannam
** NumPy - *Luis* - material from Luis, in preparation - takes 1 hour
45 1 Chris Cannam
** Audio file opening etc - *Luis?* - material "here":/projects/audio-bootcamp-planning from Codasign
46 1 Chris Cannam
47 1 Chris Cannam
* Day 2 - Lunch - 12.30 to 1.15
48 1 Chris Cannam
49 1 Chris Cannam
* Day 2 - Afternoon
50 1 Chris Cannam
** Testing, test-driven development - *Chris?* - based on "ISMIR":/projects/soundsoftware-ismir-2012 tutorial - up to 2 hours inc coffee at end
51 1 Chris Cannam
** Philosophical stuff - Feedback cycles - *Chris?* - mixture of "What We Know":https://bitbucket.org/softwaresaved/boot-camp-oxford-2012/src/09d7142640725f78620511ec83ce756b491fdcdb/WhatWeKnow.ppt?at=default and "DAFx tutorial stuff":https://code.soundsoftware.ac.uk/attachments/561/SoundSoftware-DAFx-Software.pdf with some of "Why Crunch Mode Doesn't Work":http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons - takes 1 hour at most
52 1 Chris Cannam
53 1 Chris Cannam
* Post-workshop assessment exercise
54 1 Chris Cannam
** Register for soundsoftware site
55 1 Chris Cannam
** Take the exercise from the last bit of the afternoon (based on ISMIR, but not quite the same) and complete some aspect of it.
56 1 Chris Cannam
** Do this within version control on soundsoftware - add one of us as project member
57 1 Chris Cannam
58 1 Chris Cannam
59 1 Chris Cannam
60 1 Chris Cannam
h2. Day 1
61 1 Chris Cannam
62 1 Chris Cannam
9am (?) to 2pm.
63 1 Chris Cannam
64 1 Chris Cannam
Day 1 is rather short because of the MAT lab being booked by someone else from 2pm.
65 1 Chris Cannam
66 1 Chris Cannam
h3. Morning 
67 1 Chris Cannam
* Intro to Shell (SJW)
68 1 Chris Cannam
** Directories: pwd, cd, mkdir, ls
69 1 Chris Cannam
** Files: cp, mv, rm, cat, editors
70 1 Chris Cannam
** scripts #!/bin/bash
71 1 Chris Cannam
** access control: chmod
72 1 Chris Cannam
** Finding stuff: grep, find, locate, which
73 1 Chris Cannam
*** Regular expressions
74 1 Chris Cannam
*** Shell wildcards
75 1 Chris Cannam
** Background tasks: &, fg, bg
76 1 Chris Cannam
** Disk usage: du, df
77 1 Chris Cannam
** Tying things together > < |
78 1 Chris Cannam
** commands history, tab autocompletion
79 1 Chris Cannam
** variables
80 1 Chris Cannam
** doing stuff somewhere else: ssh
81 1 Chris Cannam
** doing serious stuff: sudo
82 1 Chris Cannam
83 1 Chris Cannam
* More possibilities:
84 1 Chris Cannam
** dot
85 1 Chris Cannam
** wget
86 1 Chris Cannam
** rsync
87 1 Chris Cannam
** mounting network (home) directories
88 1 Chris Cannam
** working on octave
89 1 Chris Cannam
90 1 Chris Cannam
* Version Control (CC) (exercise over lunch?)
91 1 Chris Cannam
** Creating repositories on SSW
92 1 Chris Cannam
93 1 Chris Cannam
h3. Afternoon
94 1 Chris Cannam
* Data Management (SJW) - Should content be integrated into discussion of shell / be before VC ?
95 1 Chris Cannam
** Rationale
96 1 Chris Cannam
** File formats - open vs. proprietary, lossy vs. lossless
97 1 Chris Cannam
*** Open formats should remain accessible in the future
98 1 Chris Cannam
*** The actual output from a lossy data format may vary depending upon how it's decoded
99 1 Chris Cannam
*** Converting files - ImageMagick convert, mplayer (to wav) + lame/flac/ogg, ffmpeg
100 1 Chris Cannam
** Backing up
101 1 Chris Cannam
** Archiving
102 1 Chris Cannam
*** "standard" compression tools good on text-like files especially if areas of content are similar
103 1 Chris Cannam
*** special compression needed for complex binary data which varies a lot e.g. FLAC
104 1 Chris Cannam
** Publishing
105 1 Chris Cannam
** Documenting
106 1 Chris Cannam
** Available facilities in C4DM (relevance for MAT ?)
107 1 Chris Cannam
108 1 Chris Cannam
h2. Day 2
109 1 Chris Cannam
110 1 Chris Cannam
10am to 4pm.
111 1 Chris Cannam
112 1 Chris Cannam
h3. Morning 
113 1 Chris Cannam
* Python (LF)
114 1 Chris Cannam
** Variables
115 1 Chris Cannam
*** strings, integers, floats, lists, sets and dictionaries
116 1 Chris Cannam
*** By reference vs. by value
117 1 Chris Cannam
** Control-of-flow
118 1 Chris Cannam
** Libraries and modules - pip, easy_install
119 1 Chris Cannam
** OOP, objects and classes ?
120 1 Chris Cannam
121 1 Chris Cannam
* Python for research
122 1 Chris Cannam
** NumPy
123 1 Chris Cannam
*** Matplotlib
124 1 Chris Cannam
*** SciPy
125 1 Chris Cannam
** Python for Audio/Media: audioop, ossaudiodev, wave, aifc, sunau, PyMedia, pygame (sndarray, mixer, mixer.music), libpd (?), Python Audio Tools, scikits.audiolab, Medussa
126 1 Chris Cannam
127 1 Chris Cannam
h3. Afternoon
128 1 Chris Cannam
* Software engineering
129 1 Chris Cannam
** feedback cycles
130 1 Chris Cannam
** Unit Tests and TDD
131 1 Chris Cannam
*** nose
132 1 Chris Cannam
133 1 Chris Cannam
*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?)
134 1 Chris Cannam
135 1 Chris Cannam
h2. Outcomes
136 1 Chris Cannam
137 1 Chris Cannam
* Students to have their own version control repository on soundsoftware.ac.uk and to know how to use it (command-line and easyHg)
138 1 Chris Cannam
* Removal of fear of the command-line
139 1 Chris Cannam
* Knowledge of basic UNIX shell commands
140 1 Chris Cannam
* Knowledge of basic Python
141 1 Chris Cannam
* Knowledge of (some) Python libraries for media research
142 1 Chris Cannam
* Understanding of the need for data management and how to manage data
143 1 Chris Cannam
* Understand facilities available at C4DM
144 1 Chris Cannam
* Know where to go for more info
145 1 Chris Cannam
** Software Carpentry - software-carpentry.org
146 1 Chris Cannam
** Version control / project management - soundsoftware.ac.uk
147 1 Chris Cannam
** Python - python.org
148 1 Chris Cannam
** Data management - SoDaMaT
149 1 Chris Cannam
* Improved practices for software engineering, souce code management, data management