Wow I used to follow your posts back in middle school, but I never anticipated your return! Welcome back and congratulations
I am now a graduated senior, enrolled in Georgia Tech for Computer Science. With all this free time that I have, I’ve been planning my next four years. Given based on my experience in vex, I have become really interested in self driving cars, motion planning and automation. I was wondering if either a masters or PhD are useful for this field.
On a slightly unrelated note, do you have any favorite online courses or online course providers?
Thanks so much @AidenPyle for diving into the CubeSat. What a cool project - would have died if my college had something like that going on.
Since everyone seems to want to pile on my CS claim - that is that VEX doesn’t really teach computer science fundamentals - I guess I will continue to make my argument even though I consider this off-topic for the discussion I’m trying to have here.
First, yes I knew a lot coming in and did not benefit from a lot of the super fundamentals that VEX offers people who are just starting. My brain optimizes out stuff I don’t need to know extremely efficiently, so having come in knowing a lot means my brain ignored a ton of the knowledge pool that a lot of other people probably got exposed to for the first time. To me, it didn’t exist. On the tail end of that, I did VEX when it was a baby. When worlds was 40-ish teams. Guys the hardware back then sucked. You had to use EasyC or RobotC - neither were good back then, and the logic they offered barely went beyond if’s and else’s. So back then the breath of what could be done was really limited. When the Cortex came out and after PROS and others really unlocked it’s potential - only then did things even start to get interesting.
I don’t agree with Tabor about program flow. All the magic in CS comes from algorithms and data structures. All the fancy work in robotics, mapping, SLAM, motion planning, computer vision - all goes FAR beyond making the instruction pointer go where you want it to go. Furthermore, understanding why the IP is where it is isn’t something VEX teaches either.
A first year CS student in university will be espoused to these things, probably in their first real CS course. You know, the 101 class. So if VEX does not teach first semester CS topics, I believe my claim is legit. A good way to prove me wrong would be to find the place (like in a curriculum) where VEX teaches linked lists or trees or binary search. If that’s in scope now - then my experience is outdated and I will capitulate by modifying my claim to read “when I did VEX, it did not teach fundamental CS topics”.
Back on topic, please…
Thanks, I never wanted to leave and was never formally told I could be “back” We’ll see how long I last this time.
You’re going to go far kid.
Yes. Just do them at a very well ranked school with name recognition. CMU, MIT, Stanford, etc. With a PhD in CS or SE you can pretty much enter Google as a manager. You’ll be looking to join Uber, Waymo, or Apple’s secret self-driving car program which I have interviewed for (sadly failed despite a lot of interest from them). Funnily my girlfriend has been hit up by the same recruiter for that role and just ignored it.
You’ll want to know a lot about computer vision, ML, sensor fusion and all the specific self-driving stuff as well as having a very strong background in modern C++ and embedded systems. It’s the exact domain I want to get into. I interviewed with Waymo and did well, was told to come back with 1-2 more years of embedded experience. Now that I’m at Goog, internal transfers are a lot easier so who knows but right now I’m on a team I really like and learning all the datacenter stuff is fun, lots of super talented guys in PCB design and FPGA/IC stuff that I need to mind-meld with before I contemplate jumping ship.
In general though too many people are thinking of self-driving. Not enough jobs, so I would urge you to keep that as a stretch goal. Hope that makes sense.
I know this ties into the job application process to a degree at least, but I feel you’re doing a disservice to the thousands of other colleges that aren’t in the top percentile for academics. The job market for STEM jobs is immeasurable and continues to grow exponentially. To say that you need to attend a high tier school and pile on loads of debt is simply bad advice. These schools aren’t the only ones with notable alumni either. [In my opinion] It isn’t good advice to give to the general population that you need to attend a highly accredited program to succeed at anything. That simply isn’t true. The job market is far too big in this field.
That being said, I’m curious to know how many of your co-workers have attended high tier schools such as MIT or any of the other ones you mentioned. Obviously your advice has logic to it, but I’m not sure it makes sense for most people. I guess it also depends on your particular goals, you said this:
So, if this is your goal off the get-go, then yes, by all means go to MIT (just as an example). Also, easier said than done.
Edit: I see you were particularly responding to @_Colossus who happens to attend one of those very competitive, high ranking schools. Regardless, what I said still holds true. I’ve heard countless stories of Ivy League grads working alongside state school grads. The Ivy league alumni always say that the worth of those schools came from the experience of the school itself, not necessarily the outcome afterward (though this can be subjective).
I don’t disagree with what you’re saying. I… am very, well at least I try to be cautious when giving blanket advice - mostly avoiding it but, I have benefited immensely from going to CMU for my MS. It has had an immeasurable impact on my life. Georgia Tech is a fantastic school, that person can get into one of the best grad schools if they get good grades and should.
In general everyone should shoot for those targets too. As for cost, yes I’m $100,000 in debt over going to CMU - but I make north of $200,000 now and will have that balance paid off in less than three years from graduating. So cost is not an issue for anyone with a CS degree in one hand and an acceptance letter to an elite grad school in another.
There are ways to do it from a state school, but I seriously doubt the ROI for graduate school from those schools is as good. I saw people get masters from CU Denver and get job offers no better than the people who stopped with an undergrad and picked up two years experience in the same time.
I should also mention that this advice is specifically for CS. CS really operates differently than other degrees. And the ROI is only really there if the goal is to move to the Bay Area and work for the FANG companies.
So yes, I agree - I need to limit the scope of that claim a bit.
No, it’s icing on the cake. But recruiters and managers don’t always see it that way - lots of them will see that degree and instantly move you to an interview.
It’s better to get directly into a great school. If you can enter CMU as an undergrad, then you don’t have to work your way up to CMU like I did and will likely have the same results from just an undergrad.
But most of us can’t do that, so we get grad degrees…
Yeah the CubeSat is easily the most interesting thing to pop out of this thread. We need another thread dedicated to it.
I have been reading through this thread and it is really great. Thank you for starting this!
I am curious, what are some things that you learned that you really found useful knowing for college and your job? Are there any other resources you would recommend to learn about Computer Science while still in high school?
Sorry I’ve been really busy these last few days. Honestly behind on a lot of things.
For a high schooler? Khan Academy, take classes, do robotics, watch programming centric YouTubers, read books. It’s really not that hard, once you get interested in the space you’ll gravitate in the right direction. There’s no standard entry point either. People start with different languages for different reasons. I wanted to make games when I started, now I don’t. So don’t expect the goal to be the same over time. If you want to start with sort of robotics and embedded stuff in mind, buy and Arduino and start figuring it out. If you want to make a website, w3schools is still relevant I think (how web is done has changed so much it makes my head spin, and Google does it so differently it’s crazy).
Best learning is by doing, if you want to deliberately find a project that teaches you some coding, sounds great. Go build something and learn stuff. And if you’re really good, take pictures and come back here and tell us all what you did and what you learned.
Are ypu talking about AMP? Because that is an arbitrary standard created by Google to control the internet.
Why are browsers evolving to take up as much resources as possible on whatever computer? In 2005 my family had a computer with 1 gigabyte of RAM that ran IE fine but I doubt could have any hope of running a modern browser.
I am limited in what I both know and can say, but in general Google is mixing a lot of tools to get you a ballistically fast connection to their services. Some of the picture is by having a robust content delivery network, some of it is with clever server-side work that gives you what you need when you need it without having to send you extra stuff, even if it’s say needed lower down the page, that will be brought in later as needed, some of the picture is by caching a lot of resources locally on your machine. Some of these tricks, in fact most are widely used across the internet, others are more proprietary. I have been doing web work since CSS was new and I can say that the amount of complexity that goes into even the most trivial thing on a Google page is mind blowing. I have no idea how anyone gets anything done around here, but when it’s done, it works consistently, it preforms, and it is usually surprisingly well suited for internationalization and accessibility.
Another complexity of this is making it work with the entire Google fleet of servers. Can’t talk about that as this is within my actual domain of work. In general though, one can imagine what operating at our scale entails and the challenges it brings.
It’s a reasonable question. Especially Chrome’s RAM consumption. It has to do with a LOT of things, and again I can’t speak for the Chrome team so I will have to fallback on my knowledge as a “normal” person who happens to have a background in computer science. OK here goes a reasonable guess…
First off, each tab in Chrome is, for security reasons, completely isolated from other tabs. This isolation means those tabs which each might load a particular library into memory that is the same (imagine having 10 YouTube tabs open like I do right now, they each need the same stuff to run), has to have their own copy of that library. I’m talking like a JS library. Each tab has to have their own little virtual address space to play in, so resources like a popular JS library or whatever can’t be shared. Sharing reduces memory usage, but can cause devastating attack vectors to open up should the thing being shared not be perfectly programmed.
People used to talk about JS performance a lot, and often argue about which browser is better in that regard. Nowadays people don’t care, it’s fast enough and that’s fine. It’s more about what features the browser brings and stuff. Besides Chrome won a long time ago so whatever…
As you can see we have gotten better performance over time, but with most things CS related that means that more resources are being consumed to produce that performance and that developers can do more since operations are cheaper in terms of time, so pages are asking for more code to run, code that has to get sandboxed, which leads to more memory used, etc.
Chrome is also likely caching a LOT of assets for you. You likely have gigs of Chrome cache on your computer and Chrome is likely predicting what you need next off disk and loading that early. This makes pages load super fast, it also makes Chome eat lots of wham. So it’s a trade-off. Chrome takes what it can and I know that’s somewhat controversial. Deditated wham is pretty cheap though and I have had 32GB in my system for many many many many years now, no less, no more, and it has served me very well. It’s an easy number to hit, doesn’t break the bank if we’re talking DDR3 (which I am on), and is plenty to have multiple enormous apps open including Chrome and allow everything to run great. Plays games good too.
I will be moving from my 10-core Intel Xeon x79 rig to an AMD Ryzen 7nm chip soon-ish. I recently had to pay $1,000 of a $3,300 medical bill because this cute dumb big guy decided to eat an earplug:
And the options were pay $3,300 or let him die.
And today I hit or got hit by something with my car:
Since my insurance deductible is $1,000 - I’m probably taking a cool $1G L on that one too.
Also had to double pay bay area rent in order to move effectively, and probably spent a bunch on new place stuff, so yeah this last 30 days or so have been exceedingly expensive and a not needed computer upgrade is low on my priority list right now.