Saving the semester!

Gemini version of this post

Hey, everyone! In my previous post, I wrote about how great I was doing. Unfortunately, things ended up turning out terrible. So terrible, that I almost failed most of my subjects again; however, I somehow managed to save them all the last school week. This is the story of how I saved the semester, and even with good grades. This post was inspired by Joel’s.

Eight semester looked bright at the beginning: I had a friend to share new school experiences with, I had more subjects to save the last school week (as usual), I would spend nearly all day at school (which I thought would be fun), and I also had other friends with whom to laugh from time to time. This semester would be fun!

It wasn’t.

I thought spending all day at school would be as fun as it was in second semester, back in 2019. It turned out to be extremely exhausting this time. It took away a lot of energy from me. I couldn’t always keep up with my eight subjects, or anything else.

I rarely came across my friends, because my schedule overlapped with theirs. I didn’t spend a lot of time with my friend either, because even though we shared many classes, we rarely shared the time in between for many reasons.

The classes themselves weren’t very demanding, but doing everything at the very last minute definitely made them appear that way, and I had eight subjects this time, compared to the six of past semester. The biggest challenge were the final projects, especially since I ended up having to do most of the work in all of my teams. In this post, I will explain how I managed to save each subject. The subjects are sorted by final grade.

The ones that didn’t need saving

Programmable systems (96/100)

I’ve worked with microcontrollers since I was 10. I got my first Arduino at that age, and since then, I’ve worked on a lot of small robotics and IoT projects. I’ve used different Arduino models, ESP8266 and ESP32, and even PIC19F84A with assembly. For that reason, this subject turned out to be easy for me.

The teacher was great! I found his classes to be interesting and fun, and I always enjoyed sharing my knowledge in class. We used the PIC18F4550, and I managed to get every single lab exercise working. I didn’t install the compiler and flasher because they were proprietary, but luckily, I could always use them in one of my teammates’ computer.

The final project was up to the teams to decide. My team would build a safe box, that you would be able to unlock by connecting to its WiFi access point and writing the unlock code. I used an ESP8266 board, and reused a lot of code from an old project for the hotspot, web server and EEPROM config. This was easiest project, and I got it working in like, three days. My friend built the wooden box. Here’s the source code:

Research workshop I (93/100)

This subject was the most chill and boring one. The teacher often brought her political views into class, and this made it demotivating for me, so I often skipped it. The final project was a thesis (half of it), that I wrote along with a classmate. Ours was about client-server operating systems and their applications in distributed computing. I wrote all of the actual theory, based on Andrew S. Tanenbaum books.

Artificial intelligence (90/100)

This teacher rarely gave us classes: she’s a very busy person! The few classes we had, consisted on her reading PowerPoint slides to us. The exams contained almost no practice. The only software we actually used was Weka. We also learned a bit of MATLAB and a bit of the Bayes theorem, neither of which actually came in the exams.

For the third partial, we had to build a line following robot for a contest, one for each team. Of course, I was the one who built my team’s robot, using the very same Arduino I got at the age of 10. We won!

The final project was also up to the teams. My team’s project would be an app to detect brain tumors in magnetic resonance images. We didn’t learn anything in class, so we took an already existing project from GitHub and presented it as our own.

The ones I almost fail

French III (93/100)

I was very excited to take French with this same teacher. He’s very cool, fun, young and knows a lot about French and languages in general, as he studied letters. I like him a lot! I was doing mostly okay in class, but then the whole semester came upon me, and I had to choose one subject to sacrifice: I chose French. Language courses aren’t part of the career, so this wouldn’t affect me.

I stopped attending French the last two weeks, and I actually felt bad about my decision, but there was no other option. However, one day before the final exam, I found out that, as it turned out, I hadn’t actually missed a lot. There was still chance! I presented the exam, sang “A cause des garçons” by Yelle in karaoke, and passed the subject!

Switching and routing of data networks (88/100)

This subject was also very boring. The teacher would only show us Cisco slides, explain them a bit, and then assign us Packet Tracker activities. No one actually takes networking classes seriously, as teachers don’t take them seriously enough either. I handed in last week the activities I did throughout the semester, and passed the subject!

I had already taken a class with him online during the pandemic, and did exactly the same. I handed in everything last minute and passed, so this time I knew it would be the same, although I was genuinely scared that I wouldn’t run with the same luck.

Languages and automatons II (86/100)

I was excited to take class with this teacher again. He’s known and feared by everyone for being very strict and demanding, however, I really enjoyed the subject I took with him the previous semester. It was fascinating and I learned a lot about microprocessors.

This time, however, I didn’t enjoy his class as much. He passed teams to the front to explain the class topics, interrupted them and kept going for the rest of the class. I hated that, I hated having to stand hours, listening to him.

The final project was to create a compiler. I wrote it in Python, initially using Tk for the UI. Then I separated the compiler and the UI, and switched the UI to GTK4. I finished the lexical analyzer, and then got lost with the syntax. I read the code of Hare’s compiler, even though I haven’t learned the language yet, and turned out to be very simple, so I managed to adapt it into my syntax analizer, and the result was perfect.

Out of mere curiosity, I added the icing on the cake: a feature to graph the syntax tree into a PDF using Graphviz. I ran out of time to implement the semantic analizer, so I handed in what I had, and what was only the icing, ended up saving us! The teacher gave us a nearly perfect score for the project, not minding the lack of semantic analysis because he was delighted with the tree. Here’s the source code:

Here’s an example of the resulting generated tree:

Specialized topics of web development (85/100)

I’ve worked with Laravel and other frameworks since I was 12, so I didn’t think I would have any trouble with this subject, and asked the teacher to let me skip the classes and only present activities and exams. He gave me permission.

The main class topics were Laravel, Node.js, MongoDB and AWS. I replaced MongoDB with RethinkDB (due to licensing). In general, I didn’t have trouble getting the assignments and exams done; however, the final project was a nightmare.

The final project consisted on a small e-shopping platform. As always, I enjoy making things complicated for me and learn from it, so I chose CHICKEN Scheme (and PostgreSQL) for the back-end, and I had a very difficult time with it, as the web development ecosystem for CHICKEN is very limited. I started the project three days before the deadline, and a lot was still missing from the back-end the day of the deadline. I didn’t have the front-end yet! I managed to implement part of it, but then I gave up and asked the teacher if I could present an exam instead, and he said yes. I completed the exam successfully, and passed the subject! Here’s the unfortunately incomplete source code:

Software projects management (77/100)

This teacher is terrible! She’s very annoying, doesn’t teach well, arrives late to classes, wants us to adapt to her schedules, and on top of that, wants good results from us. No matter how hard I tried, I couldn’t ever pay attention to her, I couldn’t ever seem to comprehend what she was saying. I didn’t put a lot of effort into this subject, and neither my friend, so we got kicked out of the team and things got even more complicated. We lagged behind so bad, that we were starting sprint 2 when everyone else was finishing it.

The final project that my friend and I were supposed to work on (using Scrum) consisted on a web app where you could order food from the school cafeteria, so it would be ready at a certain hour, so that you didn’t have to line up. We only had the login and sign up! So, my friend came up with a great idea: why not take my unfinished e-shopping project, and transform it into this project? This is what saved us. We presented sprint 2, and it went out great! Our project management was terrible, but we made up with some bonus points we got from other activities, and passed the subject!