This semester I'll be teaching Introduction to programming at FMI of Sofia University. To those of you lucky enough to be my fellow students (or to have found this page from another place), here's a list of materials to read about stuff. Return back to this post as I'll update it over time.
Firstly, if you are still using that e-mail address that you made when you were 12 – out with it. No one will take you serious if you send people mail from firstname.lastname@example.org. Create an address with your name/initials, preferably in gmail.com . Do that immediately and then return back to this page.
Now that you've set your email properly, take a look at the selection I've gathered for you.
Programming: Principles and Practice Using C++ (Bjarne Stroustrup) – for absolute beginners, a thorough introduction to programming and the language
Accelerated C++ (Andrew Koenig, Barbara E. Moo) – for beginners that are really good learners or people that are accustomed to programming in another language. Heavy STL usage
The C++ programming language (Bjarne Stroustrup) – all-rounder
Effective C++ (Scott Meyers) – best second book to read about C++
Fundamentals of Computer Programming (Svetlin Nakov & Co.) – for absolute beginners, good intro book
Accelerated C# (Trey Nash) – for programmers coming from other languages
The Java Programming Language (Ken Arnold, James Gosling, David Holmes) – quick intro from the language creators, equivalent to "The C++ Programming Language" for Java
Thinking in Java (Bruce Eckel) – 1500 pages of awesomeness if you are into Java
Effective Java (Joshua Bloch) – must...know…more…JAVAA!
The MDN Library (Mozilla Corp.) – although not a book, it's a great collection of articles (the best collection one might say)
The Art of Computer Programming (Donald Knuth) – the bible for algorithms, one of American Scientist's "100 or so Books that shaped a Century of Science"
Програмиране =++Алгоритми (Преслав Наков) – the definite Bulgarian book about algorithms
Code Complete (Steve McConnell) – read, you must
The Pragmatic Programmer (Andrew Hunt, David Thomas) – a must – read
Seven Languages in Seven Weeks (Bruce Tate) – turbo mode pragmatic programmer
Microsoft Application Architecture Guide (Microsoft team) – a quick intro to application architecturing, a needed skill for creating larger projects, also has recommended (microsoft) technologies for various use cases
It you want more, then you are ready to become a programmer, motherfucker
Videos to watch:
Mastering the craft (Stefan Kanev) – a good answer to the question "How do I become a better programmer?" (in Bulgarian)
Sites to register immediately:
www.stackoverflow.com – best QA programming site around the globe
www.github.com – the faster you dive into source control systems the better
www.coursera.org – online courses from top universities in the world
www.edx.org – same as Coursera, but only hosts courses from MIT, Harvard, Berkeley and Texas
Blogs to follow:
joelonsoftware.com – Joel Spolsky, co-creator of SO, best blog in TEH WORLDZ
codinghorrors.com – Jeff Atwood, co-creator of SO
ericlippert.com – Eric Lippert, C# guy
blogs.msdn.com/b/oldnewthing – Raymond Chen, magician at Microsoft, part of the Windows team
herbsutter.com/ – Herb Sutter, C++ guy
www.nakov.com – Svetlin Nakov, manager of SoftUni, posts stuff about programming events in Bulgaria (in Bulgarian mostly)
www.skanev.com – Stefan Kanev, another blog in Bulgarian