summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-teaching--teaching-computer-and-data-science-with-literate-programming-tools--marcus-birkenkrahe--main.vtt
blob: 560be0c6ef1d2077cf963300815062b53b394529 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
WEBVTT captioned by sachac, checked by sachac

NOTE Introduction

00:00:00.000 --> 00:00:04.519
Welcome to my talk, which is pre-recorded,

00:00:04.520 --> 00:00:06.959
so please don't blame me if I come across

00:00:06.960 --> 00:00:08.599
as wooden and humorless.

00:00:08.600 --> 00:00:11.319
It's hard to work up any emotion

00:00:11.320 --> 00:00:13.879
when looking at a mechanical eye.

00:00:13.880 --> 00:00:15.039
Of course, I am German,

00:00:15.040 --> 00:00:18.639
so I am pretty wooden and humorless to begin with.

00:00:18.640 --> 00:00:20.439
What else do you need to know about me?

00:00:20.440 --> 00:00:23.319
Not much, I suppose, except that I have been

00:00:23.320 --> 00:00:25.199
an Emacs user on and off

00:00:25.200 --> 00:00:26.919
since my days as a graduate student

00:00:26.920 --> 00:00:30.079
in theoretical physics in the 1990s.

00:00:30.080 --> 00:00:34.679
I picked Emacs and Org Mode up again

00:00:34.680 --> 00:00:36.239
for teaching during COVID

00:00:36.240 --> 00:00:38.039
when I had a lot of time on my hands,

00:00:38.040 --> 00:00:40.359
and when the teaching and learning needs shifted

00:00:40.360 --> 00:00:44.239
because of the exclusive online teaching.

00:00:44.240 --> 00:00:48.199
Now I'm going to take my picture away.

00:00:48.200 --> 00:00:49.559
You had a good look at me.

00:00:49.560 --> 00:00:54.159
I think that's just going to be in the way.

NOTE My interest in this topic

00:00:54.160 --> 00:00:57.279
So my interest in this topic began with

00:00:57.280 --> 00:00:59.279
an Emacs talk given by Daniel German

00:00:59.280 --> 00:01:04.119
from the University of Victoria in Canada in 2021.

00:01:04.120 --> 00:01:06.439
Daniel demonstrated in detail

00:01:06.440 --> 00:01:09.199
how he uses Emacs and Org Mode

00:01:09.200 --> 00:01:12.119
to prepare and deliver lectures

00:01:12.120 --> 00:01:14.199
on different programming languages.

00:01:14.200 --> 00:01:16.319
This gave me the idea to try the same thing

00:01:16.320 --> 00:01:19.999
with my students with an important alteration.

00:01:20.000 --> 00:01:23.559
I wanted to force them to use Emacs and Org Mode

00:01:23.560 --> 00:01:25.959
just as most computer science instructors

00:01:25.960 --> 00:01:29.079
force their students to use whatever they are using

00:01:29.080 --> 00:01:32.359
when they develop their material.

00:01:32.360 --> 00:01:36.839
I carried my plan out and mandated Emacs and Org Mode

00:01:36.840 --> 00:01:40.359
as the only programming platform and IDE

00:01:40.360 --> 00:01:43.639
for three consecutive terms in all my courses,

00:01:43.640 --> 00:01:45.919
nine courses in total.

00:01:45.920 --> 00:01:47.799
I will give more details later.

00:01:47.800 --> 00:01:49.919
I published my results as a case study

00:01:49.920 --> 00:01:52.279
in September of this year,

00:01:52.280 --> 00:01:53.639
and it contains the missing bits

00:01:53.640 --> 00:01:56.159
that I will not talk about today for lack of time,

00:01:56.160 --> 00:01:58.639
especially regarding the methodology,

00:01:58.640 --> 00:02:00.119
the assessment, et cetera.

00:02:00.120 --> 00:02:04.999
Please also use the Q&A to inquire about such details

00:02:05.000 --> 00:02:08.039
if they interest you.

NOTE What is data science?

