With some programming but no formal CS background, to develop fundamental CS knowledge should I get an MS or BS? I have 3 years of experience as a programmer now. I have worked on some drivers in the automotive domain and some medical applications.

Since I do not have a computer science background, I was thinking of going for a full time masters in computer science. I need to develop my algorithm and data structures, compiler theory knowledge.

I have studied algorithms and data structures through the book written by Cormen, and other stuff through books.

I do not have any published papers from my undergraduate degree.

Would it would be better for me to go for a masters or bachelors degree?
So, do you think it makes sense for me to go for higher studies now?


Depends what you are hoping to achieve, of course. However, as you are already working in industry, if your goal is to get better pay or a better programming job, this may not work out the way you hope it would. If the goal is actually to (as you indicate) learn about fundamentals in computer science, going back to university may be the right move. However, note that for these basics, an undergrad may actually be more appropriate. At master level, most programmes would assume that you have a solid working understanding of these concepts from the start.


  What will my chances be of getting into a good university?


What is a "good" university for you, and where? There is also the problem that you indicate that your undergrad was not in computer science - this will probably hamper your chances of acceptance to a great computer science programme quite a bit.

Somewhat related: I feel that you are also overestimating the amount of industry experience you have accrued. Frankly, after 3 years, most people would not call you an "experienced programmer". So it is unlikely that your work experience will be sufficient to offset your missing undergraduate degree.