200 likes | 213 Views
Explore pedagogical and design issues in teaching computational thinking and coding. Discover methods for engaging, creative, and contextually relevant learning experiences. Learn how to adapt tools, understand algorithm development, and implement effective teaching strategies.
E N D
Pedagogical & Design Issues: Tasmania Workshop 18th March 2014
How do we best teach Computational Thinking & Coding? • Teaching is not just a process of imparting knowledge to an attentive child. • Learning needs to be engaging, social and interactive. • It is also vital that the process is creative. • Children shouldn’t just be taught a series of procedures, they need to be able to explore different, novel, personal ideas and to share them with others. • And it needs to be relevant and meaningful to a child’s different experiences beyond the classroom. • The type of tools we use in the classroom will help. • It’s not enough for pupils to learn how to move a robot in a certain direction.
How do we best teach Computational Thinking & Coding? • The tools used must enable students to understand how coding could address a range of problems in different ways and, preferably be adaptable to suit their own interests. But the teacher plays a most significant role. • If teachers have confidence in, and knowledge of the building blocks of coding and how these relate to the real world, they can adapt these tools. • They could even create their own resources and might not even need digital tools to do it. – eg. CS Unplugged • A well-trained teacher can offer context to their classes by helping them understand how coding affects our daily lives, from its use in Google and Facebook to streetlamps and hand driers.
Gender Differences: Girls DO generally approach coding differently to boys; • For example, research conducted with StorytellingAlice found that middle school girls not only enjoyed“programming” a story that was relevant to them but theyalso enjoyed turning it into a movie; • Lego Research & Goldie Blox • http://www.youtube.com/watch?v=IIGyVa5Xftw
Research Needed: • Teachers need to have an active understanding themselves. • To date, we are lacking research into what makes good coding pedagogy – much of what we have/believe is anecdotalDesign methodologies are seen as vital: • Flowcharts; NS Charts; Structure Diagrams; Structure Design Charts, DFD’s, CSD’s. ... • Also Computational Thinking & Coding is yet to have a significant place in teacher training.
Programmingenvironment: Theenvironment should allow the learner to: • read the vocabulary-- what do these words mean? • follow the flow-- what happens when? • see the state-- what is the computer thinking? • create by reacting-- start somewhere, then sculpt • create by abstracting-- start concrete, then generalize
The Coding Language: The language should provide: • identity and metaphor • how can I relate the computer's world to my own? • de-composition • how do I break down my thoughts into mind-sized pieces? • re-composition • how do I glue pieces together? • readability • what do these words mean?
An Algorithm is: a procedure that consists: of a finite set of instructions which, given an input from some set of possible inputs, enables us to obtain an output if such an output exists or else obtain nothing at all if there is no output for that particular input through a systematic execution of the instructions.
Steps in development of Algorithms: Software Development Cycle: • Problem definition • Development of a model • Specification of Algorithm • Designing an Algorithm • Checking the correctness of Algorithm • Analysis of Algorithm • Implementation of Algorithm • Program testing • PLUS Documentation
Plan b4 build: • The design imperative
Constructs of Algorithms: Along with a assignment option algorithms consist of 3 Main Flow Constructs: • Sequence • Iteration • Selection • plus Recursion
Nassi- SchneidermanCharts • Following a top-down design, the problem at hand is reduced into smaller and smaller subproblems, until only simple statements and control flow constructs remain.Nassi–Schneidermandiagrams reflect this top-down decomposition in a straightforward way, using nested boxes to represent sub-problems
Structorizer • http://structorizer.fisch.lu/
Practical Session #3 - StructorizerExercises • A worker at ABC Coding is either a Permanent or Casual employee (Permanent staff are on a lower rate but receive sick pay, holidays, LSL, etc). The Permanent Rate is $25 ph and the Casual Rate is $28.50. Thus a Permanent worker who worked 30 hours for the week would get 30x$25 = $750 pay. Design a Nassi-Shneiderman Chart to ask a user their Name, their Status (Permanent or Casual) and their hours worked for the week. Have the program calculate their pay. The program does not need to loop back and run repeatedly. That is, it needs to be re-run for each worker.(Use of Sequence & Selection constructs) 2. Design an NS Chart that adds the natural numbers up to a limit entered by the user. Thus is the user enters 4 the output would be 1+2+3+4 = 10. (Use of Iteration construct).
Challenge: 'Least Change' Question: Write a program which takes a value of money from $3 to $999 and outputs the least number of notes and $1 and $2 coins that make up this amount. i.e. If 94 entered output should be: $94 = 1 x $50 + 2 x $20 + 2 x $2. Next: Wrap-up, etc.
Pseudo Code: • Issues with Pseudo-Code – language syntax; cryptic; implied skill base