Hi,
I have a M.Sc. degree in physics and am working on enhancing my computer and programming skills, and I need your help deciding my next steps.
As an undergraduate I took one introduction to computer science course (we used Java) and dozen of scientific computing courses (computational physics, numerical analysis, computational fluid dynamics e.t.c.) where I learned the basics of languages such as Fortran, C++, tcl, matlab and python. I also have few years experience on linux and unix.
In the last one year I have done plenty of self studying, and have finished the following online courses (where I have watched every lecture, read all the course material and done every assignment):
Programming Abstractions CS106, Stanford
Programming Paradigms CS107, Stanford
Introduction to Algorithms, MIT
At my local University I did a second year computer science course on C++ programming where we studied the whole Lippmans C++ primer .
My focus in more on studying general computer science rather than learning specific languages or API's (which get obsolete in few years anyways). Right now I have few options on what to study next
- Compilers, using the dragon book (do you know about any good lectures on this subject)
- Object oriented design, UML and software engineering (anyone know about good lectures?)
- Machine structures
- Parallel programming ( Programming Massively Parallel Processors Stanford or multicore-programming-primer MIT)
- Operating Systems and System Programming (http://academicearth.org/courses/operating-systems-and-system-programming)
- Computer graphics and user interfaces
What would in you opinion be the most logical next step considering my background? Is there something else you can think of?
I am most likely to pursue a career in optimization applications, scientific modeling or game programming (at least as a hobby).