MATFeb2013 » History » Version 15

Chris Cannam, 2013-02-08 01:21 PM

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 15 Chris Cannam
h2. Planned schedule
8 1 Chris Cannam
9 1 Chris Cannam
*Day 1 - 9.30am to 3pm*
10 1 Chris Cannam
11 1 Chris Cannam
* Day 1 - Morning
12 11 Chris Cannam
** *Introduction* - "material":/attachments/650/intro.pdf - 5 mins - *Chris*
13 11 Chris Cannam
** *Shell* - "material":/projects/jisc-training/repository/show/presentations/MAT%20SWC - 45 mins - *Steve*
14 11 Chris Cannam
** Short coffee break
15 12 Chris Cannam
** *Python* - "material":/documents/71 - 90 mins - *Luis*
16 1 Chris Cannam
17 1 Chris Cannam
* Day 1 - Lunch 12 - 12.30
18 1 Chris Cannam
19 1 Chris Cannam
* Day 1 - Afternoon
20 12 Chris Cannam
** *Version control* - "material":/projects/easyhg/wiki/SC2012BootcampPlan - 90 mins - *Chris*
21 12 Chris Cannam
** *Data management* - "material":/projects/jisc-training/repository/show/presentations/MAT%20SWC - conversation points in area outside lab - 60 mins - *Steve*
22 1 Chris Cannam
23 1 Chris Cannam
*Day 2 - 10am to 4pm*
24 1 Chris Cannam
25 1 Chris Cannam
* Day 2 - Morning
26 12 Chris Cannam
** *Python modules and NumPy* - material in preparation - 60 mins - *Luis*
27 5 Chris Cannam
** Coffee
28 12 Chris Cannam
** *Audio files and more NumPy* - material in preparation based on "this":/projects/audio-bootcamp-planning from Codasign - 80 mins - *Luis*
29 4 Chris Cannam
30 1 Chris Cannam
* Day 2 - Lunch - 12.30 to 1.15
31 1 Chris Cannam
32 1 Chris Cannam
* Day 2 - Afternoon
33 12 Chris Cannam
** *Testing* - [[SWC2013TDD|material]] - 90 mins - *Chris*
34 12 Chris Cannam
** Set the assessment exercise; coffee
35 12 Chris Cannam
** *What We Know* - "material":/documents/70 - 50 mins - *Chris*
36 1 Chris Cannam
37 1 Chris Cannam
* Post-workshop assessment exercise
38 4 Chris Cannam
** -Register for soundsoftware site- No, the exercise will use BitBucket as well (though we tell them about the SoundSoftware site)
39 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.
40 1 Chris Cannam
** Do this within version control on soundsoftware - add one of us as project member
41 1 Chris Cannam
42 15 Chris Cannam
h2. Actual schedule
43 15 Chris Cannam
44 15 Chris Cannam
The timings we actually ended up having.
45 15 Chris Cannam
46 15 Chris Cannam
*Day 1 - 9.30am to 3pm*
47 15 Chris Cannam
48 15 Chris Cannam
* Wait for people to arrive - 15 mins
49 15 Chris Cannam
* Short intro - Chris - 5 mins
50 15 Chris Cannam
* Shell - Steve - 60 mins
51 15 Chris Cannam
* Coffee - 15 mins
52 15 Chris Cannam
* Intro to Python - Luis - 50 mins
53 15 Chris Cannam
* Lunch - 40 mins (12.00 - 12.40)
54 15 Chris Cannam
* Version control - Chris - 80 mins
55 15 Chris Cannam
* Data - Steve - 60 mins (inc. words from Pat at the start)
56 15 Chris Cannam
57 15 Chris Cannam
*Day 2 - 10am to 4pm*
58 15 Chris Cannam
59 15 Chris Cannam
* Wait for people to arrive - 15 mins
60 15 Chris Cannam
* Python functions - Luis - 95 mins
61 15 Chris Cannam
* Coffee - 10 mins
62 15 Chris Cannam
* Audio in Python - Luis - 45 mins
63 15 Chris Cannam
* Lunch - 60 mins (12.45 - 13.45) (inc. words from Pat at the end)
64 15 Chris Cannam
* Testing - Chris - 60 mins
65 15 Chris Cannam
* Coffee - 20 mins
66 15 Chris Cannam
* Preview assessed exercise - 5 mins
67 15 Chris Cannam
* What We Know - Chris - 50 mins
68 1 Chris Cannam
69 3 Chris Cannam
h2. MAT lab computer setup
70 3 Chris Cannam
71 3 Chris Cannam
Computer lacks:
72 3 Chris Cannam
73 13 Chris Cannam
* Login for Luis (and Steve?) *fixed*
74 13 Chris Cannam
* hg and EasyMercurial *fixed*
75 13 Chris Cannam
* Matplotlib *fixed*
76 13 Chris Cannam
* iPython *fixed*
77 13 Chris Cannam
* Nose *fixed*
78 13 Chris Cannam
* pip _unsure_
79 13 Chris Cannam
* scikits.audiolab _unsure_
80 13 Chris Cannam
* Emacs with a window (as opposed to in terminal) - Aquamacs? *use textwrangler*
81 3 Chris Cannam
82 3 Chris Cannam
Computer does have:
83 3 Chris Cannam
84 3 Chris Cannam
* A text editor (TextWrangler)
85 3 Chris Cannam
* Python 2.7 system install
86 3 Chris Cannam
* NumPy
87 3 Chris Cannam
88 3 Chris Cannam
h1. Detailed plan for schedule
89 1 Chris Cannam
90 1 Chris Cannam
h2. Day 1
91 1 Chris Cannam
92 1 Chris Cannam
9am (?) to 2pm.
93 1 Chris Cannam
94 1 Chris Cannam
Day 1 is rather short because of the MAT lab being booked by someone else from 2pm.
95 1 Chris Cannam
96 1 Chris Cannam
h3. Morning 
97 1 Chris Cannam
* Intro to Shell (SJW)
98 1 Chris Cannam
** Directories: pwd, cd, mkdir, ls
99 1 Chris Cannam
** Files: cp, mv, rm, cat, editors
100 1 Chris Cannam
** scripts #!/bin/bash
101 1 Chris Cannam
** access control: chmod
102 1 Chris Cannam
** Finding stuff: grep, find, locate, which
103 1 Chris Cannam
*** Regular expressions
104 1 Chris Cannam
*** Shell wildcards
105 1 Chris Cannam
** Background tasks: &, fg, bg
106 1 Chris Cannam
** Disk usage: du, df
107 1 Chris Cannam
** Tying things together > < |
108 1 Chris Cannam
** commands history, tab autocompletion
109 1 Chris Cannam
** variables
110 1 Chris Cannam
** doing stuff somewhere else: ssh
111 1 Chris Cannam
** doing serious stuff: sudo
112 1 Chris Cannam
113 1 Chris Cannam
* More possibilities:
114 1 Chris Cannam
** dot
115 1 Chris Cannam
** wget
116 1 Chris Cannam
** rsync
117 1 Chris Cannam
** mounting network (home) directories
118 1 Chris Cannam
** working on octave
119 1 Chris Cannam
120 1 Chris Cannam
* Version Control (CC) (exercise over lunch?)
121 1 Chris Cannam
** Creating repositories on SSW
122 1 Chris Cannam
123 1 Chris Cannam
h3. Afternoon
124 1 Chris Cannam
* Data Management (SJW) - Should content be integrated into discussion of shell / be before VC ?
125 1 Chris Cannam
** Rationale
126 1 Chris Cannam
** File formats - open vs. proprietary, lossy vs. lossless
127 1 Chris Cannam
*** Open formats should remain accessible in the future
128 1 Chris Cannam
*** The actual output from a lossy data format may vary depending upon how it's decoded
129 1 Chris Cannam
*** Converting files - ImageMagick convert, mplayer (to wav) + lame/flac/ogg, ffmpeg
130 1 Chris Cannam
** Backing up
131 1 Chris Cannam
** Archiving
132 1 Chris Cannam
*** "standard" compression tools good on text-like files especially if areas of content are similar
133 1 Chris Cannam
*** special compression needed for complex binary data which varies a lot e.g. FLAC
134 1 Chris Cannam
** Publishing
135 1 Chris Cannam
** Documenting
136 1 Chris Cannam
** Available facilities in C4DM (relevance for MAT ?)
137 1 Chris Cannam
138 1 Chris Cannam
h2. Day 2
139 1 Chris Cannam
140 1 Chris Cannam
10am to 4pm.
141 1 Chris Cannam
142 1 Chris Cannam
h3. Morning 
143 1 Chris Cannam
* Python (LF)
144 1 Chris Cannam
** Variables
145 1 Chris Cannam
*** strings, integers, floats, lists, sets and dictionaries
146 1 Chris Cannam
*** By reference vs. by value
147 1 Chris Cannam
** Control-of-flow
148 1 Chris Cannam
** Libraries and modules - pip, easy_install
149 1 Chris Cannam
** OOP, objects and classes ?
150 1 Chris Cannam
151 1 Chris Cannam
* Python for research
152 1 Chris Cannam
** NumPy
153 1 Chris Cannam
*** Matplotlib
154 1 Chris Cannam
*** SciPy
155 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
156 1 Chris Cannam
157 1 Chris Cannam
h3. Afternoon
158 1 Chris Cannam
* Software engineering
159 1 Chris Cannam
** feedback cycles
160 1 Chris Cannam
** Unit Tests and TDD
161 1 Chris Cannam
*** nose
162 1 Chris Cannam
163 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?)
164 1 Chris Cannam
165 1 Chris Cannam
h2. Outcomes
166 1 Chris Cannam
167 14 Chris Cannam
*Note* some of these are C4DM-specific for the C4DM version of the workshop
168 14 Chris Cannam
169 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)
170 1 Chris Cannam
* Removal of fear of the command-line
171 1 Chris Cannam
* Knowledge of basic UNIX shell commands
172 1 Chris Cannam
* Knowledge of basic Python
173 1 Chris Cannam
* Knowledge of (some) Python libraries for media research
174 1 Chris Cannam
* Understanding of the need for data management and how to manage data
175 1 Chris Cannam
* Understand facilities available at C4DM
176 1 Chris Cannam
* Know where to go for more info
177 1 Chris Cannam
** Software Carpentry - software-carpentry.org
178 1 Chris Cannam
** Version control / project management - soundsoftware.ac.uk
179 1 Chris Cannam
** Python - python.org
180 1 Chris Cannam
** Data management - SoDaMaT
181 1 Chris Cannam
* Improved practices for software engineering, souce code management, data management