
Ask HN: Resources to encourage teen on becoming computer engineer? - tomrod
Howdy HN<p>A teenager I am close with would like to become a computer engineer. Whet resources, books, podcasts, camps, or experiences do you recommend to support this teen&#x27;s endeavor?
======
kqr
The single most supportive thing you could do for them is to hook them up with
like-minded peers.

If they have friends the same age interested in the same thing, there's no
limit for what they can accomplish, with or without the other material.

Not only because peers can help out in finding and recommending "teaching"
material, but also because as humans we tend to want to do what our friends
do.

I think these peers can be people they interact with only online, and not in
person, but that is my own conjecture. The rest is supported by evidence.

~~~
pietroglyph
+100 on this. A social environment that encourages this is a huge motivator. A
good _FIRST_ Robotics team is one way that you might get this (not all teams
will have great student experiences, but they’re probably your best bet for
this type of environment.)

------
maxov
See if there is a FIRST robotics team nearby at a high school. I did not
participate in FIRST at that age (my interests were elsewhere), but my friends
who did say it was a pivotal experience for them. You learn lots of hands on
skills, get to work with experienced industry mentors, and also make friends
with similar interests. There are many components to designing the robots, so
they can try out and see what they like.

I’m not sure how teams are in the pandemic, but it is probably worth it to
try!

Another caveat: depending what you mean by computer engineering, I’m not sure
if many FIRST teams actually design their own chips. But they certainly do a
lot of closely related stuff.

In general, a concrete application seems to be a great motivation. I resisted
my parents’ efforts to get me interested in programming until I realized it
could help me make Minecraft mods.

~~~
loganlinn
This! I participated in two FIRST robotics competitions as a teenager. I can
say, it definitely was a pivotal experienced for me on the path toward a
computer engineering degree.

------
jasode
_> would like to become a computer engineer._

If you deliberately chose the phrase _" computer engineer"_ to ask this
question, are you saying the teen is interested in designing computer
_hardware_ instead of just software programming?

Just to be on the same page with terminology, Zach Star has short videos
comparing "computer engineering" vs "computer science":