00:02:08.040 --> 00:02:12.799
I probably don't have to explain what computer science is,

00:02:12.800 --> 00:02:16.359
but not everyone may know what data science does.

00:02:16.360 --> 00:02:18.239
I teach courses in both disciplines

00:02:18.240 --> 00:02:20.559
and the boundaries between them are blurred,

00:02:20.560 --> 00:02:22.639
so much of what I'm saying about data science

00:02:22.640 --> 00:02:24.719
will also be relevant for computer science.

00:02:24.720 --> 00:02:29.359
Conceptually, data science is an interdisciplinary affair

00:02:29.360 --> 00:02:31.999
that intersects with computer science

00:02:32.000 --> 00:02:34.959
and with whatever it is that the data scientist

00:02:34.960 --> 00:02:39.159
or his or her clients know very well; their domain.

00:02:39.160 --> 00:02:42.679
Because of this interdisciplinary character,

00:02:42.680 --> 00:02:45.399
and because their focus is on the data

00:02:45.400 --> 00:02:48.119
rather than only on algorithms or mathematics,

00:02:48.120 --> 00:02:52.719
successful data scientists need to be more broadly educated

00:02:52.720 --> 00:02:56.199
than specialists in computer science or statistics.

00:02:56.200 --> 00:03:00.519
In particular, there's a need to master

00:03:00.520 --> 00:03:03.479
the entire so-called data science pipeline:

00:03:03.480 --> 00:03:06.079
from data cleaning, which you see

00:03:06.080 --> 00:03:08.879
on the very left in this slide,

00:03:08.880 --> 00:03:12.119
over coding, to statistical modeling,

00:03:12.120 --> 00:03:14.719
and to data storytelling through visualization,

00:03:14.720 --> 00:03:17.159
which you see on the very right.

00:03:17.160 --> 00:03:19.079
This is why until recently,

00:03:19.080 --> 00:03:22.119
data science was a graduate-level education

00:03:22.120 --> 00:03:25.879
only for software engineers, computer scientists,

00:03:25.880 --> 00:03:31.679
statisticians, psychologists, biologists, business people,

00:03:31.680 --> 00:03:34.279
or for whoever took a special fancy

00:03:34.280 --> 00:03:37.719
to data in their chosen field.

00:03:37.720 --> 00:03:40.039
Only with a growing interest in machine learning,

00:03:40.040 --> 00:03:41.999
this has changed.

00:03:42.000 --> 00:03:45.599
And now we train--or try to train--data scientists

00:03:45.600 --> 00:03:47.639
in undergraduate programs as well.

NOTE Computer science is a craft

00:03:47.640 --> 00:03:52.399
Now, what I'm saying here, I think is true

00:03:52.400 --> 00:03:54.199
for all areas of computing,

00:03:54.200 --> 00:03:56.959
from software engineering to data science.

00:03:56.960 --> 00:04:00.639
They are mostly taught and learned like a craft

00:04:00.640 --> 00:04:03.679
rather than a science, not through research,

00:04:03.680 --> 00:04:04.679
but through drill.

00:04:04.680 --> 00:04:07.799
The elements of this drill can be illustrated

00:04:07.800 --> 00:04:09.959
by learning how to fix cars.

00:04:09.960 --> 00:04:12.759
They include taking a problem apart

00:04:12.760 --> 00:04:14.119
with the tools you already know,

00:04:14.120 --> 00:04:18.239
learn a lot more tools in the process of doing that,

00:04:18.240 --> 00:04:20.639
then solve many, many problems

00:04:20.640 --> 00:04:22.199
of increasing difficulty

00:04:22.200 --> 00:04:25.719
while being or getting more literate, as it were,

00:04:25.720 --> 00:04:27.919
about the mechanics of computing,

00:04:27.920 --> 00:04:30.759
including the hardware, the infrastructure,

00:04:30.760 --> 00:04:32.639
and finally develop a way of thinking

00:04:32.640 --> 00:04:35.519
that allows the learner to identify patterns

