MATFeb2013 » History » Version 16

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

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