MATFeb2013 » History » Version 3

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