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.