Transitioning myself from a Forgotten Electronics Engineer to a Known Software Engineer.

I am an Electronics Engineer by education and a Software Engineer (???) by profession. There is always a feeling that I lack the knowledge to be a suitable person for my profession as I do not have the skills that a CS graduation might have. So, here is my study plan to finish this lacuna. A plan to help me switch from forgotten Electronics Engineer cum not-so-good-Software Engineer to a better person in the world of Computer Science and Engineering.

I first had my hands on Computers when I was in Class IV back in 1991 and the language of instruction was Logo, a fantastic beginner language as everything is taught in terms of movement of turtle with commands like FD (forward), RT (right), LT (left), ?? (backward), the combination of which eventually makes a figure - rectangle, triangle, square, rhombus - anything.

It was in VI that we were introduced to BASIC (Beginners All-Purpose Symbolic Instruction Code), a language very close to my heart. It was in this language that I created my first project - Hotel Management System and scored cent percent marks for continuously three years. I was in touch with BASIC till X and was quite an advanced BASIC Programmer. In the year 1994, I won Computer Whiz Kid Award conducted by DataPro and represented Agra.

In XI, the language of instruction was changed to C++. Object Oriented Paradigm was the buzzword, but, oops, we were not able to understand an iota of it in the beginning. We used to write code like we used to do in BASIC and just switch syntax to that of C (since OOP was not there, I am refraining to call the code as of C++). But soon the things begin to make sense and we begin using OOPs. Classes came in regularly and objects were started getting created with ease. However, still I cannot say that we were masters in OOPs. There were few of us who were trying to make sense of OOPs in our programs rather than just learning it theoretically. I was so obsessed with doing it the right way that I messed up my final practical exam and had to switch to some easy problem.

When I got admission into Engineering, I wanted to learn Electronics because that was the thing that could take me nearer to basic intricacies of hardware. Also, I foolishly thought that it was close to Physics (my third love after CS and Maths). I lost touch with C++ as the langauge that we were using was C. I was more interested in using a mixture of Assembler code with C code to make the hardware work. What a fun it was!! :)

After completion of Engineering, I gave few exams to get a job and got selected in Infosys. I joined Infosys and enjoyed the honeymoon perios in Mysore working hard. Algorithms, Data Structures, etc were difficult to understand the way being taught. It was like re-learning things. I had done Algorithms, the BASIC way and now they were changing my entire understanding of the thing. Soon, I realised that what I learned in school was really very very small thing and in the meanwhile I have lost four essential years to work on that foundation and make it more sound.

I wanted to work to make the four lost years count but my inclination towards totally a different field cost me another seven years. And here I am standing at the same place with nearly a decade lost. However, I have not given up. I want to make the past ten years count again. And I plan to study for the same. I have shortlisted a few things that I want to learn and study about - both theoretical Computer Science and practical one as well. Here is the list of the things that I want to learn. I have taken the list of subjects from UPTU website as taught in 2nd, 3rd and 4th year for Bachelor of Technology course. So, here is the list:

  1. Discrete Mathematics
  2. Data Structures
  3. DBMS
  4. Theory of Automata & Formal Languages / Theory of Computation
  5. Operating System
  6. Design and Analysis of Algorithms
  7. Compiler Design
  8. Computer Network

I have started reading Fundamental of Computer Science by Al Aho and Jeff Ullman

If you have anything else that I should learn and also, if you can suggest books that you used, please post a comment.

Hope that I am able to complete all of these. At least some of these, if completed, will give me a great satisfaction.