The hardest thing in learning how to program is probably keeping your motivation up so you should have a goal. Not a goal like "for fun and for college", a goal like "to make a Space Invaders clone" or something like that. If you don't like games it could be "to write a kernel driver for my network card"... First, look for Open Source code that does something similar to your goal. Browse it, be afraid (or not). Try to build it and run it. Once it works, try to modify bits of it with simple goals (for instance change the dialogs in a game). You can look up errors on Google if you get stuck. At some point your lack of knowledge of the language will limit your progress. You will be frustrated. Good! Because then you will have a good reason to actually learn the language. It will be time to pick up a book. The choice of a book is a controversial topic. Lots of people only swear by K&R. It is a good book but a bit dated. If you think books are too expensive you can find very decent ones for free on the Internet, for instance The C Book. If you have done what I said you will not read the whole book anyway. You will read enough to understand code and jump back to your project. You will come back to the book when you don't know how to do something or when you read something you do not understand. And that is fine: no book will ever teach you better than making your own mistakes and reading actual source code. I could point you to interesting code bases to study but you do not need those yet, so come back to Quora in 6 months. In the meantime, have fun!