# data[].attributes.attachment_link.readable_text
The field of computer science is becoming increasingly important as the economy becomes more dependent on computers and the Internet. As this process is happening, computer hardware and software technology are rapidly increasing in power and sophistication. Because the changes are happening so quickly, it can be difficult to predict where the field of computer science will go over the next 10 to 20 years. In the foreseeable future, the field of computer science is set to change dramatically.

Computer Architecture

Classical computer architecture has been around since the 1920s when large mainframe computers were programmed using punch cards and rolls of paper tape. Since the invention of computers, processors have performed sequential operations on binary pieces of information called bits. In classical computing, bits of data are processed by a central processing unit that works together with the main memory to perform basic operations, such as addition, subtraction, division, and multiplication. Over the years, processing speed and power has increased exponentially from its initially modest beginnings. In 1940, the most powerful computer in the world would have taken 6 months to return an answer that would take seconds to compute on today's hardware.

Because the curve of technological progress is exponential, predicting the relatively near future is difficult. High-end computer hardware is now able to render realistic 3D graphics on the fly for video games and computer animations. The next phase of computer hardware technology is going to be quantum computing with hardware that can process many sequences of data simultaneously. As computer technology moves beyond the early, flat part of the exponential curve and approaches the vertical section, technology can be expected to transform in radical ways.

Software Engineering

One of the key aspects of computer science is the concept of reuse. It enables programmers all over the world to work together by contributing standard implementations of code to the public in the form of libraries and utilities. As the nature of software engineering changes from the object-oriented programming of the 1980s to the machine learning and scripting of the present day, programmers have an ever-growing body of standard code implementations to include in their programs. Because these included libraries and utilities save programmers time and effort while making their code easier to understand, the software can be produced easily and at an accelerating rate.

Job Outlook

According to the Bureau of Labor Statistics, the field of computer science is projected to grow by 21 percent through 2028, making it one of the fastest-growing professions in the global economy. The employment outlook for programmers will change as businesses hire lower-skilled labor from foreign countries to perform routine tasks and job candidates from all over the world compete for top jobs at major U.S. companies. Programming jobs will become increasingly specialized as the field of computer science gets more sophisticated. Many jobs will be automated as artificial intelligence becomes smart enough to do routine tasks. Programmers will still be needed to create websites and apps using intelligent software although fewer members will be needed for teams working on simple projects.

Most jobs in the near future will require some knowledge of computer programming, and the skills required for software engineering jobs will change dramatically as the technology continues to progress. The field of computer science is set to become more important, sophisticated, and specialized in the coming years.

Related resource: 30 Most Affordable Online Master's Degrees in Computer Science

# data[].attributes.attachment_link.title
How is the Field of Computer Science Changing? - Computer Science Degree Hub

# data[].attributes.attachment_link.description
The field of computer science is becoming increasingly important as the economy becomes more dependent on computers and the Internet. As this process is happening, computer hardware and software technology are rapidly increasing in power and sophistication. Because the changes are happening so quickly, it can be difficult to predict where the field of computer [...]

# data[].attributes.attachment_link.readable_text
Jeffrey Shallit for CS 134 at theUniversity of Waterloo in the summer of 1995.
This little web page was hastily stitched together in a few days. Perhaps eventually I will get around to doing a really good job. Suggestions are always welcome.

Before 1900
People have been using mechanical devices to aid calculation for thousands of years. For example, the abacus probably existed in Babylonia (present-day Iraq) about 3000 B.C.E. The ancient Greeks developed some very sophisticated analog computers. In 1901, an ancient Greek shipwreck was discovered off the island of Antikythera. Inside was a salt-encrusted device (now called the Antikythera mechanism) that consisted of rusted metal gears and pointers. When this c. 80 B.C.E. device was reconstructed, it produced a mechanism for predicting the motions of the stars and planets.
John Napier (1550-1617), the Scottish inventor of logarithms, invented Napier's rods (sometimes called "Napier's bones") c. 1610 to simplify the task of multiplication.

In 1641 the French mathematician and philosopher Blaise Pascal (1623-1662) built a mechanical adding machine. Similar work was done by Gottfried Wilhelm Leibniz (1646-1716). Leibniz also advocated use of the binary system for doing calculations.