00:04:35.520 --> 00:04:39.719
to solve new problems better and faster.

00:04:39.720 --> 00:04:42.479
Unlike learning how to fix cars,

00:04:42.480 --> 00:04:44.439
all of the objects of our interest--

00:04:44.440 --> 00:04:48.719
both hardware and software--are evolving rapidly.

00:04:48.720 --> 00:04:51.519
In this field, radical innovation is the rule,

00:04:51.520 --> 00:04:52.839
not the exception.

NOTE The problem

00:04:52.840 --> 00:04:58.679
The problem that I identified is that students,

00:04:58.680 --> 00:05:00.799
especially undergraduate students

00:05:00.800 --> 00:05:02.399
in computer and data science,

00:05:02.400 --> 00:05:06.439
often do no longer understand the infrastructure.

00:05:06.440 --> 00:05:08.919
Here are a few examples of the problems

00:05:08.920 --> 00:05:10.079
that the students seem to have.

00:05:10.080 --> 00:05:13.599
They do not understand computer architecture,

00:05:13.600 --> 00:05:14.599
except in theory.

00:05:14.600 --> 00:05:18.519
They cannot navigate their way around their own computers.

00:05:18.520 --> 00:05:22.319
They don't understand the value or the issues of networks.

00:05:22.320 --> 00:05:25.079
They are often more interested in convenience

00:05:25.080 --> 00:05:28.279
than in customization of the environment.

00:05:28.280 --> 00:05:31.839
As a result, the machines which we're meant to control

00:05:31.840 --> 00:05:35.079
have all the power--though passively,

00:05:35.080 --> 00:05:36.559
of course, for now anyway.

NOTE The solution: Emacs + Org-mode

00:05:36.560 --> 00:05:43.679
Enter Emacs, the self-extensible operating system

00:05:43.680 --> 00:05:45.999
disguised as a text editor.

00:05:46.000 --> 00:05:50.999
You're at EmacsConf, so of course I don't have to tell you

00:05:51.000 --> 00:05:52.199
what Emacs can do.

00:05:52.200 --> 00:05:54.319
Here's a rundown on the right-hand side

00:05:54.320 --> 00:05:56.759
of some of its most important properties,

00:05:56.760 --> 00:05:58.959
and an Org Mode file excerpt

00:05:58.960 --> 00:06:00.519
from one of my classes on the left.

00:06:00.520 --> 00:06:05.239
What you may not know is how to onboard students who have,

00:06:05.240 --> 00:06:07.439
at the start, no interest whatsoever

00:06:07.440 --> 00:06:08.919
in leaving their comfort zone,

00:06:08.920 --> 00:06:12.399
which is defined by a lifetime of Windows,

00:06:12.400 --> 00:06:16.319
pre-configured graphical interfaces, and software bloat.

00:06:16.320 --> 00:06:19.679
In fact, when I started this, I wasn't very hopeful,

00:06:19.680 --> 00:06:22.399
but the results have made me even more optimistic

00:06:22.400 --> 00:06:24.119
than I already am by nature.

NOTE Emacs configuration file

00:06:24.120 --> 00:06:28.839
So to rein in your expectations,

00:06:28.840 --> 00:06:31.839
you cannot do entirely without

00:06:31.840 --> 00:06:33.799
configuring the student's experience.

00:06:33.800 --> 00:06:35.279
An important part of this

00:06:35.280 --> 00:06:37.999
is the initial Emacs configuration shown here.

00:06:38.000 --> 00:06:40.639
The minimal configuration file,

00:06:40.640 --> 00:06:42.199
which you can see on the right-hand side,

00:06:42.200 --> 00:06:46.679
allows the students to run code in C and C++, R, SQL,

00:06:46.680 --> 00:06:48.599
SQLite, Python, and Bash.

00:06:48.600 --> 00:06:52.559
It will allow them to update Emacs packages

00:06:52.560 --> 00:06:55.039
from the stable Melpa repository,

