THE WIKI COMMUNITY

Thursday, 30 September 2010

A Comparison Of Software Engineering And Computer Science

By Adriana Noton

There is still much confusion among employers as well as universities regarding the precise definition of some technical degrees, including software engineering and computer science. These two specialties, as well as information systems, computer science engineering, and information technology, are relatively new. As such, what one employer or school considers a requirement of software engineering may be considered computer science by others.

Much overlap occurs between the majority of the computer technology areas. For example, both CS and SE majors typically are taught the theory of computers, program structure, and user expectations. However, software engineers are typically part of the school of engineering, while CS majors usually fall under the math department.

The first computers could perform only limited functions, and the programming was part of their hardware. The user could do little beyond pushing one or two buttons. To allow the user to achieve greater control, it was necessary to create languages and compilers that could translate them into machine language. Punch cards and tapes let experienced users write routines. Often, a typist or clerk did the actual keypunching. If there was a missing dot, misplaced bracket, or transposition, the program could not execute. The programmer usually received little feedback as to why, meaning he had to go through not only his program but all the cards to locate the error.

Computer programming began to come into its own with the development of the personal computer. Simplified languages such as BASIC gave more control to the average user. A few minutes spent with a book enabled the user to begin to construct rudimentary programs. Many times, however, the lack of understanding about what a computer could and could not do led to failure. This laid the foundations for the software engineer, who not only understands the program but the physical abilities of the hardware.

One way to contrast software engineering and computer science is to examine how the first PCs controlled most printers. Typically, the user had to go to the DOS shell and enter commands to change output options, such as multiple copies, paper size, or font characteristics. Such functions are now controlled by an interface in the software or printer dialog. In simplest terms, the code required to change the printer and create the dialog boxes came from a software engineer. Enabling the printer to understand and comply came from computer science.

In the most basic terms, CS focuses more on the hardware, circuitry, and networking involved. An SE is typically more concerned with creating a program that will be efficient in terms of size and speed and optimizing the user interface. Neither area, however, has a patent on any one area. To build a network or a computer that is reliable and efficient requires an understanding of what demands will be placed upon it. To write a powerful, "bug-free" program requires knowing how compilers operate, what the processor speeds mean, and the memory needed.

There is so little standardization of degree requirements between schools that there is a great variance in the quality produced. Even today, there are colleges that introduce CS students to programming with Microsoft Office. Almost obscure languages such as RPG, COBOL, and Pascal may follow. The Visual Studio may be taught without any foundation in BASIC, C++, or Java. On the other hand, software engineers might not understand wireless technology. It may be preferable for potential students and employers to delve beyond the degree title and carefully examine the courses in the degree plan.

Not too many years ago, computer science positions were often filled by those with other degrees, such as electrical engineers. Software engineers were usually those with programming skills, many of whom held no degree at all but were self-taught. As technology became more complex, increased specialization followed. Only by considering the goal is it possible to differentiate between them. For example, if the goal is to produce the greatest game of all time, a Microsoft software engineer is likely to be the one to meet the challenge. If the goal is to produce the next generation of gaming systems, however, a computer scientist is probably going to make the greatest contribution.

About the Author:

No comments:

Post a Comment