Solving Algorithmic Problems in C
Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C.
Linus Torvalds, Creator of Linux
That quote isn't super relevent, but I like it.
Since this is the first year of the QSCC Team, I’m going to assume most of the people reading this right now are already familiar with the fundamentals of C programming. It’s a very syntactically simple language of course, which isn't to say it's easy to write safe and performant programs with it.
The greatest benefit and downfall of C is the level of freedom it provides. If you want to segfault for whatever reason, the language isn't going to stop you.
The goal of the upcoming tutorials and the content that will be on this site is to improve both your understanding of the features of C, and to generally help you to become more confident as a programmer!
An important skill, and one that can only be developed effectively (in my opinion) through time and familiarity, is the design of efficient algorithms. There are many ways to optimize a program without altering the algorithm used to complete a task. However, things like compiler flags and optimizing keywords (i.e. the restrict keyword in C) can only go so far.\n\nTo get a better understanding of algorithms from an academic perspective, take CISC/CMPE365. I'm saying that as though it's not a required course for basically anyone reading this.
To get a better understanding of the practical implementations of algorithms, please take a look at the Advent of Code problems and take some time over reading week to take a crack at them! A great thing about attempting these problems is that there are plenty of solutions that you can use as a reference (I wrote my solutions in Fortran!).
I would say there’s something to gain from even completing the first few days, but the most relevent challenges are probably going to be from Day 10 and onwards, since they usually involve Dynamic Programming.
Written by Ethan Silver