4 ms·
I've completed the majority of the OMCS program. My specialization is 'Computing Systems'. I have a 4.0 GPA so far. I did not do CS as an undergraduate, but I'v
by _wldu 9y ago
I've completed the majority of the OMCS program. My specialization is 'Computing Systems'. I have a 4.0 GPA so far. I did not do CS as an undergraduate, but I've been programming since I was very young.
Here are my thoughts on what people need to succeed as an OMCS student:
* Be able to program in C, C++, Python and Java at an intermediate level. And, know one of these very well.
* Be able to use a debugger (GDB) and valgrind.
* Be able to administer and configure Linux systems.
* Understand data structures and examples (std::set in C++ is RB Tree backed, std::unordered_set is hash table backed)
* Understand basic networking concepts and key technologies (TCP, UDP, IP, switching, routing, etc.).
* Understand the x86 computer in general.
Finally, I think some of the classes are meant to weed students out. People may think that 'Intro to Graduate Operating Systems' would be an easy first course for CS beginners. It's not (unless they've changed it). It was primarily about writing multi-threaded clients, servers, caches and proxies in C, using shared memory (IPC, POSIX Shared Memory) and various other C/thread projects until you become a half-way decent C programmer. They deduct points for working code that has any errors (memory leaks, etc.) too. So don't be surprised if a seemingly easy OMCS course turns into... I had no idea. I'm going to have to drop this course. I saw that happen to several students.
I've done well so far, but I have the programming/logic background to do the work. If you don't, brush up on the skills listed above before enrolling.
Edit: The class projects are a lot of work. Be prepared to give-up your weekends and evenings. Even if you know the material and the language, it's a job to get through some of the projects.