00:06:55.040 --> 00:06:58.599
and it will allow them to create code blocks easily

00:06:58.600 --> 00:07:01.919
using skeleton commands for code blocks,

00:07:01.920 --> 00:07:06.279
and to auto-load the Emacs Speaks Statistics package,

00:07:06.280 --> 00:07:09.759
which you particularly need when you run R in Emacs,

00:07:09.760 --> 00:07:14.399
and lastly, to disable toolbar and graphical menu bars.

00:07:14.400 --> 00:07:18.999
To do that encourages the exclusive use of the keyboard

00:07:19.000 --> 00:07:23.199
to control Emacs, and to stop the students

00:07:23.200 --> 00:07:25.839
from flicking all the time to the mouse;

00:07:25.840 --> 00:07:30.359
seems to be an essential part of getting used to Emacs.

NOTE Story + code = source + documentation

00:07:30.360 --> 00:07:38.839
Now Org Mode was included in Emacs in 2006 as a major mode,

00:07:38.840 --> 00:07:41.959
and as you know, it's a structured plain text format

00:07:41.960 --> 00:07:45.039
with notebook live code execution.

00:07:45.040 --> 00:07:47.839
It's an ideal platform for literate programming,

00:07:47.840 --> 00:07:52.359
which is a term for programming that intermingles code,

00:07:52.360 --> 00:07:55.839
documentation, and output within a single document,

00:07:55.840 --> 00:07:59.519
and that can, as you can see here from an org file,

00:07:59.520 --> 00:08:02.559
either be tangled into source code

00:08:02.560 --> 00:08:06.999
or woven into a documentation file, which could be PDF,

00:08:07.000 --> 00:08:11.039
could be Markdown, could be OpenOffice,

00:08:11.040 --> 00:08:13.919
could be a notebook format.

00:08:13.920 --> 00:08:18.479
This methodology was conceived by Donald Knuth in 1984,

00:08:18.480 --> 00:08:22.039
and it is therefore even older than Emacs itself.

NOTE What is literate programming?

00:08:22.040 --> 00:08:27.199
The main purpose of literate programming is not only

00:08:27.200 --> 00:08:31.119
to make code or documentation or output more manageable,

00:08:31.120 --> 00:08:34.759
but to allow humans to create a data story with ease

00:08:34.760 --> 00:08:37.199
from a single source.

00:08:37.200 --> 00:08:40.359
So what you see on the slide on the left-hand side

00:08:40.360 --> 00:08:45.479
is the story and code inside a Org Mode file.

00:08:45.480 --> 00:08:49.479
The file starts with some documentation,

00:08:49.480 --> 00:08:52.519
then with the white background is the code,

00:08:52.520 --> 00:08:56.239
and at the bottom you see an output file,

00:08:56.240 --> 00:09:00.159
which is not shown here on the slide itself.

00:09:00.160 --> 00:09:02.839
In the middle, you have the source code,

00:09:02.840 --> 00:09:05.759
which is the result of tangling

00:09:05.760 --> 00:09:10.799
or of opening a buffer inside org-mode.

00:09:10.800 --> 00:09:16.119
And on the very right-hand side, you have a PDF--

00:09:16.120 --> 00:09:20.159
actually this HTML rendering of the very same file

00:09:20.160 --> 00:09:22.599
that you see on the very left.

00:09:22.600 --> 00:09:26.479
So the humans look at some of this code,

00:09:26.480 --> 00:09:29.879
and the machines will look at other parts of the code.

00:09:29.880 --> 00:09:33.359
I actually did all my programming in a literate way

00:09:33.360 --> 00:09:35.959
even in the early 1990s, not using org-mode,

00:09:35.960 --> 00:09:36.799
which didn't exist yet,

00:09:36.800 --> 00:09:40.319
but using Norman Ramsey's Noweb preprocessor.

00:09:40.320 --> 00:09:43.399
And I still use it inside org-mode today.

00:09:43.400 --> 00:09:47.439
This preprocessor, Noweb, allows you to tangle code

