Course Summary



-63521831400Tao of Computational Thinking in Programming Human Solutions in Unplugged Programming in English Mapping to Program Solutions in Scratch or Python 14263316035Starting to Draw a 3x3 grid with rectangles: Push Button Unplugged Programming in ISPYFrom Human Solutions to Program SolutionsDave White & Rae Harbird Department of Computer Science UCLContents TOC \o "1-3" \h \z \u 2Course Summary PAGEREF _Toc507918894 \h 33Rationale PAGEREF _Toc507918895 \h 33.1Our Core Approach: Project-based and Problem-Solving Oriented PAGEREF _Toc507918896 \h 34Beginners in Programming PAGEREF _Toc507918897 \h 44.1Example 1: Teaching at the KS2/KS3 Interface PAGEREF _Toc507918898 \h 45Let’s Go: A Session in Practice for Teachers PAGEREF _Toc507918899 \h 65.1Computational Thinking for a Human Solution PAGEREF _Toc507918900 \h 65.2Our Unplugged Programming Tool box: PAGEREF _Toc507918901 \h 65.3Computational Thinking for a Computer Solution PAGEREF _Toc507918902 \h 76Functions/Procedures/Subroutines PAGEREF _Toc507918903 \h 77Repetition PAGEREF _Toc507918904 \h 87.1Examples 1: Cracking the Code PAGEREF _Toc507918905 \h 97.2Examples 2: Creating the Code Using Repeat Where Possible PAGEREF _Toc507918906 \h 108Using (Defining) Functions/Procedures PAGEREF _Toc507918907 \h 128.1Practice Examples 3: Cracking the Code Using the Full Toolbox 1 PAGEREF _Toc507918908 \h 168.2Examples 4: Creating Code Using the Full Toolbox 1 PAGEREF _Toc507918909 \h 178.3Graded Challenges PAGEREF _Toc507918910 \h 218.ispy PAGEREF _Toc507918911 \h 228.2Booklet 2 Next Challenge: Pixels and Colouring a background on a grid in ISPY (Toolbox 2) PAGEREF _Toc507918912 \h 228.3Booklet 3 PAGEREF _Toc507918913 \h 229Where Are We Heading? PAGEREF _Toc507918914 \h 229.1Moving from Unplugged Programming on ISPY to Scratch and Python PAGEREF _Toc507918915 \h 24Course SummaryThis is a Course in the pedagogy, and the computational thinking that underpins a creative problem solving approach to (learning) programming for Teachers of KS2/KS3+ pupils. The resources for the Course are freely available. Selecting cross-curricula problem domains, which yield exciting, fertile problems for teachers and pupils to explore is axiomatic to our approach both in learning how to program and in developing the skills of programming.For beginners, we start with the 2-D plane grid, using ‘human’ robots, paper and pencil, to derive many algorithms for human solutions to a simple linear grid problem. We express a human solution in a program of robot motion instructions directly related to the sprite/turtle instructions, using a set of commands bringing to bear the powerful programming concepts of??sequence, repetition and functions?in English. We?transfer these English programs with the same commands in abbreviated form to the ISPY,?push button, platform.Later on, we extend our problem domain to the full 2D geometric plane?and create programs to draw intricate symmetrical geometrical patterns with polygons/stars/circles/spirals on the ISPY platform. The result: we are then able to transform a human solution into a program solution. We are then in a position to map directly our instructions and programs into the more formal, rigorous and disciplined forms and processes necessary to drive the sprite in?the Scratch 2.0, or the turtle in the Python 3 programming environments, respectively.Making the pedagogy explicit for teachers, and the computational thinking explicit for pupils in the process, is a fundamental underpinning in this Course delivery.Rationale Our Core Approach: Project-based and Problem-Solving Oriented Develop an ongoing pedagogy in computing (pedagogy) guided by: current research findings, classroom experience, existing expertise in other disciplines. And remain open to further action-research in the classroom. Select a cross-curricula problem domain, interesting and fun for pupils to explore, and fertile in problems to solve both by human and program Choose a basic appropriate unplugged programming toolbox in which to design and create usertools for problem solving in this domain. Implement the simple, but general, paradigm for problem solving in computing: program(toolbox + user-created tools) = solutions Harness computational thinking in achieving a human solution in unplugged programming commands in English, trying them out on ISPY, by which time the solution can easily be mapped into a programmed solution with the Scratch sprite or the Python turtle. Beginners in ProgrammingExample 1: Teaching at the KS2/KS3 Interface Here we are embarking on a path to teach beginners -- computational thinking in programming via unplugged programming in English. The pedagogy we employ, choice of problem domain, examples, programming toolbox, and computational thinking is geared to delivering the start of a pathway, which is suitable for teaching beginners in the KS2/KS3 spectrum. Our pedagogy, which we try to make explicit, in the process of delivery for teachers, for this problem includes: Investigating human solutions with pencil and paper Unplugged programming in English as our programming language: human robot ‘Walking the Talk’ solutions Enquiry-led learning Read code before you write code Opportunities for experimenting and learning by doing problem solvingGuidance in graded problems to promote computational thinking in programming Looking at different solutions (generalising and evaluating) Transferring our drawing/walking solutions and our robot to the screen with ISPY (red arrow) – unplugged push-button scaffolded programming for beginners And later, Scratch (sprite) Or Python (turtle) We have chosen a 2-D rectilinear grid as our first problem domain. The advantages of this and the follow-up domain are: that the developing programming produces a visual graphical response. (Enhanced to be an immediate interactive response with ISPY, see Section 5). Symmetry and pattern in drawings can be used in computational thinking to link symmetry and pattern in the code via the programming control structures of sequence, repetition and functions.The specific problem we start with: build a program to draw the Aqado game board in Figure 1. (part of an AQA GCSE 2015 controlled assessment assignment). Figure 1: AQADO board and our simplified model. Aquado Board A Simplified 3x3 Grid 3. We use the 3 basic motion instructions in English, with shorthand version, for line drawing, which match the motion instructions for Seymour Papert’s turtle, or the Scratch sprite. And we introduce immediately the 3 powerful programming control structures: sequence, repetition and functions to make up our programming toolbox. Figure 2. Toolbox Instructions Basic robot instructions in unplugged programming language (UPL) with corresponding instructions inScratch and Python 64135-199898000Let’s Go: A Session in Practice for Teachers In what follows we write in italics a pathway of instructions set in imperative mode that we have used in previous sessions with teachers/pupils and the pathway is intended as a guide. You may find that changing the order of drawing solutions and the robot walking could be interchanged. Or you spend longer and expound a particular section. (Answers, illustrations, suggestions… are in brackets). They are intended to illustrate pedagogical ideas e.g enquiry-led learning, and as an aid to a teacher’s creation of their own lesson deliveries. Computational Thinking for a Human Solution Show Aqado and reduced model. Figure 1. We are going to look at solutions to a simpler problem. (Decomposition: Simplifying our problem with a model of a simple 3x3 grid of squares --- hiding a lot of the detail of the problem. (Abstraction) Give out paper and pencil. Ask each person just to draw a square. Ask them to describe how they did it. Are they aware of how they did it. (Their algorithm for a human solution. Did they raise the pen from the paper? Can they draw it without lifting their pen?). How do you make sure a 4-sided figure is a square. (a) Is 4 equal sides enough? (Counter example? Diamond) (b) Is four equal internal angles enough? (Counter example? Rectangle). So a 4-sided figure with 4 equal sides and 4 equal internal angles is enough to define a square. (Useful definition which generalises to polygons, e.g. a regular pentagon is a five sided figure with 5 equal sides and 5 equal internal angles). Ask each person to draw the 3x3 grid of squares.(Figure 1) Draw attention to the symmetry in the grid. Ask them to draw the 3x3 grid again ‘systematically’ as if they might be asked to do a 4x4 or a 10x10 grid…(Generalisation) Give them a hint: What do you see in the model as potential building blocks/templates to repeat in order to draw the model ‘systematically’. (Lines, rectangles, squares)In small groups ask them to collaborate to make 3 or 4 really different solutions, using lines, and/or squares and/or rectangles. Ask them to choose one solution to program which seems easiest – maybe one that we can generalise. (Evaluation) Our Unplugged Programming Tool box: ‘Walking the Talk’ with the 3 instructions, in UPL or (unplugged programming language) to drive the robot. These instructions are common to Scratch, Python, (and other languages which implement the turtle). Together with the universal programming control structures of sequence, repetition and functions. Computational Thinking for a Computer Solution We could get the computer to mimic the human solution exactly? Or we can try to harness directly the properties and capacities of our toolbox, by experimenting with the instructions and introducing verbally the programming control structures sequence, repetition and functions. Find out if everybody knows what characterises a robot/sprite/turtle/ in the plane when we want it to move? (Enquiry-led learning). Answer: (position, direction). We shall use ‘robot’ here to mean any one of robot/red arrow/sprite/turtle.Ask everybody (who agrees to) to stand up and be a robot. Get the participants to inhabit the role of robot. A robot faces to the right as the handler views them, and chooses enough space in front and to their left to allow at least one pace forward or to the left. (If you think of the floor as a page on which they leave a trail (a drawing), they are standing at the bottom of the page and the top of the page is to their left). Figure 3. The system commands for the robot. 3317443-153698 forward1, fd1 left turn, lt right turn, rt “Begin at the beginning," the King said, very gravely,"and go on till you come to the end: then stop.”--- Lewis Carroll, Alice’s Adventures in Wonderland &Through the Looking-Glass Functions/Procedures/Subroutines The English instructions left turn or shortly: lt; right turn: rt are functions. They stand for fairly complex code (machine code) which is hidden (abstraction). (There is no parameter for these instructions the turn is through 90 degrees, understood – this changes later when we move from the grid to an extended problem area – the whole 2-D plane). forward4, fd4 is move forward 4 paces and draw as you go, --- again a function this time with a parameter --- the number of paces -- 4. Get the robots moving --- give the commands in English, our unplugged programming language, with hesitation after each line: left turn left turn left turn left turn…………………(1)But we write the equivalent in abbreviated form in UPL, our unplugged programming language : lt lt lt lt…………………………(1) This is their very first program – an unplugged program. Ask them to describe what happened. What did they hear? (They turn completely around, on the same spot, facing in the original direction. We call a program which involves the robot returning to its starting position and starting direction, a return program. They hear repetition. Programming languages contain repeat structures).Repetition So ask the robots to recognise their ‘wired in’ repeat ability. Ask them to obey a program making use of this ability. Suggest that when they move they are drawing on the ground as they move. And give them the command in English using intonation (or explanation) to insert the brackets: repeat 4 times [left turn]………………(2)and we include our abbreviated UPL equivalent: repeat 4[lt]………………………………(2)Suggest that when they move they are drawing on the ground as they move. Give them another program with commands in English --- each line is: forward 1, left turnforward 1, left turnforward 1, left turnforward 1, left turn…………………(3)and in our abbreviated UPL form: fd1 lt fd1 lt fd1 lt fd1 lt………………………………(3) Again, ask them to describe what happened --- what did they draw? (Have they noticed that it’s a return program again?) Give the robots another command (with intonation to insert the brackets!): repeat 4 times [forward 1 left turn]……………(4)repeat 4[fd1 lt]…………………(4) and watch them obey, a shorter program, with one command, to achieve the same effect. Ask them what did they draw. (square). What sort of program is it? (Return program) We are looking for: Repetition -- Symmetry in the shape drawn and in the code. See if they can obeyrepeat 4[fd2 lt]…………………(5)Examples 1: Cracking the CodeGive the following commands and ask the robots to identify: what shapes they draw, and if the program is a return program. Remind them that they are standing at the bottom of a page and the top of the page is to their left. forward 2 left turn left turn forward 2 right turn forward 3 (Letter: capital L, No) repeat twice [forward 2 left turn left turn] repeat twice [forward 3 left turn left turn] (Letter: capital L, Yes) left turn forward 1 right turn repeat twice [forward 1 left turn left turn] left turn forward 1 right turn repeat twice [forward 1 left turn left turn] (Capital F, Yes) So far, by acting as a robot, we gain an understanding of the three motion instructions and the how the structures sequence and repetition are executed. This is an active way of reading the programs to get their meaning. We now ask the students to solve problems by driving the robot. In effect we are asking them to engage in the logic, recognition and creativity necessary to use the toolbox of the three motion instructions with the programming structures: sequence and repetition to solve the following grid problems. Examples 2: Creating the Code Using Repeat Where PossibleFind human drawing solutions to the diagrams in Figure 4 looking for symmetry in the drawing where you may be able to repeat an action in the drawing. Then write your drawing actions out as a sequence of robot commands in English (a program) using the repeat command wherever it is possible to address the symmetry in the figure. (Our robot is represented by a red arrow, with its starting point the docking station arrow in black and white. A return program is indicated by the red arrow finishing docked in the docking station as in Figures 4(c),(d).Figure 4.11430119380-12065106680190583820-209556477004(a)4(b)4(c)4(d)(We give a number of solutions to each problem. A correct solution is one that draws the diagram. We are hoping the students start to connect with the symmetry in the shapes and recognise how the repeat instruction can exploit the symmetry. We encourage the students to use the abbreviated form of UPL, when writing programs where instructions can be written on a line and continued on the next line. The symmetry (and repetition) can more easily be picked out by aligning repetitive sequences of instructions.fd1 lt fd1 rt fd1 lt fd1 rt fd1 lt fd1 rt …………………………………(6) repeat 3[fd1 lt fd1 rt]…………(6)fd1 lt fd1 lt fd1 lt fd1……………………………………………………………..(7) repeat 3[fd1 lt] fd1……………………(7)fd1 lt fd1 lt fd1 lt fd1 lt ………………………………………………………(8) repeat 4[fd1 lt]………………………………(8)fd1 lt fd1 lt fd1 lt fd1 lt fd1 fd1 lt fd1 lt fd1 lt fd1 lt fd1 lt lt fd2 lt lt…………………………………(9) repeat 2[fd1 lt fd1 lt fd1 lt fd1 lt fd1] lt lt fd2 lt lt……………………………….(9) Using (Defining) Functions/ProceduresIn looking for different human drawing solutions to the 3x3 grid problem, we looked at different building blocks to help us, namely lines, squares and rectangles. We now give function names to the code that produces these building blocks. A simple example of a function is: about turn, or at which we define as lt lt……………(10)(In the code following you can replace the two instructions lt lt wherever they occur, by the single (user-defined function) instruction at ) Now call upon their ‘wired in’ understanding of functions and name the code in(8)or(8)! square 1, a function with a parameter ‘pace’, which could be 1, 2, 3 … paces along a side of a grid, in a similar vein to the function command forward 1,2,3… paces, or sq1 (for short when we write it, or when we push buttons on the ISPY screen), again like fd1, fd2, fd3, … (In unplugged we have to define a user function by the code we name but, helpfully, we define and use it without having to introduce the mechanism of a formal syntax definition for the function or its parameter).{**The formal syntax for this notation we introduce in later sessions, when we are ready to introduce the equivalent definitions in Python 3 and/or Scratch 2.0More formally, we use ‘?’ as our symbol for ‘defining’ a function with a parameter p in writing: square p or sqp ? repeat 4[fdp lt]…………………(11) Where p can take values (arguments) 1, 2, 3… ** } Give the command: square 2……………………(12) sq2……………………(12)We define two more building blocks as user-defined functions to complete our toolbox to help us with alternative solutions to the 3x3 grid problem, where from our attempts at human solutions, we see that the building blocks: square, rectangle and line(return) may be useful in program solutions.We name the instruction in English and describe it in terms of paces with an example:Fetch is the instruction I give my dog when I throw a ball for her to retrieve. If I am lucky, she will bring the ball back to me and face forward again ready to go again. (return program!)So in English we give the equivalent definition fetch 2 and get the robots to obey:what fetch 2 means, namely: forward 2left turnleft turnforward 2left turn left turn……………………(13)or in abbreviated form, with more than one instruction on a line, which can help to identify the symmetry in the code:fd2 lt lt fd2 lt lt…………………(13)or using the repeat command: repeat twice[forward 2 left turn left turn]……(14) repeat 2[fd2 lt lt]………..………………………………………………………(14)(and yes it is a return program). (We could shorten the definition by using the repeat function above. [See formal definition()]. But once defined we can forget about the instructions inside, (abstraction) and just use the function name fetch with its argument the number of paces, which could be 1, 2, 3, … and in this case 2, with an abbreviated form fe2. This is the paradigm for all functions and procedures in programming.Now give the command fetch 3 to the robots to see if they recognise that the 3 in fetch 3 operates like the 3 in forward 3 that is, as an argument for the function, which we can change when we issue the instruction. fetch 3…………………………(15)or in abbreviated written form: fe3……………………………………(15)Lastly to complete our tool box, we add the user-defined function rectangle.{** formally:a (return) line: fetchp (fep) ? repeat 2 (fdp lt lt)………………………………………(16)and a (return) rectangle: rectanglep (rep) ? repeat 2 [fdp lt fd1 lt]……………….(17) (a rectangle is here defined to have a variable length parameter: p paces, and a fixed breadth of 1 pace). **}(For more practice at reading programs before we write them, divide into pairs, handler and robot, and the handler uses instructions in the following examples to the robot partner to draw) and for the pair to determine what the shape is that the robot is drawing. (The examples could also be done with paper and pen in pairs or individually) (Alternatively, see Figure 4 below for the 3 basic commands and user defined commands in ISPY should you wish to move to push button programming at this stage) Figure 4. Snapshot of ISPY in action. Push-button code for drawing the example of three squares as a Return program. The code is recorded instruction by instruction as the push-button program is built. The push-buttons lower down(green) represent the user-defined tools (functions) for project 1. It should now be possible to program solutions in UPL to Project 1: 3x3 grid, using Toolbox 1. And to evaluate your solutions and see if you are able straightforwardly to generalise to, say, drawing a 10x10 grid. And decide which solution is best from this viewpoint.Alternatively, you could use the practice examples of reading and cracking the code in Figure 5 below, or creating code for drawings in Figure 6, before proceeding to program solutions for Project 1. The programs in all cases are executable as a push button sequence in ISPY with Toolbox 1. The transfer of UPL programs to Scratch or Python is later an automatic 1-1 mapping process once students learn the corresponding motion instructions in the language, and how to define functions to implement the ‘user-defined’ instructions: square, rectangle and fetch.Practice Examples 3: Cracking the Code Using the Full Toolbox 1(* represent the degree of difficulty. No star straightforward)Figure 5.111669850Examples 4: Creating Code Using the Full Toolbox 1(For robot practice, divide into pairs, handler and robot, and the handler uses instructions to the robot partner to draw some capital letters: e.g. I, L, F, E, T, P, 9 or combinations of square and write down the corresponding return programs. The handler can, in each case, build the code for the letter from the three instructionsby taking note of symmetry in the drawing, use the repeat control structure in the program by identifying building blocks for the drawing, include user-defined functions in the program. Figure 6. Repetition and Return programs using Toolbox 11905-111188500 -1905-68135500 0202565 (a) (b) (c) (d) (e) (f) (g) (h) Some Solutions Figure 6.fd1 lt fd1 lt fd1 lt fd1 …………………………(18) repeat 3[fd1 lt] fd1………………………………………………………(18) repeat 2[sq1 fd1]…………………(19) repeat 2[sq1 fd1] lt lt fd2 lt…………(20) fd1 lt fd1 rt fd1 lt fd1 rt fd1 lt fd1 rt…………(21) repeat 3[fd1 lt fd1 rt]…(21) fd1 lt lt fd1 rt fd2 lt lt fd2 lt……………………(22) ltfd1 rt fd1 lt lt fd1 rtfd1 rt fd1 lt lt fd1 rt lt lt fd1 lt fd2 lt……………………(23) lt repeat 2[fd1 rt fd1 lt lt fd1 rt] lt lt fd1 lt fd2 lt………………….(23) lt fd2 rt fd1 rt fd1 rt fd1 lt fd1 lt…………………………………(24) lt fd1 rt sq1 rt fd1 lt ………………………………(24) sq1 lt lt sq1 lt lt…………………………………(25) repeat 2[sq1 lt lt]………(25)The above code introduces and illustrates our programming paradigm program(toolbox + user-created tools) = solutions by making use of: the toolbox instructions fd, lt and rt repeat programming control structure functions: user-defined function square p (sqp), fetch p (fep), and rectangle p (rep) where p stands for 1, 2, 3, …For letter E, the code might be fe1 repeat 2[lt fd1 rt fe1]……………………………………………………………(13) These are more examples of user-defined functions --- the building blocks identified in the discussed solutions. This illustrates the problem solving paradigm: Choose your toolbox for the problem, and create more tools (functions) to represent the physical building blocks for your drawings as you need them. Results: Teacher devised solutions of 3x3 model written after ’Walking the talk’: Solution 1: fe3 repeat 3[lt fd1 rt fe3] rt repeat 3[lt fd1 rt fe3] Solution 2: sq3 repeat 2[fd1 lt fe3 rt] fd1 lt repeat 2[fd1 lt fe3 rt] Solution 3: re3repeat 2[lt fd1 rt re3] lt fd1 lt ltre3 repeat 2[lt fd1 rt re3] Solution 4:re3repeat 2[lt fd1 rt re3]lt fd1 rt fd1 rtre3 Solution 5: repeat 3[re3 lt fd1 rt] lt fd1 rt fd1 rt re3 Solution 6: rowsq ? repeat 3[sq1 fd1] repeat 4[rowsq lt] Solution 7:repeat 2[sq1 sq2 sq3 fd3 lt fd3 lt]Solution 7:repeat 4[re3 fd3 lt] Solution 6 defines a function for a row of squares rowsq using an existing user-function sq. Clever and works for 3x3. Not easily generalisable. How would you adapt rowsq to write a program that was easier to generalise? (Return program?)(Plenty more solutions! Lots of discussion, but all teachers agreed they could build the programs in UPL, Scratch or Python.) Other solutions apply specifically to a 3x3 grid and therefore are not easily generalizable. Which ones are? How would you adapt them to a 10x10 grid. Select the 20x20 grid in ISPY and try out your generalised solutions. Which works ‘best’?If you have a different solution for the 3x3 grid, send it in to dave@Graded Challenges Why would you draw a grid? Board Games challenges in UPL (ISPY) include: 3x3 Noughts and Crosses; 4x4, 5x5, 6x6 Boggle (a spelling game on the grid); 6x6 Conway’s Game of Life; 7x7 Othello; 8x8 Chess and Draughts; 9x9 Sudoku; 10x10 Snakes and Ladders; 11x5 Aqado; 13x13 crosswords; nxn Tournaments of home and away matches. Other contenders: Ludo, Monopoly, Scrabble, Go, Connect 4. Project 2: Pixels and Colour backgrounds, National flags, Bar scarves, Pixel pictures … Further Challenges: We move on later to challenges in the open 2-D plane Project 3: polygons, stars, circles, curves, spirals, patterns, linear transformations: translation, rotation, reflection; action geometry, transitional geometry. Solar system and planetary motion. ispy All these problems are programming tasks in Project 2 and 3 and could be solved in ISPY (UPL), Scratch 2, or Python 3. ISPY is incrementally interactive with a simple push button programming environment, no drag and stick, no syntax errors, no ‘save and run’ procedure and a delete button for semantic or logical errors. It is ideal as practical way of practising Computational thinking for programming solutions, as a transition phase and as a programming forerunner to Scratch 2.0 and/or Python 3. Booklet 2 Next Challenge: Pixels and Colouring a background on a grid in ISPY (Toolbox 2) Figure 8. Colouring Examples Booklet 3Where Are We Heading?We can move in a number of ways from here:Unplugged Programming and ISPYDevelop and practise the programming control structures of sequence, repetition and functions in the broader domain of 2-D introducing larger grids, colour and more user-defined functions – functions with 2 parameters, and the ability for users to set up their own user-defined functions with ISPY Toolbox 2. Our recommendation is to explore the understanding and computational thinking for creating shapes and patterns with squares, polygons, stars, circles and spirals with rotation, translation and mirroring using push-button ISPY in the following two UPL booklets. This will enable pupils to practise creative thinking, consolidate and broaden their computational thinking for programming, without having to learn and adopt at the same time the more detailed and rigorous processes of a programming environment for Scratch or Python.Programming in Scratch 2.0. We are engaged in extending an introductory handbook which goes from the start of this UPL handbook up to this point using Scratch 2.0. The programs can be easily mapped into Scratch sprite motion commands – and the handbook helps to familiarise pupils with the sprite and other relevant parts of the Scratch environment. See WorkbookProgramming in Python 3. We have an introductory handbook which again goes from the start of this UPL handbook to this point. Again the programs can be easily mapped to python turtle commands – and the handbook helps to familiarise pupils with IDLE, the turtle and other relevant parts of the Python environment. See WorkbookExamples of Patterns pupils have produced in this Course in ISPY, Scratch and Python.24384019939002794052070Moving from Unplugged Programming on ISPY to Scratch and PythonFigure 7. Definition in Python 3 of the function square with 1 pace = 50 pixels173736010160 ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download