MATFeb2013 » History » Version 14

Chris Cannam, 2013-02-05 08:48 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 1 Chris Cannam
h2. Short 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 1 Chris Cannam
43 3 Chris Cannam
h2. MAT lab computer setup
44 3 Chris Cannam
45 3 Chris Cannam
Computer lacks:
46 3 Chris Cannam
47 13 Chris Cannam
* Login for Luis (and Steve?) *fixed*
48 13 Chris Cannam
* hg and EasyMercurial *fixed*
49 13 Chris Cannam
* Matplotlib *fixed*
50 13 Chris Cannam
* iPython *fixed*
51 13 Chris Cannam
* Nose *fixed*
52 13 Chris Cannam
* pip _unsure_
53 13 Chris Cannam
* scikits.audiolab _unsure_
54 13 Chris Cannam
* Emacs with a window (as opposed to in terminal) - Aquamacs? *use textwrangler*
55 3 Chris Cannam
56 3 Chris Cannam
Computer does have:
57 3 Chris Cannam
58 3 Chris Cannam
* A text editor (TextWrangler)
59 3 Chris Cannam
* Python 2.7 system install
60 3 Chris Cannam
* NumPy
61 3 Chris Cannam
62 3 Chris Cannam
h1. Detailed plan for schedule
63 1 Chris Cannam
64 1 Chris Cannam
h2. Day 1
65 1 Chris Cannam
66 1 Chris Cannam
9am (?) to 2pm.
67 1 Chris Cannam
68 1 Chris Cannam
Day 1 is rather short because of the MAT lab being booked by someone else from 2pm.
69 1 Chris Cannam
70 1 Chris Cannam
h3. Morning 
71 1 Chris Cannam
* Intro to Shell (SJW)
72 1 Chris Cannam
** Directories: pwd, cd, mkdir, ls
73 1 Chris Cannam
** Files: cp, mv, rm, cat, editors
74 1 Chris Cannam
** scripts #!/bin/bash
75 1 Chris Cannam
** access control: chmod
76 1 Chris Cannam
** Finding stuff: grep, find, locate, which
77 1 Chris Cannam
*** Regular expressions
78 1 Chris Cannam
*** Shell wildcards
79 1 Chris Cannam
** Background tasks: &, fg, bg
80 1 Chris Cannam
** Disk usage: du, df
81 1 Chris Cannam
** Tying things together > < |
82 1 Chris Cannam
** commands history, tab autocompletion
83 1 Chris Cannam
** variables
84 1 Chris Cannam
** doing stuff somewhere else: ssh
85 1 Chris Cannam
** doing serious stuff: sudo
86 1 Chris Cannam
87 1 Chris Cannam
* More possibilities:
88 1 Chris Cannam
** dot
89 1 Chris Cannam
** wget
90 1 Chris Cannam
** rsync
91 1 Chris Cannam
** mounting network (home) directories
92 1 Chris Cannam
** working on octave
93 1 Chris Cannam
94 1 Chris Cannam
* Version Control (CC) (exercise over lunch?)
95 1 Chris Cannam
** Creating repositories on SSW
96 1 Chris Cannam
97 1 Chris Cannam
h3. Afternoon
98 1 Chris Cannam
* Data Management (SJW) - Should content be integrated into discussion of shell / be before VC ?
99 1 Chris Cannam
** Rationale
100 1 Chris Cannam
** File formats - open vs. proprietary, lossy vs. lossless
101 1 Chris Cannam
*** Open formats should remain accessible in the future
102 1 Chris Cannam
*** The actual output from a lossy data format may vary depending upon how it's decoded
103 1 Chris Cannam
*** Converting files - ImageMagick convert, mplayer (to wav) + lame/flac/ogg, ffmpeg
104 1 Chris Cannam
** Backing up
105 1 Chris Cannam
** Archiving
106 1 Chris Cannam
*** "standard" compression tools good on text-like files especially if areas of content are similar
107 1 Chris Cannam
*** special compression needed for complex binary data which varies a lot e.g. FLAC
108 1 Chris Cannam
** Publishing
109 1 Chris Cannam
** Documenting
110 1 Chris Cannam
** Available facilities in C4DM (relevance for MAT ?)
111 1 Chris Cannam
112 1 Chris Cannam
h2. Day 2
113 1 Chris Cannam
114 1 Chris Cannam
10am to 4pm.
115 1 Chris Cannam
116 1 Chris Cannam
h3. Morning 
117 1 Chris Cannam
* Python (LF)
118 1 Chris Cannam
** Variables
119 1 Chris Cannam
*** strings, integers, floats, lists, sets and dictionaries
120 1 Chris Cannam
*** By reference vs. by value
121 1 Chris Cannam
** Control-of-flow
122 1 Chris Cannam
** Libraries and modules - pip, easy_install
123 1 Chris Cannam
** OOP, objects and classes ?
124 1 Chris Cannam
125 1 Chris Cannam
* Python for research
126 1 Chris Cannam
** NumPy
127 1 Chris Cannam
*** Matplotlib
128 1 Chris Cannam
*** SciPy
129 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
130 1 Chris Cannam
131 1 Chris Cannam
h3. Afternoon
132 1 Chris Cannam
* Software engineering
133 1 Chris Cannam
** feedback cycles
134 1 Chris Cannam
** Unit Tests and TDD
135 1 Chris Cannam
*** nose
136 1 Chris Cannam
137 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?)
138 1 Chris Cannam
139 1 Chris Cannam
h2. Outcomes
140 1 Chris Cannam
141 14 Chris Cannam
*Note* some of these are C4DM-specific for the C4DM version of the workshop
142 14 Chris Cannam
143 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)
144 1 Chris Cannam
* Removal of fear of the command-line
145 1 Chris Cannam
* Knowledge of basic UNIX shell commands
146 1 Chris Cannam
* Knowledge of basic Python
147 1 Chris Cannam
* Knowledge of (some) Python libraries for media research
148 1 Chris Cannam
* Understanding of the need for data management and how to manage data
149 1 Chris Cannam
* Understand facilities available at C4DM
150 1 Chris Cannam
* Know where to go for more info
151 1 Chris Cannam
** Software Carpentry - software-carpentry.org
152 1 Chris Cannam
** Version control / project management - soundsoftware.ac.uk
153 1 Chris Cannam
** Python - python.org
154 1 Chris Cannam
** Data management - SoDaMaT
155 1 Chris Cannam
* Improved practices for software engineering, souce code management, data management