Ask HN: Attending CMU for MS Comp Eng. Gaps to fill before applying to top 10s?
My knowledge from most familiar to least: C programming - Architecture Simulation such as cache design, branch prediction, INTEL PIN, assembly decompilation, recreated malloc
C++ algorithm design, search algorithms, some palindrome finding and optimization
Some work in C#, Java, and Python designing Unity games, other user oriented projects. However, I'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 "object" side of object oriented programming.
Pretty much no real work experience, no cybersecurity knowledge, no machine learning knowledge, no database programming, no network type programming.
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);
And my possibly course load for next semester: Fundamentals of software engineering (project based, industry type projects); Machine learning; Wireless networks; TBD
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.
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.
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.