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
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?
How about a book and a laptop? But why not use the time to learn about a higher meaning to life itself?
Politics; n. : A religion whereby man is god.
Soak in the scenery, indulge in the local culture and food, and the only computer you should take is the one you use to store your digital photos on (and the backup drive too). Make friends, do good, and the life experience will look much better on your resume than an additional year's worth of coding skils
.. if only.
That totally depends on what sort of work you want to do with your coding skills in the future, now doesn't it?
Personally I find most people who know C/C++ know little to nothing of the great capabilities of C++11 (and the small improvements from there to C++14). If you have an interest in C++ coding there's no shortage you could learn and practice there, and that's all offline stuff - just get a bleeding-edge g++ and all of the docs you can find. But really, it depends totally on what sort of stuff you want to do with coding in the future.
(That said, if you're up there, why not just go herd some yaks for a year or something? If I was in a little village in the Himalayas for a year I don't think "enhancing my coding skills" would be on the top of my TODO list...)
Hourglass says she knows a kid in Iowa who grows up to be president.
I would take a copy of the Tao Te Ching.
Pursue knowledge, daily gain
Pursue Tao, daily loss
Loss and more loss
Until one reaches unattached action
With unattached action, there is nothing one cannot do
Take the world by constantly applying non-interference
The one who interferes is not qualified to take the world
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
Sounds like it would be the perfect opportunity to order the YouTube Collection? https://www.youtube.com/watch?...
Comment removed based on user account deletion
I would dedicate my time to learning Emacs. In addition to being very useful for a wide variety of tasks, it has a very good offline documentation system. There is enough built-in documentation and things to learn so as to keep you busy for the year. It is largely textual, and if you are just reading documentation and playing around, I would imagine that it is rather power-saver friendly (especially when run in a console).
It would be beneficial to learn Emacs LISP (Elisp) in order to extend the editor to do the sorts of things you want. It's an old LISP, but very practical. It's not a bad start for learning about this type of programming (a book-sized Introduction is included in the offline documentation).
Another nice feature of Emacs is that it has Gnus newsreader/email program. It has a pretty sweet offline mode. In principle, you could load it up with news (gmane) and read it offline. You can compose emails and replies, and queue them up for the next time that you get back in to the city, when you switch to online mode and send your replies and fetch new groups.
In my (rather Occidental) mind, I envision the Himilayas as a place of natural beauty and spiritual renewal. Perhaps you could find religion in Emacs--realizing just how important the editor is to a computer user's experience--and coming back as a guru.
Apart from the joke, mastering awk, lex and yacc seems a very modest goal for a full year.
Shave a yak. I mean, for real...
VB6/VS6 came with a snapshot of the MSDN Library for Visual Studio.. do they have a similar product for .NET yet?
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.
"What would you bring? "
A girl!
Every time when you do something exciting on this scale, any pre-set plans or goals get forgotten in a matter of days as new ones naturally present themselves. So just enjoy the experience and leave stuff home for a year. At most, bring a bunch of paperbacks to read during downtime.
I'm going to India for over a year, coming up soon. Although my company is sending me to essentially train my replacements, and then another round after that... sigh, at least the money is good.
I expect to have internet (I don't see how not) but Idk how steady or fast it is in that area so I'm downloading wikipedia on a usb drive just in case. I have my own favorite books, like Pointers on C by Kenneth Reek but that's book specific. As well as some Lisp history and underlying math (original paper).
There is the classic SICP, Knuth's Art of Computer Programming, Concrete Mathematics, etc.
Of course this is all heavy, so I'm putting it in a kindle or tablet. A b/w kindle with some type of manual charger as backup would be ideal.
But you know better than I what your goals are. Don't pack too much, especially dead tree books. Just 1 or 2 of those. You're going to the Himalayas! Enjoy it. Plan on getting through 1 challenging book and don't waste the rest of time reading. It'll still be there when you get back.
Pick up a copy of Learn You a Haskell
You could easily spend a year banging your head against the wall with functors, monads, etc.
Download all the Debian DVDs. The full repo has nearly everything you might conceivably need in terms of software and dev tools. Make sure you take two copies of the data. The last thing you want is a disk dying unexpectedly. It is safer to have one copy as optical disks. I actually did this when I left for a rural location.
I'd download some Coursera courses and fill my ereader as well.
Of course, the best thing to do there would be to enjoy the scenary and practice mindfulness. I am sure you will be doing that as well.
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.
If your a windows user, I would install visual studio .net, sql server and the offline msdn documentation. This should be everything you need to stay busy.
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.
I agree with the idea to study mathematics, as a useful exercise, that would in many cases benefit programmers by giving them a good mental workout, and hopefully reinforce if not expand their understanding of mathematics, logic, and reasoning.
Beyond that I would argue for the study of writing, in a natural (human-oriented) language of your choice.
Programming as a profession, and as an art, is about the meaningful expression of ideas; in a detailed, unambiguous manner that can be processed by a computer. Programming languages are tiny, simplistic, and restrictive in their ability to express ideas, and the execution of these ideas. Writing in a natural language is much more complex, particularly when you strive to remove undesired ambiguity*. The other issue is that as a professional, programming is not done in isolation. Even if you are an independent contractors, you must be able to communicate effectively with clients and users.
*) Ambiguity can be desirable in humor and poetry.
I think that any programmer can benefit from the abilities to make logically sound, comprehensible arguments in a written document; that these abilities will make them better in their ability to understand, and be understood by users, customers, or colleagues.
The argument has been made in the past by Steven C. McConnell in Code Complete, in The Pragmatic Programmer by Andrew Hunt and David Thomas, Coding Horror by Jeff Atwood, and Joel Spolsky (of Joel on Software) in his Introduction to Best Software Writing I and College Advice. And like tons of other software developers, and their managers; repeatedly.
You see, communication is the only really important aspect of software development that people really have trouble with. The rest are details and small bugs, but for really big screw-ups you need miscommunication (or greed)
Hand crank dynamo to charge up supercapacitor, that takes about 1/2 a minute.
The charge in supercap will slowly charge NiCd battery or lithium battery.
Note most battery underperform at low temperature.
There are many good tips here, mainly Linux distributions. But one tip I don't see, I would bring all of Wikipedia with me. Wikipedia can be downloaded, and then read either on a computer or in specialized e-readers. How to download Wikipedia . And, The Wikipedia Page. Good luck.
Here's to losing my Karma Bonus again....
I would expect that if I did, I would waste so much time trying to get it to work that I would miss out on many of the greatest things about that part of the world. You didn't mention being insanely wealthy and able to take these trips regularly; if you are of the economic class that most of this country lives in, you will likely only make this trip once. Hence, you should make the most of it. If you really make the most of the trip you'll likely come back to this country with skills from the trip that are more valuable than what you could acquire by reading programming books during that time.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
What ever level you stopped at get the text from the next level onward. Abstract Algebra is an obvious choice. Or some other area which may interest you. Geometry, Euclidean or non-Euclidean, is always fun. A few thousand sheets of paper, some bound notebooks, lots of pencils, some erasers, and a pencil sharpener would help too. Depending on where you are at a few boxes of candles might be handy.
A chess board and a book on famous chess games might be fun. Get a description of the games of 'Deep Blue' and see if you can reverse engineer the alylgorithm.
Basically any of that will help you stay sharp, focus, and develop analytical skills.
putting the 'B' in LGBTQ+
A recipe is a combination of an algorithm, physics, and chemistry.
putting the 'B' in LGBTQ+
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.
fifteen hundred miles of ethernet cable.
I mean, seriously? No internet usually means no power either. Take a book.
Political debates have me rolling my eyes so much I think I got optical whiplash. I should sue. - Foamy The Squirrel
Yeti
Offline copy of wikipedia. Tested working compiler, libraries, documentation for such. Other stuff to do.
Find a bunch of open source projects you're interested on Github (or whatever) and download them to your laptop. Then take some time to study the code.
Take a compact course book on tensors, and Einstein's General Theory of Relativity. You'll need to assimilate the first to grasp the beauty of the second. If you only do the former, you'll come back with an important and valuable mathematical skill: tensors. If you go on to do the second, you'll be an intellectually much richer person when you come back, and it will change your look upon our universe.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
For example, one of the ThinkPads with carbon casing. I speak from experience: I have one, and have been lugging it everywhere. The things simply never break ( hear identical experiences from other users ). With one new internal and one new extra battery ( goes into the CD/DVD player slot ), in low-energy mode and BlueTooth / WiFi off, you'll last for 8 - 10 hours.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Compiled from other's
Do meditation,
Try to understand the world in different perspective.
Try solving totally different types of problems.
Try learning a new human language.
Practical discipline. *Practical*
These things will add different new patterns for your mind which will help you do better when you come back.
Seriously, consider a non-programming hobby while there. There's a pretty good chance that anything expensive you bring will be stolen.
---- I'll take you in a Hunt deathmatch any day.
you could download some papers on RCU: http://www.rdrop.com/~paulmck/...
hehe
People have allready recomended many excellent books... Now if you are going to drag any deadweight electronics there, make sure you bring in means to charge them too. Laptop with empty battery is useless.. So solar-panel or two (bigger the better), inverter, battery and battery charge manager.. And you can charge what ever western not needed electronics use you have... Personally i would look what it-related projects are already there and try help them. Working with actual people will always be superior to any dull book. In fact if you can show that you have managed to come along even with people that you have no common language, might help your career more then any book. If all else fails, just enjoy scenery and piece of quiet you have there, your soon enough back to civilization and hurry..
If you only want to carry one slim book, I would recommend "Compilers: Principles, Techniques, and Tools" by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. It might be old skool, but there is sure to be enough ideas in there to keep you busy on cold nights.
I would recommend that you install a good video editor like Final Cut Pro, Adobe Premiere or Lightworks. You will probably make many pictures and videos, and this is a good time to learn those tools. I myself are learning Lightworks right now, and it's not easy to get used to the different user interface, the different way of thinking. This might be a problem, as online support will not be available. For Lightworks, sometimes you have to login, and that might become a problem - you have to check that. So for these programs, download lots of youtube videos and buy some good books. If you're not that familiar with Photoshop - same story! Buy some good books, download videos, buy ebooks about photography, about lighting, etc. Don't forget to download Audacity or another good audio editor as well.
The same goes for 3D like Blender, Maya or 3D Studio Max. Of course you need free or trial versions that work for the whole year, so Blender is a good option. Buy some good books, and enjoy it. You can probably write 3D scripts as well (not story lines but action scripts). 3D printing is hot right now, so 3D skills and understanding is a good plus for your resumé.
These things should be fun of course. If you don't like it, don't do it. Then use iMovie or another free video editor so you can make simple edits.
I love to work with these programs. I like video editing, and want to learn 3D. These are fun projects for me, but still they take up serious time.
I've been in a similar trip.
I wouldn't bring anything special, bring your laptop, bring a backup drive to store you photos, if you get bored, buy a sim card and tether.
Chances are, if your like me, you'll start with a lot of energy and you'll be able to work on stuff for a while but you'll loose yourself in the local environment and use your laptop for images. That's what I ended up doing. I don't think I missed a beat in technical terms (truthfully, I was working about 10 hours a month which withered down by itself). There are a lot of internet "cafe's" in that region, so unless your going somewhere with no roads you should have the ability to connect from time to time. Last time I went, even in the bigger villages around anapurna (which can only be accessed by trekking) they have internet cafe's connected via satellite.
Good luck!
Have you considered that he might want to improve his programming skills for reasons other than his future career? That he wants to indulge in the local culture, and enjoy himself, at least from time to time, through the lens of coding? Not everyone hates the activities in their day job (nor do we even know that coding is or will be his day job).
Data storage is cheap and light. Grab a copy of the latest repositories for anything you could conceivably want and play with it. You can download the stackoverflow.com question database, which ought to be able to answer the majority of newbie questions on any popular framework. A local copy of wikipedia might help, too.
You'll come back as a TCP/IP Expert - which can never hurt. That aside, I'd take some serious stoic philosophy with me too. Helps you tune into the mood you need if at sometime you're feeling down. Senecas "Letters of a Stoic" and everything from Epicurous is neat aswell.
Maybe you want to check out a little buddhist philosophy while you're at it, since you're in a place where that's the thing anyway.
Other than that, I'd try to find ways of coping with boredom and loss of meaning. Mingle with the locals and learn their traditions - perhaps a musical instrument or their local tales or tibetan buddhist literature. No need to be arrogant or pompous about things we nerds of the west care so much about.
Oh, almost forgot: Learn alpine mountaineering! You're in climbers paradise, stupid! If you get into climbing, you won't get bored and your computer-books will remain unread. Promise. Also there's a lot to geek out about on gear and climbing routes and all that kind of stuff. Ice climbing is a whole field in itself aswell. If that's not enough, take a camera and try to catch some lokal wildlife, if that's your thing. ... Seriously, the books on computing stuff should just be a fallback.
Have fun!
We suffer more in our imagination than in reality. - Seneca
Someone already mentioned TAOCP, SICP and "Introduction to Algorithms". They are all great. I'll add "Types and Programming Languages" by Benjamin Pierce to that list, or alternatively "Practical Foundations for Programming Languages" by Robert Harper. If I were you I'd bring some ebooks on Haskell (+ a cache of libs with their API docs): "Programming in Haskell" by Graham Hutton, "Real World Haskell" by by Don Stewart, Bryan O'Sullivan, and John Goerzen.
Simple, grab a copy of K&R and all you need is GCC and a terminal.
Take nothing except a bare-bones computer.
By hook or by crook, with the tools you have, build a compiler, then from there build up libraries. Then build up what you can with no external help.
Thousands of people have done this in the past, on new platforms, custom hardware, and just because nothing existed at the time. It's not impossible. And I think you'll learn more from doing that than anything you can carry on a Kindle could teach you.
Programming is about DOING. Any idiot can read a C++ book and understand it. Try applying it and it's a different matter.
You'll understand more about a computer than any book can teach you by having to get it going yourself.
Introduction to Intel x86: Architecture, Assembly, Applications, and Alliteration
Introduction to Intel x86-64: Architecture, Assembly, Applications, and Alliteration
Intermediate Intel x86: Architecture, Assembly, Applications, and Alliteration
With a bonus that you can also learn about ARM assembly in the same class format, and compare and contrast them (what with x86 and ARM being the 2 major architectures which dominate the world's computing devices currently.)
Introduction to ARM
And once you learn x86, how about rather than learning to forward engineer better, how about learning to *reverse* engineer?
Introduction to Reverse Engineering
Reverse Engineering Malware
No need for that, just become a drombo for a few of the local monks
I'd recommend two or three bottles of MacAllan's. If you try to buy local you will end up with Bagpiper or Old Collie, which are as aesthetically pleasing as they sound. Also a single shot and you will make instant friends for life.
If you want to motivate yourself, bring some data for a problem that interests you. Data.gov ( http://www.data.gov/ ) or your national equivalent, financial data from Yahoo, something that you find though an Open Data ( https://en.wikipedia.org/wiki/... ) site. Then develop your skills while working on real data. I code best in conjunction with unit tests, and for anything above a trivial exercise I like an actual data sample.
Steve Cline http://www.clines.org, http://www.objectbap.com
I agree that there will be down time, I'd personally bring a book or three but nothing more than this. This person is not going to be isolated away from everyone else, so will have locals to try and mimic. What would I bring to read? Probably something like "Newton and The Counterfeiter" for entertainment and The Republic for personal development. Both of these books are thick and you can't read either in a day or two. It would probably be good to have a medical book and journal as well.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
Books require no electricity. This one is fairly language agnostic, and I've rather enjoyed reading it.
An internal system operation returned the error "The operation completed successfully.".
Download all problems from Project Euler. If you can solve them by the end of the year, you will be pretty skilled no matter what language.
Install Git or Subversion on your computer and use that to keep track of everything you do. Being able to go back to previous versions of your programming will save you a lot of time.
Timothy,
I will never give up my quixotic quest to get you to post "Ask Slashdot" stories in the "Ask Slashdot" section of this site. That section exists for a reason. Use it.
-Fnord666
'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
If you are truly going to be offline, you are screwed. Even in the pre-internet days I still had to go to the library, the book store, the school, the software store (there were such things), whatever, and connect with people. Basically, it was never long before you had to go back to the source, whatever it was. If you are really going to be offline, you need to go after pure math, not even fundamental CS. I would go check out a couple college courses on topics in math that interest you (cryptograph algebra, topology, theory of comp, complex analysis, real analysis, etc...) and grab the books from those course listings. Read the books and work diligently through the exercises. That you can really do offline, though you may still get stuck on a problem, but you write a letter to a professor and ask, even if you are not matriculated, he'd love it.
--"You are your own God"--
If it were me, I'd learn to make a relationship with a real person more important that doing my job. I'd personally take a woman, but whatever you're into is fine with me. Too many tech geeks like us ignore this part of our lives. It's part of our stigma. GO HAVE FUN! (oh yeah, and a lot of sex!)
The correct answer is 42.
One of the great things about remote himilayan villages is that they have very little Ghz range noise. Thus you could potentially bounce from a few hills your own solar powered shockingly weak Wifi signal using off the shelf parts and bring internet to the village.
You will then be elected king of the village and carried around on a chair until they decide to use your head in a sack for horse polo. Oh wait, I think I might be mixing things up here.
Mirror yourself debian in at least the i386 and "all" architecture (yeah "all" is mandatory as it contains all the data-only packages). If you try to do it for wheezy alone I believe you need about 140GB but don't take my word, that's kind of an order of magnitude. To get it you need the real rsync/whatever scripts (ask on IRC), ipv6 and wait.
Then you ought to be able to install whatever software instead of being stuck without foo-library, act as PXE server and debian mirror to install the OS on another computer or in a VM.
Might want to put a 500GB SSD in a netbook. I wonder if HDDs even like the low air pressures.
You haven't met my mother.
Assuming you will have access to even the most basic computer, playing with Redcode can keep your coder's mind sharp and keep you thinking about side effects and concurrency. For offline play, I recommend downloading a benchmark and coding to defeat it. see http://www.corewar.info/ for everything you need to get started.
Redcode binaries are available for Windows and compiling for Linux was a breeze for me. It's a Turing complete language, so if your box dies, gets stolen, or is without power, then running your code with pen and paper in a quad ruled notebook will pass the time, while building the deep programming structures in your mind. discussion groups are active at rec.games.corewar .
Part of the experience there is probably going to be one of mental sharpening.
My suggestion is to take around 10 kata specs with you and three to five languages / environments (I'd recommend python, Ruby, java (or, my preference, a Javascript environment with Karma and so forth) and something eclectic like Haskell or erlang. Use these to hone your discipline and thinking skills. Don't worry about keeping up to date with the latest stuff. But if coding is valuable in your life (and I can understand if it is), an approach like above will help to scratch that itch, keep you sharp and provide a chance to engage in focused practice of discipline.
I would bring a kit for embedded + sensors experiments. Mine has a laptop, a Parallax P832A, a solar panel, and a super capacitor. Also a bunch of thermistors, some bread boards, LED's, little steppers, some I2C devices, and assorted other sensors & actuators. Hours of fun. Also can be useful if you need to make a gadget out in the bush. If you bring your smart phone you can use it as an interface to your projects using HC05/HC06 bluetooth. Its a blast.
Get a girl, a couple of 2TB hard drives filled with porn, and practice to become a master of sex!!! Programming, wtf!?!??
-- Francisco Rivas C.
Hello:
Most of the iTunes U courses for programming, in particular, the Stanford Edu and the Carnegie Mellon series are easily loaded on an iPad that may be solar powered/easily charged in remote locations.
However, it is recommended that you get the absolute maximum storage to hold all the video/audio/app/e-book content.
Avoid courses requiring a remote login to proceed since you are not able to communicate.
GSM capable is suggested, unlocked iPad 128GB which usually equates to AT&T for the carrier. But do make sure it is unlocked first and before you even start loading the courses.
Load all the courses at the absolute fastest Internet location, my suggestion is a major bandwidth hub with 1 gigabit or 100 megabit minimum and be prepared to campout a bit to get all the synchronizations finished up.
You can also choose to utilize iTunes itself, but the iPad is where you need to make sure the content is complete, so a PC or better yet, Mac with iTunes and lots of storage on tap is the ticket for best results.
Budgeting space is significant as well plus other topics may be great.
Linux? Well Linux would work, but far less elegant than iTunes U notebooks and iPad combination.
Last but not least, encase the device in a robust container for protection, here is a listing from Redlands in Australia to review:
These are the iPad cases we recommend at the College.
https://ipad.redlands.qld.edu.au/content/cases-we-recommend
http://www.aisnota.com/slashdot/ Welcome to Logic and the Future
Rather than choosing specific resources, you might find it more helpful to look for comprehensive collections. e.g.
In addition to these, any of the standard comp sci books (e.g. the Art of Programming) will give you something to mull over. Learn a functional language if you haven't used one before (I suggest Haskell).
Most human behaviour can be explained in terms of identity.