00:09:47.440 --> 00:09:50.079
from within an org-mode file that's a self-standing file,

00:09:50.080 --> 00:09:52.799
much like org-mode's edit functions,

00:09:52.800 --> 00:09:55.639
which export code blocks into buffers

00:09:55.640 --> 00:09:59.879
in whatever language the code block is written.

NOTE Emacs as a literate programming tool

00:09:59.880 --> 00:10:02.719
In data science, these interactive notebooks

00:10:02.720 --> 00:10:05.999
in one of the interpreted languages like Julia,

00:10:06.000 --> 00:10:07.839
Python, or R dominate.

00:10:07.840 --> 00:10:10.239
The basis technology,

00:10:10.240 --> 00:10:12.759
is that of Jupyter notebooks, which take their name

00:10:12.760 --> 00:10:14.439
from Julia, Python, and R.

00:10:14.440 --> 00:10:19.199
And these notebooks use a spruced-up shell (for example,

00:10:19.200 --> 00:10:23.079
IPython for Python) with an option to add SQL cells.

00:10:23.080 --> 00:10:28.079
Org Mode inside Emacs has a large number of advantages--

00:10:28.080 --> 00:10:31.479
some of them are listed here--over these notebooks.

00:10:31.480 --> 00:10:33.679
Two of these stand out particularly.

00:10:33.680 --> 00:10:39.439
Different languages can be mixed, as shown in the image,

00:10:39.440 --> 00:10:43.439
while in Jupyter notebooks, a notebook is limited to

00:10:43.440 --> 00:10:45.639
running a kernel in one language only.

00:10:45.640 --> 00:10:48.159
So the content of the notebook--

00:10:48.160 --> 00:10:50.319
its document code or output part--

00:10:50.320 --> 00:10:52.879
can be exported in a variety of formats,

00:10:52.880 --> 00:10:55.479
which makes it much easier to share with others

00:10:55.480 --> 00:10:58.479
and to use one's work in different reporting formats;

00:10:58.480 --> 00:11:02.399
for example, to read it out into a LaTeX publication.

00:11:02.400 --> 00:11:08.319
Actually, to come back to this,

00:11:08.320 --> 00:11:11.039
the file does not show different languages.

00:11:11.040 --> 00:11:14.159
That is something you can see in a paper of mine,

00:11:14.160 --> 00:11:18.959
in one of the figures.

NOTE Case study: basic setup

00:11:18.960 --> 00:11:22.719
Now, coming to the case study itself,

00:11:22.720 --> 00:11:25.039
here are some of the overall results of the case study.

00:11:25.040 --> 00:11:29.039
Now, the courses ranged from introductory to advanced,

00:11:29.040 --> 00:11:32.039
as you can see here in the table on the left-hand side.

00:11:32.040 --> 00:11:37.199
The topics covered different programming applications.

00:11:37.200 --> 00:11:38.679
The courses were taught

00:11:38.680 --> 00:11:41.039
over a period of three consecutive terms.

00:11:41.040 --> 00:11:45.839
There was between 6 and 28 participants per course.

00:11:45.840 --> 00:11:49.239
I used a few other tools besides Emacs:

00:11:49.240 --> 00:11:51.919
GitHub as the main repository for all the material,

00:11:51.920 --> 00:11:55.239
Datacamp for structured online lessons and exercises,

00:11:55.240 --> 00:11:57.359
Canvas as a learning management system,

00:11:57.360 --> 00:12:00.919
and Zoom to record the sessions for later use.

00:12:00.920 --> 00:12:03.279
Now, the material for all these courses

00:12:03.280 --> 00:12:05.399
is openly available on GitHub,

00:12:05.400 --> 00:12:11.279
and the address is on the slide at the bottom.

NOTE Emacs + Org-mode notebooks

00:12:11.280 --> 00:12:15.879
I'm now going to briefly comment on

00:12:15.880 --> 00:12:18.799
the most important aspects of using Emacs and Org Mode

