After a basic course in C and provided that you like this language, my recommendation is:
- Learn about algorithms and data structures. This is the real "working engine" for any program. I highly recommend
Robert Sedgewick's "
Algorithms in C".
- Learn about C libraries (Standard and many others contributed) and become well acquainted with pointers and memory allocation concepts. If you can't make your machine throw up, you have not learned enough C.
- Learn to use even the modest tool to do your job. Back when I learned C, we were forced by the professor to use various simple editors, so to focus on language and not on IDE's - what existed back then anyway, bells and whistles. Now, it is an absolute necessity to use some decent IDE to do your job but if you know C (or any language for that matter), it is just a matter of getting used to.
- Try to make a whole world ticking through the command line first. Full blown applications with candy GUIs, come second.
- Choose between going "low" or "high". I'm not particularly exposed to low level programming but I think that going "high" gives much more opportunities to get decent programming skills, taking into account the bunch of languages you can migrate to and the bunch of
kinds of applications you can develop.
- If you want to take a really big dive into C world, then get into the inner world of some Linux distro (you name it), however "deep" in the system you like.
- Get into the C++ world as well, for an overdose of hard times in programming which will pay millions in programming experience.
I
did not say anything new, most of these have more or less already been mentioned in the thread, but this is my opinion, based solely on my own programming experience. In short, don't just use C for scientific purposes: go for being a top - notch programmer too!