summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt
blob: c2a49049a7aac7d22b4a7b2351c327fb9e1def1c (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
WEBVTT captioned by daniel molina, checked by sachac

NOTE Introduction

00:00:01.360 --> 00:00:03.079
Welcome everybody. My name is Daniel Molina

00:00:03.080 --> 00:00:05.060
and I'm going to give this talk

00:00:05.061 --> 00:00:08.063
"Who needs Excel? Managing your students' qualifications

00:00:08.064 --> 00:00:08.959
with Org-table".

00:00:08.960 --> 00:00:10.559
I'm a professor. I work every day.

00:00:10.560 --> 00:00:12.519
I have to qualify my students.

00:00:12.520 --> 00:00:15.079
While most would consider normal in this situation,

00:00:15.080 --> 00:00:17.719
would be to use Excel or LibreOffice

00:00:17.720 --> 00:00:18.599
for doing that.

00:00:18.600 --> 00:00:21.179
However, I think that approaching it from Emacs

00:00:21.180 --> 00:00:24.479
has several interesting advantages.

00:00:24.480 --> 00:00:27.659
First, I would like to write the qualification

00:00:27.660 --> 00:00:33.599
next to the justification, next to the student error,

00:00:33.600 --> 00:00:36.639
and in the Excel format, it's not comfortable to do that.

00:00:36.640 --> 00:00:38.839
Actually, I always prefer to write in Emacs

00:00:38.840 --> 00:00:42.719
for many reasons, as many of you.

00:00:42.720 --> 00:00:46.679
Also, I love text format because I can compare versions

00:00:46.680 --> 00:00:50.279
using a control version system like Git and easily change.

00:00:50.280 --> 00:00:52.759
This is very useful for the revision period

00:00:52.760 --> 00:00:55.479
in which a student visits me

00:00:55.480 --> 00:01:01.039
and maybe I can change the qualification for any reason.

00:01:01.040 --> 00:01:03.439
I also can export the results directly to PDF

00:01:03.440 --> 00:01:08.679
to publish them in my online campus for the student.

00:01:08.680 --> 00:01:11.359
I have many tools for doing that.

00:01:11.360 --> 00:01:13.199
I already knew about Org-table formula.

00:01:13.200 --> 00:01:15.199
I thought it was very cool and useful

00:01:15.200 --> 00:01:16.159
to use Emacs for that,

00:01:16.160 --> 00:01:19.239
and I have actually found a package `orgtbl-aggregate`

00:01:19.240 --> 00:01:22.859
that seemed adequate for doing that.

00:01:22.860 --> 00:01:26.319
Unfortunately, I didn't see a lot of information

00:01:26.320 --> 00:01:29.159
about how to do that in a painless way.

00:01:29.160 --> 00:01:31.759
So, I have to learn, training and testing,

00:01:31.760 --> 00:01:34.999
and then prepare these tools to solve that problem

00:01:35.000 --> 00:01:36.639
and to help other teachers.

00:01:36.640 --> 00:01:39.959
Anyway, it could be used not only for teaching

00:01:39.960 --> 00:01:41.959
but for more contexts.

NOTE Demonstration

00:01:41.960 --> 00:01:44.799
Well, let's start.

00:01:44.800 --> 00:01:46.459
First, I have two sections,

00:01:46.460 --> 00:01:53.399
the comments and the section of the table, or results.

00:01:53.400 --> 00:01:56.479
I have... The comment for each student

00:01:56.480 --> 00:01:57.559
is in a different headline.

00:01:57.560 --> 00:02:05.439
It's very useful to check with a note.

00:02:05.440 --> 00:02:10.159
I can go directly using your helm or ivy

00:02:10.160 --> 00:02:12.999
or consult to go directly to the section.

00:02:13.000 --> 00:02:14.559
So it's very nice.

00:02:14.560 --> 00:02:22.879
Then I put the comment, right, completely wrong,

00:02:22.880 --> 00:02:30.599
it answers other questions.

00:02:30.600 --> 00:02:35.839
I put other comments here that I could send to the student,

00:02:35.840 --> 00:02:37.480
you can imagine, and then

00:02:37.481 --> 00:02:40.159
I can put the qualification, the score for each student.

00:02:40.160 --> 00:02:43.159
The thing with that is, initially,

00:02:43.160 --> 00:02:46.219
when I started doing that, I put, I don't know,

00:02:46.220 --> 00:02:50.719
the exception and a qualification with that.

00:02:50.720 --> 00:02:55.679
Okay, that's one point, this a three,

00:02:55.680 --> 00:03:06.679
and use a column total with something like that.

00:03:06.680 --> 00:03:08.319
Okay, that's nice.

NOTE Range

00:03:08.320 --> 00:03:11.639
But then, when I started getting more and more parts,

00:03:11.640 --> 00:03:17.081
I considered it more useful to use,

00:03:17.082 --> 00:03:20.699
to put for each part,

00:03:20.700 --> 00:03:20.700
which is the maximum qualification,

00:03:20.300 --> 00:03:22.919
on the range of the qualification.

00:03:22.920 --> 00:03:25.559
In that case, I'm going to put,

00:03:25.560 --> 00:03:28.679
the first one is two scores, the second three points,

00:03:28.680 --> 00:03:34.999
the third one is one point, and the last one, four points.

00:03:35.000 --> 00:03:37.799
And instead of putting that in that way,

00:03:37.800 --> 00:03:41.027
I like to put one is completely right,

00:03:41.028 --> 00:03:47.319
zero is completely wrong, or maybe some intermediate values for that.

00:03:47.320 --> 00:03:50.999
Of course, I have to change the qualification,

00:03:51.000 --> 00:03:54.439
the formula, so it's very simple.

00:03:54.440 --> 00:03:56.479
I only have to put,

00:03:56.480 --> 00:04:08.299
multiply the values of the second line with that.

00:04:08.300 --> 00:04:11.899
So, it's very useful for doing that.

NOTE More qualifications

00:04:11.900 --> 00:04:16.639
Okay, that's the first part, so I can put the comment,

00:04:16.640 --> 00:04:19.959
I can go to the section, I can create...

00:04:19.960 --> 00:04:24.919
I'm going to put more qualifications.

00:04:24.920 --> 00:04:27.639
Now I'm going to put the table.

00:04:27.640 --> 00:04:30.459
First I'm going to change, rename the column name,

00:04:30.460 --> 00:04:39.039
because it's easier when there is only one word.

00:04:39.040 --> 00:04:47.159
And it's very simple to use. You only have to put

00:04:47.160 --> 00:04:51.439
the name, aggregate, the name of the table,

00:04:51.440 --> 00:04:54.659
in that case group A,

00:04:54.660 --> 00:04:57.199
and in another string, the columns.

00:04:57.200 --> 00:05:03.799
For instance, name, surname, total.

00:05:03.800 --> 00:05:07.439
And you can see that you can get a lesson list

00:05:07.440 --> 00:05:09.119
with all the students,

00:05:09.120 --> 00:05:16.759
but only with the final score to publish them.

00:05:16.760 --> 00:05:17.679
Okay?

00:05:17.680 --> 00:05:20.679
Even you can update the name of the column,

00:05:20.680 --> 00:05:21.800
not in the original table,

00:05:21.801 --> 00:05:29.559
but in the lesson table using that format.

00:05:29.560 --> 00:05:32.099
Okay?

00:05:32.100 --> 00:05:34.239
That is a good option.

NOTE Subsets

00:05:34.240 --> 00:05:38.499
Now we are going to see how can we use that

00:05:38.500 --> 00:05:44.359
to make a subset of the students.

00:05:44.360 --> 00:05:47.839
For instance, imagine, this is me,

00:05:47.840 --> 00:05:54.799
I'm going to put the bad, I change, now I can update,

00:05:54.800 --> 00:06:02.759
you can see this, but also I'm going to put a list

00:06:02.760 --> 00:06:10.960
with the students that have failed the exam.

00:06:10.961 --> 00:06:21.259
It's simple, because this package has the option `:cond`.

00:06:21.260 --> 00:06:26.199
I'm going to put first to see it better,

00:06:26.200 --> 00:06:28.599
I'm going to put a condition

00:06:28.600 --> 00:06:37.519
in which we aggregate less than a half, 5,

00:06:37.520 --> 00:06:44.179
and I have to use a `string-to-number` total.

00:06:44.180 --> 00:06:47.259
In that way, I can see that this is the student

00:06:47.260 --> 00:06:48.839
that has failed the exam,

00:06:48.840 --> 00:06:54.079
I could use that to make another table,

00:06:54.080 --> 00:07:08.299
this is the people that passed the exam.

NOTE Sorting

00:07:08.300 --> 00:07:10.980
Another interesting feature is that

00:07:10.981 --> 00:07:15.620
I can... the lesson table can be sorted automatically.

00:07:15.621 --> 00:07:20.100
It's simple. You only have to put this symbol (`^`),

00:07:20.101 --> 00:07:23.360
and you can put next to the column you want

00:07:23.361 --> 00:07:26.999
to use for the sort, and then you can put

00:07:27.000 --> 00:07:30.679
`a` if you want to sort alphabetically,

00:07:30.680 --> 00:07:33.879
in uppercase if you want to reverse the sort,

00:07:33.880 --> 00:07:38.919
and `n` if you want to sort numerically.

00:07:38.920 --> 00:07:40.759
For instance, I can put that

00:07:40.760 --> 00:07:43.959
from the lesser score to the best score,

00:07:43.960 --> 00:07:46.639
or here from the best score to the lesser score.

00:07:46.640 --> 00:07:48.960
And this sort is completely independent

00:07:48.961 --> 00:07:51.640
to the sort of the original table.

NOTE New table

00:07:51.641 --> 00:07:54.520
Now I'm going to do another different thing,

00:07:54.521 --> 00:08:02.799
we are going to put a new table,

00:08:02.800 --> 00:08:07.559
I'm going to put a new table

00:08:07.560 --> 00:08:09.639
in which I'm going to put

00:08:09.640 --> 00:08:14.319
the number of passed students, failed students

00:08:14.320 --> 00:08:16.519
and the ratio of students. It's simple.

00:08:16.520 --> 00:08:26.559
I'm going to put the pass, in that case, as column,

00:08:26.560 --> 00:08:32.919
I can put the count, of course, I can put the count,

00:08:32.920 --> 00:08:35.799
the number of students

00:08:35.800 --> 00:08:42.079
that have passed, so I'm going to put in that way, ok?

00:08:42.080 --> 00:08:58.479
I'm going to put pass, count, failed, ratio.

00:08:58.480 --> 00:08:59.739
You can see, ok?

00:08:59.740 --> 00:09:01.859
But this only the count,

00:09:01.860 --> 00:09:04.519
you are going to put the number wrong.

00:09:04.520 --> 00:09:08.359
So, it's true, but you can actually put formula here.

00:09:08.360 --> 00:09:10.079
For instance, you can say,

00:09:10.080 --> 00:09:12.399
I know that I have 3 students,

00:09:12.400 --> 00:09:18.799
so the number of failed is 3 minus the passed student.

00:09:18.800 --> 00:09:24.959
And also, I can put the formula, is the people,

00:09:24.960 --> 00:09:27.719
the students that passed,

00:09:27.720 --> 00:09:36.079
divide into the number total of students, ok?

00:09:36.080 --> 00:09:41.379
Let's go to put that in that way,

00:09:41.380 --> 00:09:44.399
is the people that passed, it is better in that way,

00:09:44.400 --> 00:09:48.359
and also I can put directly the number of,

00:09:48.360 --> 00:09:50.919
the ratio of students.

00:09:50.920 --> 00:09:55.739
So, in that way, I can have a table

00:09:55.740 --> 00:09:57.519
with the students that passed,

00:09:57.520 --> 00:09:58.559
the students that failed

00:09:58.560 --> 00:10:01.279
and the ratio of people that passed.

NOTE Statistics

00:10:01.280 --> 00:10:04.819
Sometimes this type of qualification will be useful for me,

00:10:04.820 --> 00:10:08.079
to see how much has been the sound,

00:10:08.080 --> 00:10:12.239
how much good has been the exercise.

00:10:12.240 --> 00:10:14.879
Now, I'm going to put a new table.

00:10:14.880 --> 00:10:22.421
This new table is going to go some statistics,

00:10:22.422 --> 00:10:32.379
`statistics_score`, `begin: aggregate :table "final"`.

00:10:32.380 --> 00:10:43.919
In this case, I'm going to use not the original table,

00:10:43.920 --> 00:10:54.019
but a final, I'm going to put `final_group`,

00:10:54.020 --> 00:11:01.399
`final_p1`, `final_p2`, ok?

00:11:01.400 --> 00:11:06.119
And as `:cols`, I'm going to put directly

00:11:06.120 --> 00:11:13.579
how many results I have, I put number,

00:11:13.580 --> 00:11:19.199
I'm going to put also the mean.

00:11:19.200 --> 00:11:21.400
You can see that mean total is not working

00:11:21.401 --> 00:11:24.519
because I'm using this table and I renamed,

00:11:24.520 --> 00:11:26.079
the column name was renamed,

00:11:26.080 --> 00:11:36.679
so it's `mean(Score)`, mean,

00:11:36.680 --> 00:12:05.919
and then the score. You can obtain `stdiv` -- `sdev`,

00:12:05.920 --> 00:12:08.959
sorry, there was an error about that,

00:12:08.960 --> 00:12:12.639
and two decimal,

00:12:12.640 --> 00:12:17.799
and that is another interesting score.

NOTE Combining

00:12:17.800 --> 00:12:23.239
Now, I'm going to finish showing how we can use.

00:12:23.240 --> 00:12:25.839
To finish it, we are going to see

00:12:25.840 --> 00:12:28.299
how we can combine several tables

00:12:28.300 --> 00:12:32.479
or even an aggregated table in a new table.

00:12:32.480 --> 00:12:36.259
For instance, you can have a table for the practice 1,

00:12:36.260 --> 00:12:38.199
you can have a table for the practice 2,

00:12:38.200 --> 00:12:40.359
so I'm going to do that.

00:12:40.360 --> 00:12:48.180
I'm going to move this table. You can copy or remove,

00:12:48.181 --> 00:12:49.759
doesn't matter the order,

00:12:49.760 --> 00:12:59.519
I'm going to put this to identify the result of practice 2,

00:12:59.520 --> 00:13:03.321
Org create an ID (`org-id-get-create`),

00:13:03.322 --> 00:13:07.479
then we have a previous result,

00:13:07.480 --> 00:13:10.199
and I have a final table.

00:13:10.200 --> 00:13:11.839
The final table could be complicated,

00:13:11.840 --> 00:13:17.439
but it's not so much complicated, it's only that,

00:13:17.440 --> 00:13:21.959
I'm going to put something that the formula wants.

00:13:21.960 --> 00:13:26.588
The formula is to make

00:13:26.589 --> 00:13:34.400
an `org-lookup-first` of the second name,

00:13:34.401 --> 00:13:41.540
considering that it's unique,

00:13:41.541 --> 00:13:53.439
`remote` of the surname,

00:13:53.440 --> 00:14:05.559
and let's say another `remote` of the `$3` element,

00:14:05.560 --> 00:14:15.119
ok, that's an error because I don't put yet the ID,

00:14:15.120 --> 00:14:19.759
so I'm going to copy -- mark and copy --

00:14:19.760 --> 00:14:28.519
and paste the unique ID generated,

00:14:28.520 --> 00:14:38.519
I'm going to put that... I think there is missing one.

00:14:38.520 --> 00:14:43.399
Finally. Okay, that's right.

00:14:43.400 --> 00:14:49.579
So imagine that I change something here, for instance,

00:14:49.580 --> 00:14:56.700
I put... I change that,

00:14:56.701 --> 00:15:02.199
actually, this is changed also, and this is changed.

00:15:02.200 --> 00:15:08.599
This is a good way to divide the classification

00:15:08.600 --> 00:15:10.200
in several files, one for the practice 1,

00:15:10.201 --> 00:15:15.039
one for the practice 2, and one final practice

00:15:15.040 --> 00:15:27.639
that I can finally export in a final table.

00:15:27.640 --> 00:15:31.119
Of course you can make it a lot more pretty,

00:15:31.120 --> 00:15:33.359
but this is all I want to show you.

00:15:33.360 --> 00:15:34.799
I hope with this talk

00:15:34.800 --> 00:15:37.679
you have learned a lot more about Org formula,

00:15:37.680 --> 00:15:39.688
[orgtbl-aggregate] package,

00:15:39.689 --> 00:15:42.279
and how you can use all this techniques

00:15:42.280 --> 00:15:45.599
to improve your qualification of a student,

00:15:45.600 --> 00:15:50.480
or for whatever you want.