Thursday, May 31, 2012

joining Preparation in NASA graduating in MS Computer Science Engineering


Hi Every Body !!
I am planning to do a masters in computer science from a US university. I am not sure which field I should specialize in. I have my interests, but job prospects are also important to consider, which I have little idea of. I am listing the specializations I know of, and the corresponding kind of jobs. Please add/correct these :) :
  1. Software Engineering
Typical software company like IBM, SAP, Adobe, Microsoft, etc.
  1. Databases
Companies like Oracle?
  1. Networking/ Wireless networking
companies like CISCO...?
  1. Artificial Intelligence / Robotics
No idea about companies. The only thing that comes to my mind is Honda's ASIMO and Research.
  1. Neural Networks
No idea about companies. Only good if you want to do research?
  1. Software Testing
Typical software companies like IBM, SAP, Adobe, Microsoft, etc.
  1. Computer Architecture
Intel, AMD, Research ??
  1. Operating Systems
Microsoft, research ?
  1. Bioinformatics
Pharma companies?
  1. Game development/ graphics
EA, Blizzard, Ubisoft, Bioware, etc.
  1. Distributed systems / Parallel computing
No idea.
I have two more questions:
  1. How much does specialization matter? For example, say if I major in bioinformatics (and lets assume that later I change my mind and want to be in a typical software company like microsoft), then how much will that get in my way of getting a job at a regular company, like Microsoft?
  2. Upon preliminary readings on internet, I somewhat like bioinformatics, game development, Distributed systems / Parallel computing. Could you elaborate specifically on these on what kind of jobs there are, working conditions, payscale, job security, and if possible prospects of findind a job in US and back in India?
Thank you Every body in advance !!


Publish Your Research Article In International Journal:IOSR JOURNALS  
 #Artificial Intelligence / Robotics:
The Asimo doesn't have much A.I. at all, most of its motions are scripted and/or remote controlled, and most of the intelligence in it (and there is a lot of it) is in the hardware design (mechanical and electronics) and in control software.
For the moment, there is much more job prospects in research (with AI, you could call it "intelligent robotics"). There are many companies that develop hardware and software for robotics directed towards university research. And then there is defense research (DARPA and the like in other countries). Currently, most private companies in this field are young start-ups, but there are a few bigger ones like Boston Dynamics (Big Dog, and Rumba), Quanser (mostly research-grade software tools), and Willow Garage (PR-2, X-8, and the ROS platform). But most of these companies look for people that have experience in AI and robotics, and that have an engineering background in addition to programming skills (because it takes more engineering knowledge than it takes programming skills for most of the tasks in robotics software development), and this pretty much excludes anyone without quite a bit of university research experience (i.e., a PhD).
Moving away from artificial intelligence and more into robotics, then there are tons of big companies. The industrial robotics sector with multi-nationals like ABB, Kuka, FANUC, Bosch, General Electric, General Motors, Adept Tech., and just about every car company too, which all need custom software tools for their industrial robots and often invest quite a bit in R&D projects involving new types of robots and stuff (car manufacturing is almost entirely robotic these days, about 70% to 90% robotics, the rest is human operated, and many car companies keep the human jobs only to be able to say that they employ people, because they could easily to up to 95-98% of their operations with robots only). Artificial intelligence in industrial robotics settings is growing, and will be pretty big pretty soon. But, by and large, these companies want engineers with strong skills in software development.
To a large extent, in robotics, the job market for software guys is in the software tools for engineers designing, building, testing, operating and programming robots. Doing this requires a large amount of specialized software, and most engineers in this field (like me), acquired most of their programming skills by writing custom software tools for their own projects. So, there are a lot of companies involved in trying to create software like that. Engineers used to only need crude CAD software (like AutoCAD) and do the rest in pen and paper. Now, to develop a robot from scratch (professionally, not in your garage) you will need several hundreds of thousands of dollars worth of specialized commercial software (e.g., FEA/FEM, CAD, CAM, Multi-body Dynamics Software, Control software, multi-field simulation software, circuit layout design tools, etc., etc.). There are big companies and big money behind these software tools.
Emerging fields are really all about putting more intelligence into robotic systems. For the most part, much of the mechanical and electronics designs are very mature now, but there are very few applications for intelligence in robotics. Most robots out there move just by following a pre-programmed script or by some form of tele-presence of a human operator. And just about every robotics project in universities is focusing on the artificial intelligence aspects (not so much in Japan, which do mostly hardware designs). This is an emerging market, where Boston Dynamics is pretty much the leading figure, but there are more to come for sure.

#Neural Networks:
Well, neural networks is way too narrow. It is like saying "I'm an expert in Newton-Raphson root-finding." You can't specialize in one algorithm with limited applications. ANNs are just one small, and rather insignificant, part of the area of machine learning. And that is a big area for computer science and software engineering. This field might lead to work in image processing with applications ranging from fault-detection by visual inspection (with high-speed cameras) for products in an assembly line, to robot autonomy applications like localisation and mapping in a world using cameras. Speech recognition, natural language comprehension and synthesis are the kinds of software with very wide applications. Then there are tons of fields in which machine learning techniques can be used as part of a bigger setting. Like predictive models for data-mining in databases. Very hard simulation problems like climatic models and economic models (and you can imagine the salaries there) require very advanced algorithms, including a lot of machine learning ones. Not to mention the classified applications, like cryptography and surveillance systems.
The problem in this area is not so much the number of applications or job prospects, but the level of competence needed to deal with these complex and highly mathematical methods.

 #Game development/ graphics:
Don't forget 3D animated movies and CGI, or the software tools used by these industries, which require very similar skills to game-dev and graphics.

#Distributed systems / Parallel computing:
You'd be surprised how many things run on super-computers or computer clusters. Anything that requires any kind of aerodynamics or hydrodynamics simulations will require parallel computing, and many of the companies that need this have their own software tools, and need developers to work on them. Think Boeing, Airbus, Bombardier, Embraer, Lockheed Martin, just about every car company out there, and then all the high-end scientific applications, like CERN or climate modeling, etc.. And that's just the people who have been using parallel and distributed computing for decades now. I can't imagine all the needs for this that will emerge in the near future, because we have pretty much reached the maximum CPU power, the future is in parallel computing.

 

No comments:

Post a Comment