In fact, there is no need to learn C language first, and it is strongly recommended not to start with C language.
The courses arranged by schools typically start with C language, based on the idea of understanding principles before learning practical skills. This reasoning is also why courses like computer principles, assembly, operating systems, and electronic circuits are placed at the forefront, which is quite inappropriate.

Many people drive cars for a lifetime without understanding how they work.
A better way to learn should be to first know how to use it, and then understand the principles. For example, when learning to drive, one should focus on mastering driving skills without starting from the principles of how a car operates. You can get the hang of it in three days and be on the road in a week, enjoying the driving experience. Then, while dealing with issues that arise during driving, you can learn to add windshield washer fluid, change oil, and even understand some operational principles, which is much more reasonable.
With this example, it becomes clear that the courses arranged by universities are quite unreasonable. Courses like operating systems and assembly are so challenging that even the best students might be discouraged, and the remaining students may doubt their suitability for programming. Using C language as the first programming language is quite inappropriate; after learning a lot of theory, when finally having a course that allows for creating something small to cultivate interest and increase motivation, the complex environment setup and syntax, combined with poor textbooks, can be a real downer. At this point, many students come to the painful conclusion that they are “not suited for learning programming.”
It is still strongly recommended to use Java as the first programming language, as there are abundant learning resources and many things that can be done. Every year, Java is used for graduation projects, and major companies in the country primarily use Java as their first programming language; very few use C language, which speaks volumes. Learning Java, you will hardly encounter insurmountable obstacles; if you struggle while others are doing well, it might be time to consider switching fields.

For learning Java, you can refer to this book.
Of course, Java is not the only choice; Python and Go are also excellent options. However, the first choice should still be Java, as it allows for deeper learning and enables you to create meaningful projects according to your needs.

For learning Python, you can refer to this book.
Now, students in their second year are probably starting their C language courses. If you don’t have the energy to self-study other programming languages, just focus on learning this course well, understanding that it is a foundational course in computer science. Mastering it is a skill, and not mastering it is also normal; don’t let it discourage you.
Programmer Aladdin
10+ years of development experience
Computer science study planner
Feel free to message for communication
