Year-End Learning: My Q4 2024 List


My List

Now that we’re close to the end of the year, I wanted to create a list of things that I want to study and learn before the year ends. My list will include things that I’m studying at uni now too.

Note that this list is not meant to mean that I am aiming to exhaustively learn the subject, but rather that I spend time learning some fundamentals, intermediate, or advanced concepts about the given subject.

  • Django
  • Web Development Fundamentals (College Course)
  • Algebra
  • C++
  • ROS (Robot Operating System)

Django

I typically use Flask and FastAPI for my Python projects and rely on React or Angular for my web-based development. However, I’ve never worked with Django, despite hearing a lot about it. I’m intrigued to explore what Django can offer for a project I’m developing—a web-based flashcard system.

Currently, the tool I use for flashcards involves a lot of manual input, though it does offer some automation using AI for content generation. However, it’s limited by the predefined structure that the company/owners of the tool have set. I’m looking for more flexibility and control in how I design and manage my flashcards. My aim is to customize the entire process to suit my learning style, and I’m even considering integrating GPT or another large language model (LLM) to automatically generate tests and quizzes to reinforce my learning.

By the end of the year, my goal is to have this project up and running with basic flashcard creation capabilities. Through this, I am hoping to familiarize myself with Django’s core features and get a solid understanding of how it can enhance my development workflow.

Web Development Foundations (College Course)

I’m already familiar with much of the material in this course, but it’s a required part of my college major. The course covers fundamental topics like HTML, CSS, the Internet, DNS, TCP/IP, HTTP, the Web, and XML. It’s fairly basic for me, but I’m aiming to complete it by the end of October.

Even though the content is elementary, it’s been helpful to revisit the foundations of web development. Plus, I’ve picked up a few new insights, particularly in HTML, that I wasn’t aware of before, which has been a nice bonus.

Algebra

I never had much of a passion for mathematics, even though I did reasonably well in high school. It’s almost amusing to think that, later in life, I’d voluntarily dive back into studying math. I can easily imagine the perplexed expression my teenage self would have as I explain that I now genuinely enjoy and appreciate the subject.

My current focus on Algebra is part of my plan to build a solid foundation for tackling more advanced topics like Pre-Calculus and Calculus. While I’m currently majoring in Software Engineering, I’m considering switching to Computer Science, which requires at least a Pre-Calculus course to get into.

Beyond that, I’m eager to explore more theoretical areas like AI and Quantum Computing, both of which are deeply rooted in complex mathematics. Strengthening my math skills now will pave the way for diving into these challenging and exciting fields.

C++

As if mathematics wasn’t already enough to turn my brain into mush, I’ve decided to dive deeper into C++. Despite hearing advice from many senior software engineers to steer clear of C and C++, I’ve developed a strong desire to master these complex languages—particularly C++.

The reason I’m focusing on C++ is because I want to explore new programming domains. From my research, C is more dominant in embedded systems, with C++ following closely behind. However, C++ is widely used in various areas such as game engines, physics simulations, robotics, and more—all areas that intrigue me. This versatility is what makes C++ particularly appealing as I venture into these domains.

To guide my learning, I’m following the teachings of Bjarne Stroustrup, the creator of C++. I’ve started reading his book, The C++ Programming Language, working through it piece by piece. My immediate goal is to finish Part 1, which offers a high-level overview of the language, covering topics like containers, algorithms, abstraction mechanisms, concurrency, and more.

Robot Operating System (ROS)

Lastly, I’m eager to dip my toes into robotics, and the path I’ve chosen to get started is by learning and using ROS (Robot Operating System). For those unfamiliar, ROS is essentially a middleware framework that facilitates robot software development. It offers a wide array of tools and utilities that streamline the development process and make it easier to build complex robotic systems.

Since I’m still a novice in C++, I plan to start with Python for my initial foray into ROS, as it allows me to grasp the fundamental concepts without getting bogged down by C++ intricacies. My first step will be to dive into the ROS documentation, starting with the resources provided on the official site, to build a solid foundation.

End

So, that wraps up my learning list for Q4 of 2024. It’s definitely ambitious, but I’m excited to dig into these areas. My top priorities will, of course, be my college course and math studies, but I’m hoping to carve out time to explore the other domains as well. We’ll see how things pan out especially considering other things I need to learn for both of my jobs, but I’m looking forward to the challenge!