1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Best path for a switch to Computer Science?

  1. Mar 20, 2012 #1
    I have a BS in Mechanical Engineering and I've been out of school for almost 5 years. Several months back I started learning Java just for kicks, but I've reached a point where I'm pursuing more and more knowledge of CS concepts on my own, and the interested level is far exceeding that of MechE.

    I'm heavily considering a slight shift in career paths towards CS, but I'm not sure how to go about it. At this point, the choices seem to be either get formal education on the prereq material and then go for the MS, or do some rigorous self study, get involved in an OS project, and just find a new job doing what I want to do.

    The problem with the latter is that, from what I've read, it sounds like that may work for programming/web development jobs, but I'm not sure I want to do that forever. I don't want to cut myself short on education and then miss out on opportunities for interesting positions that require formal education. I also like the structure of formal education, and that assignments push you to solve certain problems you may tend to brush over in self study.

    Right now I'm looking at the computer programming post bach certificate from NC State, which says it is adequate prep for a career change in itself, or for prereq coursework for grad admission. I've checked many program course outlines, and this seems to cover all the nuts and bolts courses such as data structures & algorithms, architecture, operating systems, discrete math, etc.

    So my question is two fold: 1) which path (formal/informal) is recommended based on the experience of those who've gone before me and 2) assuming the formal path, do you know if NC State has a good CS program that will help me get into a grad program if I take their certificate coursework.

    Link to cert program if you're interested: http://engineeringonline.ncsu.edu/PS/CPC.html


    Edit: I'm focusing on NC State at the moment because it's fairly affordable (300-400/credit hr) and it's a distance program (I'm in WNY)
    Last edited: Mar 20, 2012
  2. jcsd
  3. Mar 20, 2012 #2


    User Avatar
    Science Advisor

    Hey respect_the_S and welcome to the forums.

    The first thing I need to ask is if you are interesting in Computer Science or computer programming?

    If you are interested in computer science, then it would make sense to go back to university but if you are interested in computer programming IMO it would not.

    The thing about computer programming is that you learn through some kind of project based work. Projects can have mini-projects and subtasks and all of that but the idea doesn't change.

    What you are better off doing is picking a domain and then just for a lack of a better word 'diving in' getting used to the system, the paradigms used, the important design aspects that correspond to understand the link between the domain and the design of the code all in conjunction with all of the programming principles that are not domain specific.

    You have to have both domain and non-domain skills but if you only have one then you are going to be screwed. Also having non-domain knowledge means that in all likelihood you will have to have some domain-knowledge as well as there is a bit of intertwining going on.

    So what do you define as domain knowledge/skills? Basically I would define it as anything that does not contribute to an understanding of the domain with respect to any of the code or other relevant documentation or materials pertaining to any part of the system and its attributes.

    Non-domain knowledge will include all the information about a particular language, standard algorithms, standard data structures, standard designs, classes, templates, yada yada that are independent of the domain.

    But the thing is, you need to know about the domain which means that you will need a reference point and that reference point is a complex, mature repository that has been designed or evolved to meet the needs of the users of the repository.

    If you have already done enough coding to know what's going, then just start some projects in your domain and go from there. If you are not confident enough that you can do this and figure that it might be a good idea to get some training, then I would recommend instead of going to university see if you can get a few books and just start writing code.

    The reason I say the above is that you already have all the tools you need and the main one is a computer and access to the internet. The internet can provide all the developer tools you need like an IDE for C++ or the Java SDK or the Python dev environment or whatever.

    It also provides (the internet) all the resources for getting information, asking questions and doing all that kind of thing.

    On top of this it also provides a lot of open source repositories for a variety of different domains which will give you some of the domain knowledge required to slowly master that domain.

    So yeah IMO, for computer programming skip uni and just start on projects and build up your expertise but for something like Comp Sci if its not just glorified programming but the real pure stuff then a university might be the best option.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook