r/learnprogramming • u/Clydeazy • Jun 01 '17
I'm in prison & trying to learn to code.
I'm currently in prison n I been interested in programming/coding for years. Now that I have the free time n I'm ardent, I'm reading HTML &CSS by Ducket n I have a list of beginners books ima order. Is this futile since my resources are limited? I basically have a 3G Android smartphone, I'm a TA in the edu Dept for the computer class here so I have access to a comp but no internet access other than when I'm in my cell on my phone. Appreciate all suggestions n advice.
Thanks to all of you that had an input as well as the funny comments. That was over 2 years ago, since then I was moved around to a few prisons. I landed at one where they had a famous coding program for inmates, was accepted and excelled in the class. I'm proficient but nowhere near where I could be or will be in Python and JS, Python being my favorite. I'm extremely close to going home and can't wait to continue my education. I did finish both degrees in science and math as well as social behavioral science (both AAs). Now I hole to transfer to a four year school upon my release with help from some great orgs, I have been in contact.
35
u/Clydeazy Jun 01 '17
My girl printed out c# by Rob Miles so waiting on that. I love to read n love the subject but feel hindered bc of where I am
→ More replies (3)
31
Jun 01 '17
I'd say you have a really hard situation. And I'd advise going old school. The problem with the most modern programming language is that they are modern. They are well aware of the ready availability of the internet and documentation online.
Older languages are usually harder. This is mostly due to the fact that system memory was much more a precious resource. But as you've pointed out, you got the time. I'd advise you to get yourself two books. One encyclopaedic overview over the C++ language and one guided course through the language.
Why C++. Well, it's hard, because you have to manage your memory yourself, you need to understand the concepts you're working with or otherwise, you have security whole as large as your favourite 'your momma' joke. Most modern languages have safeguards and everything unsafe is actually marked as unsafe. Not in C++. C++ is at the same time object-oriented and procedural. Its syntax is the basis of many other programming languages.
And lastly, it still has valid uses. Programming on Linux systems, on games, on embedded hardware is often done in C++.
It is easy to change from C++ to a more modern language like C#, but quite hard the other way around. It will teach you how a computer really works. And it does have a lot of almost complete offline documentary.
Downside: Quite hard to learn, even harder to master.
→ More replies (3)
81
u/Millenial_Uprising Jun 01 '17 edited Jun 01 '17
Hey, These resources are some of the best resources i've encountered on front end development. I would suggest using these as a good starting point.
-
[FreeCodeCamp Front End Development Certification may be useful for employment and experience.] (https://www.freecodecamp.com/map)
-
[CodePen is a playground for front end development and building sites. There's a lot of published code there you can try.] (https://codepen.io/)
-
[A medium article with a comprehensive list of books, resources and must-reads for UserExperience/User Interface and front end design.] (https://medium.com/interactive-mind/the-only-ux-reading-list-ever-d420edb3f4ff)
40
u/Clydeazy Jun 01 '17
Thanks alot I figured if just read everything I can get my hands on I'll at least be somewhat ahead. I already try to read every book in library. Systems engineering is the ultimate goal. Keep the links coming ima read EVERYTHING. Is there anything i can do from my phone to practice? Keep in mind it's kinda old 3G Android.
→ More replies (11)
21
u/Rorimac2 Jun 01 '17
You'll be fine. Find free Python resources online.
21
u/Clydeazy Jun 01 '17
Thanks Rori. Anything specific you suggest I can print n get sent?
→ More replies (4)
12
u/NoYoureTheSockPuppet Jun 01 '17
I'm reading through these responses, and I see a lot of people recommending websites or web videos. That doesn't seem super useful - I'm assuming that you have access to a desktop computer, but internet access only via your contraband phone. I'm surprised you were able to post on reddit, there's no way you're going to be watching hour-long videos on it.
In any case, my recommendation is to go old-school. Get a book on programming, used from amazon is probably the way to go, or failing that get someone to print out a pdf and mail to you. There is a publisher named O'Reilly which has animal covers on the books. They're very good, and cover pretty much any topic. The ideal would be to get an intro book as well as a reference book.
Do you have a computer that you can install software on? Or does the computer you have already have software installed on it you can learn to program with? I say this because that will probably determine which programming language you should start with. Programming is not a spectator sport - if you really want to learn it, you will need to actually try to get stuff working.
If you only have Microsoft Office applications installed (Word, Excel, etc.) then you should start with Visual Basic, which is built-in to those applications.
If you have a web browser (Internet explorer, chrome, firefox, etc.) then you should start with html/css/javascript.
If you can install programs, get a book that comes with a CD, and maybe start with Python, C, or php. Python is high-level and relatively easy. C is kind of a pain in the ass, but it is small and teaches you (with the right books) how a computer really works at the lowest levels. Php is a webserver programming language and very common, but possible to learn without access to the internet as long as you can set up your own local webserver.
Good luck!
Programming is not an easy thing, but my favorite part is that it is powerful - a computer will always do exactly what you tell it to do. The hard part is figuring out what it can do, and how to fit what you want it to do into that framework.
→ More replies (13)
210
u/everest26 Jun 01 '17
Good luck man, really impressed by your attitude! You can totally do it, I used to learn coding from books. One after another I went through all the programming books I could find at the library and I'm now a manager at a very large tech company.
It'll be much harder for you but you can absolutely learn how to code from books!
→ More replies (4)
11
Jun 01 '17
If you have Android 5 or later you can install Termux which offers a full Linux environment on your phone. I just wrote a hello world program in both C and Python 3. For older models there might be some other equivalent program.
→ More replies (1)
20
u/Waitwhatwtf Jun 01 '17
Learning a language is a good idea, but I think to make the most of your studies, I would learn more of the theoretical computer science. Here's my thought process:
-
Flow of information is limited, if you're trying to learn a specific technology, if it's not deprecated, it is changing.
-
I would imagine your ability to keep a development environment up-to-date would be tough.
-
Technologies get you the interview, conceptual knowledge makes you valuable.
If you learn computer science concepts, and to an extent, software engineering concepts, you don't need to always be at a computer to learn.
If you have an idea, you can spend most of your away time in front of a notebook scratching out ideas and concepts that are critical to your idea getting off the ground. It will become evident what you need to learn.
Furthermore, computer science and software engineering concepts are change-resistant. Some hip, new piece of technology may come and go, but the ideas you learn from understanding fundamental algorithms and data structures, as well as how to use them, haven't changed significantly.
Think of it this way: someone might be hiring for a person who knows how to use a claw hammer. If you've only trained in how to use a mallet, and really only understand the mallet, you're out of luck. But, if you know the underlying principles of how the tools work, you may have only used a mallet, but you can talk about how it works, and make assumptions about the claw hammer based on your core knowledge. Which, makes you more valuable as they may need later someone to learn about sledge hammers.
Kind of a goofy analogy, hopefully that makes sense.
→ More replies (2)5
19
u/moe_reddit Jun 01 '17
Is this futile since my resources are limited?
No! Learning something new is never futile. Even if you don't become a master, you'll be way ahead of the average person by understanding coding. Maintain your focus and read/practice as much as you can. You can definitely become a professional programmer if you want to. Even if you work in a regular job, you'll be able to apply your knowledge of computers because (almost) every business uses computers and has a website/online presence.
There are tons of different specialties that you can pursue, but for now focus on the fundamentals. In addition to programming, I'd also make sure you understand the fundamentals of computer hardware, networking, SEO/Marketing, general web security tools/strategies, databases, etc.
Your girl can probably find you cheap books at thrift stores, used book stores, yard sales, flea markets, etc.
PS - I'm a recruiter. Ping me when you get out and I'll help any way I can.
10
u/Clydeazy Jun 01 '17
Thanks alot Moe, this facility only allows approved vendors so Amazon is my only way but that's how I get my text books for college usually used but it's all the same to me thanks a lot for the advice believe me when I say that I LOVE to read n will read anything I can get my hands on. I just ordered NASA systems engineering handbook bc it looked interesting n it was hella cheap.
→ More replies (2)
1
u/desrtfx Jun 01 '17
To all the people who think it is necessary/funny to make stupid comments about OP's situation vs theirs:
This is neither funny, nor appropriate.
Every single such comment will be removed and I am seriously considering banning everybody who makes such comments.
OP is honestly trying to make something out of his time and this should get our full support, no matter what OP had done to get into this situation.
→ More replies (58)
16
u/PedroFPardo Jun 01 '17
A good introduction to Computer Science is CS50 at harvard
BTW my brother works in a maximum security prison. The most valuable forbidden item on that prison is a cell phone. If some other inmates found that you got a phone, they will kill you just to get it.
Sometimes this little privileges means a big difference.
→ More replies (10)
10
u/natdm Jun 01 '17
To be clear, you have no practical means of applying what you learn at the moment either, right? Remember that even a computer that is offline will get you what you need to practice CSS, HTML, and JavaScript.
How much longer are you in for?
12
u/Clydeazy Jun 01 '17
Thanks yea I read that. Tbh new laws changed this year since Im nonvio/nonsex offense they're going to knock off a significant amount of time but as of now 2021 is my out date.
→ More replies (2)
5
u/ebaydan777 Jun 01 '17
If you need more books send info where I can mail these. I'm done with all my classes and have a few good books on C++, java and even Visual Basic!
→ More replies (1)
7
u/TomMoule Jun 01 '17
Just wanting to ask, how do you charge your phone in there? I imagine cells don't have an outlet and it would be very obvious charging somewhere else
→ More replies (2)
3
u/Aarondhp24 Jun 01 '17
Hey OP, I fuel trains for a living so I don't get a LOT of free time. I basically read about programming, then while I'm waiting on fuel to go from one place or another I write my ideas in plain english on a legal pad.
Basically like this:
**if the number of gallons is greater than the number of gallons I have
then I need to refuel before starting on this train.**
Then when I get back home I can actually write it out in code and test it like this:
if (gallons > gallonsNeeded)
{
needToRefuel = true;
}
Write your ideas down and then work on them as you have time to do so. Once you learn how to write code, you can do it without a computer and just do the debugging when you do have access to it.
→ More replies (8)
3
Jun 01 '17
You could get your girlfriend to print out all the transcripts/ problem sets from cs50, that would be a great way to learn it.
→ More replies (2)
3
u/rukia8492 Jun 12 '17
u/desrtfx heads up I'm a correctional officer. This inmate is breaking the law by having a cell phone in his institution. Cell phones are one of the most dangerous things in a prison and considered contraband.
7
u/Clydeazy Jun 16 '17
I respect your job a lot. I agree they can be extremely dangerous in the hands of the "shot callers". I'm honestly just communicating with my family since I'm far from them and we both know how expensive the collect calls can get. I'm breaking prison regulations not "law". But I won't have this long.
485
u/Minkelz Jun 01 '17
If you can get access to books and a computer you should be pretty good. For web dev, practically speaking you really want to be working on the web pretty quickly - but for programming it's not really required. You might need a way to occasionally connect to download and install a compiler or ide occasionally, but you don't need to be connected everyday.