[https://www.youtube.com/watch?v=avZTQgLs064](https://www.youtube.com/watch?v=avZTQgLs064)

[https://www.youtube.com/watch?v=eGX_42qSofc](https://www.youtube.com/watch?v=eGX_42qSofc)

Therefore, if computer engineering is indeed the specialty, there are more
detailed class videos such as _hardware architecture_ from CMU:

[https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkX...](https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq)

Princeton has a similar computer architecture curriculum on Coursera:
[https://www.coursera.org/learn/comparch](https://www.coursera.org/learn/comparch)

~~~
tomrod
Hardware is their interest.

~~~
otoburb
Since HW is their interest, you might want to probe a little bit why they
specifically chose "Computer Engineering" and not "Eletrical Engineering".

I know this is dating myself, but I faced the same question about 25 years ago
and chose computer engineering because I knew that I wanted a blend of HW and
SW. Many of my classmates who were more interested in HW chose electrical as
their specialty. Comp provided more optionality, and there was a lot of
overlap, but EEs got to understand the nuts and bolts of HW and especially
choose from a wider array of VLSI chip design electives.

~~~
BeetleB
One caveat to that: The EE curriculum is a bit more math heavy. In my
university, CompE would take Calc I and Calc II, but EE's needed to take Calc
III. EE's also needed to take electromagnetics - very heavy on calculus. Some
other engineering courses that tend to have calculus. If you want to get deep
into HW, this may be a good thing.

If the student dislikes math somewhat, I would not recommend EE. If they
really dislike math, I would not recommend CompE either ;-)

~~~
GrumpyYoungMan
Requirements can vary. The institution I went to did require a differential
equations course after Calc III even for CompE students. And, yeah, it was
painful.

Either way, I agree with you 100%; if the student doesn't like math, they are
almost guaranteed to get weeded out by the calculus courses.

~~~
BeetleB
My university required diff eq for both EE and CompE. They did _not_ require
Calc III. Diff Eq is necessary if they're going to do anything with circuits.
But I agree with you - it varies from institution to institution. My grad
school, for example, requires the same math courses for CompE and EE for
undergrad.

> Either way, I agree with you 100%; if the student doesn't like math, they
> are almost guaranteed to get weeded out by the calculus courses.

It's not that binary. I think the difference (in my undergrad) is that CompE's
could struggle and manage to pass calculus (or even do well), and rarely need
to use it in future courses in their Junior/Senior year. For them it's just a
pain they need to get through and be done with it. EE students, though, are
more likely going to need to take courses that require them to use the
calculus they learned. Electromagnetics, control theory, communications
theory, semiconductors, etc. Even the list of electives EE's could take were
more calculus heavy compared to the list of electives for CompE's.

------
GrumpyYoungMan
Assuming that you actually mean computer engineer (as in digital logic and
computer hardware) and not software developer, as so many people here are
assuming, there are a lot of resources available:

For a gentle overview of how digital logic and CPUs work, Charles Petzold's
book " _Code: The Hidden Language of Computer Hardware and Software_ " is
solid introduction. Nisan and Schocken's textbook " _The Elements of Computing
Systems_ " and the lessons at the NAND2Tetris site
([https://www.nand2tetris.org/](https://www.nand2tetris.org/)) are good if
they want to get hands on with the subject.

There are a variety of robotics and electronics interfacing kits based off the
Arduino and Raspberry Pi available through Adafruit and SparkFun. If they're
more interested in the digital logic side, Digilent provides FPGA boards and
test instruments intended for use in educational environments that also
include tutorials [https://store.digilentinc.com/the-zynq-book-tutorials-for-
zy...](https://store.digilentinc.com/the-zynq-book-tutorials-for-zybo-and-
zedboard/).

[EDIT] I've seen some recommendations for the video game Factorio in this
thread and, odd as it may sound, it would not be a bad gauge of interest.
Digital logic is all about getting the right signals to the right place at the
right time and doing the right thing with them and Factorio definitely teaches
analogues of that.

[EDIT 2] Another interesting project for them might be to build a computer
from chips. Ben Eater has a design, tutorials, and sells kits for building a
6502 computer (Same CPU as the Apple II) on a breadboard:
[https://eater.net/6502](https://eater.net/6502). (Not sure I'd want to try
that without a 5V tolerant logic analyzer but they're cheaply available
nowadays, e.g. [https://www.seeedstudio.com/Logic-
Pirate-p-1750.html](https://www.seeedstudio.com/Logic-Pirate-p-1750.html))
Note that I don't vouch for any of these, they're just examples of what's
available out there that your friend can investigate if it piques their
interest.

~~~
yodsanklai
> Code: The Hidden Language of Computer Hardware and Software" is solid
> introduction

Very good book indeed.

~~~
abnry
Came here to recommend this book. This book is what inspired me to get into
STEM.

------
bluedino
Leave them at their grandparents house for a month, with a 286 and an old
BASIC book.

~~~
GrantZvolsky
This is how I started! 2 months in a tiny village with no internet. My journey
began with a book titled 'The secrets and mysteries of the command line'.

------
analog31
There's one minor issue to look out for, which is the social aspect. For
better or worse, "computer science" has become the hot field that hyper
competitive parents want their kids to study. It's the new "pre med." Some
kids thrive in it, others are turned off by it.

That's my observation as a parent, not a commentary on computer science
itself.

It's just something to watch out for. Some kids will need help maintaining
interest and valuing their own abilities in that atmosphere.

------
aeleos
I am about to graduate with my degree in computer engineering so I have a few
good resources for you. I was in a similar position, and what really helped me
was doing personal projects. Some that I can recommend are:

Ben Eaters videos on creating an 8 bit computer on a breadboard will teach
digital logic, computer engineering fundamentals etc.

Building your own operating system, the osdev subreddit and wiki have many
great resources to go from someone who knows c to understanding how that
relates to the hardware.

Anything robotics related, working with Arduino and other microcontrollers is
another big one, as that is part of any electrical and computer engineering
degree.

If you need any other resources or have questions feel free to reach out, I am
happy to give advice.

~~~
TimSchumann
Second anything by Ben Eater.

------
rramadass
Just get them a copy of _Code: The Hidden Language of Computer Hardware and
Software by Charles Petzold_ and make them read it end to end without
distractions in a week :-)

------
jll29
Buy him or her a Raspberry Pi if they don't have a computer yet. Once on the
Internet, any kid can find out the rest.

Programming in Python, then assembler (perhaps on a simulator?) is fun for
some kids, and fosters an understanding of algorithmic principles and the
operational precision required to make the machine do what you want.

There may be like-minded teenagers around? Learning together is more fun. A
good model is having peers to learn with, and occasional access to mentors
(watching people to program is faster than reading books). Some cities also
have makers labs that anyone can use.

~~~
raffraffraff
I think the internet is a great resource and a huge distraction. You can start
looking for some "very specific thing" and 2 hours later you can't remember
why you opened the browser.

The raspberry pi is a great suggestion, but I'd mix your suggestion with
another on here: dump the kid at their grandparents house with a 286 and a
BASIC book, and take their phone away.

------
hideo
[https://www.nand2tetris.org/](https://www.nand2tetris.org/) Might be of
interest

------
mcint
> “arouse in the other person an eager want. He who can do this has the whole
> world with him. He who cannot walks a lonely way.” > ― Dale Carnegie, How to
> Win Friends and Influence People

I assume you want them to have a leveraged, high-impact job, rather than
happening to spend most of their life on a certain type of problem.

Help by getting them exposure to people doing the work. A chance to talk, a
chance to learn about the impact of the work. Learning materials are more
accessible than ever, but a unique reason to pursue a particular path is less
convincing than ever.

Empower them to find a path in that general direction. Help them find projects
that they like (or love), that can contribute meaningfully to, and projects
for which they care about the outcome—it has some significance to them (or
delivers clear value to benefactors they care about).

------
baby-yoda
my $0.02 - fuel interest and discovery rather than overloading with
dry/monotonous material

\- encourage the practice of looking at the technology prevalent around and
deconstructing those solutions into basic building blocks. to quote Steve Jobs
"...everything around you was made up by people no smarter than you..."

\- along the same lines, imagine how problems around you can be solved, and
use technology to bridge the gap between imagination and reality. doesn't
matter how fragile or robust these thoughts are, over time they will refine
and sharpen.

\- others here might have better recommendations for tinkering but raspberry
pi/arduino/etc types of hardware are inexpensive, easy to hack and theres
mountains of info online to keep feeding the interest over time.

------
cbanek
I would ask them "what is something you want to build? something simple?" and
help them. Mentor them. Teach them how to research on the internet the
problems they are looking to solve (sometimes people just don't know the right
words to look for).

At least me as a teenager I was a very project driven person. It gave me a
good feeling to build something neat. Much more interesting than classes and
such.

Or is this about a career (teenager could mean someone about to go to college
soon)? Maybe introduce them to some people that do the job they want, if it's
not you?

I'd ask them what they want and how they work, and really figure out something
that works well for them.

------
derekenos
I found working with relatively simple 8-bit microcontroller architectures
(e.g. Atmel AVR, Microchip PIC), studying the datasheets and programming them
in assembly, to be an effective and gratifying introduction to the basics of
CPU architecture.

------
verdverm
Hacker News, Python, and Robotics (arduino / raspberry pi / Sundance / etc)

I've learned so much from the HN community, Python is a good first language,
robotics is hands on, fun, and important going forward

------
madballster
First thing is to ask this teenager why do they want to become a computer
engineer? What do they think computers engineers do and why do they think they
will enjoy doing that for a living?

~~~
wccrawford
I'd drop "for a living" and just ask if they will enjoy doing it. If it only
ends up as a hobby and not a career, they can still enrich their lives with
it. And if it's a career, too, that's even better.

There's no need to make them think it's not worth doing if it's not a career.

------
raffraffraff
[https://m.youtube.com/watch?v=WiiQrLMqsm8](https://m.youtube.com/watch?v=WiiQrLMqsm8)

My fascination with technology came about because I was born at a time when
this type of program was broadcast on TV, and 8-bit computers were cheap
enough even for my family's circumstances. Most of them could be opened with a
Phillips screwdriver, and came with a "biblical" manual that included
programming (usually some form of BASIC).

Computers today after more like televisions of the 80s. You can sit back
simply allow content to stream at you without much in the way of interaction
or any know-how. There's nothing to using a computer today. Everybody has
them. Nobody is imposed by their capabilities any more, so I think we've
largely stopped wondering about the possibilities.

Maybe "The Mighty Micro" can still ignite some of that wonder.

------
jdsully
Since its hardware they are interested in I’d really recommend getting started
with an arduino. You can build a lot of cool stuff and there is a great
community.

For real in depth “computer engineering” an FPGA is the next step. But that
requires a serious time commitment with a steep learning curve, and you won’t
find nearly as much resources or hand holding.

------
mepian
Does this teenager play computer games? Some games have modding tools that
serve as a great entry point for this endeavor, like Minecraft or Skyrim.

EDIT: If you actually meant hardware engineering, then I can recommend this
fun introduction to digital logic:
[http://nandgame.com/](http://nandgame.com/)

------
westurner
"Ask HN: Something like Khan Academy but full curriculum for grade schoolers?"
[through undergrads]
[https://news.ycombinator.com/item?id=23794001](https://news.ycombinator.com/item?id=23794001)

"Ask HN: How to introduce someone to programming concepts during 12-hour
drive?"
[https://news.ycombinator.com/item?id=15454071](https://news.ycombinator.com/item?id=15454071)

"Ask HN: Any detailed explanation of computer science"
[https://news.ycombinator.com/item?id=15270458](https://news.ycombinator.com/item?id=15270458)
: topologically-sorted? Information Theory and Constructor Theory are probably
at the top:

> _A bottom-up (topologically sorted) computer science curriculum (a depth-
> first traversal of a Thing graph) ontology would be a great teaching
> resource._

> _One could start with e.g. "Outline of Computer Science", add concept
> dependency edges, and then topologically (and alphabetically or
> chronologically) sort._

>
> _[https://en.wikipedia.org/wiki/Outline_of_computer_science](https://en.wikipedia.org/wiki/Outline_of_computer_science)_

> _There are many potential starting points and traversals toward
> specialization for such a curriculum graph of schema:Things /skos:Concepts
> with URIs._

> _How to handle classical computation as a "collapsed" subset of quantum
> computation? Maybe Constructor Theory?_

>
> _[https://en.wikipedia.org/wiki/Constructor_theory](https://en.wikipedia.org/wiki/Constructor_theory)_

[https://westurner.github.io/hnlog/](https://westurner.github.io/hnlog/) ...
Ctrl-F "interview", "curriculum"

------
haasted
I've seen people with only very rudimentary programming experience get quite
caught up in Elevator Saga [1]. Makes you think about basic programming as
well as simple algorithms.

[1] [https://play.elevatorsaga.com/](https://play.elevatorsaga.com/)

------
azaras
The novel: "Little Brother" by Cory Doctorow.

------
ncmncm
Get him a microcontroller and peripherals from Crowd Supply, that run
Micropython, such as TinyPico.

Or similar from Adafruit.

Buy some servos from a hobby aircraft store, breadboard parts kit and a bench
power supply.

There is nothing so fun and motivating as making a microcontroller do visible
things.

------
gdubs
I think the best way to learn something is to have a project. What’s the teen
interested in? Is there a simple project related to their interests that would
capture their attention enough to ride the highs and lows of the learning
process?

~~~
ericd
This. Personally, I think something that involves looking behind the curtain
on websites would be pretty gratifying to most teenagers. It's a bit of a
revelation to see how the webpages they interact with all the time work.

Maybe scripting something to make a headless browser to do useful tasks, or
crawling pages.

------
blhack
Get them an arduino and a strip of LEDs and teach them how to attach the LEDs
to their clothes.

They're going to have to learn a lot about programming, and some about
electronic circuit design as well (eventually).

------
pgtan
My kid started playing with Lightbot[1]. It teaches recursion, loops,
conditionals, and is fun. I would recommend LOGO as an elegant functional
programming language, if you want something besides the usual ugly python for-
loops; Berkeley logo for quick REPL, NetLogo for more advanced concepts as
agents for example.

[1]
[https://www.youtube.com/watch?v=qZFK5yKQLdU&list=PLL6dgai5Nn...](https://www.youtube.com/watch?v=qZFK5yKQLdU&list=PLL6dgai5NnOIYPXSIWK0hVS4fKggG5C5U)

------
ianai
One option is to have them set out to learn enough to actually do the Linux
from scratch build.

If that’s a bit much, then ask them what tech they find most interesting. Look
for diy projects they could undertake for it. The books and resources they use
will depend greatly upon this.

Thankfully there are tons of great resources for doing this in tech!

Edit-another option is to work toward them maintaining their own server for
something they like to use. I’d probably keep it local until they’ve got a lot
of the tools and knowledge required to actually harden a box.

------
BrandoElFollito
I think I did not see any menton of home automation in the answers so far.

Home Assistant (a software to manage home automation) + some sensors, a wifi
power strip, a wall switch and then AppDaemon to do the automations in Python
is a great wayvto immediately see in practice what you do in software.

One must be careful with woring on mains (with some elements, this can be
aviodable for quite some time) but beside that it is a lot of fun.

If they live in a house there are plenty of things in the gzrden to automate
as well.

------
endori97
LiveOverflow captures some of the spirit of hacker culture. 3Blue1Brown to
increase his/her math enthusiasm/knowledge (gotta pass calc3 when you hit uni)

[https://www.youtube.com/c/LiveOverflowCTF/featured](https://www.youtube.com/c/LiveOverflowCTF/featured)

[https://www.youtube.com/c/3blue1brown/featured](https://www.youtube.com/c/3blue1brown/featured)

------
maxdo
Why ? In 15 years there will be no doubts “over production” of cs kids , old
managers probably will still have their job , as young cs kid it’s going to be
a tough times. There are so many new professions for you kid to discover.
Every year bring us professions that didn’t exists a year ago, lots of them
are well paid because they are new

~~~
ericd
The salary might be lower, but there are SO many things that can be automated,
I really don't think we're in danger of running out of economically
interesting things for CS grads to do.

If anything, I think it's going to become more like basic literacy, required
to do many economically useful things.

------
dba7dba
This reminds me of a post here before. I read someone here post how he got his
initially unwilling teen son to learn how to code.

The dad tried to get him into learning to code but the son was uninterested

However after the son worked at a sandwich shop for 6 months earning minimum
wage, the son came to dad asking for help with learning how to code.

I thought that was hilarious.

------
mensetmanusman
I became interested when I realized you could mod weapons on quake 2 by
editing source code.

What games are they playing?

------
dutchmartin
Any simple 2D game maker or software library with YouTube tutorials should get
a teenager started. As a teenager, I found it cool to program something and
then enjoy the fruits of my work by playing my own game. HTML canvas and
JavaScript is enough to get started for example.

------
evo_9
Get them hooked on reading scifi. That's what got me interested. Before a kid
is going to want to tackle actual coding/learning and all that they need to be
hooked on the idea of it.

Approaching it direct on rarely works with teens.

Maybe start with William Gibson, cyberpunk is on the rise.

------
snovv_crash
Robocode - it's what kick-started my software career.

[https://robocode.sourceforge.io/](https://robocode.sourceforge.io/)

[https://robowiki.net](https://robowiki.net)

------
danellis
Go through part one of the nand2tetris course on Coursera to learn what goes
on inside a CPU, then build a physical computer using an old CPU like the 6502
or Z80. You'll find lots of inspiration for that on YouTube.

------
TeaDrunk
Is the teenager interested in becoming a computer engineer, first and
foremost?

~~~
elwell
From description of post: "A teenager I am close with would like to become a
computer engineer."

------
Cactus2018
For starting from zero - there is a fun multiplatform game "LightBot" that
introduces programming functions

[https://www.lightbot.com/](https://www.lightbot.com/)

------
fxtentacle
How to build your own flight simulator in C++

was the book that hooked me on programming when I was young. Plus I needed to
learn physics and numerics to make things work, which turned out amazingly
helpful in high school.

------
sgwizdak
I recommend checking out [https://www.adafruit.com](https://www.adafruit.com)
\-- good blogs, kits, and learning resources in the hardware realm.

------
maxmunzel
In Germany, [https://jugendhackt.org/](https://jugendhackt.org/) is a great
place to get inspiration, meet like-minded peers and learn.

------
motohagiography
In a word, synthesizers.
[https://teenage.engineering/products/po](https://teenage.engineering/products/po)

------
anotheryou
Maybe freenode IRC? (or discord I guess)

Just the one rule to make your question as easy to answer as possible. Best
with minimal example reproducing your problem if it's that concrete.

------
rrauenza
They should definitely try the Nand2tetris online course!

------
disown
> A teenager I am close with

What? Close how?

> would like to become a computer engineer.

Get good grades and go to college?

These "ASK HN" posts are starting to feel so artificial and forced.

------
brudgers
Conversation. Take their ambition seriously enough to give them your time
instead of buying them something.

------
fma
How about getting them familiar with raspberrypi? It's relative cheap and lots
of resources around it.

------
mesaframe
The Elements of Computing Systems, also known as “Nand2Tetris”

It's a great resource for anyone starting out.

------
neonihil
Show her/him the average salary levels. ;)

Jokes apart: the python tutorials are a good place to begin.

------
j45
JavaScriptin30days.com

If building little games and tools is fun, there might be a future,

------
sesuximo
I’d offer to help fund/mentor on projects and see where that goes

------
b20000
questions to ask: 1) why do you want to become a computer engineer 2) what
does a computer engineer do 3) what do you hope to achieve by becoming a
computer engineer

------
jimmoores
Great book: computer architecture a quantitative approach

------
sbuccini
Programming is so pervasive, I would try to meet them where they are at.

Do they like Minecraft? Help them run and manage their own server. Do they
like design? Buy them a domain and then let them build their own website?

------
KorfmannArno
"Dive Into Deep Learning" \- d2l.ai

~~~
KorfmannArno
"The Elements of Computing Systems: Building a Modern Computer from First
Principles"

And some course or book that teaches the physics of semiconductors.

Also some basic introduction to quantum computing.

~~~
KorfmannArno
An introduction or refresher on the fundamentals of electric energy.

~~~
KorfmannArno
[https://www.edx.org/xseries/harvardx-fundamentals-of-
neurosc...](https://www.edx.org/xseries/harvardx-fundamentals-of-neuroscience)

------
elwell
Most programmers I know, myself included, got started by making simple games
for fun. If you don't know which language to choose, just start with
JavaScript.

------
arnklint
What’s in your teenager’s interest?

------
codegladiator
Play factorio

------
alasano
You have to go with a three pronged attack.

Subliminal, liminal and superliminal.

------
tmaly
Set them up with Scratch and have them make some video games.

~~~
tmaly
I should have added more detail here.

With Scratch you can create animations/video games and get instant feedback.
It runs right out of the browser, so there are no setup issues to trip over.

    
    
      There are a good set of extensions to do text to voice, music, etc.
    
      There are hardware interfaces like makeymakey and microbit.  
    

I was able to re-created my senior robotics project in 2 hours using the
cutebot that is driven by the microbit.

------
nandreev
[https://www.levels.fyi/](https://www.levels.fyi/)

