What is a computer algorithm?

To make a computer do anything, you have to write a computer program. To write a computer program, you have to tell the computer, step by step, exactly what you want it to do. The computer then "executes" the program, following each step mechanically, to accomplish the end goal.

When you are telling the computer what to do, you also get to choose how it's going to do it. That's where computer algorithms come in. The algorithm is the basic technique used to get the job done. Let's follow an example to help get an understanding of the algorithm concept.

In computer programming, there are often many different ways -- algorithms -- to accomplish any given task. Each algorithm has advantages and disadvantages in different situations. Sorting is one place where a lot of research has been done, because computers spend a lot of time sorting lists. Here are five different algorithms that are used in sorting:
* Bin sort
* Merge sort
* Bubble sort
* Shell sort
* Quicksort

If you have a million integer values between 1 and 10 and you need to sort them, the bin sort is the right algorithm to use. If you have a million book titles, the quicksort might be the best algorithm. By knowing the strengths and weaknesses of the different algorithms, you pick the best one for the task at hand.

What would you like to be?

Computer Hardware Engineer
Computer Software Engineer
Network Engineer

What is Hardware and Software?
What is Computer Hardware?
What is a Computer?

Computer Hardware Engineer

What is this job like?
How do you get ready?
How many jobs are there?
What about the future?
Are there other jobs like this?
Where can you find more information?



What is this job like?

Computer hardware engineers research, design, develop, test, and oversee the installation of computer hardware. Computer hardware includes computer chips, circuit boards, systems, modems, keyboards, and printers. (Computer software engineers design the programs to run computers.)

Computer hardware engineers are much like electronics engineers, but work only with computers. The rapid advances in computers are a result of their work. To keep up, these workers must stay up to date on what they know. How do you get ready?

A college degree in engineering is needed for almost all beginning engineering jobs. College graduates with a degree in a science or mathematics may get some jobs.

Getting into engineering school requires a strong background in math and science, and courses in English, social studies, and computers. Some schools prepare an engineer to get a job upon graduation while others prepare an engineer for graduate school. It is a good idea to research the school before you attend.

Engineers should be creative, curious, and be able to analyze and pay attention to detail. They should be able to work as part of a team, so people skills are important. How much does this job pay?

How many jobs are there?

The number of computer hardware engineers is pretty small compared with other computer-related workers. They held about 74,700 jobs in 2008. Many worked in the computer and electronic product manufacturing industry, and some worked in the computer systems design industry.

What about the future?

The number of computer hardware engineers is expected to grow slower than the average for all occupations through 2018. More people will need computers and related products made by these engineers, but some of these products will come from __________.

Are there other jobs like this?

* Architects
* Chemists
* Computer and information systems managers
* Electrical engineers
* Science technicians

Where can you find more information?

Computer Software Engineer

What is this job like?
How do you get ready?
How many jobs are there?
What about the future?
Are there other jobs like this?
Where can you find more information?

What is this job like?

Because computers are so important to our lives, there is a constant need to develop new software. Computer software engineers apply computer science, engineering, and math to design, develop, and test software. (Computer hardware engineers design computer chips, boards, systems, modems, and printers.)

Software engineers first analyze users' needs. Then they design, construct, test, and maintain the needed software or systems. In programming, or coding, they tell a computer, line by line, how to function. They also solve any problems that arise. They must possess strong coding skills, but are more likely to develop algorithms and solve problems than write code.

Software engineers often work as part of a team that designs new hardware, software, and systems. A core team may have engineering, marketing, factory, and design people who work together until the product is done.

Computer applications software engineers design, construct, and maintain computer programs based on what people need. They can develop a program for just one person or for many people to use separately.

Computer systems software engineers construct and maintain computer programs for companies. For example, they might develop programs that do recordkeeping and payroll. They might also set up an "intranet"—an internal and secure computer network—for a company. Many software engineers work for companies that make or install new and more advanced computer systems.