00:12:18.800 --> 00:12:20.119
in and outside of class.

00:12:20.120 --> 00:12:24.039
Essentially, these two--Emacs and Org Mode--

00:12:24.040 --> 00:12:26.239
were used all the time for almost everything

00:12:26.240 --> 00:12:29.239
that the students were doing in and outside of class.

00:12:29.240 --> 00:12:32.319
The only exception were multiple choice tests

00:12:32.320 --> 00:12:34.039
and online assignments

00:12:34.040 --> 00:12:35.599
on the Datacamp learning platform

00:12:35.600 --> 00:12:37.199
in the data science courses.

00:12:37.200 --> 00:12:39.999
But everything else--code-along lectures, home assignments,

00:12:40.000 --> 00:12:42.439
student projects, practice in class--

00:12:42.440 --> 00:12:45.799
was done with these two tools.

NOTE Onboarding: simplified Emacs tutorial

00:12:45.800 --> 00:12:47.999
To facilitate the onboarding,

00:12:48.000 --> 00:12:50.999
so to get students used to Emacs in the first place,

00:12:51.000 --> 00:12:53.279
I developed a simplified Emacs tutorial,

00:12:53.280 --> 00:12:56.519
which was focused on the basics of literate programming.

00:12:56.520 --> 00:12:59.999
It included navigation in major modes,

00:13:00.000 --> 00:13:02.839
managing files and buffers, customizing the interface,

00:13:02.840 --> 00:13:04.039
and keyboard shortcuts.

00:13:04.040 --> 00:13:06.319
It was considerably shorter;

00:13:06.320 --> 00:13:12.879
about a quarter of the size of the standard Emacs tutorial,

00:13:12.880 --> 00:13:14.319
which contains a lot more stuff.

00:13:14.320 --> 00:13:16.759
As a result of this onboarding,

00:13:16.760 --> 00:13:18.279
by the end of the second week,

00:13:18.280 --> 00:13:19.919
most students were able

00:13:19.920 --> 00:13:22.639
to use Emacs and Org Mode competently

00:13:22.640 --> 00:13:25.079
for their assignments in and outside of class,

00:13:25.080 --> 00:13:29.639
completely independent of their previous exposure

00:13:29.640 --> 00:13:31.199
to any of these tools.

00:13:31.200 --> 00:13:35.399
Most of the students, in fact, had never heard of Emacs.

00:13:35.400 --> 00:13:40.839
All the classes were taught physically in a computer lab.

NOTE Instruction + interaction

00:13:40.840 --> 00:13:42.759
Emacs with Org Mode

00:13:42.760 --> 00:13:45.479
and the necessary languages for the class

00:13:45.480 --> 00:13:47.359
were pre-installed on the computers.

00:13:47.360 --> 00:13:50.199
The computers ran Windows, unfortunately,

00:13:50.200 --> 00:13:52.759
like most of the students' personal computers.

00:13:52.760 --> 00:13:57.479
A typical class involved a lecture delivered by me

00:13:57.480 --> 00:13:59.159
in Emacs as a code-along.

00:13:59.160 --> 00:14:01.559
The students would get an Org Mode file

00:14:01.560 --> 00:14:03.399
with all the code removed.

00:14:03.400 --> 00:14:04.599
You can see an example here

00:14:04.600 --> 00:14:06.799
on the slide on the right-hand side.

00:14:06.800 --> 00:14:12.239
This example is actually only one line of code in blue,

00:14:12.240 --> 00:14:15.039
visible at the bottom for an award file.

00:14:15.040 --> 00:14:17.919
Then the students submitted home assignments

00:14:17.920 --> 00:14:21.159
also as Org Mode files, complete with documentation,

00:14:21.160 --> 00:14:23.479
code and sample output.

00:14:23.480 --> 00:14:26.999
Working this way makes the classes highly interactive.

00:14:27.000 --> 00:14:28.879
So the students are busy coding

00:14:28.880 --> 00:14:31.639
and they learn to control their environment better

00:14:31.640 --> 00:14:34.919
all the time.

