HACKER Q&A
📣 jondrn

Advice for a prisoner learning to program


I have been in contact with a prisoner who is very interested in learning to program. He has no access to the internet and is not up for parole for another 11.5 years. He does have access to some older computers and is computer literate. I’m not sure yet how he can get access to a development environment if he has no access to the internet.

He is primarily wondering what computer language(s) to focus on. He would like to focus on a language that will still be relevant in 11.5 years. My initial thought is to focus more on learning the basics in a language with good offline documentation. It sounds like most of his learning will have to be through books.

What (development) advice can I give this man that will best prepare him to be successful when he is out of prison?


  👤 megameter Accepted Answer ✓
With 11.5 years to study and no guarantee of an interactive environment, there is no particular reason to start on anything but fundamental CS topics - that's time enough for two degrees and research work, and most likely, if he gets a few years into it he will tire of CS fundamentals and start seeking study of a more specific problem domain, which will motivate further effort.

Either way, the industry landscape will change, but the old stuff will still be around and still relevant reference. Therefore, start studying old classics of CS, with a focus on fundamental algorithms, compilers and older, simpler language specifications.

It is extremely likely that even if this man doesn't have access to the Internet, the computer he uses has a web browser, and therefore some version of Javascript. Therefore, I would pick Web tech as the entry point: Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics, Javascript the Definitive Guide, Eloquent Javascript, and Javascript the Good Parts.

Failing that, he will probably have to bootstrap from Windows batch files and x86 machine code into a programming environment. I will ignore that possibility, since AFAIK nobody has tried to tutorialize such a task.

To complement the JS stuff, a general outline book. I like Schaum's Outline of Principles of Computer Science.

Then all the "big hits":

The Art of Computer Programming

Algorithms + Data Structures = Programs

The C Programming Language

The Little Schemer, Structure and Interpretation of Computer Programs, and Common Lisp the Language.

Starting Forth, Thinking Forth, and the Forth-83 standard

Smalltalk-80 the Language

Programming in Prolog: Using the ISO Standard

A Relational Model of Data for Large Shared Data Banks (Codd 1970) plus SQL Queries for Mere Mortals for the practical.


👤 brainbag
I volunteered with a program to teach prisoners to code at San Quintin prison called Code.7370, which was organized by The Last Mile program. The prisoner-students said they spent a lot of time reading programming books during down time, but they had access to computers for a couple of hours a week as part of the program. Some of them were able to get very adept at coding especially considering the constraints. You may reach out to The Last Mile program and see if there's any opportunities, they're really amazing people.

👤 _dwt
Why not check out the K&R C book and work through that? It's still an amazingly self-contained book that manages to be a language tutorial (and almost a reference), while still being approachable without programming experience. C compilers are easy to get hold of, and for better or worse the language will certainly still be around in a decade or five. Ironically, it might even give him a stronger foundation in programming than the average "learn Python in a day" web course.

👤 Foober223
I found the little schemer a good book to go through with a pencil, and no computer. It was meant to be read and worked through by hand.

One of the most underrated books in programming. I'd say it has value even if you are not interested in programming. To bend your brain. Seems overly simple sometimes, then before you know it you have to bend your mind backwards and jump through a flaming hoop.


👤 toomuchtodo
Is there an appetite for a prisoner learning program where you can airgap from the internet and host everything on a server on prem? Dead tree materials are always useful IMHO, but to really learn, you must do.

EDIT: Something else to consider: instead of programming, where knowledge has a very short half life, what about electrical work? Can't outsource a trade, the knowledge doesn't go stale nearly as fast, and we're never going to run out of electrical work to be done.

https://www.electricianschooledu.org/state-by-state-licensin...

https://www.nabcep.org/


👤 coding-saints
He can still receive books, correct? I know many "technical" books are deemed "banned" (whole other topic) but try getting some high-reviewed books on critical thinking and problem solving. Those should be able to get in. Then try to get a list of subjects the specific prison disallows. Some guards will be more lenient when letting books pass through. But if this "friend" isn't someone you would waste money attempting this on, then send him a letter with lists of books he can ask someone else to send. Try to stay away from any books with specific "labguages" and focus more on architectures and system designs.

👤 gregors
I wonder if his access to the internet prevents his computer from having a web browser at all. Even if he can't access a network the browser will still have a JS environment.

Outside of that - say it's an old Windows XP box. He could still program using windows shell script. I think most windows boxes going back to 98 have VBScript installed.

https://stackoverflow.com/questions/8746653/what-programming...


👤 fattybob
years ago I loaned a friend a couple of "o'really" books, he was interested in learning VBA but I passed him a relatively slim database book as well as a VBA book, to give him a better understanding of real world data I guess. I probably mentioned Python in the exchange, but this was back when Python was new, and I was following it's development then. Anyway, he soon ditched VBA, was totally taken by the database book and has built himself a healthy small business using most Python. Last time I bumped into him, he was very happy and thanked me for my recommendations, especially the Database book (which he still has!!), I think Python came along naturally as it was a huge wave of adoption for those that were thinking about the process and not simply slotting things into existing boxes.

👤 giantg2
There's bat or powershell (or bash if on Linux). Html is another option.There's a chance it might have a JDK. Of course this would need to be done in a text editor if there are no installed IDEs.

Maybe they prison computer admin can install python, C++, or similar and an IDE to go with it.


👤 Shared404
If he can get access to a development environment, Rust's offline documentation is good enough I was able to mostly learn Rust without internet access.

👤 crazypython
Does this man have the ability to host on localhost and have other people interact with his program via network?

👤 gee_totes
I wonder if COBOL would be a good choice for him to learn. Not the most in-demand, but probably not going away in 11.5 years

Edit: Another idea -- good excel and data science and visualization skills probably won't be going away too and may be more accessible if he doesn't have access to a command line


👤 jressey
I'd suggest a textbook on formal logic with lots of problems to solve.