Odds are, you’ve been directed to this page by me OR you’re one of my parents’ friends’ kids.
To be honest, my opinion shouldn’t matter a whole lot, since I’m still an intermediate in the field. This guide will only lead you to where I currently am. No further.
You need to be very self-directed if you want to follow just these directions and succeed; it’s possible to go through all these steps and attain adequate EECS skills as a middle-to-high-schooler in just a year or so.
If you just want the resources, scroll past these first few paragraphs.
What is EECS?
EECS stands for Electrical Engineering and Computer Science. Top universities like to group the two together because they’re two very interconnected fields, and to be a good computer scientist, you need a lot of crucial electrical engineering skills and vice versa.
At the base of the modern “programming”/”IT” curriculum in elementary and middle schools is the idea of programmed logic, which could be represented in a variety of ways: through electrical circuits and logic gates, through digital programming of all sorts, and through lambda calculus.
From there, EECS branches in every direction, from semiconductors to RF and analog signaling to applied robotics to AI. Just take a look at this course map from the University of Michigan:
I would recommend any absolute beginner who wants to get into EECS to start by getting good at using a computer and then getting well-versed in computational logic with Scratch or Tynker. But I also assume anyone who has a vocabulary large enough to comprehend these sentences these days has already gone through that stage.
Learning a programming language
The ideal first step beyond block-based programming is a move to a similar, dynamic programming language; given that you have the fundamentals down (variables, data types, loops(“for”), conditionals(“if/else”)) it shouldn’t take you more than 12 hours.
While I’d personally not recommend an in-depth IDE for starting programmers (to really firmly integrate the idea of syntax), do whatever you want. PyCharm is good for Python, and Eclipse is good for JS. I’d personally just recommend Kate or Sublime Text with command line.
However, do note that knowing a programming language does not mean you know how to program. To do so, you’ll need to familiarize yourself with libraries, understand data structure and their implementations, and understand computer architecture itself. And at the root of all of that? Learning a bit of EE.
Learning EE principles
Electrical engineering is the less-interesting, dull, and much more theoretical part of EECS, and isn’t entirely necessary. However, it’s good to have and if you are able to comprehend middle-school physics, you can understand high school circuits.
Khan Academy is your savior. (6-8 hours)
Alternatively, don’t waste time and watch this. (10 mins)
Once you’ve gotten even a basic understanding of EE principles, move on to Arduino. Arduino is a framework for easily programming electrical circuits. I’m better off leaving the explanation to SparkFun. This set of experiments should take you 20-25 hours, and is a really solid set of basic knowledge to understand how electricity can be manipulated to perform human-understandable functions, and how its power can be harnessed by code. It will teach you a second statically-typed, lower-level programming language (Arduino-C++)
Note: The kit does cost $109.99 USD. But, I’d say it’s worth it. (or just find one on amazon ffs)
Congratulations! You now know at least 2 programming languages, one low-level and functional, the other high-level and object-oriented. Here are some possible next steps:
(Google them, I don’t have time to put 150,000 links here)
- Data Structure and Algorithms
- Web Development
- Software Engineering
- Project Engineering
- Embedded/Systems Development
- Game Development (Unity/Unreal)
- Computer Architecture & Engineering
- Electronics Design
- Computer Vision
- Artificial Intelligence
- Learn Java (if you want to take AP CS A)
- Learn Go (the “C of the 21st century”)
- Learn Rust
However, this isn’t the most important part. The important thing is that you get more practice, and learn to program well. Perhaps you see a piece of software that’s needed in the world: create a repository on GitHub, and try and make it happen. Keep working on projects, and compare them to others’ projects. You’ll know when you’ve actually reached the level of a junior programmer.
After that, just get a job. 🙂
Full List of Resources
I’m too lazy to add more lmao, please remind me to if you can [
@lutet#0055 on Discord]