Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:02
hi everyone i'm welcome to this talked or i will share you would you
00:00:09
some of my experiences for over three years of
00:00:13
teaching scar as a first language at university level
00:00:17
uh um so my name is john like an l. and actually spelled
00:00:22
with two dots but you can skip those um i'm a soft engineering professor
00:00:27
at loon university in southern sweden and my a um main bulk of work
00:00:34
for the several big case have been researching in software requirements engineering in teaching
00:00:40
but i got the opportunity to discover scroll i've eh
00:00:44
um started to write to d. s. l. and four requirements
00:00:49
in this car and felt really productive in at the
00:00:52
same time i had the opportunity as a side project too
00:00:57
help kids discover programming and actually use the kid friendly i.
00:01:03
d. an open source project from india uh um i don't really
00:01:08
with the mace it's how much they could do with the simple
00:01:13
language eh um and then i got the opportunity to start to teach
00:01:18
it's gone that was really special for me actually
00:01:21
because my own uh a program in teacher was retiring
00:01:27
um and i got the opportunity to to teach the new students i've been teaching of mostly
00:01:34
there's more senior students in their fourth and fifth year uh but i i thought
00:01:39
i thought it would be really fun to meet with the new comers to universities so
00:01:44
hi yeah um to go vote uh l. java course two thousand and fifteen and i thought it in java
00:01:50
and at the same time a bootstrap the course material for scholar and then i bit
00:01:55
teaches cough up three years so that's uh um it has been a fantastic journey and
00:02:02
i learned a lot but there has also been some
00:02:07
uh and late nights and the hard working weekends et cetera so i will have to try to condense
00:02:14
and what's the gist of the design of the of the teaching yeah
00:02:21
and we i'll actually have it's rated and the
00:02:24
progression and what you selected a over three years so
00:02:29
i will give you kind of the final just of what we've had but before i start i really
00:02:34
need to make this acknowledgement because i'm really really
00:02:37
happy for all people have contributed very happy for the
00:02:41
hard working students i had a room there had had
00:02:45
really motivated student that really work hard and that's that's
00:02:48
one of the success factors actually and i also have a lot
00:02:52
of older students in their third fourth fifth year is contributing as teaching
00:02:58
assistants um so i have around fifteen feet teaching assistants for one
00:03:03
hundred thirty students each year and they are really uh making this happening
00:03:09
they have the most individual contact i can't have integrated contact with everybody uh um
00:03:16
all the time and they have um and also have a lot of supportive
00:03:20
colleagues that's also really important and without the open source project with a teaching materials
00:03:27
uh you know and i think well that's what
00:03:30
we have developed that's what have manifested or or um
00:03:35
teaching into something that that students can really interact with
00:03:40
and of course the fantastic smaller community thank you so this is this is a um whatever talk about i will
00:03:47
talk about our motivations and why um we change from
00:03:52
george's car um i will talk about how we did it
00:03:58
and what we learned and some thoughts about the road ahead not just for us
00:04:03
at loon universe the but well i think it's important for a beginner adoptions column
00:04:10
so why scholar first yeah my personal discovery of
00:04:15
this call us a teaching language was in this context
00:04:19
so these pictures taken almost ten years ago uh um it's
00:04:23
uh i'm helping kids to discover program in a fun way
00:04:27
and i think that if you have a language that is uh what you can
00:04:32
uh it's concise enough but not too concise where you can do
00:04:35
interesting things then it this can be really good for kids but teaching
00:04:41
nineteen twenty year old uh then students is another thing
00:04:48
a special if they're going to be computer science engineer is uh
00:04:52
um so that that's what i was interested in and i actually
00:04:57
joy and uh the course myself first teachings assistant before i i was head of the course together with
00:05:03
a p. h. d. students of the try to try to learn what what's this is all about the um
00:05:08
so some facts about those students so each year there is around hundred thirty students
00:05:14
and it just here is that they are enrolled at the five year program and they're really motivated
00:05:21
and it's a good is is only ten percent of all the applicants are
00:05:26
uh at mated so it's highly selective admission for this program and this
00:05:31
is also a importance so one third
00:05:36
has never written a line of code
00:05:39
the two thirds have varying degree of pretty knowledge i'm very big span of pretty much
00:05:46
so one of the they've got things is to design a
00:05:49
course that can address this very big span of prior knowledge
00:05:55
so the status of into sweden or swedish all done so that's why the teaching material is in swedish
00:06:01
i will give you links it's open source the in a translator might help you
00:06:06
and uh some and some parts are in english but most are in swedish um
00:06:11
but i will try to give you the just to the content so first a little historical
00:06:16
backgrounds there is a time line of languages at the engineering
00:06:21
faculty at lynn university for the computer science and engineering program
00:06:25
i will call in the c. c. students and so before that program started
00:06:32
we told programming in different for in other programs using our goal and of
00:06:36
first in even would using punch cards et cetera it's an old university uh
00:06:41
yeah but then here you see that the timeline it's in a very much
00:06:44
and out of town way so it's pascal seem uh for first aid justice
00:06:49
calvin seven see your zero and then you can see they had the money of
00:06:53
the hello duke mascot their uh and i think that's a
00:06:57
similar trend in many uh you uh engineering faculty around the world
00:07:02
in this time we were quite early actually in people told us all object on turn
00:07:07
the patient will not be so in much
00:07:11
important in industry and a jar why use maybe
00:07:14
not that interesting et cetera but that was just in the beginning and then you know you
00:07:19
know all this but what happened then two thousand and sixteen just before we celebrated the trend
00:07:25
you've anniversary we shifted to scholar and when i to go so so what i will do now is that it will
00:07:33
talk a little bit about the change so i i was head of course in two thousand or fifteen the last
00:07:38
instance wanted for job and then i i'm told strong
00:07:42
so this is how the program looks now and that uh_huh
00:07:46
so there are lots of other courses the the students read other things in parallel
00:07:51
and the red course there the programming one was two thousand and fifteen stall and that my job was to
00:07:59
just plug in another course without changing anything for the second courses still in java
00:08:06
so it was a kind of challenge to only change this thing and
00:08:10
what did we want to change well them the main goal was not to
00:08:14
teach scholar main goal is to teach programming of course uh and but there was
00:08:21
a couple of things that we needed to achieve so this is the java first iteration
00:08:27
it's actually corps is very popular and successful in
00:08:32
some terms so the exam results are very good
00:08:36
this this students are very happy uh
00:08:40
i'm only thirteen percent fail the first exam
00:08:45
and they get good grades so we we grade them based on the points on the exam so if you have
00:08:51
hi i'm more than eighty three points over out of hundred you get the top rate of five
00:08:58
yeah but there are some problems high performance students were not really challenged
00:09:04
and in the second course the results was not very good
00:09:10
so here we can see the left column is the great it's a given
00:09:15
that you parse the first course you get a greater three four and five
00:09:21
so how did it then go in the second course so this is the java situation the second column here
00:09:27
so if you got the three in the first course you will almost destined to fail or the second course
00:09:34
so bear in mind that it was only a a a few students that got that uh the lowest grade
00:09:40
if you got the fourth or even of high if you got
00:09:43
the top rate still more than a third actually failed the second course
00:09:51
and that was i don't i didn't really like that situation and i
00:09:55
think my hypothesis is that as
00:09:58
uh_huh several students lot fractional students already
00:10:03
felt then you programming and they have programmable time
00:10:07
i know that they had blanks all so black
00:10:10
the areas but they've maybe themselves didn't experience that in the beginning and then they they kind of
00:10:16
i opted out of the teaching and they managed to take the course on the
00:10:19
all the merits but they never really learned how to study programming or study computer science
00:10:25
and so they so when the in the second chorus it's
00:10:29
a bit more challenging from a computer science point of view
00:10:32
and um they didn't have the tools to to to learn
00:10:39
uh several of them so and you can see the third or
00:10:43
the fourth and if a fifth column is the stall a situation
00:10:48
and there is some variation here it it it depends on several things i think the way
00:10:54
we teach and also there's a bit variation maybe in the student that comes in et cetera
00:10:58
but but the the basic uh is mm conclusion here is that
00:11:04
it actually worked the if you see if you got got
00:11:08
the five here last year all the top grades pasta second course
00:11:15
and even if you gots just barely passed
00:11:19
the first course uh that you still had a very good chance to
00:11:23
take the second course if you study so this is another situation so actually
00:11:28
this implementation that i will show you soon was a big success uh um
00:11:34
and and we fulfil our goals are our goal was to increase the learning outcome for everybody
00:11:40
and challenge the students that had three knowledge enough
00:11:46
yeah and both of those goals were met so you can see here the exam results of the scholar course
00:11:53
it the the the the grades are more evenly distribute it is not as easy to get the top grade um
00:12:02
and big another point is important that the school students really liked the course
00:12:07
yeah like this good job because as well but they here
00:12:10
i i got many uh notes about the in kind of interest
00:12:15
in this new language so student meeting it in interesting new
00:12:19
language is important for teaching nothing so how did we do this
00:12:24
yeah well what's the most important and most
00:12:29
difficult was our iteration to arrive at the
00:12:33
even given our context of where the course fit in in the curricula
00:12:37
find the the um a good subsets to teach
00:12:43
and do it in a progression and iterative progression
00:12:46
that makes sense to a student group with very big
00:12:52
spanning free knowledge so so arriving at this here uh um
00:12:57
was maybe the big is it's kind of thing that we it's right or wrong
00:13:03
and i also want to point out to uh my favour it
00:13:05
a categorical books you can check them out later um there are in
00:13:12
kind of two important ideas that i've used when designing the course one one thing is for mark and
00:13:18
sue it's the patterns of variation so in order to understand the concept and and really this book is
00:13:25
if you just teaching and learning as some at as drawing
00:13:29
a language that's growing language to be able to do something
00:13:33
and to to draw your understanding of something through building a language in your head
00:13:38
you need to have these patterns of variation it the while you
00:13:41
learn you contrast things you separate things while you get aware of them
00:13:46
and and when you understand things separately first you then need to
00:13:51
fuse them together in order to be able to do something advanced
00:13:55
so that's the gist of it i will i'll come back to bits about the the the this contrasting thing yeah um
00:14:02
and also this book is really fantastic it's it's summarise is the empirical
00:14:07
in recent empirical knowledge about what works when you try to
00:14:10
learn something difficult or something uh an ambitious or something it was
00:14:16
and and one of the there are many of the nice things in
00:14:19
this and it that bunks a lot of myths with the the learning
00:14:23
but one thing is that we should actually embrace difficulties decide herbal
00:14:27
difficulties if you're going to learn something you need to invest effort
00:14:31
and uh just making it very is smooth and
00:14:35
easy it doesn't really help you to achieve something deep
00:14:40
but if but not the word decide herbal there i will come back to that
00:14:45
so this is a typical study week or the week starts with two lectures that i gave it and then in the middle of the
00:14:53
week there are workshops and for one each student is schedule for one
00:14:57
workshop in in groups of twelve in the sky a school computer rooms
00:15:02
and they have a one teaching assistant so on these are going on a four wednesdays and
00:15:08
thursdays and and in if there is room in the room you can go to several these workshops
00:15:14
and on friday there is uh what's called a lab session it's in many project where you
00:15:18
if you use the things you have worked on workshops workshops
00:15:22
you actions size concepts and you consider each week according to
00:15:26
thirteen and then and in the file you're supposed to write
00:15:31
the eh a bit bigger program that puts these things together
00:15:38
oh so this is actually the gist of the presentation so if you are going back to my slides they will be available
00:15:45
uh and they're all available on guitar and you can go back here and then
00:15:49
you can go to the open source material and check in the compendium which has
00:15:55
uh huh the workshop exercise and the labs for each but the main
00:15:59
i just here is that fee you miss the progression of the themes
00:16:05
so this gives you an idea of the subset that we have chosen to
00:16:09
teach car but bear in mind that this iterative so even if sequences uh um
00:16:16
then um as colour i'll collection a vector or that
00:16:20
we use that week that they have seen it before
00:16:24
but that week is has the focus on data structures sequence so we kind of its rate the stuff and then
00:16:31
some at some point in the course there is a focal point for a certain concept that we dig deeper
00:16:37
into that so there there is iteration here but we
00:16:40
started expressions then we write whole programs we eh um do
00:16:46
functions in order to abstract or parts of programs and understand parameters
00:16:51
in return types things like that we use objects for names space creation
00:16:56
and then we use process when we need one then mall or so it um we have a a
00:17:02
here where there is a a lab call block mall and
00:17:07
where you create the the strained square form
00:17:10
out mall called block mall and uh um
00:17:14
when we need more of them we need classes so instances are introduce
00:17:19
when you wait a through the there and patterns sequences and then there is a mid term
00:17:26
diagnostic tests where you can check uh that you have all and
00:17:30
all the stuff that we're went through the first half of the semester
00:17:34
and then we go on with nested structures which is actually challenging
00:17:38
and so creating nested structures and doing some
00:17:43
algorithms all the nasa structures and then we
00:17:45
introduce more data structures like set some maps and here comes inheritance when we need it
00:17:51
uh uh uh from only point of view they were that right
00:17:55
the fun again called snake and here comes one week where we use
00:18:00
a contrasting as a vehicle for learning so we
00:18:04
actually contrast part since colour with java uh for
00:18:08
two reasons first because they get it if jumping start for the second course which is in java
00:18:14
and they we can also manifests than
00:18:17
the semantics behind syntax were syntax is different
00:18:21
and we can also contrast things like him
00:18:24
you'd ability mute ability statement orientation expression orientation
00:18:30
we have done that already install our but now wait do it across languages
00:18:36
and then there is a final product which is bigger program and they prepare for the final exam which
00:18:42
is written whole exam on paper but all these labs they are assessed so you get kind of continuous
00:18:48
uh examination a continuous access assessment because you need to be a prude on all
00:18:52
the labs in ordered fit to to be allowed to take the final with exam
00:18:59
so i i well actually not be able to go into detail in all of the themes
00:19:03
but in the boat in the beginning of the companion there is actually concepts for each team
00:19:09
a a list the like twenty concepts also that is connected to what we learned that week
00:19:14
in exercise i think that the the translator might help you and most
00:19:17
of the words are similar in english and swedish so you can check about
00:19:21
and we also have a i i i maintain a small
00:19:25
library uh on may the cell phone central called uh into
00:19:29
prague star lab which is a very simple rubber was swing
00:19:34
so that you can start window and crawled pixel based graphics
00:19:39
so with the the one line earnestly to your set to go with that library um but it it's so how did
00:19:48
we deal with this big spectrum of free knowledge well these
00:19:54
are the main uh things that we did so we introduce
00:19:59
variation in the tasks the assignments that we give students so there's
00:20:05
always eh and and minimum thing that you need to do to
00:20:09
be able to follow the progression but on the other hand there's
00:20:13
always things you can do more always interesting things you can go deeper
00:20:18
so the exercises that you work on you during the workshops they they're divided in the foundational
00:20:24
tossed extra tossed in the last august so you do the foundational tossed and if you think
00:20:30
if you find that you you want to more uh at work more on the same thing to
00:20:34
exercise more you do the extra tasks if you've thought that it was quite simple you can go
00:20:39
to the advanced tossed and do something more interesting and several things in advance thoughts will never be
00:20:44
sure walk on the final exam that students are still really interested in in in in trying them out
00:20:51
and then on the labs that are says they need to be approved a um on the
00:20:56
lab uh there are mandatory toss that is the basis for assistance and that will get your
00:21:02
program to work off but the but the problem will be much more interesting if you also
00:21:09
do some of the elective toss but you don't need to do all of them you can do
00:21:13
select a few of them in in order to to build on your problem or you could do
00:21:16
your own elected thoughts if you like just define that students are encouraged always to go for that
00:21:22
as long as they're great is there as long as they are not affected by by uh the
00:21:27
current things and and that's a challenge to keep
00:21:30
the great to keep the the ambition and and um
00:21:35
uh among the students and that that's one of the ideas behind the course
00:21:41
so the first weeks are very playful and that's because in parallel
00:21:44
with the things going on assist or uh on the previous slide
00:21:47
and also the freshman activities the students organise is very fun games they have
00:21:52
a separate so that for three weeks or playful we use the the icky programming
00:21:58
i. d. call coach joe the first week and we it was and that's very
00:22:02
important for the ones that have never written a line of code says kind of
00:22:05
the low state here try all the kids use these as well this this will not
00:22:10
be sort of hard but what we actually let's we push abstract thinking already from the beginning
00:22:17
and i will show you a bit about that soon and then after the first
00:22:21
week we we go on and you use an editor or uh the last year we
00:22:27
used at some and now i will go for this goal is is in pro
00:22:31
has improved a lot and would metals it will be nice they are supposed to learn
00:22:37
term now and i think it's important for the model what the compiler is to have
00:22:41
your own text and have the outputs of the compiler underneath inter malts owes the and then
00:22:48
you create a text again it's a lot going irritating text game
00:22:53
so that is specially it can be very very irritating for the user if the user hasn't read the code
00:22:59
but if you know if the user has read the code it should
00:23:01
be logon irritating and and the goal is to write code that is readable
00:23:06
and but you can do it on an on your challenge level and
00:23:11
and here we introduce a bill till and they simply just uses the to run so i'm
00:23:16
very happy that s. t. got so simple to use that you don't need very much more
00:23:20
than a fire up is pretty and and we we do this on the school computers were
00:23:25
all tools or p. installed but several of them also install on their own laptops of course
00:23:32
so there's guide to help them with that um yeah so this
00:23:38
is the first week would call your if if you haven't checked out
00:23:41
korea can download it uh uh from the links like baby previous
00:23:45
it's a really nice you you only need to press the play button
00:23:48
and there is turtle graphics and all but what we do with the first week is asked really
00:23:52
pushing abstract thinking so you define a square and then you
00:23:57
uh use that abstraction to create a new abstraction a role
00:24:02
and then we use that obstruction to create a new x. abstraction upgrade
00:24:07
and and and that's what is important even the students that have program before
00:24:14
they see the value above some of them problem a lot but
00:24:18
they put all the stuff in maine or something like that but
00:24:22
pushing abstraction is important and then i will show you a a here
00:24:28
are pictures of four laps i won't go into details on all the labs
00:24:32
but uh they're basically of two kind either
00:24:35
turn overlaps uh uh where you do text interaction
00:24:39
or a graphical apps where you use this simple pixel window and to
00:24:44
do interesting things so the first uh is a block mall a more you
00:24:51
create an animal i can dig a um panels on the ground
00:24:57
and one of the extra tossed is also introduce a block or um but
00:25:01
you should catch so you control it with a. s. w. a s. and um
00:25:07
yeah it's simplistic but actually very farm and here are the concepts that we exercise here
00:25:14
yeah um you're supposed to divide your your uh
00:25:18
program into function you should use name space and
00:25:22
we talked about scopes of names and of course
00:25:25
we exercise also the basics of sequence alternative repetition
00:25:29
here so this is week fall and then we inches process because you know how you are
00:25:35
going to make it two player game we we need to instances uh basically and that's right
00:25:39
i like the uh how explicit object in class differences since call
00:25:45
because he would start with a single tone the mole and with
00:25:48
transform it into a claw small and now it has to be we
00:25:53
cannot to it instances with different uh sets of fields and state et cetera
00:25:59
and we go on here the fire just take another example in week eight
00:26:06
we uh him work on nested structures we have a case cost matrix we which is
00:26:12
generic uh um and it's uh the major get implemented as a vector vector of t.
00:26:18
and they implement uh the conway the game of life and
00:26:23
it's it's it's uh they find it really interesting and and on the fly they learn things like
00:26:28
how to iterate over or apply function over a nested structure
00:26:33
and then we ten this is the way in the course we have actually
00:26:36
group project we're a whole group of students that all of the other assignments are
00:26:41
they collaborate around learning but the assignments are individual here's the first assignment that's made
00:26:47
in the group and the goal there is to understand how difficult it can be too
00:26:52
to write code if you're more than one person um uh um okay what did we learn
00:27:01
so this is maybe they'd just of the benefits i don't i don't claim to have done
00:27:06
any kind of a to be testing of the different student groups in a very raw and
00:27:13
a scientific uh imperial system where a bits it if uh i still think that i
00:27:20
have some uh evidence that the these uh the hypothesis might be true so it's i've i
00:27:27
really like that the combination when i have this big span of privilege that it can be
00:27:31
both simple for beginners and interesting for the
00:27:36
ones that already has a lot of things coming
00:27:39
and and also this is true for teachers actually so they did it being in
00:27:44
a situation where we have a really interesting thing to learn is good also for teachers
00:27:50
uh if you if you get the feeling of ambition with the model language and you can grow
00:27:54
et cetera that's really nice and how important thing is it's good if the rangoon language has some
00:28:01
regularity so that you don't need to spend to
00:28:04
do much time or wear out the greatest students on
00:28:09
details that is kind of blocking the picture an uh um and and and that's
00:28:15
really nice for instance that allow types are real objects et cetera and the and the
00:28:20
ability to do interesting things with small programs also important so you you want to have
00:28:25
express it to express even us and so that you can do a lot of stuff
00:28:30
easy and i i think that many of the other languages that are used for beginner programming
00:28:35
has this going that you can do interesting things uh are only on this but that's i
00:28:43
really think static typing helps beginners because as slow as soon as you start to understand that the
00:28:50
compiler is your friend and it's okay to do mistake is all all also interesting to do mistakes
00:28:55
and you get some feedback and you learn the concept through the error message event to itself from
00:29:01
and also i think that the iterative learning and that you can do in the right place nice
00:29:05
and several other languages are rebels but what you get is colour apple is the dialogue of types
00:29:11
which grows you're on a language and ability to talk about the concept
00:29:15
so that i think is really important and actually the multi paradigm is critical
00:29:21
and going back to the principle of variation of contrasting so if you can in
00:29:26
the same language express totally different way of
00:29:29
solving the same problem you get a deeper
00:29:34
understanding of the concepts as such so for instance contrasting an if statement
00:29:38
and if expression is really important to be able to do in the
00:29:41
same language because otherwise how could i talk about the thing if i
00:29:45
can't talk about the different thing that is similar so that's really important
00:29:51
and um so scott sometimes be criticising for all there's so many ways to do the same thing
00:29:58
but from a teaching point of view of learning point of view this is really good because you can
00:30:04
get a deeper understanding when you keep certain things con
00:30:08
stand and very all the things and contrasts that variation
00:30:15
there are some challenges for so i couldn't really
00:30:21
find a good book within the job a case
00:30:25
i'm in two thousand fifteen we we continue to use the the
00:30:30
swedish textbook in java and um but we i couldn't find anything
00:30:36
similar there are some books since car but they're not really fitting our context you know with the the course has to fit in
00:30:42
in a scene with other courses et cetera so the our progression didn't fit existing books
00:30:48
and also students heart attack and things see i think even if we had a good swedish textbook
00:30:54
on job other than my i guess maybe twenty percent at maximum kind of went through the book
00:31:00
that's some degree most of then be we're not really
00:31:04
enthusiastic about learning from the book they use the lectures
00:31:07
they use the the assignments they use the internet so selecting a lot um sought set was not easy so
00:31:15
introducing too many concepts too fast without iterating the combination of the introduce concepts
00:31:21
and how to do that in a consistent wake need un
00:31:24
we require really really careful thinking and some trial and error
00:31:29
and and and you you need to select the progression that kind of fits people but then you need to introduce
00:31:34
an iteration and how you do that depends on what you put in and put out so it's a combinatorial problem
00:31:40
and and here are examples of things we excluded and that also depends
00:31:44
on the context graham and deciding affect the progression that has this iteration
00:31:49
has been a challenge uh um and the tool barrier so we had computer rooms
00:31:54
with all the stuff installed and that was a saver for some of the students who
00:31:58
who got bogged down with in trying to install a was uh
00:32:03
the j. v. um the clashing with existing j. or am blah
00:32:06
blah blah all that stuff so so it now it's getting better
00:32:09
we had been tell us colour bundle and uh things like that
00:32:13
so the but i think we can do even better in this uh
00:32:18
and also stack overflow from the beginning point of us
00:32:21
a bit polluted by a lot of allowance powerful stuff and
00:32:26
lot of all the answers that are not idiomatic anymore so
00:32:29
it's not easy to get to to to do the things
00:32:33
that they tend to want to do name we dig out the things themselves from
00:32:37
internet so it's easy it's important to develop that skill among students and it's not easy
00:32:45
and i think that new one we got discovery to really be even more difficult maybe because there will be all these
00:32:51
generations of on source the other relevant in old idiom some things like that so we'll see how that goes
00:33:00
so uh the key ingredients to summarise we introduce concepts iteratively would but we have the main
00:33:07
feeling we use patterns of variation to contracts
00:33:10
things would playfully use abstraction already from the beginning
00:33:15
um we starts with expressions simple functions
00:33:19
go to all breaks glosses we we contrast
00:33:23
processing case classes when we introduce them that's really nice to be able to do
00:33:28
uh yeah we contrast immutable and you'd ability that's really nice to be able to
00:33:34
and we had a progression of collections we in the beginning with
00:33:37
them as some vector and and and and also a re to contrast
00:33:41
you to win mutable and then we go on the higher order function is
00:33:46
not the big thing it comes later in in courses and there there is even
00:33:49
in second year course in functional programming but the point here is that it
00:33:53
it gets very natural to use higher order functions in together with the collection library
00:34:00
and the duality between mapping for something that they really totally uh am
00:34:06
the works with by the end of the course like
00:34:08
very natural oh okay and the o. f. p. makes
00:34:15
so so so i i sort of course takes the same pragmatic view on programming
00:34:21
asked the language so it's so so programming
00:34:26
is not the religion it's uh an interesting
00:34:30
challenge from an intellectual point to you that that's how i view programming
00:34:35
uh and uh so we we the awareness of types and
00:34:41
the difference between expressions and statements and the contrasting immutable immutable state
00:34:47
yeah yeah and and in the how inheritance can be used for modelling and
00:34:52
how we also can use it like it is strangely for kind of and
00:34:56
norm maybe incidental reuse is sometimes you see and
00:35:00
we discuss that um we discuss composition as an alternative
00:35:04
and and we contrast side effecting functions and turn
00:35:07
and track the reference with transparent functions and this is
00:35:10
important to understand why in this is an issue uh to be able to that in the same language
00:35:18
and so so all the kind of more now take stuff and
00:35:22
the the things like that be all come later in the curricular and there is a functional problem course which is
00:35:29
taught in high school and yeah the road ahead this
00:35:40
has actually been a great success this easy students are really
00:35:44
happy they feel privileged to to uh be you have this
00:35:49
the deed that would learn programming with the um and modern uh a language uh
00:35:55
and and that there is a really great interest to continue learned scholar
00:36:01
in currently they can't really do it in a light the courses some
00:36:05
of the courses are kind of language agnostic they can use whatever language
00:36:08
they are like but there is no real continuation is column that depends on
00:36:13
the take up among my colleagues and uh if we uh if they're more that are interested
00:36:17
in in learning and teachings car yeah and i think that it's important that and that that's
00:36:25
then uh this this success and the example how you can make a progression can
00:36:30
be used for other uh teachers that both of my university in other universities and
00:36:35
i hope that this will might the the there are already several universities to teach
00:36:40
and one is the market too is that the chains university has written a really
00:36:45
in a nice blog post about what is the what it takes for scott option in
00:36:52
at universities and also some advice for industry people how they could help us
00:36:56
uh when we uh discuss the different options in in a first language et cetera
00:37:03
and and there is a debate ongoing now i think there is a smell of
00:37:07
a momentum for python boom hit the not much because
00:37:12
of the data science approach and uh and uh uh
00:37:16
where the hyphen is kind of a standard uh now i have some thoughts about that i think that there are very
00:37:24
much that's cause going for it uh that we could emphasise
00:37:28
here somehow but how could we make it the even better deal
00:37:33
for beginner programmers yeah i think that we need high quality
00:37:39
open source beginner programming teaching material and we need to make it
00:37:45
kinda modular so that it can fit different kinds of progressions
00:37:49
and i think this is this uh and everybody's working on beginner
00:37:53
a programmer material there's a lot of material if
00:37:56
you have at least a certain level proficiency with programming
00:38:00
but going from beginning but the uh for uh that that's important to to work on that better i think
00:38:07
and i also would like to see a big go to library that is as easy for beginners as a
00:38:13
pandas in all or or a little some of levers upright and i think we should have i think actually
00:38:19
if data scientists would discover scoff from a such a point of view that all i can
00:38:26
do interesting things and uh i know that don't need to take into a lot of theory
00:38:31
then i think we it will be really cool and i also think that the scripting model which we could improve that
00:38:38
now i can't call the script from another script and it's kind of a second class citizen than
00:38:44
this call speech if you run a text file just using scar i think that that can be improved
00:38:51
and i think that we do x. for tools that even with the intel just
00:38:54
go about my think we can do even more i would like to have one signed
00:38:58
platform specific uh uh uh um
00:39:03
acts store available it thing to
00:39:06
click on and then i get all the stuff i need i want
00:39:09
to call on terminal i want the rebel internal i wanted an editor
00:39:13
or i want to the j. v. m. i. want an i. d.
00:39:17
in one click it and that's for university level students for primary school
00:39:24
students i think we need to focus on the browser because more or i. c. schools kind of
00:39:30
getting it in the mode of locked down machine teachers can't install anything they all have the browser
00:39:39
so the cool thing would be if we could run compilation in the browser compiling to local store
00:39:46
as a a troll map of single install crumb up that would be cool
00:39:51
so that you don't need to install anything on your machine and and
00:39:54
still program locally without being and not forced to have the network of the
00:40:00
of the although i thought i think it would be really cool and i
00:40:04
also think from star three point of us i think it's really important that
00:40:09
scott three has some really nice things for beginners top level definitions in
00:40:15
arms and i also like if then else so i i see students
00:40:21
sometimes mixing up if for function under the right if parenthesis expression and
00:40:29
i it doesn't anything happen ways they're not return and as i saw it
00:40:36
even if it's small part i think it's actually a good if i'm uh i'm and some of the corner cases
00:40:42
that we that end up in detail the the unnecessary detail
00:40:45
discussion of exceptions et cetera that that i think will be
00:40:49
cleaned up but mainly i. p. c. in on top level definitions as the thing and then i think this will
00:40:55
affect the way we write typical scholar called for simple things
00:41:00
so we should develop a crisp examples of idioms of this
00:41:04
is how you do a simple thing with the simple to install and it's very easy not to to for it
00:41:10
to find the least powerful abstraction the but if you go
00:41:14
out there in google you will find very powerful stuff that
00:41:18
is not really cool for beginners sell this picture was
00:41:23
taken a ten years ago now these kids are applying for
00:41:29
university and the the do we really need more developers and
00:41:36
we need to teach him programming and we need to show
00:41:39
how we can use the fact that we uh program language to increase the learning outcome because of the
00:41:44
power of the language so we should have a higher ambition in in in learning outcome i think that
00:41:51
many of the other uh uh in um ways of teaching
00:41:55
programming could have had a higher ambition for the same grip of
00:41:59
the students with another language such as well so we have some
00:42:05
time for questions i'm happy with a team thank you very much
00:42:15
i um you said that so i'm used to things come from back remember the third haven't done any
00:42:25
coding using scroller is the training language to be from the levels that the difference between the coders mm kay
00:42:33
he has to a large extent so so the top language for the ones of code
00:42:37
it this was this year you predicted used to be job offers nazi shark java python javascript
00:42:44
and and the um so if i would have had this call i
00:42:48
would have you needed that kind of connect when i contrast things to
00:42:53
some other language that can do the same thing about language but now
00:42:56
i can take a new language i can develop a vocabulary for them
00:43:00
in this language to contrast things and that's that and and it's still exciting a new language
00:43:05
and even if you have done something in another language you you understand all i need to
00:43:09
learn all this new stuff as well so you get into that mode and that i think
00:43:12
it's really important that a high ah so uh people that just make sure i understood correctly so
00:43:20
divorced close use colour and second 'cause use java yes okay
00:43:24
then uh opposed to those uh uh don't they have any difficulty
00:43:29
with java because you know once you move from the colour
00:43:32
to w. loses so menacing inconvenience things from us colour right uh
00:43:36
for companies and and uh it pattern matching is doing double asian and right so many things
00:43:42
so yeah actually it when the first course was in java they did worse than second course so
00:43:51
they kinda they had one week of java contrast in the first course and then they just
00:43:55
eat java when they get some of them are bit frustrated that you can't do things in java
00:44:01
but that's course focuses on abstract data types and things of
00:44:04
that they they implement collections themselves and things like that so
00:44:08
and they talk about the coercion and it talk about the complexity of algorithm things like that so
00:44:14
there is a theoretical challenge in that course and it the the language is not really that important
00:44:20
for that what you are going to learn in that course and they just the java uh like on the fly and and
00:44:26
the result is actually much better now i think that's because they
00:44:30
have been challenged how to learn programming so so the the the
00:44:36
air the site kind of use their high ambition to sit through
00:44:41
to to make themselves rice even the independent on where they came
00:44:47
from yeah and i think that's a lot to do of course to do with the teaching and the students but also the language
00:44:54
thank you but i i i i
00:45:01
i i i know i'm limited at some point did a recursion you
00:45:07
drops and i find that interesting because usually laid courses focused on functional programming
00:45:13
will will put recursion is the the one thing that you have to learn
00:45:17
into recursion is the crawl and the and these things and personally i think
00:45:22
and then it's the uh i really like did you not sure readers and all
00:45:26
uh but then we could you elaborate on on what tools
00:45:30
do you use for any kind of it's it's a right
00:45:35
to for both corporations to you only use higher order functions from collections
00:45:41
or or do you also introduced but imperative loops we
00:45:44
yeah okay so we we shall require a certain that
00:45:48
it's the second course where you use recursion and develop
00:45:52
recursion algorithm yourself so i shall recursive later in the course
00:45:56
but it's not the thing that i test on the exam so they know
00:46:00
about the concept and i i think that for the second course it would have
00:46:03
been better if we had hats updates more recursion because it's like challenging concept
00:46:08
that is good to take that wise but you're right in discourse recursion is not
00:46:12
the big thing eh iteration is a big thing and we use higher order
00:46:17
functions and for compression and while loops and we contrast them so we use the
00:46:22
the imperative iteration eh mainly in the
00:46:26
beginning when we contrast it and then the
00:46:29
chip students eventually tend to choose at least if they're beginners tend to choose that
00:46:34
the the map or for the the students that need that have done a lot of iterative
00:46:39
uh iteration uh with the y. loops they have a period will work where they
00:46:44
need to kind of map their understanding to the to the higher order function way
00:46:49
yeah but but then it's good that they can express what they're used to and
00:46:52
that we can contrast because if i hadn't had why look it would have been
00:46:56
eh difficult to to to use this way of teaching where we contrast
00:47:01
things so did ounce your question or yeah okay one more i i i
00:47:16
think i will put them early on the simple case within um colour red
00:47:21
though a great because we have that already so i show them only on
00:47:26
eh i say we'll explain more about traits later it straight caller i. case albrecht
00:47:31
read case topic and they see that and there is that okay we need different colours
00:47:35
and we can use that and it's uh it and and that's the first time i
00:47:38
see inheritance i don't talk i only say that we want to be able to put
00:47:42
many different kinds of things in the same collections that we needed beast able to speak about
00:47:48
why they are sal had word for that their same
00:47:52
in colour is the word that the colours or the same
00:47:55
so that's how you do it in the beginning and it starts really easy but with in on it will
00:47:59
be even more concise and not too concise i think that is important so we need we need if you're
00:48:06
to silent like it has got your the most silent about
00:48:09
function application i think that can be confusing i think in impact
00:48:13
on your silent with that begin and talking four blocks but that
00:48:18
can be confusing in s. that walks i've seen that several times
00:48:22
students that don't doesn't really understand implication of an s. that walk
00:48:25
with nice name space et cetera because you never speak explicitly about
00:48:30
with a token in the syntax so i think that's it i
00:48:33
really like to thank you very much for enough i really like the
00:48:37
the the simple versus in our colour or case uh
00:48:41
and the comma between the cases i it's just enough
00:48:45
syntax and is very concise so i will use it or we'll thing so we can
00:48:50
do that but if you have any questions please ask the microphone because everything is recorded
00:48:55
ah important disposal what you recorded thank you yeah
00:48:59
so the question was will we use the normal niles

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.
1268 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.
5029 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.
6375 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.
302 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.
2708 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