Pitfalls of Software & Java Education in Engineering Schools

By Angsuman Chakraborty, Gaea News Network
Thursday, February 9, 2006

I have been interviewing several freshers who were taught Java in engineering schools under computer science curriculum. Interviewing them highlighted serious problems with their education as well as with the system. This is a brief overview of the issues and ways to interview such candidates. At the end I have included my recommendation of courses for software engineers.

The students in most engineering institutes are being taught Java directly without a good introduction to object oriented development. At best they have cursory knowledge of OO concepts like polymorphism. It becomes nauseous to watch them repeat by rote the definitions without demonstrating a clear understanding of underlying concepts and logic. Such graduates become nothing more than structured C coders using Java.

Learning Java to most is knowing about the “packages”, which is an incorrect approach. Java is not just about the libraries it provides. Anyone with logical ability can quickly pick new libraries.

Java is a language with a easy to learn syntax which should be first mastered. It is a platform which helps you to easily develop cross-platform and web applications. Knowing Java without knowing about the web (other than googling and email), for example, is fruitless.

Java programmers do not just need to know Java, the language. They need to have an understanding of basic software concepts like three-tier development, relational database management systems, quality processes etc.

Software developers with a narrow understanding of the field are likely to be a liability to themselves and to their companies. I look for people who have a healthy interest in the field and not the ones who have chosen IT solely because of its salary potential.

My approach to interviewing them is to find out their clarity of concepts in whatever little (or much) they know. I ask lots of “why”. Getting them to justify even obvious questions like value of object oriented development or polymorphism sheds light into their logical underpinings.

My recommended courses for software enginners (1 semester each) would be:

  1. Introduction to computers
  2. Computer Language (Fortran)
  3. Algorithm and Data Structures
  4. Object Oriented Development (preferably using SmallTalk)
  5. Java Software Development
  6. Software Development Methodologies (includes Extreme Programming)
  7. Software Testing & Quality Processes
  8. Design Patterns in Java
  9. Enterprise Software Development
  10. Networking - TCP/IP, UDP, SMTP, POP3, HTTP etc.

Optional:

  1. Computer Security
  2. Artifical Intelligence
Discussion

Jason Riesman
May 10, 2006: 1:41 pm

Thanks - didn’t expect a reply so quick (or possibly at all!)

I have pointed friends in the past who are interested in picking up some programming (not as a career) to look at Python, Ruby, and PHP. The benefits being that they can do some pretty cool stuff right away, and can use something like PHP to do minor tweaks to their blogs assuming they are PHP based.

May 10, 2006: 12:43 pm

Fortran is a relatively easy language to learn and well suited for beginners. I have found many rather intelligent people fumbling with C, especially pointers.
I think the introduction should start with something easy to learn and master to boost their confidence and grow their interest. That’s my two cents.


Jason Riesman
May 10, 2006: 11:35 am

Interested why you chose Fortran? If you have a relatively intelligent group of students, I think C is a good place to start - it is practical (still used in companies for development) and it teaches you the details of memory management, etc. While Java et. al. have auto garbage collection, knowing what this means and how it benefits you is important.

Thoughts?

YOUR VIEW POINT
NAME : (REQUIRED)
MAIL : (REQUIRED)
will not be displayed
WEBSITE : (OPTIONAL)
YOUR
COMMENT :