What is Advent of Code?
Advent of Code is a yearly competition that takes place during the month of December as a build-up to Christmas. Similar to a conventional Advent Calendar, a new coding challenge is presented everyday that needs to be solved. Each coding challenge gets progressively harder as the date approaches closer to Christmas.
Approach for the 2022 year
A lot has changed in my skillset since the last time I attempted Advent of Code! I have since learned a lot about C and C++, as a means of understanding more about the underlying hardware of a computer. To further my knowledge of these programming languages and gain some experience with pointers and various algorithms, I tried to use these programming languages to the best of my ability.
GitHub
https://github.com/varunan-vara/AdventOfCode2022
Takeaways from Advent of Code 2022
- Using an IDE that is designed for the particular task at hand is very helpful, especially for specialized languages like C and C++. Although Visual Studio Code has served me well for Python and JavaScript development, I found that working with C in this IDE to be challenging, particularly in ensuring that header files were functional. In contrast, using Visual Studio was a significantly better experience.
- Pointers are significantly more important than my lectures had made it seem! My “Intro to Programming” course had spent about 2 months covering pointers, which I thought was too much at the time. However, after having to create several arrays, 2D matrices and structs, I now think that there was so much more to learn than the basic principles of pointers. This experience has definitely advanced my knowledge in pointers and arrays, particularly in C.
- I became a lot more comfortable using classes in C++, particularly with the odd syntax in constructors and methods. Although the syntax used for classes in C++ is not as intuitive as in TypeScript or Dart, understanding these concepts allowed for me to learn things like the Unreal Engine Framework and making apps that interface with hardware on a lower level.