# So my kid wants to learn how to build computers....

**URL:** <https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795>\
**Category:** In My Humble Opinion\
**Created:** [June 12, 2017, 6:44pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795 "2017-06-12T18:44:52Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Darren\_Garrison](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/darren_garrison/32/92_2.png) [@Darren\_Garrison](https://boards.straightdope.com/u/Darren_Garrison)\
**Post date:** [June 12, 2017, 11:22pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/21 "2017-06-12T23:22:02Z")

</div>

> [@RivkahChaya](#):
>
> Putting them in the computer is not hard, really, it’s difficult to do wrong.

My biggest “fingers crossed” moment is always getting the heat sink properly clamped into place over the CPU without cracking the die. (Never cracked a die, but I’ve always been wary of it.)

---

<div class="post-metadata">

**Author:** ![Robot\_Arm](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/robot_arm/32/18280_2.png) [@Robot\_Arm](https://boards.straightdope.com/u/Robot_Arm)\
**Post date:** [June 13, 2017, 2:01am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/22 "2017-06-13T02:01:31Z")

</div>

> [@Pork\_Rind](#):
>
> Yeah, personally I’d go the Arduino plus a bunch of basic components route. I’ve built a gaming PC and it was a whole lot more of an exercise in budget management and shopping list maintenance than anything involving knowing how a computer works. You can get your hands dirty building and programming circuitry on an Arduino or similar in about 10 minutes. Very satisfying.

I think people who’ve been working on computers for a while forget just how much of a learning curve there is to it. Just to get started with an Arduino you need the board, the cable, an IDE, a program, and something for the controller to actually control. The first time I tried to use one, I couldn’t get the sketch to upload. It was something in the configuration, but I don’t remember what, and the error messages weren’t very helpful. It’s a lot to go through just to make an LED blink. I think some form of bootstrapping would be really helpful to get started; someone to show the OP’s son how to get things connected and configured, get a simple sketch running, and then turn him loose.

That said, the possibilities are damn near limitless. It’s a growing segment, fairly cheap to get started, and a lot of sources for help and encouragement.

---

<div class="post-metadata">

**Author:** ![JohnGalt](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/johngalt/32/184_2.png) [@JohnGalt](https://boards.straightdope.com/u/JohnGalt)\
**Post date:** [June 13, 2017, 2:02am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/23 "2017-06-13T02:02:18Z")

</div>

If your 12-year old son is really into it, and you think he can handle a introductory college-level course, consider [From NAND to Tetris](http://www.nand2tetris.org/). It’s a complete online course that takes you through the basic of logic chips, creating boolean-logic circuitry, a hardware simulator, machine language through high-level languages. As the title implies, you end up making a game in the software-based computer system.

I think this might be too much for his age (I teach college-level programming but haven’t used this course - not sure my students could handle it!). But it’s software-based, not plugging components and chips into hardware, so maybe he’s looking for something else. I want to put this out in case others are looking for more options.

---

<div class="post-metadata">

**Author:** ![Budget\_Player\_Cadet](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/budget_player_cadet/32/205_2.png) [@Budget\_Player\_Cadet](https://boards.straightdope.com/u/Budget_Player_Cadet)\
**Post date:** [June 13, 2017, 5:26am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/24 "2017-06-13T05:26:39Z")

</div>

> [@Theodore\_Striker](#):
>
> Thanks everyone, this is great advice, and the reason I threw myself on the mercy of the Dope. He’s 12 right now, has his own laptop (a budget special ASUS i think, nothing special), and a PS4. It sounds like the actual assembly isn’t nearly the complex undertaking that I thought it was (and maybe used to be), but after looking at components in the past, I can see where this can get pricey quickly.

The key thing I haven’t seen much talk of is compatibility. You need a motherboard that’s compatible with your CPU, yes, but you also need the _rest_ of your build to work with your motherboard, and your Power Supply Unit to be beefy enough to power the whole machine, and tossing in the latest and greatest GPU and CPU to a motherboard that only has space for 4GB RAM is not a problem that’s _likely_ to occur, but would lead to a pretty lousy, expensive machine. PCPartsPicker is great for this, as others have pointed out. Also, I remember hearing something like that Intel chips work better with NVIDIA GPUs, while AMD chips work better with AMD GPUs, but don’t quote me on that.

> [@](#):
>
> On the coding side, is there one language that is better than another to start with, and aside from a camp, what’s the best way to get going on this side?

> **[Five Best Programming Languages for First-Time Learners](https://lifehacker.com/five-best-programming-languages-for-first-time-learners-1494256243)**
>
> If you're thinking of learning to code, the language you decide to pick up first has a lot to do with what you're trying to learn, what you want to do

From personal experience, I can say that Java and Python are _very_ beginner-friendly, and C and C++ are… _not_.

---

<div class="post-metadata">

**Author:** ![Ranger\_Jeff](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ranger_jeff/32/2065_2.png) [@Ranger\_Jeff](https://boards.straightdope.com/u/Ranger_Jeff)\
**Post date:** [June 13, 2017, 5:40am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/25 "2017-06-13T05:40:33Z")

</div>

I thumbed through a yellow and black building a computer for dummies book once.

---

<div class="post-metadata">

**Author:** ![Plumpudding](https://avatars.discourse-cdn.com/v4/letter/p/edb3f5/32.png) [@Plumpudding](https://boards.straightdope.com/u/Plumpudding)\
**Post date:** [June 13, 2017, 10:48am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/26 "2017-06-13T10:48:57Z")

</div>

> [@Darren\_Garrison](#):
>
> Or [one or more](https://www.raspberrypi.org/products/) [Raspberry Pis](https://www.google.com/search?q=Arduino&ie=utf-8&oe=utf-8#q=raspberry+pi+projects).

I agree. Is there any cheaper clones? A friend of mine made a console emulator entertainment system with a pi, among many other things.

---

<div class="post-metadata">

**Author:** ![Ruken](https://avatars.discourse-cdn.com/v4/letter/r/f475e1/32.png) [@Ruken](https://boards.straightdope.com/u/Ruken)\
**Post date:** [June 13, 2017, 11:07am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/27 "2017-06-13T11:07:55Z")

</div>

> [@Budget\_Player\_Cadet](#):
>
> The key thing I haven’t seen much talk of is compatibility. You need a motherboard that’s compatible with your CPU, yes, but you also need the _rest_ of your build to work with your motherboard, and your Power Supply Unit to be beefy enough to power the whole machine, and tossing in the latest and greatest GPU and CPU to a motherboard that only has space for 4GB RAM is not a problem that’s _likely_ to occur, but would lead to a pretty lousy, expensive machine. PCPartsPicker is great for this, as others have pointed out. Also, I remember hearing something like that Intel chips work better with NVIDIA GPUs, while AMD chips work better with AMD GPUs, but don’t quote me on that.

IME this is the hard part. Yes, assembling is like IKEA. But instead of a kit where everything works together, you have to buy all the parts separately, without instructions. Many of the parts don’t play nice with each other, and many of the ones that do are sub-optimal. Everything needs to physically fit and be compatible. And unless you like to waste money, it’s nice to not have anything bottlenecked.

It took two inexperienced adults probably a combined 40 hours or more (spread out over several months) to figure out just what we wanted. $1500 later, actual assembly took an hour.

---

<div class="post-metadata">

**Author:** ![Quartz](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/quartz/32/267_2.png) [@Quartz](https://boards.straightdope.com/u/Quartz)\
**Post date:** [June 13, 2017, 11:14am UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/28 "2017-06-13T11:14:48Z")

</div>

> [@Theodore\_Striker](#):
>
> On the coding side, is there one language that is better than another to start with, and aside from a camp, what’s the best way to get going on this side?

You might consider HTML and segue into Javascript.

---

<div class="post-metadata">

**Author:** ![ftg](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ftg/32/2801_2.png) [@ftg](https://boards.straightdope.com/u/ftg)\
**Post date:** [June 13, 2017, 12:26pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/29 "2017-06-13T12:26:46Z")

</div>

Echoing a lot of what’s been said.

1. If actually putting stuff together is the goal, then go the thrift store route. Get a cheap box, take it apart, put it back together. See if it runs. Swap things between two boxes. Etc.

2. If the goal is to get a fast gaming computer just buy one online. It’s simple to choose the options you want. While it used to be cheaper to build your own, that’s no longer the case.

---

<div class="post-metadata">

**Author:** ![Pixel\_Dent](https://avatars.discourse-cdn.com/v4/letter/p/bc8723/32.png) [@Pixel\_Dent](https://boards.straightdope.com/u/Pixel_Dent)\
**Post date:** [June 13, 2017, 2:12pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/30 "2017-06-13T14:12:54Z")

</div>

> [@Quartz](#):
>
> You might consider HTML and segue into Javascript.

Those are good options and get you quickly into the “see cool things on the screen” zone. For beginning programmers I think it’s important to get them to a point where they can change the way things look/behave on the screen to keep them interested.

There are languages which are easy to learn like Python, but hard to think of anything to do with them that’s both interesting and easy.

Another option is to have him learn by programming apps for phones. I’ve been teaching my 9 year old to do some programming by having him write some simple apps for the iPhone in Swift which is a Java like language. Following the free tutorials and using the free tools Apple has available he went from 0 to having a simple app on my phone that changes the screen color when you press a button in about an hour. Apple’s cookbook instructions to get up and running were pretty much foolproof. I haven’t done any Android programming but I’m told it’s similarly easy to do with Java.

Before doing app programming we did some programming minecraft with Python, but that was much harder to get set up and working than doing smart phone programming. I’m glad I had decades of experience to draw on while debugging the interface between the development system and the minecraft server. He had fun doing it, but I don’t think he could have got it working himself.

---

<div class="post-metadata">

**Author:** ![Budget\_Player\_Cadet](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/budget_player_cadet/32/205_2.png) [@Budget\_Player\_Cadet](https://boards.straightdope.com/u/Budget_Player_Cadet)\
**Post date:** [June 13, 2017, 2:22pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/31 "2017-06-13T14:22:11Z")

</div>

> [@Pixel\_Dent](#):
>
> Those are good options and get you quickly into the “see cool things on the screen” zone. For beginning programmers I think it’s important to get them to a point where they can change the way things look/behave on the screen to keep them interested.
> 
> There are languages which are easy to learn like Python, but hard to think of anything to do with them that’s both interesting and easy.
> 
> Another option is to have him learn by programming apps for phones. I’ve been teaching my 9 year old to do some programming by having him write some simple apps for the iPhone in Swift which is a Java like language. Following the free tutorials and using the free tools Apple has available he went from 0 to having a simple app on my phone that changes the screen color when you press a button in about an hour. Apple’s cookbook instructions to get up and running were pretty much foolproof. I haven’t done any Android programming but I’m told it’s similarly easy to do with Java.
> 
> Before doing app programming we did some programming minecraft with Python, but that was much harder to get set up and working than doing smart phone programming. I’m glad I had decades of experience to draw on while debugging the interface between the development system and the minecraft server. He had fun doing it, but I don’t think he could have got it working himself.

This is good advice. Actually getting Python (or Java, or the like) to _do_ anything can be a chore. With that in mind, here’s a suggestion: start on Unity C#. That is, start learning C# (which is like C++, except not quite as _nightmarish_, and definitely a useful language) by using the Unity games Engine. It has a few noteworthy advantages: it’s flashy; it’s a direct line to building video games, which kids are bound to love; it has a ton of tutorials and examples online; and you still learn a fair bit about how C# works from working with it.

---

<div class="post-metadata">

**Author:** ![aceplace57](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/aceplace57/32/3500_2.png) [@aceplace57](https://boards.straightdope.com/u/aceplace57)\
**Post date:** [June 13, 2017, 3:38pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/32 "2017-06-13T15:38:16Z")

</div>

NewEgg is where I buy motherboards and cases.

A bare bones system includes a case, power supply and sometimes a motherboard.The market is drying up. There used to be a lot more bare bones systems to pick from.

Here’s a inexpensive option for $299.  
It appears the CPU and RAM is included. All you need extra is a hard drive, graphics card and DVD drive. You’ll need software. Linux is much cheaper than Windows 10.  
[https://m.newegg.com/products/9SIA65C5DB7723](https://m.newegg.com/products/9SIA65C5DB7723)

---

<div class="post-metadata">

**Author:** ![aceplace57](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/aceplace57/32/3500_2.png) [@aceplace57](https://boards.straightdope.com/u/aceplace57)\
**Post date:** [June 13, 2017, 3:46pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/33 "2017-06-13T15:46:43Z")

</div>

Ubuntu is a popular Linux package and free. It’s a good option to test out a home brew pc.

> **[Download Ubuntu Desktop | Download | Ubuntu](https://ubuntu.com/download/desktop)**
>
> Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

---

<div class="post-metadata">

**Author:** ![Lowdown](https://avatars.discourse-cdn.com/v4/letter/l/c57346/32.png) [@Lowdown](https://boards.straightdope.com/u/Lowdown)\
**Post date:** [June 13, 2017, 7:23pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/34 "2017-06-13T19:23:06Z")

</div>

It’s relatively simple to assemble one. The difficulty is in choosing components that are going to work together, and being able to troubleshoot should something go wrong. A YouTube search should get you what you need to put one together. If he’s SERIOUS about it, get him into an A+ Certification course. (Or maybe just an A+ Cert book if you think that’ll work.)

---

<div class="post-metadata">

**Author:** ![Darren\_Garrison](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/darren_garrison/32/92_2.png) [@Darren\_Garrison](https://boards.straightdope.com/u/Darren_Garrison)\
**Post date:** [June 13, 2017, 7:35pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/35 "2017-06-13T19:35:50Z")

</div>

> [@aceplace57](#):
>
> NewEgg is where I buy motherboards and cases.
> 
> A bare bones system includes a case, power supply and sometimes a motherboard.

IMHO a bare bones system ALWAYS includes a motherboard. A case and power supply is called a case and power supply. A bare bones system has to have at least case, power supply, motherboard, CPU, heat sink, and maybe RAM. (Many available at many locations as seen at the previously mentioned [pricewatch.com](http://pricewatch.com). (Starting near 100 bucks.)

ETA the bare-bones systems are usually shipped assembled, but you can request it as raw components at some sites.

---

<div class="post-metadata">

**Author:** ![Reply](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/reply/32/15952_2.png) [@Reply](https://boards.straightdope.com/u/Reply)\
**Post date:** [June 13, 2017, 7:58pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/36 "2017-06-13T19:58:27Z")

</div>

> [@Plumpudding](#):
>
> On the coding side, is there one language that is better than another to start with, and aside from a camp, what’s the best way to get going on this side?

Since he likes games, try [https://www.codingame.com/](https://www.codingame.com/)  
[Codecademy.com](http://Codecademy.com) is another good one.

Both of those are interactive, not lecture-based. For a generation born into a hypermarketed world that demands their attention at every turn, who has the attention span for a lecture or book anymore?

For what it’s worth, gaming is also how I got started as a programmer (making modifications to PC games). Building a computer really only takes watching a YouTube video or two. Learning the components could take a few hours, but they’re not really that complicated. Watch and learn once or twice or just go on a forum and there ya go. If you go to a Microcenter, they’ll help you choose the components and you can pay them to build it for you. Maybe they would let him watch?

For hireability, JavaScript is probably the most important language right now (language of the new Web), followed by Objective-C for iPhones and Java for Android phones and PHP for older, established websites (such as this very one).

The language is not as important as the thought processes and the workflow. Once you learn your first programming language, the second and third are a lot easier to pick up.

I might even offer the opinion of not even bothering with building a computer. The only reason to do so now is to build a cheaper gaming PC. If he’s not a huge PC gamer anyway (mainly doing the PS4), PCs are otherwise just commodities, not really worth building from the ground up. The only savings to be had are at in the high-performance market, which programmers don’t really need.

There’s enough learning to be had as a programmer, enough to last a lifetime, that wasting time on hardware – unless he’s really interested in it – just isn’t worthwhile. It doesn’t pay unless he becomes a very specialized electronics engineer working specifically on hardware. Programming lets him work in pretty much any company out there doing sort of any online or app stuff.

If he really is more interested in hardware, try an Arduino starter kit:

> **[Arduino Starter Kit Multi-language](https://store.arduino.cc/products/arduino-starter-kit-multi-language)**
>
> Quickly and easily get started with learning electronics using the Arduino Starter Kit, which have a universal appeal to STEM fans at home, businesses in STEAM industries, and schools alike. No prior experience is required, as the kits introduce both...

---

<div class="post-metadata">

**Author:** ![Theodore\_Striker](https://avatars.discourse-cdn.com/v4/letter/t/74df32/32.png) [@Theodore\_Striker](https://boards.straightdope.com/u/Theodore_Striker)\
**Post date:** [June 13, 2017, 8:03pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/37 "2017-06-13T20:03:52Z")

</div>

Thanks again everyone, there is a lot here to get going on. I do have a question about the Adruino and Raspberry Pi kits, since I happened to see a bunch of these around. It’s going to sound pretty dumb, but what are they, how do they work, and are they worth buying as something to get him started on? I’m sorry for being so clueless, but, well, I’m clueless when it comes to this.

---

<div class="post-metadata">

**Author:** ![Reply](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/reply/32/15952_2.png) [@Reply](https://boards.straightdope.com/u/Reply)\
**Post date:** [June 13, 2017, 8:21pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/38 "2017-06-13T20:21:05Z")

</div>

> [@Theodore\_Striker](#):
>
> Thanks again everyone, there is a lot here to get going on. I do have a question about the Adruino and Raspberry Pi kits, since I happened to see a bunch of these around. It’s going to sound pretty dumb, but what are they, how do they work, and are they worth buying as something to get him started on? I’m sorry for being so clueless, but, well, I’m clueless when it comes to this.

They are products meant to provide a hobbyist entry into the world of microcontrollers and embedded computers, respectively.

Arduino is a programmable microcontroller with a healthy ecosystem of how-to guides and accessories. Its purpose is to allow newcomers to learn what microcontrollers are (simple computers that power things like toys, drones, power tools, cell phone chargers, smart bulbs, remote controls… basically simple electronic devices). Their advantage over a general-purpose computer is that they are cheaper and simpler to manufacture. Their disadvantage is that they are less powerful and less flexible, usually purpose-built for any given solution whereas a regular computer can be programmed to do just about anything. It’s not a hard-and-fast rule, just a broad categorization. For example, a smartphone is a mixture of a computer and many microcontrollers working together to control the radios, the display, the sensors, the camera, etc. Microcontrollers typically use cables, connectors, and components unique to that industry, with little overlap with the consumer PC market.

Raspberry Pi is actually a normal computer capable of running Linux (another operating system, like Windows or OSX). It’s just a very affordable one, a very small one, and not very powerful. Its primary advantage over a microcontroller like Arduino is that it can run standard PC software written for Linux, giving it more flexibility. For somebody who already knows PCs and PC programming, learning Raspberry Pi is easier than learning microcontroller programming (but not too much more so).

So in terms of complexity and price and power and flexibility, it would go something like:

[SnapCircuits](http://www.snapcircuits.net/) –\> [Lego Mindstorms](https://www.lego.com/en-us/mindstorms) –\> Arduino –\> Raspberry Pi –\> PC

For learning purposes, I would recommend Arduino because it provides a lower-level learning experience, meaning it goes down further into the nitty gritty of how electronics work. It also comes in starter kits designed to teach, and Make magazine has like a decade of publications with more sample projects. Raspberry Pi is more just a tiny computer, useful too, but maybe not as fun as a learning tool… IMO.

---

<div class="post-metadata">

**Author:** ![Ruken](https://avatars.discourse-cdn.com/v4/letter/r/f475e1/32.png) [@Ruken](https://boards.straightdope.com/u/Ruken)\
**Post date:** [June 13, 2017, 8:22pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/39 "2017-06-13T20:22:41Z")

</div>

…

---

<div class="post-metadata">

**Author:** ![Pixel\_Dent](https://avatars.discourse-cdn.com/v4/letter/p/bc8723/32.png) [@Pixel\_Dent](https://boards.straightdope.com/u/Pixel_Dent)\
**Post date:** [June 13, 2017, 8:36pm UTC](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795/40 "2017-06-13T20:36:25Z")

</div>

> [@Theodore\_Striker](#):
>
> Thanks again everyone, there is a lot here to get going on. I do have a question about the Adruino and Raspberry Pi kits, since I happened to see a bunch of these around. It’s going to sound pretty dumb, but what are they, how do they work, and are they worth buying as something to get him started on? I’m sorry for being so clueless, but, well, I’m clueless when it comes to this.

To really simplify it, the arduino is a little computer that you connect to your computer with a USB cable. You write software that runs on it using a development environment on your computer then send it over the USB to the arduino to run. It has a library that makes it easy to access the different hardware components on the arduino board like the LEDs, input pins, or whatever.

For instance

pinMode(13, OUTPUT);  
digitalWrite(13, HIGH);

would turn on an LED connected to pin 13 on the arduino board.

Programming it reminds me a lot of my previous life when I wrote firmware for consumer electronics.

[Previous page](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795.md?page=1)

[Next page](https://boards.straightdope.com/t/so-my-kid-wants-to-learn-how-to-build-computers/788795.md?page=3)
