romikgosai/squad_modified huggingface dataset:
Early computing machines had fixed programs. Changing its function required the re-wiring and re-structuring of the machine. With the proposal of the stored-program computer this changed. A stored-program computer includes by design an instruction set and can store in memory a set of instructions (a program) that details the computation. The theoretical basis for the stored-program computer was laid by Alan Turing in his 1936 paper. In 1945 Turing joined the National Physical Laboratory and began work on developing an electronic stored-program digital computer. His 1945 report ‘Proposed Electronic Calculator’ was the first specification for such a device. John von Neumann at the University of Pennsylvania, also circulated his First Draft of a Report on the EDVAC in 1945.

Questions and answers:
['
Q: The basis for the stored-program computer was written by whom?
A: Alan Turing', '
Q: When did Alan Turing write his paper about the basis for the stored-program computer?
A: 1936', '
Q: When did Alan Turing join the National Physical Laboratory?
A: 1945', '
Q: The first outline for the report on the EDVAC was released by John von Neumann when?
A: 1945.', '
Q: Where did John von Neumann circulate the first draft of a report on the EDVAC?
A: University of Pennsylvania']
The Manchester Small-Scale Experimental Machine, nicknamed Baby, was the world's first stored-program computer. It was built at the Victoria University of Manchester by Frederic C. Williams, Tom Kilburn and Geoff Tootill, and ran its first program on 21 June 1948. It was designed as a testbed for the Williams tube the first random-access digital storage device. Although the computer was considered "small and primitive" by the standards of its time, it was the first working machine to contain all of the elements essential to a modern electronic computer. As soon as the SSEM had demonstrated the feasibility of its design, a project was initiated at the university to develop it into a more usable computer, the Manchester Mark 1.

Questions and answers:
['
Q: What was the nickname of the Manchester Small-Scale Experimental Machine?
A: Baby', '
Q: What was the first stored-program computer in the world?
A: The Manchester Small-Scale Experimental Machine', '
Q: Where was the Manchester Small-Scale Experimental Machine built?
A: Victoria University of Manchester', '
Q: Who built the Manchester Small-Scale Experimental Machine?
A: Frederic C. Williams, Tom Kilburn and Geoff Tootill', '
Q: When did the Manchester Small-Scale Experimental Machine run its first program?
A: 21 June 1948']
The Mark 1 in turn quickly became the prototype for the Ferranti Mark 1, the world's first commercially available general-purpose computer. Built by Ferranti, it was delivered to the University of Manchester in February 1951. At least seven of these later machines were delivered between 1953 and 1957, one of them to Shell labs in Amsterdam. In October 1947, the directors of British catering company J. Lyons & Company decided to take an active role in promoting the commercial development of computers. The LEO I computer became operational in April 1951  and ran the world's first regular routine office computer job.

Questions and answers:
['
Q: What was the prototype for the Ferranti Mark 1?
A: The Mark 1', '
Q: What was the first available computer for the public?
A: Ferranti Mark 1', '
Q: When was the Ferranti Mark 1 built?
A: 1951', '
Q: Where was the Ferranti Mark 1 sent to after it was developed?
A: University of Manchester', '
Q: When was the LEO 1 computer first operational?
A: April 1951']
The bipolar transistor was invented in 1947. From 1955 onwards transistors replaced vacuum tubes in computer designs, giving rise to the "second generation" of computers. Compared to vacuum tubes, transistors have many advantages: they are smaller, and require less power than vacuum tubes, so give off less heat. Silicon junction transistors were much more reliable than vacuum tubes and had longer, indefinite, service life. Transistorized computers could contain tens of thousands of binary logic circuits in a relatively compact space.

Questions and answers:
['
Q: When was the bipolar transistor created?
A: 1947.', '
Q: When did transistors start replacing vacuum tubes in computers?
A: 1955']
At the University of Manchester, a team under the leadership of Tom Kilburn designed and built a machine using the newly developed transistors instead of valves. Their first transistorised computer and the first in the world, was operational by 1953, and a second version was completed there in April 1955. However, the machine did make use of valves to generate its 125 kHz clock waveforms and in the circuitry to read and write on its magnetic drum memory, so it was not the first completely transistorized computer. That distinction goes to the Harwell CADET of 1955, built by the electronics division of the Atomic Energy Research Establishment at Harwell.

Questions and answers:
['
Q: At the University of Manchester, who oversaw the building of a computer using transistors instead of valves?
A: Tom Kilburn', '
Q: The first transistorised computer was operational in what year?
A: 1953', '
Q: What did the machine use to generate its clock waveforms?
A: valves', '
Q: Who built the Harwell CADET?
A: electronics division of the Atomic Energy Research Establishment at Harwell', '
Q: In what year was the Harwell CADET built?
A: 1955']
The next great advance in computing power came with the advent of the integrated circuit. The idea of the integrated circuit was first conceived by a radar scientist working for the Royal Radar Establishment of the Ministry of Defence, Geoffrey W.A. Dummer. Dummer presented the first public description of an integrated circuit at the Symposium on Progress in Quality Electronic Components in Washington, D.C. on 7 May 1952.

Questions and answers:
['
Q: The integrated circuit of a computer was the idea of whom?
A: Geoffrey W.A. Dummer', '
Q: Where did Geoffrey W.A. Dummer work at?
A: Royal Radar Establishment of the Ministry of Defence']
The first practical ICs were invented by Jack Kilby at Texas Instruments and Robert Noyce at Fairchild Semiconductor. Kilby recorded his initial ideas concerning the integrated circuit in July 1958, successfully demonstrating the first working integrated example on 12 September 1958. In his patent application of 6 February 1959, Kilby described his new device as "a body of semiconductor material ... wherein all the components of the electronic circuit are completely integrated". Noyce also came up with his own idea of an integrated circuit half a year later than Kilby. His chip solved many practical problems that Kilby's had not. Produced at Fairchild Semiconductor, it was made of silicon, whereas Kilby's chip was made of germanium.

Questions and answers:
['
Q: Where created the first practical integrated circuits?
A: Jack Kilby at Texas Instruments and Robert Noyce at Fairchild Semiconductor.', '
Q: Where did Jack Kilby work at when he created the first IC?
A: Texas Instruments', '
Q: When was the first functional IC demonstrated?
A: 12 September 1958.', "
Q: What was Kilby's IC made of?
A: germanium", "
Q: Noyce's IC was made up of what material?
A: silicon"]
This new development heralded an explosion in the commercial and personal use of computers and led to the invention of the microprocessor. While the subject of exactly which device was the first microprocessor is contentious, partly due to lack of agreement on the exact definition of the term "microprocessor", it is largely undisputed that the first single-chip microprocessor was the Intel 4004, designed and realized by Ted Hoff, Federico Faggin, and Stanley Mazor at Intel.

Questions and answers:
['
Q: What was the name of the first single-chip microprocessor?
A: Intel 4004', '
Q: Who created the Intel 4004 microprocessor?
A: Ted Hoff, Federico Faggin, and Stanley Mazor', '
Q: Where did Ted Hoff, Federico Faggin, and Stanley Mazor work at?
A: Intel.']
With the continued miniaturization of computing resources, and advancements in portable battery life, portable computers grew in popularity in the 2000s. The same developments that spurred the growth of laptop computers and other portable computers allowed manufacturers to integrate computing resources into cellular phones. These so-called smartphones and tablets run on a variety of operating systems and have become the dominant computing device on the market, with manufacturers reporting having shipped an estimated 237 million devices in 2Q 2013.

Questions and answers:
['
Q: Computing resources that are created in cell phones are called what?
A: smartphones', '
Q: How many tablets were sold in 2Q 2013?
A: 237 million devices']
In practical terms, a computer program may be just a few instructions or extend to many millions of instructions, as do the programs for word processors and web browsers for example. A typical modern computer can execute billions of instructions per second (gigaflops) and rarely makes a mistake over many years of operation. Large computer programs consisting of several million instructions may take teams of programmers years to write, and due to the complexity of the task almost certainly contain errors.

Questions and answers:
['
Q: Billions of instructions per second are called what in computer terms?
A: (gigaflops)']
Program execution might be likened to reading a book. While a person will normally read each word and line in sequence, they may at times jump back to an earlier place in the text or skip sections that are not of interest. Similarly, a computer may sometimes go back and repeat the instructions in some section of the program over and over again until some internal condition is met. This is called the flow of control within the program and it is what allows the computer to perform tasks repeatedly without human intervention.

Questions and answers:
['
Q: When a computer goes back and repeats instructions of a program over until an internal condition is met is called what?
A: the flow of control', '
Q: What allows a computer to perform repetitive tasks without human intervening?
A: the flow of control']
In most computers, individual instructions are stored as machine code with each instruction being given a unique number (its operation code or opcode for short). The command to add two numbers together would have one opcode; the command to multiply them would have a different opcode, and so on. The simplest computers are able to perform any of a handful of different instructions; the more complex computers have several hundred to choose from, each with a unique numerical code. Since the computer's memory is able to store numbers, it can also store the instruction codes. This leads to the important fact that entire programs (which are just lists of these instructions) can be represented as lists of numbers and can themselves be manipulated inside the computer in the same way as numeric data. The fundamental concept of storing programs in the computer's memory alongside the data they operate on is the crux of the von Neumann, or stored program[citation needed], architecture. In some cases, a computer might store some or all of its program in memory that is kept separate from the data it operates on. This is called the Harvard architecture after the Harvard Mark I computer. Modern von Neumann computers display some traits of the Harvard architecture in their designs, such as in CPU caches.

Questions and answers:
['
Q: Which computer is the Harvard architecture modeled after?
A: Harvard Mark I computer', '
Q: A computer that stores its program in memory and kept separate from the data is called what?
A: the Harvard architecture']
While it is possible to write computer programs as long lists of numbers (machine language) and while this technique was used with many early computers, it is extremely tedious and potentially error-prone to do so in practice, especially for complicated programs. Instead, each basic instruction can be given a short name that is indicative of its function and easy to remember – a mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics are collectively known as a computer's assembly language. Converting programs written in assembly language into something the computer can actually understand (machine language) is usually done by a computer program called an assembler.

Questions and answers:
["
Q: A computer's assembly language is known as what?
A: basic instruction can be given a short name that is indicative of its function", '
Q: Programs that convert assembly language into machine language are called what?
A: an assembler.', '
Q: Computer programs that are long lists of numbers are called what?
A: machine language']
Programming languages provide various ways of specifying programs for computers to run. Unlike natural languages, programming languages are designed to permit no ambiguity and to be concise. They are purely written languages and are often difficult to read aloud. They are generally either translated into machine code by a compiler or an assembler before being run, or translated directly at run time by an interpreter. Sometimes programs are executed by a hybrid method of the two techniques.

Questions and answers:
['
Q: Programming languages are translated into machine code by what?
A: a compiler or an assembler', '
Q: Programming languages are translated at run time by what?
A: an interpreter']
Machine languages and the assembly languages that represent them (collectively termed low-level programming languages) tend to be unique to a particular type of computer. For instance, an ARM architecture computer (such as may be found in a PDA or a hand-held videogame) cannot understand the machine language of an Intel Pentium or the AMD Athlon 64 computer that might be in a PC.

Questions and answers:
['
Q: An ARM architecture computer can be found in what?
A: a PDA or a hand-held videogame']
Though considerably easier than in machine language, writing long programs in assembly language is often difficult and is also error prone. Therefore, most practical programs are written in more abstract high-level programming languages that are able to express the needs of the programmer more conveniently (and thereby help reduce programmer error). High level languages are usually "compiled" into machine language (or sometimes into assembly language and then into machine language) using another computer program called a compiler. High level languages are less related to the workings of the target computer than assembly language, and more related to the language and structure of the problem(s) to be solved by the final program. It is therefore often possible to use different compilers to translate the same high level language program into the machine language of many different types of computer. This is part of the means by which software like video games may be made available for different computer architectures such as personal computers and various video game consoles.

Questions and answers:
['
Q: Assembly language that is translated into machine language is done by what type of computer?
A: a compiler']
These 4G languages are less procedural than 3G languages. The benefit of 4GL is that it provides ways to obtain information without requiring the direct help of a programmer. Example of 4GL is SQL.

Questions and answers:
['
Q: An example of a 4GL is what?
A: SQL', '
Q: What is the pro of 4GL over a 3G language?
A: provides ways to obtain information without requiring the direct help of a programmer']
Errors in computer programs are called "bugs". They may be benign and not affect the usefulness of the program, or have only subtle effects. But in some cases, they may cause the program or the entire system to "hang", becoming unresponsive to input such as mouse clicks or keystrokes, to completely fail, or to crash. Otherwise benign bugs may sometimes be harnessed for malicious intent by an unscrupulous user writing an exploit, code designed to take advantage of a bug and disrupt a computer's proper execution. Bugs are usually not the fault of the computer. Since computers merely execute the instructions they are given, bugs are nearly always the result of programmer error or an oversight made in the program's design.

Questions and answers:
['
Q: Another name for errors in programs are called what?
A: "bugs', "
Q: Bugs are usually the fault of whom or what?
A: programmer error or an oversight made in the program's design"]
Admiral Grace Hopper, an American computer scientist and developer of the first compiler, is credited for having first used the term "bugs" in computing after a dead moth was found shorting a relay in the Harvard Mark II computer in September 1947.

Questions and answers:
['
Q: Who was the developer of the first compier?
A: Admiral Grace Hopper', '
Q: Who first coined the term "bugs"?
A: Admiral Grace Hopper', "
Q: What type of creature shorted a relay of Grace Hopper's computer?
A: moth", "
Q: What type of computer of Grace Hopper's was shorted by a moth?
A: Harvard Mark II", "
Q: When was Grace Hopper's Hardvard Mark II shorted by a moth?
A: September 1947"]
A general purpose computer has four main components: the arithmetic logic unit (ALU), the control unit, the memory, and the input and output devices (collectively termed I/O). These parts are interconnected by buses, often made of groups of wires.

Questions and answers:
['
Q: The ALU of a computer stands for what?
A: arithmetic logic', '
Q: Input and output devices are known as what term?
A: I/O', '
Q: Besides the ALU, input and output devices, what are the other two main components of a computer?
A: the control unit, the memory']
Inside each of these parts are thousands to trillions of small electrical circuits which can be turned off or on by means of an electronic switch. Each circuit represents a bit (binary digit) of information so that when the circuit is on it represents a "1", and when off it represents a "0" (in positive logic representation). The circuits are arranged in logic gates so that one or more of the circuits may control the state of one or more of the other circuits.

Questions and answers:
['
Q: A circuit in a computer part represents what?
A: a bit (binary digit) of information', '
Q: In positive logic representation a "1" represents when a circuit is what?
A: on', '
Q: In positive logic representation a "0" represents when a circuit is what?
A: off']
The control unit (often called a control system or central controller) manages the computer's various components; it reads and interprets (decodes) the program instructions, transforming them into control signals that activate other parts of the computer. Control systems in advanced computers may change the order of execution of some instructions to improve performance.

Questions and answers:
['
Q: What are other names for a control unit for a computer?
A: a control system or central controller)', '
Q: Reading and interpreting from a control unit is called doing what?
A: (decodes']
A key component common to all CPUs is the program counter, a special memory cell (a register) that keeps track of which location in memory the next instruction is to be read from.

Questions and answers:
['
Q: A special memory cell of a CPU is called what?
A: a register', '
Q: A register of a CPU keeps track of what?
A: which location in memory the next instruction is to be read from', '
Q: What is a component that all CPUs have?
A: the program counter']
Since the program counter is (conceptually) just another set of memory cells, it can be changed by calculations done in the ALU. Adding 100 to the program counter would cause the next instruction to be read from a place 100 locations further down the program. Instructions that modify the program counter are often known as "jumps" and allow for loops (instructions that are repeated by the computer) and often conditional instruction execution (both examples of control flow).

Questions and answers:
['
Q: In what part can the program counter be changed by calculations?
A: the ALU', '
Q: Instructions that change the program counter are called what?
A: "jumps"', '
Q: Loops are defined as what?
A: instructions that are repeated by the computer)']
The sequence of operations that the control unit goes through to process an instruction is in itself like a short computer program, and indeed, in some more complex CPU designs, there is another yet smaller computer called a microsequencer, which runs a microcode program that causes all of these events to happen.

Questions and answers:
['
Q: In some CPU designs there is tinier computer called what?
A: microsequencer', '
Q: A microsequencer can be found in what other computer component?
A: CPU']
The control unit, ALU, and registers are collectively known as a central processing unit (CPU). Early CPUs were composed of many separate components but since the mid-1970s CPUs have typically been constructed on a single integrated circuit called a microprocessor.

Questions and answers:
['
Q: The CPU is an abbreviation for what?
A: central processing unit', '
Q: What 3 parts make up the CPU?
A: The control unit, ALU, and registers', '
Q: CPUs that are constructed on a single integrated circuit are called what?
A: a microprocessor', '
Q: Since when have CPUs been constructed with a microprocessor?
A: mid-1970s']
The set of arithmetic operations that a particular ALU supports may be limited to addition and subtraction, or might include multiplication, division, trigonometry functions such as sine, cosine, etc., and square roots. Some can only operate on whole numbers (integers) whilst others use floating point to represent real numbers, albeit with limited precision. However, any computer that is capable of performing just the simplest operations can be programmed to break down the more complex operations into simple steps that it can perform. Therefore, any computer can be programmed to perform any arithmetic operation—although it will take more time to do so if its ALU does not directly support the operation. An ALU may also compare numbers and return boolean truth values (true or false) depending on whether one is equal to, greater than or less than the other ("is 64 greater than 65?").

Questions and answers:
['
Q: Some trigonometry functions are what?
A: sine, cosine,', '
Q: The term for whole numbers is what?
A: (integers']
Logic operations involve Boolean logic: AND, OR, XOR, and NOT. These can be useful for creating complicated conditional statements and processing boolean logic.

Questions and answers:
['
Q: Boolean logic consists of what?
A: AND, OR, XOR, and NOT']
Superscalar computers may contain multiple ALUs, allowing them to process several instructions simultaneously. Graphics processors and computers with SIMD and MIMD features often contain ALUs that can perform arithmetic on vectors and matrices.

Questions and answers:
['
Q: Computers that have multiple ALUs are called what?
A: Superscalar']
A computer's memory can be viewed as a list of cells into which numbers can be placed or read. Each cell has a numbered "address" and can store a single number. The computer can be instructed to "put the number 123 into the cell numbered 1357" or to "add the number that is in cell 1357 to the number that is in cell 2468 and put the answer into cell 1595." The information stored in memory may represent practically anything. Letters, numbers, even computer instructions can be placed into memory with equal ease. Since the CPU does not differentiate between different types of information, it is the software's responsibility to give significance to what the memory sees as nothing but a series of numbers.

Questions and answers:
["
Q: How many numbers can a cell of a computer's memory hold?
A: a single number", "
Q: What is the responsibility of giving significance to what the memory sees as nothing but numbers?
A: the software's"]