Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:00
alright i wonder well hello thanks coming into my talk
00:00:04
hi my name is no welsh um i work at
00:00:08
two places um which postcard consultancy is on the school which
00:00:13
it's the c. u. k. and you can market and in the product which is working in the us
00:00:20
so this talk is about teaching scholar i wanna give you a little
00:00:24
bit of background and motivation and then uh if you force and torque
00:00:29
so let's start with where i started which was um teaching sky
00:00:33
laughter don't about ideas now and um i i discovered from teaches collapse
00:00:41
speak languages i think we'll know and um it was
00:00:45
just call the first few times i data headphones and structure
00:00:49
how much was colour if not only was it like the the the constant retort is also the teaching itself
00:00:55
which i realised was quite interesting scale to programming probably
00:00:59
maybe you could program it doesn't mean you're a good teacher
00:01:04
i think uh people have experience of teaching so people someone off the street they you
00:01:09
may do better job than if you pull street nothing to do some programming for example
00:01:14
whether the floors part time it doesn't mean that the ceiling is low
00:01:18
uh that's a lot of um i mean you can do in your teaching
00:01:25
the other thing is that i believe teaching isn't undervalued scale in our industry this room should be full
00:01:32
yeah um the reason i say that i think it teaches really essential part
00:01:37
of a lot of us to in a job to me maybe don't appreciate that
00:01:40
so if your i sing yeah develop off it's probably an explicit
00:01:45
part of your job description that you'll be teaching and mentoring juniors
00:01:48
so something you need to do to improve the output of your scene protocols you team and that's really your role
00:01:56
the other things where i think um teaches important examples coverage we're we teach people who are under represented
00:02:02
in tech community try to get them into scully community nothing is a very battles thing that we're doing
00:02:08
and finally um we teach s. else instruct consider changing new things happening across
00:02:15
colour three coming out next year for example and so we really need to um
00:02:22
i know
00:02:25
yeah
00:02:30
yeah
00:02:32
oh i have okay um others could talk a little bit of
00:02:37
so the skills for teaching um actually for useful for learning and so
00:02:43
use and disclose which news into teaching us else learning new things we need to learn to stay relevant as a developer
00:02:50
so i talk i'm gonna have a five to teaching i try to make diesel i'm not
00:02:56
very actionable things you can take away straight away and use in your in teaching teachers colour
00:03:02
and i'm gonna give you five further resources where you can go to get more information if you're interested in exploring server
00:03:09
i'm a little more structure when talking right yeah so the first thing when people talk about teaching programming and it's nice i
00:03:16
always awed you ever language choice yeah see people saying you should be using cotton they should using java script that kind of thing
00:03:22
well um i have opinions on that myself of this talk is given that we're talking mouse colour
00:03:27
i'm writing is that a function programming is much simpler model
00:03:31
which uses for teaching beginners but it's already relevant to this
00:03:35
talk so we'll be focusing on its that is curriculum which
00:03:39
is what you teach and pedagogy which is how you teach it
00:03:45
okay so the team meetings on the talk about just getting to survive to teaching and different one is
00:03:52
this idea of an ocean shane um possibly something unheard of before so that's getting and scribe but that is
00:04:00
so teaching a mesh machine something you need to take the for beginners and it's a
00:04:04
different strain giving them understanding her model they can understand a code when work with all
00:04:10
yeah what we call cargo coaching so basically copying and pasting kurt any real understanding and when i look at
00:04:16
a lot of the online resources for that i think that's covered i see
00:04:19
a lot of what i think is falling to the cocker coaching this uh it
00:04:25
it's the area um where people are not been given the i a. e. a. model of the machine
00:04:32
so they can't really understand what occurred is doing that just copying and pasting make small tweaks
00:04:37
so no show sheen is some kind of simplified
00:04:41
or abstract machine model that explains the programming language semantics
00:04:47
um when you hear that you probably think of something like a like a coverage the machine or
00:04:51
something the stacking activists and fancy to you or just doesn't call stack and that kind of thing
00:04:57
but in function programming as much simpler machine we can use and that is a substitution
00:05:04
so what is substitution um melissa lurk
00:05:08
so say we have this expression um i asked this occasionally interest different places
00:05:16
can anyone tell me what's a plus i is going to play sometimes a good responses sometimes we don't
00:05:22
and so the very best finances in the us eventually your peers cases system it much better can i just say is
00:05:29
yes okay and how do we know that we know that because we can basically substitution whenever we see area name
00:05:37
yeah we can substitute in the value of that uh it is bound to so we see a we can
00:05:43
substitute in one area one plus one and then as we know from farms will want when you just to
00:05:49
i can only do the same thing but you do it for the times the we have the name event that value to
00:05:56
so today in two times two and cause we get for right so that's
00:06:01
very simple um you know that's primary school stuff so what what's the big deal
00:06:06
the big deal is you can extend this much further you can do substation for methods
00:06:10
so with a message you just substituting in the premises renaming the premises um
00:06:16
if necessary landscaping um anybody in there so but if you have a message cold you can
00:06:23
substitute in the message body such in the parameters for the the values they take and just
00:06:29
you're the right so it works for method calls
00:06:32
he works the types as well you can phone substitution at the type level
00:06:36
so if you have like a list or list a and then you use int
00:06:41
you have a list into conceptual info a a and do that consistently
00:06:46
and in fact what anywhere that you have pew occurred so allows
00:06:51
you to introduce days substitution is going to work um that's nice
00:06:57
and the other point is it's really easy i suspect some of you looking at this the sliding going why am i telling
00:07:03
you about such situation it's so obvious that is understand the point
00:07:08
the point is is easy we don't want to do complicated things
00:07:11
what a complicated things like introducing bridge machines in stacks that you have to maintain when
00:07:15
you do something easy substitution which you learned about informing school that's hundred percent the point
00:07:22
and for me substitution not just the point of using the notion model but it's really the point as
00:07:27
entire functional programming enterprise it's inspection place that everything rests
00:07:32
on so that's why we care about and it's pretty
00:07:36
we don't care about immutable c. for its own sake we don't make a really neat people just so we can say it's new to do
00:07:41
we care about the need to to because it means we can you substitution as a reason in principle
00:07:47
and similarly that's why we care about things like monitor example why do we model effect using
00:07:53
moments because allows to maintain substitution up to the point where we run them on that so
00:08:01
when i think of substitution for me this is really the type point of functional
00:08:05
programming it's maintaining these really really simple model this primary school level model reasoning about coloured
00:08:12
in the face of all the complexities are real card has that's why we care about it
00:08:18
so substitution is yes very simple that's that is a hundred and point but it really is
00:08:23
to me the whole thing that underlies functional programming as far we can't all these
00:08:27
things so we can use is really simple to reasoning to reason to really complicated programs
00:08:34
right that's a decision just like it's going to make a
00:08:41
now did number to do this for programming stretches is something that i think is quite unique
00:08:47
to how we uh teach programming so you probably have funds anywhere else pay attention if you're ready
00:08:55
um the idea behind programming strategies the beacon
00:08:58
make programming into a systematic and repeatable activity
00:09:03
so this means that students are indeed anyone i use these strategies myself and my programming
00:09:08
have a well defined process to take them from problem to solution
00:09:13
something i really so people struggle with in um
00:09:18
the introductory courses what i learn programming in my
00:09:21
undergraduate with first language we use was see i came in having done quite a few years of
00:09:27
pascal programming already so i was used to how things work but i really saw that
00:09:32
my fellow students didn't have that background didn't understand how to take
00:09:35
the language constructs ever towards to actually solve the problems every given
00:09:40
so that wasn't a link between the the the thing the language constructs
00:09:44
and the the problem solving and program strategies provide this this bridge for us
00:09:50
the uh like designed happens that i different in in a number of ways why transcription we
00:09:55
talk about the notice corporate design things and also more formal wall kind of formulaic more systematic
00:10:04
um we've identified ten strategies i'm gonna focus on three here
00:10:08
and their strategies are activated type structure corrosion and foreign types
00:10:13
i'm still interested um who's huh these top two turns
00:10:17
for advocate type destruction and or structure corrosion and say okay
00:10:22
full hand going okay so this wheeling sings if it matches your um understanding i was going to algebraic data types
00:10:31
the key ideas out of prototypes is that when ever
00:10:33
the data is described in terms of a logical hand
00:10:38
or logical all at once you've got that the description
00:10:41
the coat implements that follows immediately in entirely form like
00:10:45
why sort of similar names go for example a has a. d. i. and the c. then we can really right
00:10:55
final case costs okay let's be and say right that's the direct encoding it's got it's
00:11:02
got two of uh this statement it's different it's got three we got you know um
00:11:09
if you want to know why because classes should be final beta
00:11:13
handsome gentleman it wouldn't sell be telling him that is taught me
00:11:19
um personally if you have a is a. b. or c. and the way
00:11:26
you could that it's gotta you're actually have a few little options but still trade
00:11:31
and into case classes extending yeah you could use a a concealed abstract
00:11:34
class you get basically the same things that was talking about the difference um
00:11:40
again that's a direct including install that statement
00:11:46
so that's an example we say list is a pair warranty
00:11:51
well we have this logical here so that we know we need to use at warp and then we
00:11:56
can midi right out to the list but it has got texans list focus as in t. extends list
00:12:02
that's just taking the uh pass and we had a idea and substituting in this turn into haiti in c.
00:12:11
that's a pair has i had an detail and we have a lot of hands yeah
00:12:19
and we could go and use the the and pass me solely a head and self i need to put types on this
00:12:26
so say has a type of a a and silence type of this
00:12:29
day i mean it's a little bit more well meeting choose the type variable
00:12:35
we have had to taipei and silently stay that's all very formulaic um
00:12:43
you don't you might be looking this in going to the study covariance yes it
00:12:46
could be i just come to simplicity uh i don't want to explain covariance and
00:12:51
invariance all kind of stuff so you're wondering that this one doing um if you're not wondering that
00:12:58
that's absolutely fine don't need to know about you talk about covariance that kind of stuff right so
00:13:07
this is way we have to drive this data structure which is very
00:13:10
similar to the built in this is carla just directly from that description
00:13:14
all discouraged follows immediately from the description we were given no thinking required
00:13:21
stephen structure persian structure question is in some ways of
00:13:25
indices outbreak data types out every day types about building data
00:13:29
this structure persian is about transforming our prototype uh
00:13:33
kind of tearing it down and maybe doing something new
00:13:38
and we'll here is any transformation you want to write
00:13:42
on an elevator type can be expressed using structure recursion
00:13:46
that's the thing you have to express using structure corrosion there may be some helper methods like your map
00:13:52
and so on that up to the job of simply for you you can you structure correction to do this
00:13:58
this is great for like two new developers i don't know the a. t. i.'s yet to they can just kept
00:14:02
buying occurring in something working and then you can help them clean up make a little bit shorter use move built ins
00:14:09
um so okay and that's nice but the structure recursion well to waste intimate install off something
00:14:16
or scarlet many ways to do things and we didn't terms pattern matching or polymorphism um um
00:14:24
i don't want should both to takes too much space anything could be ready and useful to so i'm just going to choose
00:14:29
have matching for my examples should probably more idiomatic n. f.
00:14:33
p. well sometimes people from uh our back from friday's polymorphism
00:14:37
and get the same goal is slightly different trade also for the to them it's not ready that important for this discussion
00:14:45
so
00:14:47
um structure corrosion has to
00:14:51
patterns which match the two patents whistle for algebra data types happens all and
00:14:56
hand for the and so when you say when a is it b. or c.
00:15:01
well we just need to handle those cases you have i imagine it would say we're gonna do fifty we're gonna do if it's a
00:15:09
it's a structure corrosion gives us all of this left hand side yeah and in the right hand side question marks of this is
00:15:16
a problem specific parts of it every have to figure out have
00:15:19
cells unfortunately have to a little bit of thinking choice disappoints me
00:15:25
then the other kind of need to answer it is a present and hand a has a busy and uh see
00:15:31
well then in that case people the b. and c. out and maybe we use it on the right hand side here
00:15:37
so the two patterns and actually depends on how to prototype and and all pretty simple stuff
00:15:44
one important thing we need to have in hand that's case my trash and we get the structure corrosion name from
00:15:50
that tells us when the data is recursive then the method is also because
00:15:54
of this gives us a little bit on the right hand side free so
00:15:59
for example when we talked about the list we saw all the tail here tail
00:16:04
is a list sorry this about the data is recursive so for any structural corrosion
00:16:10
on a list we never ever gonna have recognition here on the right hand side i so all of this
00:16:20
kurt comes directly from the structure corrosion skeleton it's not something that the
00:16:25
also have you don't think about when you're reading this all you need to do the work
00:16:30
out the base cases and this kind of incremental bit because asians given to you something yeah
00:16:36
old people allegedly struggle within programming is recursion structure could you don't have to
00:16:41
struggle is program here you have to think about it come directly from the pattern
00:16:46
what we have to think about here is what's the deal step you need to do
00:16:49
to take from the recursion to go to the next on stuff so it's very simple
00:16:56
i still we do have bits that we need to figure out ourselves question marks and so how do we can play these
00:17:05
that's where the final passing comes and following the types sis is another tool we can use
00:17:11
to guide us through solution just no way that the force guarded luke disjointed s. stuff
00:17:17
we can use the type to guide us stronger programming problems and maybe for the types that we work out
00:17:25
was goal was the type that we're trying to generate
00:17:28
what is available well the one of the things we haven't scripted we can
00:17:32
use and then we basically disassemble the stick sort of coffee through the types
00:17:37
so you probably done this before this is just giving a name in a
00:17:40
bit of a full processed or something you i suspect most you have already done
00:17:45
so let's take a look at a map said we not talking from a map on list
00:17:51
this type signature just comes from that this is given as they given format is
00:17:57
the first thing to notice is for transferring out about daytime sorry mainly structural collision bearing we get it straight away
00:18:05
i was commenting here cover corrosion rule so in fact we can get this we know we go on vacation here now we
00:18:13
need to do you have question marks now ready to follow the
00:18:17
types celeste look at the empty case first because it's simple one
00:18:23
first thing is to find the call and
00:18:27
the goal is given by the return type here just to be say that cycle
00:18:32
make you know that comes this today it's okay what we have available skipped you quickly
00:18:40
and we see in scope we have f. function maybe
00:18:46
um we also have the construct is sufficient to get construct as always in scope and they have
00:18:51
these types anti racist as a as a list he say he stay i mean look at this
00:18:59
the types we make a list to be well we have nothing of taipei supplies function to so we can use it
00:19:06
we can't use test similarly because we don't have anything type by anything we can
00:19:10
do is call this constructor that's the only possible thing we can do so this case
00:19:17
so we have to do to guys in there we caught right this
00:19:20
coding correctly the types make it impossible for us to get this case wrong
00:19:27
yeah let's look at the pack case was can can same goal is to
00:19:30
be a what's available well we have the f. again we have a constructors
00:19:37
and here we have some additional information should head to tail and recursive call
00:19:42
i'm not so put those in as well i had a a a list a a and a map list today
00:19:50
and now we have few choices here we could in
00:19:54
this case implemented in um three different ways we could
00:19:59
return empty which probably the most into the wrong thing we could return just listed the which i believe is something as well
00:20:06
probably can't to me that's the the biggest result we can make it as uh we have
00:20:12
first the head of taipei and f. which is goes h. b. o. we can apply a a
00:20:19
this function getting a new value of taipei and then
00:20:26
we can put this value tightly and the curse a bit into pair to produce a
00:20:32
list of taipei and that is the crux ocean the final but we're left with is justice
00:20:39
classical what goes in here the parameter um much greater very
00:20:43
quickly goal here is given a three meter function from h. b.
00:20:48
and we only have one available f. or maybe get it done
00:20:54
so that's how the types goddess implementing this function it's a very simple example 'cause i
00:20:59
want something to since light isn't as many of you can use this in much larger cases
00:21:04
i can see that there was very little room to go wrong once we
00:21:08
have these tools available to ask uh most away structure correction any follow the types
00:21:13
and for them to case we had to get the right answer have for
00:21:17
the case of heather three possible solutions but it's very obvious that to them interaction
00:21:23
so this way we can make programming he systematic repeatable enterprise something
00:21:29
that became people can do much more efficiently than i already do
00:21:34
alright so talked a lot about programming such don't emphasise that
00:21:41
coding is monitoring programs mormon programming to come in teaching uh begin is
00:21:47
there are many other skills that they need to have for example i need to
00:21:53
perhaps the bugs at her happy today ever as which is more than just the biking occurred
00:21:57
these know how to use the tools like editors and version of control and so on
00:22:02
if for example who has ever had skull c. say this them i have
00:22:08
expect to type maybe got type ah and that's probably that was my first was the first time this happened
00:22:16
can have actually what i meant to ask a little bit better in recent
00:22:19
versions of these tells you that there's a isn't it come from different places
00:22:25
but still with a greater message and then you might have get so used to hatched detached had stage
00:22:32
this mean you're some kind of edwardian ghost wandering around with
00:22:35
you had talked under your ah um i don't know maybe does
00:22:42
the point is there's a lot of interest and knowledge but we don't
00:22:44
normally teach as part of programming that that's tunes need to have the need
00:22:48
to know how to read these are messages when scott sees at some random
00:22:52
garbage what does it actually mean can translate this into a format that is
00:22:57
a meaningful and suddenly the gets when it has its famous the terrible error messages
00:23:03
uh it's fame steep for user interface how to actually do this effectively
00:23:08
there's also knowledge here that we don't normally considered to be part of
00:23:11
programming to save it is really important how use editor efficiently had together anchored
00:23:18
that one we can solve the problem is we can create courses i teach this that's fine but if
00:23:24
i can contact of teaching summer school you probably don't wanna take a six weed eater to
00:23:29
discuss editors in version control and so on so one way
00:23:32
you can do this teaches implicitly and that is too light coding
00:23:37
like cutting is great for doing this you may be thinking oh i think like korea don't wanna
00:23:41
do that because i definite can't think untied at the same time i mean make loads of arrows
00:23:47
that's a hundred percent the point the point is to make these are as
00:23:52
get these funny compiler missus show up and then you demonstrate ever coverages situations you show then
00:23:58
you made a mistake when making era in front of students austin you wanna quickly get out of
00:24:04
you wanna show them slowly how you happens are awesome what you think the error is you know
00:24:09
getting gauge them on their 'cause they're gonna run it'll is very themselves and they need to know how to get out of that
00:24:15
the other thing is them straining to use your coding in your hotel you can show them how you get
00:24:19
around the career you compile hey do these kind of things we take for granted but yet people need learn sometimes
00:24:26
and um yeah deftly when you get an error it's a great teaching moment
00:24:32
actually you get a bit where your brain has frozen you don't know what to do if
00:24:36
the person got changed to the students what do you think we should do in this case
00:24:42
and it doesn't look at the time they may fix yeah well i may just sort of spin then circles for a little bit by
00:24:47
the way the the time itself to rebuild your brain and then
00:24:50
figure out what's going on um if they can't figure out for you
00:24:56
alright so yeah the results implicit knowledge he's be taught somehow around like coding is
00:25:01
is the reason why to do it if you don't know take time to teach explicitly
00:25:06
right i didn't for channel four is shut up
00:25:13
okay enough so did you hear is that thinking while listening
00:25:18
is is difficult if you're dissing someone talking you all the time
00:25:22
it's very difficult to do any thinking anyone has young children is we're
00:25:25
going to turn yeah i'd to you probably know about being talked at
00:25:30
when your kid comes in and just yemen's away you for three ass about mine croft or
00:25:35
whatever they did to school yesterday or whatever the other sibling has don great injustice whatever it is you don't wanna hear
00:25:42
it 'cause you're things think about things to think about and uh yeah it's very difficult to do some is talking at it
00:25:50
it's the same thing when you're teaching programming right
00:25:53
you need you people time and think i'm probably isn't he will help you wanna get in there
00:25:59
and you when they see they got a problem and you wanna jump in and help to solve it
00:26:04
so i uh but more effective way of doing that is firstly take step back given a little
00:26:09
time sorting sound cells looks like they're not gonna be have to sort out rather than jumping in helping
00:26:17
say didn't some problems maybe for thinking disliking and when the kids comes i may
00:26:23
yeah just wanna go storming in in it and you say well
00:26:27
what he d. huge maybe can sorta yourselves kind of big and apparent in
00:26:33
um together some problems for ah for thinking you know like saying what strategies are you using
00:26:41
tape use programming strategies prompt them like you know this structure
00:26:44
corrosion problem kinda think explicitly about how they're approaching a problem
00:26:49
so they can do it with a medical tinted thinking what technique uh my using to address
00:26:54
this problem that can be more where the room technique making formal is it a little bit more
00:27:01
well perhaps you can give them simpler feedback say well i you know i think your code is wrong here
00:27:08
just direct them towards where there is but then don't tell them the solution what do
00:27:12
you think that's the case what is things going wrong yeah i things where should look
00:27:17
or maybe just get them to voice the the mental models you can say sort of
00:27:22
explain to me the what you're doing or explain to me what you think is going on here
00:27:27
and this is great because it gets into ready available as well that's thinking i want to do that i might find that it's
00:27:34
incoherent often the case where we think we have a consistent model but uh since we have to
00:27:39
present to the relevance for holes and that way you get the streams to sort of format and sells
00:27:45
as as much as we would like to be the case we can't do the learning for the students we have to let them do that
00:27:52
jobs teacher is present material you need to do that um this so completely hands
00:27:58
off approach of just his to have fun doesn't work as effectively as as active teaching
00:28:06
we also and uncovering trick flaws in the mental models so
00:28:12
put them for them try to get them more structure in the programming try to get them to resemble the thinking so you
00:28:17
can find out where the problems on you can correct that they're just jump in and say this is what you need to
00:28:24
and if you can help um yeah then bizarre calls sort of
00:28:27
all all truth solving the problems okay to number five is pay learning
00:28:36
great for the the lazy teacher this means getting students to teach each other
00:28:43
now one of the best place to learn is to teach
00:28:48
why's that well it forces you to really understand the material you need an
00:28:53
area all been nuances any to have that consistent model way of explaining it
00:29:01
so teaching is a great it's great for this great generate a coherent model
00:29:07
anything at the t. just used to teach each other then you're forcing them to develop that coherent model right so how can um
00:29:15
i can you do this and giving it a three wise exchange can teach each other the last of ways
00:29:19
out there if you're interested when lecture theatre is also
00:29:22
give some ideas um number one is like michael hypothesis came
00:29:28
so this works in in large classes where you don't maybe don't have time
00:29:31
to talk in everyone individually what you can do is you can ask question
00:29:37
and you can then get students to our answer that question to take a guess on slack question
00:29:44
and then this is the that this makes it better then i'm just getting into town to question eventually
00:29:51
are you choose your satin voicing like raise your hand for different ounces or if sometimes people have like fancy
00:29:58
um frame basis inserted convert on it doesn't really matter how you do this just so promptly and components uh
00:30:06
and then you can get in to justify the onset another student and this is to keep it
00:30:12
this is the learning happens because and they they chose announce and i tend to someone else explain why that that's correct
00:30:18
asking like our one thinking doesn't make any sense that that doesn't model doesn't work
00:30:22
on it or just by thinking maybe does make sense they can learn from each other
00:30:27
so um time efficient simple way of getting people to teach each other
00:30:33
another program specific tool is paper i mean i'm looking to do this here to
00:30:38
change think one keyboard or going to the mall programming many students and when people um
00:30:45
i've done this in some cases actually looks pricing well when you're reading gauge students that were shouting at
00:30:49
each other yeah it's it's impossible to jump on the keyboard every twenty gauge you it can work very well
00:30:56
the key thing here is don't let anyone just like how the keyboard into was typing
00:31:01
t. when you have different skill levels is very tempting for the most good person take you can if you wanna share to do it and then
00:31:07
the last your personal me just gets left behind so it has not talking
00:31:12
must be active must be thinking nothing day she was talking to be effective
00:31:17
on the lock inside a pair programming maybe got a spare
00:31:21
itself uh there is is to put the aperture screen sharing application
00:31:26
and they have this paper going on which i think is quite good if you're not experience of pair programming training reading that
00:31:32
and the church technique i want to mention is the famous rubber dart user
00:31:36
rather docking before i i've okay yeah so right so we all this idea
00:31:41
as is basic e. when you don't have someone around to talk to
00:31:45
explain to you know inanimate object just basically pay programming for one now
00:31:52
so you you can you be forced to make your mental model um vote placement model
00:31:58
and then you see all these for sunday i was think we've all had that experience all
00:32:02
maybe reading email like two main is i have this problem one trend is not
00:32:06
do this is this the you know yeah okay i see sierra seems rather email
00:32:11
it's the same thing it just barely making a false explicit and then
00:32:14
your um see there isn't much kinder to server use of teaching itself
00:32:22
um i recommend doing it okay so let's uh my five top tips and but there's
00:32:30
lots more i could say someone give you five more little sister katie for for the learning
00:32:36
so five of a little says number one his are this paper ten quick to teaching program
00:32:44
so it's twice the value of my talk discontented streisand five um is very easy redone again
00:32:50
the various things that are very directly applicable to teaching very supply stuff not matching the theory
00:32:58
yeah in the get the really um it's pretty good
00:33:04
them to is is book co teach together um by a guy called craig wilson
00:33:10
i don't think we have having read a book it's official work i think's a hundred and something pages long
00:33:17
but very good contents on teaching in general um one thing that
00:33:24
all these results as lack is the thing that we can do in functional programming yeah i'm such a
00:33:30
program has its strong mathematical model we can leverage for things like the program is traded i discussed the idea
00:33:36
structure correction at the prototype okay you're not gonna find much of that uh in but it sure about loss of
00:33:43
the the other technique you find in results like this i'm greg wilson also this book is worth following his eyes uh
00:33:51
writing a new book right now teaching tech think oh maybe that dating is go come on essential by the way
00:33:57
um i'll be having really of what is doing when it's finished um number three how to design programs
00:34:06
is inspiration for our programming strategy so this is a book in the
00:34:12
um for programming well they use scheme to teach programming so lots of
00:34:17
ugly prince these um this preface all this idea of you can make programming
00:34:24
systematic you make programmer people um how to design programs
00:34:28
itself is is quite a a big book and it news
00:34:34
very slowly so i'm not sure it's something that you necessarily
00:34:39
want to take directly but heartache lot inspiration from their approach so well what look if you're interested in that thing
00:34:48
um so all of those attend for fixing programming
00:34:53
moving away from programming into the wider world or the education ideas as an enormous amount of research
00:34:58
out there and one thing that i like as somebody's not expert on teaching is is visible learning side
00:35:07
what this is is a guy called john hattie who is
00:35:10
done on a number of net uh it's views of you lecture
00:35:16
that means you take an lots of studies and he's advocating the results of many studies
00:35:21
looking it takes a look at and try to work
00:35:24
out some more effective what taking some more effective um
00:35:29
and so you can use just focus on those techniques
00:35:34
now um there are some reasonable questions about whether he is
00:35:40
the effect sizes you reports the numbers he reports are accurate
00:35:44
um you're probably overestimating so yes things
00:35:49
where the techniques which supposedly corresponds to a
00:35:55
like a year or two of improvement or someone going like like through high school
00:35:59
um that seems to me a little bit um high but it's not really important
00:36:06
so much the absolute value them all the water images way
00:36:09
we should be looking around for techniques that are worth learning so
00:36:14
i found a very useful could just cost under which a lot i know these like sort of the top ten techniques is probably the latch
00:36:20
then about rather than looking through and mountain of educational h. f. fun
00:36:27
thing i want to mention is your own tracked us um if you teach
00:36:32
yeah you seen you develop a teaching genius which is in some other context then you're in fact is is
00:36:38
a great way to get data you need to do this didn't really need to really focus on what you've done
00:36:43
free affecting what you've done and say what can you learn from that
00:36:47
so one of the things i'm fixing on the moment is getting better at
00:36:51
strewn interaction and feedback i'm getting strings useful feedback
00:36:56
not jumping in straight away that kind of thing
00:37:00
or maybe knowledge if you've too long so some the the thoughts the slider for my reflections of
00:37:06
courses i've been teaching recently i've i've got something i need to improve on okay
00:37:14
so that's um the main content of one wants to talk about so the inclusion to
00:37:18
no one is that teaching is a scale is definitely it's thanksgiving programming has been good preamp to
00:37:23
make a good teacher an escalation daphne prefab school you can learn um it's a little bit about that
00:37:32
well the point is that i think teaching is very valuable does not really very different from
00:37:37
learning stretches make you could teach you can also use on yourself to help you learn and um
00:37:43
neat little the time something we all have to to whether we
00:37:46
are teaching other one or just recap my five tapes of our this
00:37:53
nation machine have our model of what you're doing you and sammy
00:37:56
doing programming strategies make programming systematic remember uh there's more coding encouraging um
00:38:04
you need to teach those sort of things to be too hasty to jump in when someone struggling
00:38:10
struggling is essential part of learning the need to used to living cells and
00:38:16
getting people to teach each other is a great way to make the learning more effective finally a shout out i'm just coverage
00:38:25
if you are interested in getting more experience in teaching then um yes garbage
00:38:32
vince running in a number of locations how we got one in london and that one starting up in
00:38:38
bay area um i think given you'll probably think you're doing
00:38:42
when kate has been happening yeah that one's colour days um yesterday
00:38:47
so there's options you can join in to uh get more space teaching or you can stop when itself you know
00:38:53
what we need is a website alameda page to a constraint to sign up and away you go
00:39:00
um it's great fun it's really nice to see um keep just improving getting better example
00:39:07
from studies london we have two streams of come along to
00:39:10
this conference and never install for knowledge from what's called days
00:39:14
and i don't agree stuff i think um
00:39:20
because we can involve garbage to all his site and
00:39:26
that's all of us i think if you're tension but again isn't completely tell slightly going up the website um once i
00:39:33
guess time to apply them thankful for your tension and if you have any questions now i love to take them with
00:39:46
oh oh oh uh you
00:39:51
well as you identify him programming strategy the present we hum wagon with uh okay um
00:39:59
there's no way public at the moment we uh kind of working on something to to make them
00:40:06
public uh uh it might be a good paper uh for some academic
00:40:09
journal except i'm quite interested in interacting with the acting community on this
00:40:14
um or if it is a paper will be given access or you will be able to
00:40:18
every have to readers um yeah i think yeah i i i i'm not inspired me talk uh so we talked about
00:40:32
and it's not it's a such does it take error messages
00:40:37
i have tried that a maze than more explicit
00:40:40
uh first maybe writing some documents on all uh_huh
00:40:45
um yeah you said you can make the uh that knowledge explicit so
00:40:50
for example you yeah their courses out there when using did um the to come internally greg
00:40:55
wilson has this project called software carpentry which has the uh to torment get that's probably very good
00:41:02
um it can be done is just is work effort and
00:41:09
life is finite um so you have to choose what you doing so the context as it's garbage for example
00:41:15
we uh had that's six sessions we had about
00:41:20
two hours of actual teaching procession um there's only twelve hours you consider that's like two or three weeks
00:41:26
of university course i'm not very much time if
00:41:30
we spent time explicitly teaching getting these kind of things
00:41:34
probably take a lot of time away from the rest the teaching wanted to
00:41:39
so it's just a trade off uh you get something in commercial settings when we did a training course no me two or three
00:41:45
days we only spent like half a day just talking about
00:41:49
using an editor or interfere messages and those controls same as well
00:41:53
if your your mentoring junior developers thing that that you maybe have a bit more flexibility that again it's taking up time so you
00:42:01
yeah making explicit is great um but you're gonna serve somewhere
00:42:05
and go get torn from somewhere so straight off in a
00:42:10
i'm coming out of seven earth in x. is a great
00:42:15
is editor mitchell spent time learning it but somebody didn't everything huh
00:42:23
yeah i had an eight or war goals to be here i explicitly thing company as hell
00:42:31
companies can hear the thank you page right so i was talking
00:42:37
about um having um cultures mentoring in teaching so on the um
00:42:44
that's a really good question 'cause company spend an enormous amount of money on recruiting
00:42:48
and um i'll not many many developers a particular ideas of silicon valley
00:42:55
move very frequently um so you think that people spend more effort on retaining
00:43:02
um i i'm not i mean crayons is uh
00:43:06
that's something i think we struggle with getting people to recognise the value of
00:43:12
of teaching and mentoring um one ways is to is put in
00:43:16
terms or recruiting like how much you can it spends recruiter developer probably
00:43:21
these ten thousand currency units whatever those will be um
00:43:27
and that is sort of one i mean really we use people say that you know people say you can never hire senior developers
00:43:34
yeah you can't harassing us got relatives so you any real solution
00:43:38
you have is to do during uh by by teacher training them um
00:43:43
and is probably much more cost effective to do that and that people leaving and the connection of
00:43:50
um so that's one motivation i think that works with upper management type people are more concerned about the numbers
00:43:57
they just need to have a control um aspect and that's very hard to do because you
00:44:01
need people to say okay you take time time
00:44:03
away from stuff that's directed delivering features you maybe
00:44:08
you can't have like two weeks print when you're stalking is kind of mode of
00:44:12
continues to experience is already need time to step back and um learns more skills
00:44:18
and they can can call to changes is very hard to do i i something i
00:44:23
struggle with stroll um have seen some great organisations have already have a strong interest in learning
00:44:28
addressing the audience comes from one of them if i'm i'm missing some motivation it
00:44:33
just okay and i just going people may having to continue continue channel people leaving
00:44:39
and they wonder why the yeah it is very difficult problem i think is all that i should change i think organisational change it's hard
00:44:46
i'm always had better answer for that i i i questioned on the front uh
00:44:57
and menu showing examples or especially if you do live coding
00:45:02
uh_huh and what kind of example you choose i mean we
00:45:05
had now all the map example uh_huh and is that something
00:45:11
which is good for beginners because it seems very abstract and um
00:45:15
do you also r. s. u. students what they wanna do this program in or
00:45:21
yeah i think i get to be uh huh it then very much in context so um
00:45:29
example like map map on list a mapping option is something of use for someone who is
00:45:35
in you just got out but expecting to be a commercial developing is caught because
00:45:40
it's introduces basic strategies and it's also explain to them how does the standard lie re works
00:45:46
so you understand option because you implement it yourself you know you can
00:45:49
turn the map and flat map whatever an option so that's not that's not
00:45:53
strange confusing with donna i'm in context of
00:45:58
these garbage stuff for a teaching people new to programming continued programming who um
00:46:04
not always continued preparing something real experienced developers but that's the thing that makes its coverage unique i think these people
00:46:12
we often use graphics i'm doing pretty pictures uh and that's
00:46:16
can be quite motivating to then just to have a mediates
00:46:20
um pleasant results rather than just kind of working occurred in saying text output
00:46:25
example sums changes had the uh we had a a fashion designer
00:46:29
um we have someone who is accountable actually have a history of heart
00:46:34
degree and so they yeah i really enjoyed this graph clapper that was very
00:46:38
motivated to them is panel time tweaking with their their um pictures and someone
00:46:44
um so yeah it for the context if you got more space developers i think
00:46:48
these are these are basic techniques set that people need to learn but if uh
00:46:52
more experience i'd use got a little bit maybe we'll talk about something that's relevant to what they do so
00:46:58
a lot of um function for going involvements idea of interpreters this gives
00:47:02
the separation between this description and action that's the way that you can manage
00:47:07
effects in the functional ways you don't actually care any actions until you got
00:47:10
it wrong i can i am one and she's on save run single whatever
00:47:15
so you are building interpreted to solve the problem of the problem might be sort of validation
00:47:19
maybe can express validation rules as like a little off the language and have interpreted validation rules all
00:47:26
something else um whatever could be a way to find a case study that's relevant to what their problems are
00:47:32
i'm sure the takings come up again and again to at least to something like controllable unexpected for these kind of familiar with here
00:47:39
i'm in a in a company that are somewhat confirms to work on what we talk about
00:47:44
and take it from there okay any further questions with real time only
00:47:55
okay right side so come last me off was happy to take questions

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8337 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2232 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1296 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1157 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1552 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5026 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1113 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1656 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
837 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
394 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
514 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
936 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1974 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1377 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6374 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
484 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
811 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
375 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1342 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
624 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
245 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
163 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
301 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
245 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
304 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
681 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2707 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
754 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
277 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
468 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views

Recommended talks

GADTs in Dotty
June 14, 2019 · 4:41 p.m.
302 views