MATFeb2013 » History » Version 7

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