/
intro.html
207 lines (199 loc) · 6.77 KB
/
intro.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
--
layout: workshop
title: "Software Carpentry: Introduction"
root: .
datetime: Oct 2015
website: http://software-carpentry.org
---
<section>
<h2> </h2>
<h1>Welcome</h1>
<aside class="notes">
Hello, and welcome to Software Carpentry.
</aside>
</section>
<section>
<h1>Our Mission</h1>
<p>
Teach basic lab skills for scientific computing to make researchers more productive.
</p>
<aside class="notes">
Our goal is to teach basic lab skills for scientific computing
to researchers in fields as diverse as cosmology, oncology, and economics.
</aside>
</section>
<section>
<h1>What We Teach</h1>
<div class="container">
<div class="fragment span5">
the Unix shell => automate repetitive tasks
<br/>
Git and GitHub => track and share work
<br/>
Python => build modular code
</div>
</div>
<aside class="notes">
We will cover the basics of the Unix shell, version control with Git, and programming in Python.
What we're really teaching, though, is how to automate repetitive tasks,
how to track and share work,
how to grow a program in a modular, testable, reusable way,
and how to structure data.
</aside>
</section>
<section>
<h1>Science!</h1>
<ul>
<li>
We actually know a lot about both learning and software development.
</li>
<li class="fragment">
Base what and how we teach on the best available evidence.
<ul class="fragment">
<li><a href="http://www.amazon.com/How-Learning-Works-Research-Based-Principles/dp/0470484101/"><em>How Learning Works</em></a></li>
<li><a href="http://www.amazon.com/Making-Software-Really-Works-Believe/dp/0596808321/"><em>Making Software</em></a></li>
</ul>
</li>
</ul>
<aside class="notes">
Three themes will run through our teaching.
The first is that we actually know a fair bit about learning and software development—not everything,
but more than most people realize.
As far as possible,
what we teach and how we teach it is based on the best available evidence,
because that's what scientists are supposed to do.
</aside>
</section>
<section>
<h1>Hands On</h1>
<ul>
<li>
<strike>Slides</strike>
</li>
<li class="fragment">
Use sticky notes to show us how you're doing.
</li>
<li class="fragment">
And for feedback at breaks.
</li>
</ul>
<aside class="notes">
In particular,
we don't teach with slides:
we do everything live in front of you,
using the same tools we use in real life.
In turn,
we rely on you to put a green or red sticky on your laptop
to tell us when things are going well and when they're not.
We'd also be grateful if you could use them to give us feedback at each break:
write one thing that's gone well,
or one thing you've learned that you think is useful,
on the green sticky,
and one thing that confused you or didn't work on the red one,
and hand them in when you go out for coffee or lunch.
</aside>
</section>
<section>
<h1>Seven Plus or Minus Two</h1>
<ul>
<li>
Short-term memory can only hold 7±2 items at once.
</li>
<li class="fragment">
Must structure programs and programming to fit this limit.
</li>
</ul>
<aside class="notes">
The second theme is that human short-term memory can only keep about seven things straight at once.
If the number of facts you need to hold in your head to write or understand the next line of code crosses this threshold,
your error rate will go up and your productivity will go down.
The most important thing in programming is therefore to structure software so that
you only need to pay attention to a few things at once.
</aside>
</section>
<section>
<h1>Mental Fatigue</h1>
<ul>
<li>
Brains get tired after 45-90 minutes of concentration.
</li>
<li class="fragment">
Must structure tasks so that they can be completed in this time or less.
</li>
<li class="fragment">
And move around in between to re-oxygenate.
</li>
</ul>
<aside class="notes">
The third theme is that your brain gets tired just like any other part of your body.
More specifically, under most circumstances you can only concentrate for 45-90 minutes
before you stop absorbing new information.
The second most important thing in programming is therefore to break down programming (and other things)
so that every task can be completed in this much time or less,
and to get up and move around for a few minutes between each work sprint
in order to flush fatigue poisons from your brain.
(Catching up on email and Facebook doesn't count.)
</aside>
</section>
<section>
<h1>Mental Fatigue</h1>
<ul>
<li>
Five 8-hour days per week maximizes total productivity<br/>(not just productivity per hour).
<ul class="fragment">
<li>
See <a href="http://legacy.igda.org/why-crunch-modes-doesnt-work-six-lessons">Why Crunch Mode Doesn't Work</a> for a summary.
</li>
</ul>
</li>
<li class="fragment">
So the best way to finish your thesis is to get some rest.
</li>
</ul>
<aside class="notes">
In addition,
a century of research on sleep deprivation has shown that
forty hours of work per week, spaced out, maximizes total productivity.
Any more than this,
and the errors you're making don't just cancel out the extra time:
they actually set you back.
If you really want to get things done,
you should take a walk, read a book, cook a meal, and most importantly, get some sleep.
</aside>
</section>
<section>
<h1>To Learn More</h1>
<table class="table">
<tr>
<td>Our web site:</td>
<td><a href="http://software-carpentry.org">http://software-carpentry.org</a></td>
</tr>
<tr>
<td>Our blog:</td>
<td><a href="http://software-carpentry.org/blog/">http://software-carpentry.org/blog/</a></td>
</tr>
<tr>
<td>Follow us on Twitter:</td>
<td><a href="https://twitter.com/swcarpentry">https://twitter.com/swcarpentry</a></td>
</tr>
<tr>
<td>Contact us:</td>
<td><a href="mailto:admin@software-carpentry.org">admin@software-carpentry.org</a></td>
</tr>
<tr>
<td>Become an instructor:</td>
<td><a href="http://teaching.software-carpentry.org">http://teaching.software-carpentry.org</a></td>
</tr>
</table>
<img src="{{page.root}}/img/software-carpentry-banner.png" alt="Software Carpentry logo" />
<aside class="notes">
If you'd like to learn more,
please check out our web site,
subscribe to our blog,
follow us on Twitter,
or send us email.
And if you'd like to help us teach,
we run an instructor training course online—you'd be welcome on our team.
Now, let's get started...
</aside>
</section>