-
Notifications
You must be signed in to change notification settings - Fork 4
/
index.html
343 lines (316 loc) · 11.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
---
layout: workshop
root: .
venue: The University of Edinburgh
address: Room 3217, James Clerk Maxwell Building, Peter Guthrie Tait Road, Edinburgh, EH9 3FD
country: United-Kingdom
humandate: Dec 3-4, 2014
humantime: 9:00 am - 5:00 pm
startdate: 2014-12-03
enddate: 2014-12-04
latlng: 55.921628,-3.174155
registration: open
instructor: ["Mike Jackson", "Arno Proeme", "Mario Antonioletti", "Alistair Grant"]
helper: ["Emmanouil Farsarakis", "Leighton Pritchard", "Peter Cock"]
contact: [email protected]
lessons: ['Git', 'Python', 'VM']
---
<h2>General Information</h2>
<p>
<a href="http://www.archer.ac.uk">ARCHER</a>, the UK's national
supercomputing service, offers training in software development and
high-performance computing to scientists and researchers across the
UK. As part of our training service we are running a 2 day Software
Carpentry workshop.
</p>
<p>
<a href="http://software-carpentry.org">Software Carpentry</a>
workshops help researchers become more productive by teaching software
development skills that enable more to be done, in less time, and with
less pain. We will cover skills including version control, task
automation, good programming practice and automated testing. These are
skills that, in an ideal world, researchers would master before
tackling anything with "cloud" or "peta" or "HPC" in their name, skills
that enable researchers to optimise their time and provide them with a
secure basis to optimise and parallelise their code.
</p>
<p>
This workshop is being run by <a
href="http://www.epcc.ed.ac.uk">EPCC</a>, as part of ARCHER. The
workshop is in collaboration with EPCC's <a
href="http://www.prace-project.eu/PRACE-Advanced-Training-Centres">PRACE
Advanced Training Centre</a> (PATC), and Software Carpentry, a <a
href="https://wiki.mozilla.org/ScienceLab">Mozilla Science Lab</a>
initiative.
</p>
<p>
<strong>Who:</strong>
The workshop is aimed at graduate students, post-docs and other
researchers. You must have some experience of writing code or scripts
and be familiar with programming concepts including conditionals,
loops, arrays and functions. You should also be comfortable with using
the bash shell. For an introduction to the shell, please see, for
example, Software Carpentry's lessons on <a
href="http://software-carpentry.org/v5/novice/shell/">The Unix
Shell</a>.
</p>
<!--
This block displays the address and links to a map showing directions.
-->
{% if page.latlng %}
<p>
<strong>Where:</strong>
{{ page.address }}.
Get directions with
<a href="//www.openstreetmap.org/?mlat={{ page.latlng | replace:',','&mlon=' }}&zoom=16">OpenStreetMap</a>
or
<a href="//maps.google.com/maps?q={{ page.latlng }}">Google Maps</a>. Directions for <a href="http://www.ph.ed.ac.uk/about/finding-us/getting-to-jcmb">Getting to the James Clerk Maxwell Building</a>. Kings Buildings Campus accessibility map (<a href="http://www.docs.csg.ed.ac.uk/EstatesBuildings/Development/Access%20Guides/KB%20Campus%20Accessibility%20Map.pdf">PDF</a>), James Clerk Maxwell Building accessibility guide <a href="http://www.docs.csg.ed.ac.uk/EstatesBuildings/Development/Access%20Guides/James%20Clerk%20Maxwell%20Building%20(JCMB)%20Guide%20to%20Access.pdf">PDF</a>.
</p>
{% endif %}
<!--
Modify the block below if there are any special requirements.
-->
<p>
<strong>Requirements:</strong>
Participants must bring a laptop with a few specific software packages installed
(listed below). They are also required to abide by Software Carpentry's
<a href="http://software-carpentry.org/conduct.html">Code of Conduct</a>.
</p>
<!--
This block automatically inserts a contact email address if one has been specified for the page.
If one hasn't, this block inserts the generic contact address for Software Carpentry.
-->
<p>
<strong>Contact</strong>:
Please mail
{% if page.contact %}
<a href='mailto:{{page.contact}}'>{{page.contact}}</a>
{% else %}
<a href='mailto:{{site.contact}}'>{{site.contact}}</a>
{% endif %}
for more information.
</p>
<hr/>
<h2>Registration</h2>
<p>
To register, or to get more information, please, visit the <a
href="http://www.archer.ac.uk/training/">ARCHER training page</a>.
</p>
<hr/>
<h2>Schedule</h2>
<div class="row-fluid">
<div class="span6">
<h3>Day 1</h3>
<table class="table table-striped">
<tr> <td>09:00</td> <td>Introduction and software set-up</td> </tr>
<tr> <td>10:00</td> <td>Version control with Git</td> </tr>
<tr> <td><em>10:30</em></td> <td><em>Coffee break</em></td> </tr>
<tr> <td>11:00</td> <td>Version control with Git</td> </tr>
<tr> <td>13:00</td> <td>Lunch break</td> </tr>
<tr> <td>14:00</td> <td>Building programs with Python</td> </tr>
<tr> <td><em>15:00</em></td> <td><em>Coffee break</em></td> </tr>
<tr> <td>15:30</td> <td>Building programs with Python</td> </tr>
<tr> <td>17:00</td> <td>Close</td> </tr>
</table>
</div>
<div class="span6">
<h3>Day 2</h3>
<table class="table table-striped">
<tr> <td>09:00</td> <td>Automating tasks with Make</td> </tr>
<tr> <td><em>10:30</em></td> <td><em>Coffee break</em></td> </tr>
<tr> <td>11:00</td> <td>Automating tasks with Make</td> </tr>
<tr> <td>12:00</td> <td>Lunch break</td> </tr>
<tr> <td>13:00</td> <td>How (and how much) to test programs</td> </tr>
<tr> <td><em>14:30</em></td> <td><em>Coffee break</em></td> </tr>
<tr> <td>15:00</td> <td>How (and how much) to test programs</td> </tr>
<tr> <td>16:00</td> <td>Best practices for scientific computing</td> </tr>
<tr> <td>17:00</td> <td>Close</td> </tr>
</table>
</div>
</div>
<hr/>
<h2>Syllabus</h2>
<div class="row-fluid">
<div class="span6">
<h3>Version Control with Git</h3>
<ul>
<li>Creating a repository</li>
<li>Recording changes to files: <code>add</code>, <code>commit</code>, ...</li>
<li>Viewing changes: <code>status</code>, <code>diff</code>, ...</li>
<li>Ignoring files</li>
<li>Working on the web: <code>clone</code>, <code>pull</code>, <code>push</code>, ...</li>
<li>Resolving conflicts</li>
<li>Open licenses</li>
<li>Where to host work, and why</li>
<li><a href="novice/ref/02-git.html">Reference...</a></li>
</ul>
</div>
<div class="span6">
<h3>Building programs with Python</h3>
<ul>
<li>Using libraries</li>
<li>Working with arrays</li>
<li>Reading and plotting data</li>
<li>Creating and using functions</li>
<li>Loops and conditionals: <code>for</code>, <code>if</code>, <code>else</code>, ...</li>
<li>Defensive programming</li>
<li>Using Python from the command line</li>
<li><a href="novice/ref/03-python.html">Reference...</a></li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<h3>Automating tasks with Make</h3>
<ul>
<li>Make is not just for compiling code</li>
<li>Basic Tasks</li>
<li>Automatic Variables and Wildcards</li>
<li>Patterns</li>
<li>Variables</li>
<li><a href="intermediate/make/reference.html">Reference...</a></li>
</ul>
</div>
<div class="span6">
<h3>How (and how much) to test programs</h3>
<ul>
<li>Can I do testing?</li>
<li>Big Tests and Little Tests</li>
<li>End to End</li>
<li>Unit Testing</li>
<li>Putting Tests Together</li>
<li><a href="novice/testing/index.html">Reference...</a></li>
</ul>
</div>
</div>
<hr/>
<!--
Edit the setup instructions in _includes/setup.html to reflect your workshop.
(In particular, most workshops teach either Python or R, not both.)
-->
<h2>Setup</h2>
<p>
To participate in a Software Carpentry workshop,
you will need working copies of the software described below.
Please make sure to install everything
(or at least to download the installers)
<em>before</em> the start of your workshop.
</p>
{% include setup.html %}
<h2>Check your setup</h2>
<p>
To check you have the correct version of Python:
</p>
<ul>
<li>
Download <a href="./setup/swc-installation-test-1.py">swc-installation-test-1.py</a>
</li>
<li>Open up a bash shell</li>
<li>Change into the directory where you put the script</li>
<li>Run the script:
<pre>python swc-installation-test-1.py</pre>
</li>
</ul>
<p>
To check you have the necessary software and tools:
</p>
<ul>
<li>
Download <a href="./setup/swc-installation-test-2.py">swc-installation-test-2.py</a>
</li>
<li>Open up a bash shell</li>
<li>Change into the directory where you put the script</li>
<li>Run the script:
<pre>python swc-installation-test-2.py</pre>
</li>
</ul>
<hr/>
<h2>Recognising prompts and how to exit</h2>
<p>
If you find yourself in a shell that you don't recognise, or in an editor that you can't get out of then see <a href="novice/ref/05-prompts-exits.html">Recognising prompts and how to exit</a>.
</p>
<hr/>
<h2>Useful links</h2>
<p>
Course materials:
</p>
<ul>
<li>
Attendee <a href="http://github.com/hpcarcher/2014-12-03-edinburgh-students">slides, sample code and scripts</a>
</li>
</ul>
<p>
Software Carpentry online lessions:
</p>
<ul>
<li><a href="novice/git/index.html">Version Control with Git</a></li>
<li><a href="novice/python/index.html">Programming with Python</a></li>
<li><a href="intermediate/make/">Automating tasks with make</a></li>
<li><a href="http://software-carpentry.org/v4/make/index.html">Make</a> (v4)</li>
<li><a href="http://software-carpentry.org/v4/test/index.html">Testing</a> (v4)</li>
</ul>
<p>
Git:
</p>
<ul>
<li>
GitHub <a href="https://try.github.io/levels/1/challenges/1">interactive Git tutorials</a>
</li>
<li>
<a href="http://justinhileman.info/article/git-pretty/">Git pretty</a> - a flowchart about how to recover from mistakes.
</li>
<a href="https://presentate.com/bobthecow/talks/changing-history">Changing History, or How to Git pretty</a> - slides relating to the above.
</li>
</ul>
<p>
Python:
</p>
<ul>
<li>
<a href="http://matplotlib.org/gallery.html">matplotlib examples gallery</a> - includes source code.
</li>
<li>
<a href="http://wiki.scipy.org/Cookbook">SciPy Cookbook</a> - examples of how to do useful stuff using numpy, scipy, matplotlib, interfacing, etc.
</li>
<li>
Scientific Python <a href="http://scipy-lectures.github.io/">lecture notes</a></li>
</ul>
<p>
Training:
</p>
<ul>
<li>
<a href="http://www.archer.ac.uk/training/">ARCHER Training</a> - free HPC training all over the UK.
</li>
<li>
<a href="http://www.codecademy.com/">Code Academy</a> - free online programming courses</a>
</li>
</ul>
<p>
Papers:
</p>
<p>
Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, et al. (2014)
Best Practices for Scientific Computing. PLoS Biol 12(1): e1001745. <a
href="http://dx.doi.org/10.1371/journal.pbio.1001745">doi:10.1371/journal.pbio.1001745</a>.
</p>
<p>
Sandve GK, Nekrutenko A, Taylor J, Hovig E (2013) Ten Simple Rules for
Reproducible Computational Research. PLoS Comput Biol 9(10): e1003285.
<a
href="http://dx.doi.org/10.1371/journal.pcbi.1003285">doi:10.1371/journal.pcbi.1003285</a>.
</p>
<p>
Noble WS (2009) A Quick Guide to Organizing Computational Biology
Projects. PLoS Comput Biol 5(7): e1000424. <a
href="http://dx.doi.org/10.1371/journal.pcbi.1000424">doi:10.1371/journal.pcbi.1000424</a>.
</p>
<p>
Ram K (2013) "git can facilitate greater reproducibility and increased
transparency in science", Source Code for Biology and Medicine 2013,
8:7 <a
href="http://dx.doi.org/10.1186/1751-0473-8-7">doi:10.1186/1751-0473-8-7</a>.
</p>
<p>
Glass, R. (2002) Facts and Fallacies of Software Engineering, Addison-Wesley, 2002. (<a href="http://ff.tu-sofia.bg/~bogi/France/SoftEng/books/Addison%20Wesley%20-%20Robert%20L%20Glass%20-%20Facts%20and%20Fallacies%20of%20Software%20Engineering.pdf">PDF</a>).
</p>