Welcome everybody. My name is Daniel Molina
and I'm going to give this talk
"Who needs Excel? Managing your students' qualifications
with Org-table".
I'm a professor. I work every day.
I have to qualify my students.
While most would consider normal in this situation,
would be to use Excel or LibreOffice
for doing that.
However, I think that approaching it from Emacs
has several interesting advantages.
First, I would like to write the qualification
next to the justification, next to the student error,
and in the Excel format, it's not comfortable to do that.
Actually, I always prefer to write in Emacs
for many reasons, as many of you.
Also, I love text format because I can compare versions
using a control version system like Git and easily change.
This is very useful for the revision period
in which a student visits me
and maybe I can change the qualification for any reason.
I also can export the results directly to PDF
to publish them in my online campus for the student.
I have many tools for doing that.
I already knew about Org-table formula.
I thought it was very cool and useful
to use Emacs for that,
and I have actually found a package `orgtbl-aggregate`
that seemed adequate for doing that.
Unfortunately, I didn't see a lot of information
about how to do that in a painless way.
So, I have to learn, training and testing,
and then prepare these tools to solve that problem
and to help other teachers.
Anyway, it could be used not only for teaching
but for more contexts.
Well, let's start.
First, I have two sections,
the comments and the section of the table, or results.
I have... The comment for each student
is in a different headline.
It's very useful to check with a note.
I can go directly using your helm or ivy
or consult to go directly to the section.
So it's very nice.
Then I put the comment, right, completely wrong,
it answers other questions.
I put other comments here that I could send to the student,
you can imagine, and then
I can put the qualification, the score for each student.
The thing with that is, initially,
when I started doing that, I put, I don't know,
the exception and a qualification with that.
Okay, that's one point, this a three,
and use a column total with something like that.
Okay, that's nice.
But then, when I started getting more and more parts,
I considered it more useful to use,
to put for each part,
which is the maximum qualification,
on the range of the qualification.
In that case, I'm going to put,
the first one is two scores, the second three points,
the third one is one point, and the last one, four points.
And instead of putting that in that way,
I like to put one is completely right,
zero is completely wrong, or maybe some intermediate values for that.
Of course, I have to change the qualification,
the formula, so it's very simple.
I only have to put,
multiply the values of the second line with that.
So, it's very useful for doing that.
Okay, that's the first part, so I can put the comment,
I can go to the section, I can create...
I'm going to put more qualifications.
Now I'm going to put the table.
First I'm going to change, rename the column name,
because it's easier when there is only one word.
And it's very simple to use. You only have to put
the name, aggregate, the name of the table,
in that case group A,
and in another string, the columns.
For instance, name, surname, total.
And you can see that you can get a lesson list
with all the students,
but only with the final score to publish them.
Okay?
Even you can update the name of the column,
not in the original table,
but in the lesson table using that format.
Okay?
That is a good option.
Now we are going to see how can we use that
to make a subset of the students.
For instance, imagine, this is me,
I'm going to put the bad, I change, now I can update,
you can see this, but also I'm going to put a list
with the students that have failed the exam.
It's simple, because this package has the option `:cond`.
I'm going to put first to see it better,
I'm going to put a condition
in which we aggregate less than a half, 5,
and I have to use a `string-to-number` total.
In that way, I can see that this is the student
that has failed the exam,
I could use that to make another table,
this is the people that passed the exam.
Another interesting feature is that
I can... the lesson table can be sorted automatically.
It's simple. You only have to put this symbol (`^`),
and you can put next to the column you want
to use for the sort, and then you can put
`a` if you want to sort alphabetically,
in uppercase if you want to reverse the sort,
and `n` if you want to sort numerically.
For instance, I can put that
from the lesser score to the best score,
or here from the best score to the lesser score.
And this sort is completely independent
to the sort of the original table.
Now I'm going to do another different thing,
we are going to put a new table,
I'm going to put a new table
in which I'm going to put
the number of passed students, failed students
and the ratio of students. It's simple.
I'm going to put the pass, in that case, as column,
I can put the count, of course, I can put the count,
the number of students
that have passed, so I'm going to put in that way, ok?
I'm going to put pass, count, failed, ratio.
You can see, ok?
But this only the count,
you are going to put the number wrong.
So, it's true, but you can actually put formula here.
For instance, you can say,
I know that I have 3 students,
so the number of failed is 3 minus the passed student.
And also, I can put the formula, is the people,
the students that passed,
divide into the number total of students, ok?
Let's go to put that in that way,
is the people that passed, it is better in that way,
and also I can put directly the number of,
the ratio of students.
So, in that way, I can have a table
with the students that passed,
the students that failed
and the ratio of people that passed.
Sometimes this type of qualification will be useful for me,
to see how much has been the sound,
how much good has been the exercise.
Now, I'm going to put a new table.
This new table is going to go some statistics,
`statistics_score`, `begin: aggregate :table "final"`.
In this case, I'm going to use not the original table,
but a final, I'm going to put `final_group`,
`final_p1`, `final_p2`, ok?
And as `:cols`, I'm going to put directly
how many results I have, I put number,
I'm going to put also the mean.
You can see that mean total is not working
because I'm using this table and I renamed,
the column name was renamed,
so it's `mean(Score)`, mean,
and then the score. You can obtain `stdiv` -- `sdev`,
sorry, there was an error about that,
and two decimal,
and that is another interesting score.
Now, I'm going to finish showing how we can use.
To finish it, we are going to see
how we can combine several tables
or even an aggregated table in a new table.
For instance, you can have a table for the practice 1,
you can have a table for the practice 2,
so I'm going to do that.
I'm going to move this table. You can copy or remove,
doesn't matter the order,
I'm going to put this to identify the result of practice 2,
Org create an ID (`org-id-get-create`),
then we have a previous result,
and I have a final table.
The final table could be complicated,
but it's not so much complicated, it's only that,
I'm going to put something that the formula wants.
The formula is to make
an `org-lookup-first` of the second name,
considering that it's unique,
`remote` of the surname,
and let's say another `remote` of the `$3` element,
ok, that's an error because I don't put yet the ID,
so I'm going to copy -- mark and copy --
and paste the unique ID generated,
I'm going to put that... I think there is missing one.
Finally. Okay, that's right.
So imagine that I change something here, for instance,
I put... I change that,
actually, this is changed also, and this is changed.
This is a good way to divide the classification
in several files, one for the practice 1,
one for the practice 2, and one final practice
that I can finally export in a final table.
Of course you can make it a lot more pretty,
but this is all I want to show you.
I hope with this talk
you have learned a lot more about Org formula,
[orgtbl-aggregate] package,
and how you can use all this techniques
to improve your qualification of a student,
or for whatever you want.