Intro to programming materials

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 Create an address with your name/initials, preferably in . 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!    


Javascript: The Good Parts (Doug Crockford) – look at the author, now back to me, now back to the author, 'nough said

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: – best QA programming site around the globe – the faster you dive into source control systems the better – online courses from top universities in the world – same as Coursera, but only hosts courses from MIT, Harvard, Berkeley and Texas

Blogs to follow: – Joel Spolsky, co-creator of SO, best blog in TEH WORLDZ – Jeff Atwood, co-creator of SO – Eric Lippert, C# guy – Raymond Chen, magician at Microsoft, part of the Windows team – Herb Sutter, C++ guy – Svetlin Nakov, manager of SoftUni, posts stuff about programming events in Bulgaria (in Bulgarian mostly) – Stefan Kanev, another blog in Bulgarian

Leave a Reply