
Ask HN: Attending CMU for MS Comp Eng. Gaps to fill before applying to top 10s? - joiemoie
Hello everyone. I&#x27;ll be attending CMU at their Silicon Valley grad campus starting this August. Although I&#x27;m very excited to start preparing for the valley job search, I would like some advice on what gaps I should fill during my Master&#x27;s degree, either through coursework or in my own time.
Some background: I completed a Computer Engineering degree at BU. It was heavily focused on C programming with architecture topics and microprocessor design, and all the other fundamentals such as Discrete Math and algorithms. Since I was able to complete my degree in 2 years, I have many gaps that I would like to fill through my graduate career. I will likely lean towards software since I lack the more technical knowledge of things like circuit design and pcb diagrams.<p>My knowledge from most familiar to least: C programming - Architecture Simulation such as cache design, branch prediction, INTEL PIN, assembly decompilation, recreated malloc<p>C++ algorithm design, search algorithms, some palindrome finding and optimization<p>Some work in C#, Java, and Python designing Unity games, other user oriented projects. However, I&#x27;m still lacking in this large scale system type projects and still not experienced with good hierarchy of parent and child classes, etc. Pretty much not as well touched up on the &quot;object&quot; side of object oriented programming.<p>Pretty much no real work experience, no cybersecurity knowledge, no machine learning knowledge, no database programming, no network type programming.<p>My current course plans for next sem are: Computer Systems (C programming, Assembly, architecture type programming); Project Based course (mixture of hardware and software); Internet Security course; Energy Aware computing (gives more depth of CPU components and how to optimize them for energy);<p>And my possibly course load for next semester: Fundamentals of software engineering (project based, industry type projects); Machine learning; Wireless networks; TBD
======
ThrowawayR2
Concur with the other poster here: you are going about the process backwards.
You need to figure out what specialty you're aiming for and shape your
coursework toward that. You say you have a BS in Comp. Eng., which would point
towards a career doing hardware oriented things like embedded systems, device
driver / OS development, or IoT, yet you list a bunch of end-user oriented
software as your project work. If you're lacking in " _the more technical
knowledge of things like circuit design and pcb diagrams_ ", the first thing
people are going to wonder is "Well, why didn't you go back and fill in those
gaps? What's your actual passion?"

Bear in mind also that your Comp. Eng. background puts you in a odd place in
the job market. Look carefully at the HN "Who's hiring?" posts for this month
and preceding months. 90% of them are for web stuff/CRUD apps and most of the
rest are for mobile or desktop apps. That's not to say you can't get hired for
those positions but pretty much _none_ of them will make use of your
specialized education. If you want to avoid that route (and once you start
going down it, it gets hard to break out), then start figuring out what you
want to do professionally for the rest of your life, start looking at job
postings for engineers at companies that do said things, and start shaping
your coursework to fit those job postings. And since, as you mention, you
don't have any real work experience, start thinking about getting some
internships under your belt immediately.

~~~
joiemoie
I've realized that most of the job listings aren't for my speciality, which is
why I'm pushing more towards what the job listings are asking for, rather than
things like PCB design and circuit design. I don't want to go into that rabbit
hole, as you said, of specializing in something I won't use much.

My real question is then, what specifically should I learn in order to make
myself more well suited to taking the type of offers that current job listings
are looking for?

As far as internships go, I'm completing my masters in one year and would only
have time to pursue an internship in possibly winter and summer break of next
year at best.

~~~
ThrowawayR2
> _My real question is then, what specifically should I learn in order to make
> myself more well suited to taking the type of offers that current job
> listings are looking for?_

If you're talking about web jobs, I'll point out that you have a rare
specialization that you've acquired at great difficulty and expense that puts
you head and shoulders above the average developer. Why throw that away before
even trying to use it? There are jobs for Comp. E.'s out there in the areas I
listed in my original post, though they take effort to find. Don't settle for
mediocrity.

If you're determined to do it anyway, a solid understanding of software
engineering, distributed systems, database theory, and software security will
serve you well. Languages to pick up are Javascript, either Java or C#, and
one of the dialects of SQL.

> _As far as internships go, I 'm completing my masters in one year and would
> only have time to pursue an internship in possibly winter and summer break
> of next year at best._

Foregoing internships is unwise; those do well at an internship will often be
directly be offered full time employment after graduation, if open headcount
is available. Even if not, completing internships and being able to describe
the work accomplished is a strong positive indicator to hiring managers.

------
Reactionary_
The purpose of a Master's is to develop expertise in a particular subfield of
CS. Your course plan doesn't seem to be focused in any subfield. You'll get
more out of your time in the program, and will be able to more easily identify
what knowledge gaps to fill, once you decide what you will specialize in.

