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.