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's endeavor?
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's endeavor?
64 comments
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.
I would always read things but documentations hard to relate to when you are building stuff you have no interest in or it just covers the blueprints and no path to the building.
A lot of languages have improved in this regard thankfully but back then it felt a little lost for me.
So I gotta agree. Finding online friends with shared interest is best because if you find the right people they wont make you feel ashamed of what you dont know just glad that they help you through it regardless.
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.
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=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...
Princeton has a similar computer architecture curriculum on Coursera: https://www.coursera.org/learn/comparch
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.
If the student dislikes math somewhat, I would not recommend EE. If they really dislike math, I would not recommend CompE either ;-)
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.
> 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.
Ben Eater is a guy who's started selling kits for building an 8 bit computer from discrete chips on a breadboard. A whole kit is $300, which is a bit steep for a teenager, but you can buy it and complete it in pieces as you're able.
I also think the suggestion about connecting them with like minded peers is an excellent one. A local FIRST robotics group or a makerspace would be excellent as far as making those connections goes.
https://www.youtube.com/watch?v=HyznrdDSSGM&list=PLowKtXNTBy...
2) If their interest is a bit higher in the stack (like robotics e.g.), and they don't mind getting in the weeds and asking for help in the community, I would target learning with a raspberry pi system. My preferred target is Nerves; it's a bit more bare-bones, and there aren't drivers for everything, but the community is fantastic (the elixir slack / nerves is the place to be), and it's easy to get to a point where you are dropped into an IDE and you can just code.
If I were a teenager now then a FPGA development board with plenty of LEDs and ports could be good.
[1] https://en.wikipedia.org/wiki/Ladybird_Books
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/) 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....
[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. (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) 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.
Very good book indeed.
(And take away their phone)
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.
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.
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.
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.
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).
- 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.
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.
I've learned so much from the HN community, Python is a good first language, robotics is hands on, fun, and important going forward
There's no need to make them think it's not worth doing if it's not a career.
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.
EDIT: If you actually meant hardware engineering, then I can recommend this fun introduction to digital logic: http://nandgame.com/
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.
"Ask HN: How to introduce someone to programming concepts during 12-hour drive?" https://news.ycombinator.com/item?id=15454071
"Ask HN: Any detailed explanation of computer science" 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
> 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://westurner.github.io/hnlog/ ... Ctrl-F "interview", "curriculum"
[1] https://play.elevatorsaga.com/
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.
Maybe scripting something to make a headless browser to do useful tasks, or crawling pages.
They're going to have to learn a lot about programming, and some about electronic circuit design as well (eventually).
[1] https://www.youtube.com/watch?v=qZFK5yKQLdU&list=PLL6dgai5Nn...
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.
https://www.youtube.com/c/LiveOverflowCTF/featured
https://www.youtube.com/c/3blue1brown/featured
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.
If anything, I think it's going to become more like basic literacy, required to do many economically useful things.
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.
What games are they playing?
Approaching it direct on rarely works with teens.
Maybe start with William Gibson, cyberpunk is on the rise.
https://robocode.sourceforge.io/
https://robowiki.net
https://www.lightbot.com/
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.
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.
It's a great resource for anyone starting out.
Jokes apart: the python tutorials are a good place to begin.
If building little games and tools is fun, there might be a future,
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?
And some course or book that teaches the physics of semiconductors.
Also some basic introduction to quantum computing.
Subliminal, liminal and superliminal.
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.
I was able to re-created my senior robotics project in 2 hours using the cutebot that is driven by the microbit.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.