Ask Slashdot: Programming Education Resources For a Year Offline?
An anonymous reader writes "I will be traveling to a remote Himalayan village for year and won't have access to the internet. What offline resources would you all recommend to help me continue to develop my coding skills? I think this would be a good time to get better at fundamentals, since I won't be able to learn any new frameworks or APIs. What about other, non-programming skills to practice and learn? Any ideas?" What would you bring?
Do you necessarily have to work on your coding skills? What about enjoying the ride and soaking up the scene?
The Art of Computer Programming. Two volumes ought to be enough.
there are 3 kinds of people:
* those who can count
* those who can't
Do math instead. Abstract algebra, Discrete math, many other topics in that vein. You'll come out a better programmer.
Are you going to Nepal, by any chance? The country has load shedding, in the winter you may have electricity only for two non-contiguous 5-hour blocks a day in big cities like Pokhara or Kathmandu, and it can be even worse elsewhere. Sometimes that time when electricity is available is the middle of the night. My advice would be to focus on hobbies that don't require a stable electric connection. Get a Kindle or similar ebook reader with backlight (battery lasts for weeks) and pirate a tonne of ebooks to broaden your mind. Focus on learning the local language (you can easily find textbooks for the major languages of the area like Nepali when you get there).
At the very least: Intro to algorithms
Like all pain, suffering is a signal that something isn't right
Comment removed based on user account deletion
Apart from the joke, mastering awk, lex and yacc seems a very modest goal for a full year.
I'm going to be working in high tech in Miami for the next year. What activities would you suggest to continue developing my ice climbing skills?
Assuming you can get power, at least sporadically, take a Macbook. Install the latest Xcode, give homebrew control of your /usr/local and install all the homebrew packages that seem useful. Install npm, node, and useful-sounding Node packages. Install rvm, the latest Ruby, and Gems that seem useful. Ditto for any other language or tool you think you might be interested in.
Get Dash, and download all the docsets that seem useful.
Pick an offline-website download solution and load up useful-seeming websites.
Install VMWare, any other OS(s) you are interested in, rinse and repeat.
Make sure you can make a pilgrimage to the one Starbucks (has to be ONE) to get the stuff you forgot.
Take two paradigm shifts with you. You don't say what your background is, but perhaps c# -> f#, java -> c++, c++ -> android. I say two shifts, because one won't last a year. Rewrite -- don't port, rewrite -- a non-trivial application you've written in the new paradigm.
Bjarne Stroustrup's "The C++ Programming Language", updated for C++11 (4th edition). Seriously. His books are surprisingly easy to read, yet information dense. Because it covers the standard template library and the current paradigms, the information will apply to the interpreted languages. This is if you know the basics of programming, and it really helps have done a bit of C++. He's got another book that's an overview of C++, if you're completely unfamiliar with the language.
For books "about" software, try 'Joel On Software' by Joel Spolsky. I liked it.
I have "JavaScript The Definitive Guide" by Flanagan, but I keep hearing "JavaScript The Good Parts" by Crockford is an easy an informative read. The Definitive Guide is great but it kind of reads like a textbook. I've not read 'The Good Parts' but that's the impression I got from this site.
"Code Complete", "The Mythical Man Month", "The Psychology of Computer Programming" are the standard "about programming" books which are commonly recommended.
"Computer Networks" by Tannenbaum is interesting, although it can get a bit dense at time. It is a textbook.
+1 on offline Wikipedia. Check out Kiwix, an offline reader for Wikipedia (it's FLOSS, not proprietary or commercial).
They have rocks. And space. That should be enough...
http://xkcd.com/505/
one bullet
The one book that helped me out more than any with my programming was "Introduction to Algorithms." This book helped me understand how to program efficiently, how to look at problems objectively and speak about them using the language describing algorithmic efficiency, and determine if a polynomial solution is NOT known to exist for the class of problem I am trying to solve. If you study this book, you will no longer be able to be derisively called a "code monkey" after someone looks at the output of your programming efforts.
I used this book for my undergraduate degree in computer science for my algorithms class, and then at a different school for my masters degree in computer science algorithms class (we did the star'd problems in grad school, finished more of the book, and generally went into greater depth.) If you understand this book, you will understand a major portion of computer science. Plus, whenever someone has a very difficult problem, and you know the content of this book, you will look extremely cool solving the problem in an efficient and elegant way (this only happened to me once, but it was very fun.)
This book is worth the weight in paper. If you can get (power?) an electronic version, there are a few other books I would recommend, but if you only bring one book on computer science (programming?) please consider bringing this one. You will be able to solve problems efficiently in any language after deeply studying this book.