Software engineers normally work in well-lighted offices or labs. Most work at least 40 hours a week. If a big project is due, they may have to work nights or weekends to meet deadlines. Like other workers who sit for hours at a computer, they are susceptible to eyestrain, back ache, and hand and wrist pain.

Software engineers who are employed by vendors and consulting firms spend time away from their offices to meet with customers. As networks expand, they may be able to use modems, laptops, e-mail, and the Internet to identify and fix problems from their own office.

How do you get ready?

Most employers prefer to hire people who have at least a college degree and experience with a variety of computer systems. Students seeking software engineering jobs can improve their chances by signing up as interns to get some experience. Large firms that can train new hires may take new grads with no experience.

Persons looking at jobs in this field must have strong problem-solving skills. They also must be able to work with team members, other staff, and customers. Because they often deal with many tasks at the same time, they must be able to focus and pay close attention to detail.

As technology advances in the computer field, employers want workers to keep up. Software engineers must learn new skills if they wish to remain in this advancing field. To help them keep up, employers, vendors, private training schools, and others offer a large number of courses.

How many jobs are there?

Computer applications software engineers held about 514,800 jobs in 2008, while computer systems software engineers held about 394,800. Although they have jobs in most industries, many computer software engineers work in computer systems design and related services. Employers range from startups to well-known industry leaders. A growing number of these workers get jobs on a temporary basis, or work as consultants.

What about the future?

Both computer applications software engineers and computer systems software engineers are projected to be among the fastest growing occupations from 2008 to 2018. Rapid growth in the computer systems design industry should mean good opportunities for college grads with a degree and some experience. Employers will look for software engineers with a strong background in programming and systems analysis, along with business and people skills.

The number of computer software engineers is expected to rise much faster than the average, as businesses are looking for new ways to get ahead of competition and make their computer systems the fastest. Also, growing concerns over "cyber security"—making sure only certain people can see private information—will mean more jobs for these engineers. Job growth will not be as fast as during the last decade because some work is outsourced to ________.

Are there other jobs like this?

* Computer hardware engineers
* Computer support specialists
* Computer scientists
* Database administrators
* Systems analysts

Where can you find more information?

Network Engineer
Describe the OSI model.
What is the difference between a repeater, bridge, router?

Relate this to the OSI model.

Describe an Ethernet switch and where it fits into the OSI model.

What is a VLAN? What is an ELAN? What is the difference?
Relate FDDI/ATM/SONET to the OSI model.
Explain how to configure a host network interface (e.g. IP address, netmask, broadcast address)?
Describe Ethernet packet contents: min/max size, header.
Describe TCP/IP and its protocols.
Describe ATM and what are its current advantages and disadvantages.
Describe SONET.
What are the maximum distances for CAT5 cabling?
Describe UDP and TCP and the differences between the two.
What is your current IP address? Hoiw do you find that out on different OSs?
Describe what a broadcast storm is.
Describe what a runt, a giant, and a late collision are and what causes each of them.
How do you distinguish a DNS problem from a network problem?
Describe the Bandwidth Delay problem.
Describe the principle of multi-layer switching.
Describe the purpose and basic functionality of things like HSRP, VRRP etc.
User(s) are complaining of delays when using the network. What would you do?
What are some of the problems associated with operating a switched LAN?
Name some of the ways of combining TCP/IP traffic and SNA traffic over the same link.
What sort of cabling is suitable for Fast Ethernet protocols?
What is a Class D IP address?
Why do I sometimes lose a server's address when using more than one server?
What is Firewall?
How do I monitor the activity of sockets?
How would I put my socket in non-blocking mode?
What are RAW sockets?
What is the role of TCP protocol and IP protocol.
What is UDP?
How can I make my server a daemon?
How should I choose a port number for my server? Layers in TCP/IP
How can I be sure that a UDP message is received?
How to get IP header of a UDP message Writing UDP/SOCK_DGRAM applications

http://www.liv.ac.uk/HPC/HTMLF90Course/HTMLF90CourseSlidesnode3.html

http://www.coolnerds.com/Newbies/Hardware/hardware.htm

http://www.onesmartclick.com/interviews/interviews-networking.html