How should I design my coursework in computer vision/ machine learning/ robotics for my Masters in EE?
-
I might go on to pursue this area for my Masters in Electrical Engineering (EE) from a decent university in USA. I need to choose about 10 courses. Core Courses that I'll probably take up are - Random Processes Digital Imaging Computer Vision (CV) Pattern Recognition Neural Networks I could add coursework in Robotics (2-3 courses). There's also computational geometry (2 courses), useful for CV and robotics. I could also diverge to image/signal processing (1-2 courses), or take up a biology related course. I'm open to other suggestions too. I can take up to 3 courses from the CS department. That could include machine learning/AI courses I can take, or basic CS database or algorithm design courses to brush up my knowledge, since right now, my CS knowledge is weak (though I could do that from Coursera too). I could also take up courses from statistics (data science area). In addition, if required, I could do a minor in CS/Math/Statistics. I guess possible fields I could go into are machine vision/automation, data scientist (which seems very appealing), medical imaging etc. It appears, however, that the best opportunities are CS related. I'm well aware of the course content of the fields I mentioned, and I find all of these equally interesting. What I'm looking for is a coursework that helps me find good job opportunities directly after my Masters (non-military, non-PhD applications for a EE undergraduate). With that in mind, how should I design my coursework and what area should I be aiming to work in?
-
Answer:
Check with the department administrators if you can mix and match classes from 2-3 "Specialty Areas." My guess is that you probably can. Explain why. IF you can't justify your reasons, use this answer as a guide. Based on information from a private conversation, use data scientist positions as one of your backup plans, if not your primary aim. From my https://eecs_ece-and-cs.quora.com blog, you would notice that there is a lot of computer modeling and programming in electrical and computer engineering (ECE). Specifically, check out You mentioned that programming, or rather software development (including debugging, software testing, and what not), is one of your weaknesses. So, yes, you need to work on that. However, if you take CS classes this Fall (or whenever you begin your graduate program) without knowing how to develop software with a decent amount of efficiency and effectiveness, you will become toast in your graduate CS classes. You need 90% to get an "A," and 80% to get a "B." Poorly functioning or partially functioning software won't make the cut. So, if you are unprepared, you may do badly in the CS classes and hurt your chances (because of the bad G.P.A.) of using your CPT to get internships next summer, or during the academic year after 1-2 semester(s). See https://eecs_ece-and-cs.quora.com/Choosing-a-Graduate-Program-in-VLSI-Design-Related-Areas-Things-to-Consider to look at the desired skill set for software developers (point #2 of the desired skill set of EDA engineers). However, remember that programming is only one of a set of tools that engineers use to solve real-world problems. You would need to learn advanced statistical analysis (e.g., design of experiments and multivariate statistics), stochastic modeling (e.g., that class in random processes), and numerical analysis (e.g., linear algebra, differential equations, and vector calculus) and relevant numerical methods. With your BS EE degree, you should already have the math background that I mentioned. If not, you need to work on them. If you have this skill set, in addition to decent writing and analytical thinking skills, you have the basic skill set for data scientist and other analytics positions. To distinguish yourself from the pack, instead of applying for any analytics (e.g., business analytics, social analytics, and web analytics) or data scientist position, consider domains where you have an expertise, such as health care analytics, sports analytics (e.g., specifically for basketball or even cricket), and the music/film industry. Be unique, and know your preferred domain. My suggestion is to find a domain in EE, and dominate it. E.g., Intel is known for automating its manufacturing process in the mid-/late-2000s; see Intel's Automated Manufacturing Technology (AMT) at http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=822149 and http://dx.doi.org/10.1109/ISSM.2007.4446838. So, you can be a data scientist for Intel's manufacturing process; they use a lot of data mining and machine learning. Also, they use computational geome try and a small amount of computer vision to examine the masks, layout (output from the physical design process), and die micrographs. But, you have to take classes in semiconductor manufacturing, which your privately mentioned university has a decent reputation in. You can couple computer vision and robotics as a two-pronged attack in your graduate education and career, and use machine learning and data mining as tools to help you solve problems. Once you realize that all these algorithms, techniques in mathematical analysis/optimization, and what not are merely tools employed by engineers to solve different problems, then focus on a market that you are passionate to solve problems in. The tools need for all fields are pretty much the same anyway, even if you go into social network analysis (requiring graph theory + nonlinear dynamical systems, which is a traditional approach to modeling social networks). How do you couple computer vision and robotics? Use cyber-physical systems (CPS). Assumption: You have a background in control systems, given that you have a BS EE. Control engineering is used in robotics and CPS (or embedded systems, if you like). Some of these seem like intermediate classes that upperclassmen (juniors and seniors, or 3rd and 4th years in BS EE programs) and junior grad students (MS and junior Ph.D. students) take. If you have taken them, you can proceed to the advanced classes. Your university may require a placement test to place out of the intermediate classes, which tend to be prerequisites for the advanced classes. Check with the department administrators. Suggestions are based on the graduate ECE coursework at North Carolina State University (NCSU), where the anonymous question asker is going to. Classes for cyber-physical systems (CPS): ECE 516 System Control Engineering (all CPS, or embedded systems, have to be stable) ECE 521 Computer Design and Technology (CPS contain embedded systems, which include hardware and software) ECE 535 Design of Electromechanical Systems (your CPS needs to interface with the real-world, which tends to be "analog" in nature; think continuous-time domain). Robotics involve mechanical systems, too. ECE 561 Embedded System Design ECE 570 Computer Networks (for networked embedded systems) ECE 574 Computer and Network Security (you wanna secure your CPS network, right?) ECE 575 Introduction to Wireless Networking (think wireless sensor networks, or multi-agent robotic systems) ECE 720 Electronic System Level and Physical Design... The Electronic System Level, ESL, component is a critical part of CPS design and verification. Just take this class and learn about physical design; it shouldn't kill you. You probably won't have to develop physical design tools, such as placement and clock network synthesis tools. Again, see https://eecs_ece-and-cs.quora.com/Choosing-a-Graduate-Program-in-VLSI-Design-Related-Areas-Things-to-Consider, and read the relevant sections about electronic design automation (EDA); I hope you realize that physical design is part of EDA, so are ESL tools. ECE 756 Advanced Mechatronics ECE 776 Design and Performance Evaluation of Network Systems and Services Assuming that you have taken ECE 561, ECE 521, ECE 570, ECE 574, I suggest that you take the following classes in order of priority (not in temporal sequence): ECE 720, ECE 756, ECE 516, ECE 535, and ECE 575. You can skip remaining classes, like ECE 776. Classes targeting CPS domains in embedded computer vision (), as well as manufacturing, consumer, rehabilitation, and domestic robotics: ECE 522 Medical Instrumentation (for medical and health care robotics, including robotic surgery and rehabilitation robotics) ECE 555 Computer Control of Robots ECE 739 Integrated Circuits Technology and Fabrication Laboratory (for manufacturing robotics and data scientists/analytics positions in the semiconductor industry) ECE 763 Computer Vision Skip ECE 522 and ECE 739, if you are not interested in such domains. Classes to sharpen up your skills in mathematics, stochastic modeling, statistical analysis, software development, software development, and computational thinking: ECE 517 Object-Oriented Languages and Systems ECE 542 Neural Networks ECE 751 Detection and Estimation Theory ECE 752 Information Theory (not so helpful) CS classes CSC 503- Computational Applied Logic (for formal verification of embedded systems; but without a formal verification class, it is useless on its own) CSC 505- Design and Analysis Of Algorithms CSC 510- Software Engineering CSC 517- Object-Oriented Languages and Systems (probably the same as ECE 517) CSC 520- Artificial Intelligence I CSC 521- Artificial Intelligence Programming CSC 522- Automated Learning and Data Analysis (read: machine learning class) CSC 541- Advanced Data Structures (to prepare for technical interviews) CSC 546- Management Decision and Control Systems (for data scientist/analytics positions) CSC 548- Parallel Systems CSC 554- Human-Computer Interaction (helpful for robotics; think man-machine interface) CSC 570- Computer Networks (for networked embedded systems) CSC 575- Introduction to Wireless Networking (see ECE 575) CSC 579- Introduction to Computer Performance Modeling CSC 580- Numerical Analysis I CSC 583- Introduction to Parallel Computing CSC 712- Software Testing and Reliability CSC 714- Real Time Computer Systems (for CPS) CSC 720- Artificial Intelligence II CSC 722- Advanced Topics in Machine Learning CSC 724- Advanced Distributed Systems (for networked embedded systems) CSC 762- Computer Simulation Techniques CSC 772- Survivable Networks (for networked embedded systems) CSC 775- Advanced Topics in Wireless Networking (for networked embedded systems) CSC 776- Design and Performance Evaluation of Network Systems and Services (probably the same as ECE 776) CSC 779- Advanced Computer Performance Modeling CSC 780- Numerical Analysis II CSC 783- Parallel Algorithms and Scientific Computation Also, check out the special topics classes when information about them becomes available to you, whenever you sign up for classes (do this for each semester). Some of these classes are incredibly awesome, challenging, and fun. Note that some special topics classes are not offered every semester/year, or ever again. If you have been lazy to pick up software development skills prior to taking machine learning and computer vision classes, take CSC 510, CSC 517, CSC 541, CSC 712, and CSC 505 to start with. For machine learning, take CSC 520, CSC 521, CSC 522, CSC 546, CSC 720, and CSC 722. Wrapping things togetherRobotics can be a growing area, depending on how cyber-physical systems (includes robotics) pan out. Historically, careers in robotics tends to be restricted to defense, and some manufacturing markets (e.g., in the automotive manufacturing industry). WIth consumer robotics for health care (e.g., rehabilitation robotics) and domestic robotics (including vacuum cleaners and toys -- think Lego robotics!) becoming more prevalent, yes, careers in robotics are looking hot. Ditto for embedded computer vision. Cameras for photo taking and video recording are in many embedded systems, such as smart phones and cars (rear-end video cameras for automating or facilitating reverse parking). When autonomous vehicles hits the market, more embedded computer vision systems will be needed. So, yes, CPS ties robotics and computer vision together, nicely. Ditto for machine learning, which can be used in the design of robots and employed in computer vision algorithms/techniques. The macro emerging/growing tech trend to pay attention to is cyber-physical systems (including networked embedded systems -- see Internet of Things). So, with a background in EE, you can work in domains of cyber-physical systems involving computer vision, robotics, and machine learning, such as embedded computer vision systems for robots (implemented with machine learning techniques).
Pasquale Ferrara at Quora Visit the source
Other answers
Topics I would study: Bayesian Learning Neural Nets Pattern Recognition Statistics Wavelets Signal/Image Processing Stochastic/Random Processes Partial Differential Equations C/C++ (to interface with hardware)
Joseph Misiti
Unless you know what job you want, it's hard to know what skills you should learn. My suggestion: take whatever courses sound like fun. Better grades and recommendations are likelier to follow if you like the subject and thus do better in it. Machine learning is hot and those skills are useful in many different jobs. I agree that CS skills are in more demand than straight EE (esp. databases, mobile, networking, web apps, and cloud). But crossover subjects like vision and image processing are growing too (along with supporting skills like computational geometry, multi view geometry, and graphics). Robotics is advancing, but so far mostly in the military (e.g. drones), though it's likely to diversify into commercial markets like self driving cars in the coming decade. It's hard to say if 3D printing (and CAM in small businesses or in the home) is just around the corner, but I'm intrigued. You might do well to choose courses where you build a project that you can later reference and promote when you apply for jobs. Employers like to see examples of your work (web-published code, open software project participation, a video of your robot in action) rather than just a list of grades. I think you'll find that such companies also will be more interesting places to work than old-fashioned top-down HR-driven large corporations who care only about GPA.
Randy Crawford
Related Q & A:
- How do I change users on my computer for Yahoo?Best solution by windows.microsoft.com
- How do I put videos onto my computer?Best solution by Yahoo! Answers
- How can I design a workout program for myself?Best solution by Yahoo! Answers
- How should I design my Science Fair Board?Best solution by Yahoo! Answers
- How do I connect to my home computer from my school computer?Best solution by ist.njit.edu
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.