Your computer will need a modern OS like macOS Mojave or Catalina (though even slightly older versions of macOS are okay), Windows 7 or higher (Windows 10 recommended for the Microsoft route), or a GNU/Linux distro, such as Ubuntu or Lubuntu, which are Debian-based. There’s a plethora of Linux distros out there, but it’s best to stick with ones based on Debian (for personal computers) or Red Hat (for servers). Ubuntu and Lubuntu are very user-friendly, but Lubuntu is more lightweight, so that’s the best Linux option if you have a slow computer.
You also need an internet connection, though it doesn’t need to be super fast. Your computer doesn’t need to be super new, fast, or pristine. As long as it runs and isn’t glacially slow and doesn’t overheat, it should suffice. Some parts of coding make the processor hotter (such as compiling), but usually only for short amounts of time. These requirements are current as of 2019. If you meet these requirements, you can skip the rest of this section and go straight to chapter 2.
Android or iOS devices are not suitable for this book, at least if you want to do some actual coding instead of just reading the book and doing nothing else. Mobile devices have different hardware and can’t run the same software that computers do. Pretty much all programming tools are primarily for computers. Even if you want to make mobile apps, you have to do it on a computer, not a phone or tablet.
Despite some misconceptions, you do not need a fast computer – and certainly not a fast graphics card – in order to code. You can code on a slow computer. Most software is CPU-only and doesn’t even take advantage of the performance of a GPU. www.cpubenchmark.net has good information about CPU performance.
One way to make a computer faster is to uninstall unnecessary programs, especially ones that run in the background and take up extra resources. This step isn’t as crucial on newer computers, but if you’re on a quite slow computer, you could benefit from looking into what you can get away with disabling.
If you’re a college student, and you either don’t have a computer, or yours is just too slow, you can always go to a computer lab on campus. They will typically have at least some programming-related software installed. You can’t always install software on a public college computer though.
If you have to use a public library’s computer lab, odds are they won’t have any programming-related software, such as an IDE, and you probably won’t be allowed to install things on it. Sometimes, organizations which offer public computers will use “deep freeze” software that will revert it back to a particular state, so even if you do manage to install something on it one day, it will be gone the next.
If you’re in the market to buy a new computer, if you have a budget of $X, a laptop that costs $X will be slower and worse than a desktop that costs $X. However, laptops are portable, which is the main advantage. If you have a laptop, you can take it to a library, to a hackathon, a coffee shop, and things like that. Some disadvantages of laptops include worse cooling, worse performance, worse value, and the fact that they’re harder to repair or upgrade. However, if you want mobility, you’ll need a laptop. I don’t recommend tablets. Tablets and phones lack the ability to install proper software development software that you can really only get on desktops and laptops.
Something to consider when budgeting is that, if you’re a developer, you might eventually want to have your own website. So instead of spending all your budget on a computer, spend a little less on the computer and save the rest for a domain name and server costs. Yearly domain name registration costs are about $10 a year for something typical like a .com domain, though you can get nickel-and-dimed if you sign up for additional things in addition to a domain name’s registration. You will also need a web server, which can cost you about $3 to $10 per month (depending on how fast you want your site to be). Keep in mind that some places only have decent monthly prices if you pay for a full year up-front. Then there’s email hosting and SSL, which can also add up over time.
I looked it up online, and Fry’s Electronics sells refurbished desktops. I found one with a dual-core AMD A4 processor, 8GB RAM, a 500GB hard drive, and Windows 10 for only $180. That’s not amazing, but it’s good enough for coding. It also includes a keyboard and mouse. They also sell lower-end monitors for $70. If you don’t have a computer, look online for Fry’s, Newegg, or MicroCenter, specifically for refurbished things. I guess you could try Amazon, too. Or look up craigslist listings.
Another refurbished listing on Fry’s Electronics’ website was a Dell laptop with 8GB RAM, a dual-core i5-3210M, a 250GB hard drive, and Windows 10 for only $180. You absolutely do not need a $1,000+ computer for the sake of learning computer science and software development. If you can’t afford the monthly cost of internet access, get a low-end laptop so you can take it with you to your local library for the free wifi.
I do not recommend Chromebooks. I’ve used ChromeOS, and it’s very limited. The only way to make a Chromebook useful is to install a Linux distro on it and ditch ChromeOS, but I think you’re better off getting a regular laptop instead.
If you look into local mom-and-pop computer shops, they might have refurbished computers that are even cheaper than what you can get from Fry’s or MicroCenter.
For those who are well off, having the prerequisites for a computer and internet connection are no problem at all. But many people are on a tight budget or have older hardware. Many people who want to improve their financial situation get drawn to CS because of the career prospects. It can be a little more arduous if your computer situation isn’t ideal, but it’s still doable. Maybe you already have a super expensive and fast desktop and/or laptop. But I’m including this information to be inclusive for people who don’t have tons of money.
You also need the ability to install software on your computer. If you only have limited permissions on your user account on a computer, then you might lack the ability to install things. In that case, I guess you can use web-based tools instead, though they are inferior to ones that can be installed natively on a computer.
An internet connection is necessary to download development-related software or look up documentation and Youtube videos with youtube-dl, but you can get away with programming offline, at least some of the time. When programming, you will sometimes encounter problems that you need to consult online resources to solve. If you don’t have internet access where you live, you can go to a coffee shop or public library and use it for a while to download what you need, and then you can use the tools and videos offline.
There are some people who unfortunately lack proper computers and internet connections, but hopefully, you have access to these things, or perhaps resources that can help you get them. For example, I live near a place called the People’s Resource Center, and they refurbish donated computers and offer computer training as well as free computers to those who are in need of these things. There might be something similar in your area. These can be cheaper than the $180 computers I mentioned, but just know that they might be slower. At the PRC, the computers are used, but with a brand new Microsoft Windows installation, though they aren’t terribly fast. But if you have no other options, it’s better than nothing.