
Ask HN: Advice for a prisoner learning to program - jondrn
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.<p>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.<p>What (development) advice can I give this man that will best prepare him to be successful when he is out of prison?
======
megameter
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.

~~~
beojan
> 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.

Are VBScript and JScript still available on modern Windows?

Though if they're older computers, these are probably available (or maybe even
QBasic, if they're old enough).

------
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.electricianschooledu.org/state-by-state-licensing-
guide/)

[https://www.nabcep.org/](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...](https://stackoverflow.com/questions/8746653/what-programming-
languages-are-installed-in-windows-xp-by-default)

------
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

~~~
giantg2
I find that most COBOL positions want experts with lots of experience and
knowledge of the company structure and JCL.

One other thing, most companies that still use this language are older/larger
companies (like finance). They tend to be less forgiving in their background
checks.

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