00:14:34.920 --> 00:14:38.599
In my classes, the students have to complete

00:14:38.600 --> 00:14:41.359
an independent, agile research project

00:14:41.360 --> 00:14:44.239
using an adaptation of Scrum as a methodology.

00:14:44.240 --> 00:14:48.079
You can find examples of these rather high-octane projects

00:14:48.080 --> 00:14:48.719
in my paper.

NOTE Assignments + projects

00:14:48.720 --> 00:14:52.679
Now, using literate programming for the projects

00:14:52.680 --> 00:14:54.399
provided some unique benefits.

00:14:54.400 --> 00:14:57.959
By having to continuously interweave documentation,

00:14:57.960 --> 00:15:01.599
references and output alongside functional code,

00:15:01.600 --> 00:15:04.319
the students learn to communicate their work

00:15:04.320 --> 00:15:05.599
throughout the term

00:15:05.600 --> 00:15:07.559
in various stages of completion,

00:15:07.560 --> 00:15:09.839
from the research question at the start,

00:15:09.840 --> 00:15:12.879
over the prototype to the finished product.

00:15:12.880 --> 00:15:14.999
And here on the right-hand side,

00:15:15.000 --> 00:15:17.479
you can see one of those assignments

00:15:17.480 --> 00:15:18.839
that the students received,

00:15:18.840 --> 00:15:24.959
including some of the metadata for their Org Mode files

00:15:24.960 --> 00:15:26.159
in the beginning of the course.

00:15:26.160 --> 00:15:32.599
Here are two graphs that I created early on

00:15:32.600 --> 00:15:34.319
when I started doing this.

00:15:34.320 --> 00:15:36.439
They show how the test results of the students

00:15:36.440 --> 00:15:39.639
in two different courses, actually three courses,

00:15:39.640 --> 00:15:41.719
changed from before to after

00:15:41.720 --> 00:15:45.919
introducing literate programming with Emacs and Org Mode.

00:15:45.920 --> 00:15:49.559
So you see the before and after

00:15:49.560 --> 00:15:53.479
introducing literate programming in the red curve before

00:15:53.480 --> 00:15:54.919
and the blue curve afterwards.

00:15:54.920 --> 00:15:58.519
And the improvement, especially on the right-hand side,

00:15:58.520 --> 00:15:59.719
is quite significant.

00:15:59.720 --> 00:16:01.999
It was this performance improvement,

00:16:02.000 --> 00:16:05.119
apart from the students who were voicing their support,

00:16:05.120 --> 00:16:07.999
that made me extend the Emacs experiment

00:16:08.000 --> 00:16:09.159
after the first term

00:16:09.160 --> 00:16:15.279
and continue for the following two terms.

NOTE Overall results positive

00:16:15.280 --> 00:16:18.839
The courses... Coming to the result, the overall result...

00:16:18.840 --> 00:16:20.999
The courses were formally and informally

00:16:21.000 --> 00:16:23.119
also evaluated by the students,

00:16:23.120 --> 00:16:24.599
but you need to look at my paper

00:16:24.600 --> 00:16:27.039
for some explicit student comments,

00:16:27.040 --> 00:16:28.199
which you will find there.

00:16:28.200 --> 00:16:29.879
Here, I'm giving you only the summary.

00:16:29.880 --> 00:16:34.519
So first of all, Emacs proved to be hard to learn for some,

00:16:34.520 --> 00:16:37.839
but all students succeeded in all courses,

00:16:37.840 --> 00:16:39.519
independent of the level of

00:16:39.520 --> 00:16:40.959
their previous knowledge and skill.

00:16:40.960 --> 00:16:45.919
The documentation practices remained pretty uneven.

00:16:45.920 --> 00:16:49.639
So some students wrote a lot, others wrote little.

00:16:49.640 --> 00:16:52.999
But they were overall much higher than in classes

00:16:53.000 --> 00:16:57.279
without the use of Emacs and Org Mode.

