Unlike medical doctors and advocates in court, most of us end up becoming software engineer first and then do several software engineering courses. In this light, someone asking how to qualify as a software engineer makes me feel happy.
Few universities package this information in a variety of courses such as Programming in C, DBMS, OOPS using Java, Algorithms, Data Structures and Software Engineering. There is no single list which is complete and correct. Coursera and such MOOC platforms provide interesting courses such as Agile Methodologies and Android development.
My perspective to programming and related courses changed when I joined a cloud computing group at Yahoo. Suddenly, distributed systems became the most relevant subject. Every algorithm we designed were distributed in nature. I go to Nokia and embedded systems and UI design are now relevant. I come to Microsoft, and find Information Retrieval, Machine Learning, Pattern Recognition, NLP as relevant subjects.
In short, finally, I concluded that, to be a good software engineer, you need to be good at all courses! But good news is, there is no hurry. You need to be a good thinker and need to know one language (say Java) to get a job. You can become good at rest on the job.
These courses alone cannot make you a good software engineer. Developing good software is equally an art as it is an engineering “discipline”. This is an interesting field where we are trying to fit an art form (as painting) into a step by step method (as in an engineering discipline). There will still be scope for creativity. So, just like teaching, you will succeed in software development only if you have the passion.
With India becoming a big exporter of software, the opportunities are plenty. The work is cool. Work environment is amazing with air-conditioned offices, latest gadgets, brilliant minds and amazing innovations. Add travel, money and monthly outings to this. What stops you from becoming a software engineer! Why not be excited!!