One of the differences for this version of the hangman game is that we have chosen a fairly small dictionary of words from the world of Computing compared to the Oxford English dictionary and we have listed this Dictionary for you to use. We shall be adding Computing words and their meanings to it as we go.
First, we are looking for a stragegy for playing hangman as a human being, and to find ways to
express this as an algorithm.(see Human Solutions, Hints below).
Then, perhaps, we may look to see if the computer can help us in different ways to play more effectively.
Our final goal is to devise algorithms in which the computer plays the game! We may be able to build a program in which the computer is more successful than humans at playing hangman. We are taking a meaningful look here at Artificial Intelligence. In all these tasks there are plenty of different solutions.
We can test how well we are playing the game as a human by using the Test Hangman program over 5 games.
We might then improve our rating in the Test Hangman program by playing Hangman using some computer tools that are available: 'Scanner' and 'Reduce Dictionary' buttons. See Hints 6,7 below.
The challenge that we are making is:
At the start of the game the computer, which hosts the game, chooses a word randomly from the Computing dictionary, which is a small dictionary compared to the English dictionary and you are able to scan through it in minutes should you wish. The computer then prints a set of underlines in a template, which tells us how many letters are in the word, say it is 7. So when we go looking through the dictionary we only have to consider the words with 7 letters. We will come back to this later...
Remember only 5 incorrect guesses and you are out on the sixth wrong guess. A correct guess and the letter is entered in the template (the random word pattern) as many times as it occurs in the word. Which letter(s) do we start with? Why would we consider the vowels
a,e,i,o,u?And why y? And in what order? ('insubordinately' has all 6.) It is rare in English to have 4 or more consecutive consonants in a word. Would that figure in your strategy?
The eight most frequently occurring letters in the English Oxford dictionary in order are:
e a r i o t n sWould you make use of this information in your strategy?
When we have guessed a number of the letters in the word (but not exceeded 5 incorrect guesses) and our template looks like
_a__ernsay, we look at the combination of letters and underlines and rack our brains to see if we know words that would fit the word template/pattern, or letter combinations that would fit and go together in the word. For example, if the word ended
__i_nand we had already guessed e and a, what letter would you guess to go in between i and n? If you get to 4 or 5 guesses down and you have racked your brains and can't see a pattern and you don't recognise a potential word, what do you do? Hazard another guess? Or use the 'Scanner' button!
Because our dictionary is relatively small we could compare our template against each word in the dictionary to see if we could find a word that matches. On the hangman page, when we scroll down we have enlisted the help of the computer by arranging for our template to scroll down with us to make the comparison easier. In our example, we would be looking for the 7 letter words in the dictionary, which fitted the template. But we can do more:
Press the 'Scannner' button to enlist the help of the computer to transform the dictionary words into a format similar to the template. Scroll down the page when you want to find a match of your incomplete template with a word in the Computing dictionary. What do you do now, when you find a match?
Make your human computer-aided algorithm explicit in pseudocode or a flow diagram.
See if you can use your your own 'human' algorithm, together with how the computer helped you, as a basis for developing an algorithm which describes how the computer might play the game. There are many solutions to this problem. Can you make one happen in Python 3?
This algorithm incorporates the idea of the scanner. When we get to pattern matching, it is the computer that has to recognise the pattern match between the incomplete word template and a word in the dictionary, not your eyes and brain. How does it do it? Can you program it? Remember the Computer here sees a word as a linear pattern: as an ordered string of characters and that is how, in this instance, we will program it. The computer's name in our version is 'Ruby'.
|Random Word||Description and Meaning|
|heuristic||(2) heuristic (technique), (Ancient Greek: find or discover, often called simply a heuristic, is any approach to problem solving, learning, or discovery that employs a practical method, not guaranteed to be perfect, but instead sufficient for reaching an immediate goal. Examples that employ heuristics include using a rule of thumb, an educated guess, an intuitive judgment, a guesstimate, or common sense.See more here in Wikipedia|
|algorithm||In mathematics and computer science, an algorithm is an unambiguous specification of a design or how to solve a problem. Algorithms can perform calculations, data processing and automated reasoning tasks. and in 'computational thinking' and programming See more here in ispython.com|
|template||something that establishes or serves as a pattern|
|pseudo-code||is an informal high-level description in common English of an algorithm computer program. It uses the structural conventions of a normal programming language, but is intended for human reading rather than machine reading.More here in Wikipedia|
|artificial||(intelligence)(AI), sometimes called machine intelligence, is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and other animals. In computer science AI research is defined as the study of 'intelligent agents': any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. Colloquially, the term 'artificial intelligence' is applied when a machine mimics 'cognitive' functions that humans associate with other human minds, such as 'learning' and 'problem solving'.|
|flow-chart||a diagram of an algorithm with arrows, like pseudocode but with drawings, which shows visually how something will work|
|ethics||deciding what is morally right and wrong in computing -- and in life|
|media||mobiles, ipads, laptops, television, newspapers, facebook, instagram...|
|privacy||keeping yourself and your personal information data safe when off and online|
|teamwork||working together cooperatively, pulling together, turning a group into a team|
|pairs||working in pairs to learn and practice programming is a practical way to get through that initial slog of learning to work on problem solving and programming|
|perseverance||sticking at it, hanging in there; important for programming -- and for living|
|resilience||bouncing back, (from failure), important for programming especially when dealing with mistakes in programming -- and for living|
|when your stuck with an error in programming, throw it to Google. Information needed Google it.|
|resource||in computing try Computing at School website|
|sequence||one of the 5 control structures in programming, which illustrates the importance of the order in which a set of operations is performed|
|repetition||one of the 5 control structures in programming, an essential tool variously described as looping where a sequence of operations in a program needs to be repeated|
|function||one of the 5 control structures in programming, where a useful set of operations is given a name, which is used to call the set of operations into action, wherever it is required. Returns a value.|
|selection||one of the 5 control structures in programming, which helps to implement choices and decisions in a program, usually involving if statements|
|procedure||like a function, that can be used again and again but doesn't return a value.|
|communication||one of the 5 control structures in programming, where a program requires to exchange information with the outside world, sometimes called input/output (I/O)|
|integer||a data type in programming languages, representing a whole number positive or negative|
|floating||or floating point number, a type of number, with a decimal point|
|boolean||a simple data type having just two possible values: true and false|
|field||name for a single element of data in a record in a file|
|syntax||refers to the spelling and grammar of a programming language. Computers are inflexible machines that understand what you type only if you type it in the exact form that the computer expects. The expected form is called the syntax.|
|binary||numbers expressed in the base of two, using 0 and 1 only;|
|ternary||numbers expressed in the base of three, instead of 10, using 0, 1 and 2 only;|
|octal||numbers expressed in the base of eight, instead of 10, using 0, 1, 2,3 4, 5, 6 and 7 only;|
|decimal||numbers expressed in the base of 10, using 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9 only;|
|hexadecimal||numbers expressed in the base of sixteen, instead of 10, using 0, 1, 2,3 4, 5, 6, 7, 8, 9, a, b, c, d, e ond f|
|debug||find and eliminate errors in a computer program whether they are syntax errors like spelling mistakes in the writing of the program, or logical errors of faulty thinking discovered during run-time.|
|source||(code) a program written in a high-level language before being compiled|
|equation||in mathematics, a statement that the values of two mathematical expressions, the left hand side and the right hand side are equal; equation is a word with all the vowels.|
|rhythm||(from Greek ῥυθμός, rhythmos, 'any regular recurring motion, symmetry' generally means a 'movement marked by the regulated succession of strong and weak elements, or of opposite or different conditions. It's also a 6 letter word without a vowel!|
|matching||patterns, in computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern|
|symmetry||(from Greek συμμετρία: symmetria) in nature, science, mathematics, agreement in dimensions, due proportion, arrangement. In everyday language refers to a sense of harmonious and beautiful proportion and balance.|
|byte||a group of binary digits or bits (usually eight) operated on as a unit: computer data A byte is considered as a unit of computer memory size.|
|kilobyte||(KB), 1KB is 1,024 bytes of information.|
|megabyte||(MB), 1MB is 1,024 kilobytes of information. See here|
|gigabyte||(GB), 1GB is 1,024 megabytes of information.|
|terabyte||(TB), 1TB is 1,024 gigabytes of information.|
|petabyte||(PB), 1PB is 1,024 terabytes of information.|
|deductive||Deductive reasoning, also deductive logic, logical deduction is the process of reasoning from one or more statements (premises) to reach a logically certain conclusion.See more here in Wikipedia|
|inductive||inductive reasoning is a method of reasoning in which the premises are viewed as supplying some evidence for the truth of the conclusion (in contrast to deductive reasoning and abductive reasoning). While the conclusion of a deductive argument is certain, the truth of the conclusion of an inductive argument may be probable, based upon the evidence given. See more here in Wikipedia|
|logistics||is generally the detailed organization and implementation of a complex operation. In a general business sense, logistics is the management of the flow of things between the point of origin and the point of consumption in order to meet requirements of customers or corporations. See more here in Wikipedia|
|algorithmic||(thinking); in the context of computational thinking, is trying to organise a design or solution to a problem as an ordered set of rules or processes to be followed, particularly by a computer See more here in ispython.com|
|decomposition||in the context of 'computational thinking', describes the process of breaking a larger problem down into smaller modular components. See more here in ispython.com|
|abstraction||in the context of 'computational thinking', describes the process of reducing complexity by using and creating tools, which hide the details of their operations.See more here in ispython.com|
|generalisation||in the context of 'computational thinking', adapting solutions so that they can be used to solve a wider range of problems.See more here in ispython.com|
|evaluation||in the context of 'computational thinking', assessing whether a program or technique works correctly and efficiently.See more here in ispython.com|
|creativity||in the context of 'computational thinking, devising alternative designs or solutions'|
|computational||computational thinking. 'Why' and 'How to' are the the essential foci of computational thinking, followed closely by other'solution-seeking' questions like 'With Whom', 'With What', 'When', 'Where' … engaging a myriad of allied thought processes.See more here in ispython.com|
|education||is the process of facilitating learning, thinking, problem solving, creativity, and the acquisition of knowledge, skills, values, beliefs, and habits. It's also a word that has all 5 vowels.|
|pedagogy||a model of teaching and learning; for Computer Science and programming see See more here in ispython.com/tao|
|enquiry||enquiry-based learning is a form of active learning that starts by posing questions, problems or scenarios—rather than simply presenting established facts or portraying a smooth path to knowledge.|
|discovery||learning is a technique of enquiry-based learning and is considered a constructivist based approach to education. It is also referred to as problem-based learning, experiential learning and 21st century learning. It is supported by the work of learning theorists and psychologists Jean Piaget and Seymour Papert. Although this form of instruction has great popularity, there is some debate in the literature concerning its efficacySee more here in Wikipedia|
|intuitive||discovery, using or based on what a human feels to be the case even without conscious reasoning; instinctive. Unlikely to be part of a computer's repertoire of articial intelligence|
|machine||(language) or machine code is the lowest-level programming language (except for computers that utilize programmable microcode). Machine languages are the only languages understood by computers.|
|hardware||Computer hardware includes the physical, tangible parts or components of a computer, such as the central processing unit, monitor, keyboard, computer data storage, graphic card, sound card, speakers and motherboard.|
|central||(processing unit)(CPU) is the electronic circuitry within a computer that carries out the instructions of a computer program by performing the basic arithmetic, logic, controlling and input/output (I/O) operations specified by the instructions. The computer industry has used the term 'central processing unit' at least since the early 1960s. Traditionally, the term 'CPU' refers to a processor, more specifically to its processing unit and control unit (CU).|
|analog||in computing, relating to or using signals or information represented by a continuously variable physical quantity such as spatial position, voltage, etc.|
|analogue||in computing, relating to or using signals or information represented by a continuously variable physical quantity such as spatial position, voltage, etc.|
|software||is a collection of data or computer instructions that tell the computer how to work. This is in contrast to physical hardware, from which the system is built and actually performs the work. See more here in Wikipedia|
|python||an interpreted, high-level, general-purpose programming language. and has a design philosophy that emphasizes code readability, notably using significant whitespace. Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.|
|assembler||a low-level mnemonic programming language in 1-1 correspondence with a computer's instructions|
|argument||in computer programming, a value provided to a function when the function is called; this value is assigned to the corresponding parameter in the function|
|graphics||(computer) are pictures and films created using computers. Usually, the term refers to computer-generated image data created with the help of specialized graphical hardware and software. It is a vast and recently developed area of computer scienceSee more here in Wikipedia|
|callback||also known as a 'call-after' function, is any executable code that is passed as an argument to other code that is expected to call back (execute) the argument at a given time. This execution may be immediate as in a synchronous callback, or it might happen at a later time as in an asynchronous callback.|
|array||is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. An array is stored such that the position of each element can be computed from its index tuple by a mathematical formula. The simplest type of data structure is a linear array, also called one-dimensional array.|
|database||is a collection of information organized in such a way that a computer program can quickly select desired pieces of data. You can think of a traditional database as an electronic filing system, organized by fields, records, and files.|
|interpreter||is a program that executes a high-level language program, usually a script language, an instruction at a time.|
|compiler||is a program that translates source code into object code. more here in Wikipedia|
|bandwidth||In computing, bandwidth is the maximum rate of data transfer across a given path.See more here in Wikipedia|
|YouTube||the world of video See more here in Wikipedia|