Recently it was discovered that Wilhelm Schickard (1592-1635), a graduate of the University of Tübingen (Germany), constructed such a device in 1623-4, before both Pascal and Leibniz. A brief description of the device is contained in two letters to Johannes Kepler. Unfortunately, at least one copy of the machine burned up in a fire, and Schickard himself died of bubonic plague in 1635, during the Thirty Years' War.

Joseph-Marie Jacquard (1752-1834) invented a loom that could weave complicated patterns described by holes in punched cards. Charles Babbage (1791-1871) worked on two mechanical devices: the Difference Engine and the far more ambitious Analytical Engine (a precursor of the modern digital computer), but neither worked satisfactorily. (Babbage was a bit of an eccentric -- one biographer calls him an "irascible genius" -- and was probably the model for Daniel Doyce in Charles Dickens' novel, Little Dorrit. A little-known fact about Babbage is that he invented the science of dendrochronology -- tree-ring dating -- but never pursued his invention. In his later years, Babbage devoted much of his time to the persecution of street musicians (organ-grinders).) The Difference Engine can be viewed nowadays in the Science Museum in London, England.

One of Babbage's friends, Ada Augusta Byron, Countess of Lovelace (1815-1852), sometimes is called the "first programmer" because of a report she wrote on Babbage's machine. (The programming language Ada was named for her.)

William Stanley Jevons (1835-1882), a British economist and logician, built a machine in 1869 to solve logic problems. It was "the first such machine with sufficient power to solve a complicated problem faster than the problem could be solved without the machine's aid." (Gardner) It is now in the Oxford Museum of the History of Science.

Herman Hollerith (1860-1929) invented the modern punched card for use in a machine he designed to help tabulate the 1890 census.

1900 - 1939: The Rise of Mathematics
Work on calculating machines continued. Some special-purpose calculating machines were built. For example, in 1919, E. O. Carissan (1880-1925), a lieutenant in the French infantry, designed and had built a marvelous mechanical device for factoring integers and testing them for primality. The Spaniard Leonardo Torres y Quevedo (1852-1936) built some electromechanical calculating devices, including one that played simple chess endgames.
In 1928, the German mathematician David Hilbert (1862-1943) addressed the International Congress of Mathematicians. He posed three questions: (1) Is mathematics complete; i.e. can every mathematical statement be either proved or disproved? (2) Is mathematics consistent, that is, is it true that statements such as "0 = 1" cannot be proved by valid methods? (3) Is mathematics decidable, that is, is there a mechanical method that can be applied to any mathematical assertion and (at least in principle) will eventually tell whether that assertion is true or not? This last question was called the Entscheidungsproblem.

In 1931, Kurt Gödel (1906-1978) answered two of Hilbert's questions. He showed that every sufficiently powerful formal system is either inconsistent or incomplete. Also, if an axiom system is consistent, this consistency cannot be proved within itself. The third question remained open, with 'provable' substituted for 'true'.

In 1936, Alan Turing (1912-1954) provided a solution to Hilbert's Entscheidungsproblem by constructing a formal model of a computer -- the Turing machine -- and showing that there were problems such a machine could not solve. One such problem is the so-called "halting problem": given a Pascal program, does it halt on all inputs?

1940's: Wartime brings the birth of the electronic digital computer
The calculations required for ballistics during World War II spurred the development of the general-purpose electronic digital computer. At Harvard, Howard H. Aiken (1900-1973) built the Mark I electromechanical computer in 1944, with the assistance ofIBM.
Military code-breaking also led to computational projects. Alan Turing was involved in the breaking of the code behind the German machine, the Enigma, at Bletchley Park in England. The British built a computing device, the Colossus, to assist with code-breaking.

At Iowa State University in 1939, John Vincent Atanasoff (1904-1995) and Clifford Berry designed and built an electronic computer for solving systems of linear equations, but it never worked properly.

Atanasoff discussed his invention with John William Mauchly (1907-1980), who later, with J. Presper Eckert, Jr. (1919-1995), designed and built the ENIAC, a general-purpose electronic computer originally intended for artillery calculations. Exactly what ideas Mauchly got from Atanasoff is not complely clear, and whether Atanasoff or Mauchly and Eckert deserve credit as the originators of the electronic digital computer was the subject of legal battles and ongoing historical debate. The ENIAC was built at the Moore School at the University of Pennsylvania, and was finished in 1946.

In 1944, Mauchly, Eckert, and John von Neumann (1903-1957) were already at work designing a stored-program electronic computer, the EDVAC. Von Neumann's report, "First Draft of a Report on the EDVAC", was very influential and contains many of the ideas still used in most modern digital computers, including a mergesort routine. Eckert and Mauchly went on to build UNIVAC.

Meanwhile, in Germany, Konrad Zuse (1910-1995) built the first operational, general-purpose, program-controlled calculator, the Z3, in 1941. More information about Zuse can be found here.

In 1945, Vannevar Bush published a surprisingly prescient article in the Atlantic Monthly about the ways information processing would affect the society of the future. (Another copy of the Bush article appears here.)

Maurice Wilkes (b. 1913), working in Cambridge, England, built the EDSAC, a computer based on the EDVAC. F. C. Williams (b. 1911) and others at Manchester University built the Manchester Mark I, one version of which was working as early as June 1948. This machine is sometimes called the first stored-program digital computer.

The invention of the transistor in 1947 by John Bardeen (1908-1991), Walter Brattain (1902-1987), and William Shockley (1910-1989) transformed the computer and made possible the microprocessor revolution. For this discovery they won the 1956 Nobel Prize in physics. (Shockley later became notorious for his racist views.)

Jay Forrester (b. 1918) invented magnetic core memory c. 1949. More about Forrester here.

1950's
Grace Murray Hopper (1906-1992) invented the notion of a compiler, at Remington Rand, in 1951. Earlier, in 1947, Hopper found the first computer"bug" -- a real one -- a moth that had gotten into the Harvard Mark II. (Actually, the use of "bug" to mean defect goes back to at least 1889.)
John Backus and others developed the first FORTRAN compiler in April 1957. LISP, a list-processing language for artificial intelligence programming, was invented by John McCarthy about 1958. Alan Perlis, John Backus, Peter Naur and others developed Algol.

In hardware, Jack Kilby (Texas Instruments) and Robert Noyce (Fairchild Semiconductor) invented the integrated circuit in 1959.

Edsger Dijkstra invented an efficient algorithm for shortest paths in graphs as a demonstration of the ARMAC computer in 1956. He also invented an efficient algorithm for the minimum spanning tree in order to minimize the wiring needed for the X1 computer. (Dijkstra is famous for his caustic, opinionated memos. For example, see his opinions of some programming languages).

In a famous paper that appeared in the journal Mind in 1950, Alan Turing introduced the Turing Test, one of the first efforts in the field of artificial intelligence. He proposed a definition of "thinking" or "consciousness" using a game: a tester would have to decide, on the basis of written conversation, whether the entity in the next room responding to the tester's queries was a human or a computer. If this distinction could not be made, then it could be fairly said that the computer was "thinking".

In 1952, Alan Turing was arrested for "gross indecency" after a burglary led to the discovery of his affair with Arnold Murray. Overt homosexuality was taboo in 1950's England, and Turing was forced to take estrogen "treatments" which rendered him impotent and caused him to grow breasts. On June 7, 1954, despondent over his situation, Turing committed suicide by eating an apple laced with cyanide.

1960's
In the 1960's, computer science came into its own as a discipline. In fact, the term was coined by George Forsythe, a numerical analyst. The first computer science department was formed atPurdue University in 1962. The first person to receive a Ph. D. from a computer science department was Richard Wexelblat, at the University of Pennsylvania, in December 1965.
Operating systems saw major advances. Fred Brooks at IBM designed System/360, a line of different computers with the same architecture and instruction set, from small machine to top-of-the-line. Edsger Dijkstra at Eindhoven designed the THE multiprogramming system.

At the end of the decade, ARPAnet, a precursor to today's Internet, began to be constructed.

Many new programming languages were invented, such as BASIC (developed c. 1964 by John Kemeny (1926-1992) and Thomas Kurtz (b. 1928)).

The 1960's also saw the rise of automata theory and the theory of formal languages. Big names here include Noam Chomsky and Michael Rabin. Chomsky later became well-known for his theory that language is "hard-wired" in human brains, and for his criticism of American foreign policy.

Proving correctness of programs using formal methods also began to be more important in this decade. The work of Tony Hoare played an important role. Hoare also invented Quicksort.

Douglas C. Engelbart invents the computer mouse c. 1968, at SRI.

Ted Hoff (b. 1937) and Federico Faggin at Intel designed the first microprocessor (computer on a chip) in 1969-1971.

A rigorous mathematical basis for the analysis of algorithms began with the work of Donald Knuth (b. 1938), author of 3-volume treatise entitled The Art of Computer Programming.

1970's
The theory of databases saw major advances with the work of Edgar F. Codd on relational databases. Codd won the Turing award in 1981.
Unix, a very influential operating system, was developed at Bell Laboratories by Ken Thompson (b. 1943) and Dennis Ritchie (b. 1941). Brian Kernighan and Ritchie together developed C, an influential programming language.

Other new programming languages, such as Pascal (invented by Niklaus Wirth) and Ada (developed by a team led by Jean Ichbiah), arose.

The first RISC architecture was begun by John Cocke in 1975, at the Thomas J. Watson Laboratories of IBM. Similar projects started at Berkeley and Stanford around this time.

The 1970's also saw the rise of the supercomputer. Seymour Cray (b. 1925) designed the CRAY-1, which was first shipped in March 1976. It could perform 160 million operations in a second. The Cray XMP came out in 1982. Cray Research was taken over by Silicon Graphics.

There were also major advances in algorithms and computational complexity. In 1971, Steve Cook published his seminal paper on NP-completeness, and shortly thereafter, Richard Karp showed that many natural combinatorial problems were NP-complete. Whit Diffie and Martin Hellman published a paper that introduced the theory of public-key cryptography, and a public-key cryptosystem known as RSA was invented by Ronald Rivest, Adi Shamir, and Leonard Adleman.

In 1979, three graduate students in North Carolina developed a distributed news server which eventually became Usenet.

1980's
This decade also saw the rise of the personal computer, thanks to Steve Wozniak and Steve Jobs, founders of Apple Computer.
The first computer viruses are developed c. 1981. The term was coined by Leonard Adleman, now at the University of Southern California.

In 1981, the first truly successful portable computer was marketed, the Osborne I. In 1984, Apple first marketed the Macintosh computer.

In 1987, the US National Science Foundation started NSFnet, precursor to part of today's Internet.

1990's and Beyond
Parallel computers continue to be developed.
Biological computing, with the recent work of Len Adleman on doing computations via DNA, has great promise. The Human Genome Project is attempting to sequence all the DNA in a single human being.

Quantum computing gets a boost with the discovery by Peter Shor that integer factorization can be performed efficiently on a (theoretical) quantum computer.

The "Information Superhighway" links more and more computers worldwide.

Computers get smaller and smaller; the birth of nano-technology.

Other Web Resources for History of Computer Science

# data[].attributes.attachment_link.description
Jeffrey Shallit for CS 134 at theUniversity of Waterloo in the summer of 1995.This little web page was hastily stitched together in a few days. Perhaps eventually I will get around to doing a really good job. Suggestions are always welcome. People have been using mechanical devices to aid calculation for thousands of years.

# data[].attributes.attachment_link.readable_text
If you are trying to decide on a career path, you should know that computer science jobs are on the rise. Technology and computer science jobs are projected to grow around 12% by 2028, according to the Occupational Outlook Handbook from the U.S. Bureau of Labor Statistics. ¹

Becoming a computer scientist is a great career option if you have an interest in technology and problem solving and want a job where you will be challenged and learn new skills. Let's take a closer look at this profession.

What Is a Computer Scientist?

If you are deciding whether or not a computer science degree is right for you, it's important to know the ins and outs of the profession. A computer scientist understands the theoretical aspects of working with computers. They do not necessarily work with hardware and applications in the same way that computer engineers do. Instead, a computer scientist considers how technology handles information then applies it to programs.

Becoming a Computer Scientist

If this role sounds interesting to you then you might want to begin your career journey toward becoming a computer scientist. Most computer scientists hold bachelor's or advanced degrees in computer science. They may also study in fields like physics or mathematics.

Computer science degree programs prepare students to work in software development and big data analytics. Corporate businesses and organizations also look for computer science degree holders to help them develop systems and applications and understand interactions and technical theory.

Beyond formal academic training, a computer scientist must have excellent communication skills. This career often requires sharing results and findings of investigations in publications or through in-person presentations. This job also requires a good amount of teamwork and problem-solving as a team.

Job Responsibilities

Computer scientists are usually hired by software development firms. Their role includes creating new theories around technology development. While other people at a software firm may be building current technologies, a computer scientist is thinking through ideas on how to take that technology to the next level in sustainable and efficient ways. Computer scientists also use their knowledge to work in software engineering or as IT consultants. They may also find work at universities and research companies.

On the job, computer scientists use technology to solve problems and prepare for the future. They also write and program software to create applications. Their primary focus, however, is to validate and develop models for interaction between people and computers or software and devices. The computer science field is very diverse and there are jobs within many different sectors of the industry.

Computer scientists conduct theoretical investigations in a lot of different areas. They are also interested in database theory and software engineering. Numerical analysis, computational complexity theory, computer graphics and programming languages are also areas where the computer scientist has applicable knowledge.

Finding Jobs as a Computer Scientist

Computer scientists are highly sought-after in the technology field. This environment is usually collaborative and fast-paced. So, to become a computer scientist, you need to be comfortable being creative and working quickly.

Companies looking to hire computer scientists are looking for people who have exceptional planning and coding skills. They want somebody who can contribute in the very beginning of an idea and see a project through to the end. Software development, deployment and testing and fixing bugs is also a part of a computer scientist job description.

Skills Needed to Thrive

Most computer scientists hold at least a bachelor's in computer science degree. They may also hold an undergrad degree in a related field. In addition, computer scientists may need to have additional certifications in programming languages and other various tech skills. These certifications demonstrate the computer scientist's commitment to continuing their education. Because technology is an ever-evolving field, employers like to see that the people they hire will continue to educate themselves as needed.

Computer scientists should have coding knowledge of SQL, HTML and JavaScript. They need to be able to work comfortably in databases. Most computer scientists will work in an agile environment, so they must understand that work cycle.

Computer Science Specialties

A lot of schools offer computer science degree programs with different emphases. Some of the specializations include big data analytics, business entrepreneurship and game and simulation development.

When you study computer science with an emphasis in big data analytics, you will apply knowledge of computing, mathematics and statistics. You will use your knowledge to analyze the problem and identify scientific methodologies to develop a solution. Finally, you will understand how to use and design methods and software applications that help businesses use big data to find success.

An emphasis in business entrepreneurship ensures that you have the skills to go into business for yourself. You will be able to take your technology skills and apply them to the work that you want to do. This program combines computer science and business knowledge in a multidisciplinary approach, ensuring you have the skills to start in just about any technology career.

The emphasis in game and simulation development helps you build skills in the innovative field, which touches many different sectors including entertainment, education and corporate training. The computer science aspect of this degree includes the science, algorithms and theory behind computer games. However, it is also a very hands-on, application-based degree program where you will study artificial intelligence and get to know computer operating systems and object-oriented programming.
If a job in computer science sounds appealing to you, check out Grand Canyon University's computer science degree programs. Our experienced faculty and staff can help you earn a degree that will lead to a great job and a long-lasting tech career in computer science. If you have any questions, you can click the Request More Information button at the top of this page.
Retrieved from:
¹ https://www.bls.gov/ooh/computer-and-information-technology/home.htm

# data[].attributes.attachment_link.description
If you are trying to decide on a career path, you should know that computer science jobs are on the rise. Technology and computer science jobs are projected to grow around 12% by 2028, according to the Occupational Outlook Handbook from the U.S. Bureau of Labor Statistics.