00:16:57.280 --> 00:16:59.559
The interactivity enabled through Emacs

00:16:59.560 --> 00:17:01.599
was highly praised by the students

00:17:01.600 --> 00:17:05.039
and always identified on the evaluations.

00:17:05.040 --> 00:17:08.559
And lastly and most importantly, given the problems

00:17:08.560 --> 00:17:13.279
that I identified earlier, the computing file

00:17:13.280 --> 00:17:15.079
and data handling competence

00:17:15.080 --> 00:17:18.279
of the students who worked with Emacs throughout

00:17:18.280 --> 00:17:23.399
opening Emacs shells, running programs through Emacs,

00:17:23.400 --> 00:17:26.999
these skills increased massively.

00:17:27.000 --> 00:17:30.599
In the published paper, I have expressed

00:17:30.600 --> 00:17:32.839
a little more doubt than you see on this slide.

00:17:32.840 --> 00:17:38.359
But now, actually, I'm feeling quite hopeful again,

00:17:38.360 --> 00:17:41.879
especially because recently for one term,

00:17:41.880 --> 00:17:47.679
I have returned to Jupyter notebooks.

00:17:47.680 --> 00:17:50.599
In the current term, I abandoned Emacs again

00:17:50.600 --> 00:17:53.119
for online Jupyter notebook installations.

00:17:53.120 --> 00:17:55.679
The reason is that these Jupyter notebooks

00:17:55.680 --> 00:18:00.159
that I use from DataCamp have generative AI support

00:18:00.160 --> 00:18:03.439
from ChatGPT integrated into the notebook.

00:18:03.440 --> 00:18:04.919
And I wanted to try that.

00:18:04.920 --> 00:18:08.519
But after one term without Emacs,

00:18:08.520 --> 00:18:10.199
I regret that decision now.

00:18:10.200 --> 00:18:13.199
The AI advantage does not make up

00:18:13.200 --> 00:18:15.119
for the loss of the immersion

00:18:15.120 --> 00:18:19.799
that Emacs and Org Mode deliver.

NOTE Conclusion & outlook

00:18:19.800 --> 00:18:21.399
And here's the summary.

00:18:21.400 --> 00:18:23.759
When learning computer and data science,

00:18:23.760 --> 00:18:25.679
immersion is everything.

00:18:25.680 --> 00:18:29.479
The best students will aim at immersion anyway.

00:18:29.480 --> 00:18:31.239
But for the majority of students,

00:18:31.240 --> 00:18:33.679
immersion must happen in class.

00:18:33.680 --> 00:18:39.839
Emacs and Org Mode performed throughout very well

00:18:39.840 --> 00:18:42.319
as the central literary programming platform.

00:18:42.320 --> 00:18:45.959
And the pre-configuring and the onboarding,

00:18:45.960 --> 00:18:48.959
which I showed to you, were very important

00:18:48.960 --> 00:18:50.359
to train the students quickly.

00:18:50.360 --> 00:18:54.479
In the paper, I also speculated on the impact

00:18:54.480 --> 00:18:57.919
of low-code, no-code, and AI coding assistance.

00:18:57.920 --> 00:19:00.239
And my general view on this is that

00:19:00.240 --> 00:19:01.799
the arrival of these tools

00:19:01.800 --> 00:19:04.319
make literary programming as an immersive technique

00:19:04.320 --> 00:19:08.399
focused on teaching a broad range of skills

00:19:08.400 --> 00:19:09.719
even more important.

00:19:09.720 --> 00:19:13.079
So even with AI--or especially with AI--

00:19:13.080 --> 00:19:16.799
this kind of approach, I think, could be critical.

00:19:16.800 --> 00:19:18.439
And that's it.

00:19:18.440 --> 00:19:19.839
I'm at the end of my presentation.

00:19:19.840 --> 00:19:21.719
Thank you very much for your attention.

00:19:21.720 --> 00:19:22.839
And I'm looking forward to the Q&A.

00:19:22.840 --> 00:19:27.280
Thank you.