Computational Thinking in Learning The human code: Computational Thinking in Learning
Pam Carr Assistant Principal, Seacoast School of Technology Teaching Lecturer, Plymouth State University Classroom teacher for 22 years – high school computer science, middle school computer technology, high school business BS Marketing, MS Business Education, CAGS Educational Leadership
Earn Grad Credit for This Workshop Earn 3 graduate credits for attending CMTC http://lmseti.plymouthcreate.net/LMS/about/home/cmtc/ Register by Jan 15: http://lmseti.plymouthcreate.net/LMS/wp-content/uploads/2017/07/CE-5560-CMTC-Literacies-Registration-PSU.pdf Final artifacts due March 9 Contact: Pam Harland pcharland@plymouth.edu Twitter @pamlibrarian Create a variety of artifacts based on your learning at CMTC and hand them into our online Moodle. Final projects will be due 3/9. This would be a great opportunity for you to apply what you learned into your current practice and then earn graduate credit for it. You will have the opportunity to work alone or in small groups sharing ideas and discussing tools and strategies. There will be a section of the class dedicated to coding/digital tools/new library standards. You can choose one section and create one project. Group projects are welcome.
What is computational thinking? Using a set of techniques and approaches to help solve problems.
Four Cornerstones of Computational Thinking Decomposition – break a problem down into smaller pieces Pattern recognition – finding similarities between things Abstraction - Pulling out specific differences to make one solution work for multiple problems Algorithm design - A list of steps that you can follow to finish a task These four corner stones are also key elements in programming. Good programmers can break down a problem into smaller pieces and develop a plan for the code they would write to solve the problem. Programmers find similarities between things and patterns in order to make sense of data, when you know to look for patterns you can also use a program to analyze data. Abstraction is when you pull out specific differences to make on solution work for multiple problems (in programming we create functions that can be used over and over again in different programs). Algorithm design is the ability to create a list of steps to follow (writing code).
Other Important Concepts Data – variables, types of data, databases Query – search, conditional, Boolean Iterations – loops, recursion Decision making – branching, conditional statements These concepts are not “Computational Thinking” but when students are familiar with them, it can help them understand programming more efficiently. In programming, when the word data is used it can mean multiple things. The most common uses for data are data types (is the data a string, an integer, or a floating point number…etc or it references the a variable, or a database filled with data). One mistake students have a hard time understanding when writing code (or creating spreadsheets) is that you can input a number and it could be recognized as a character NOT a numeric value which would make it unable to be a part of a calculation. So in a program, unless I tell my program that 10 is a number it will think it is just the characters 1 and 0 without any numeric value. I would not be able to use that to determine, say, my weekly paycheck at Market Basket where I make $10 per hour. Query is how we search for things, Boolean allows us to refine our search by adding things like AND & OR, Iterations are loops or things that are repeated. For instance, in a computer program I might have to use a loop to collect information a certain number of times…like collecting the first name and last name of each of my students in class. A loop will allow me to continue to collect the information until there is no more information to collect. Decision making or branching, or conditional statements allow programs to check a condition and then do something with that information. For instance if you answer yes, do this, these are generally housed in IF Statements in a program.
It’s not as complicated as you might think… So much of what we do in any classroom contains good practices in computational thinking. We ask students to break down problems, look for patterns, look for differences all the time.
Look at what you already do… Most people already do many of these things in the classroom Focus on the computational thinking by shifting your assessment of the activity Come up with some comments/feedback that value computational thinking Help students make connections to computational thinking through the activity and the directions you give for the activity. Use the terminology with your students Teach your students the terminology when appropriate – it might not be appropriate or helpful to talk about what the word algorithm means during your Shakespeare unit but you might have your students write directions on how to write a proper Shakespearean Sonnet to demonstrate their understanding of the poem style. When using these concepts make sure you are giving specific feedback that relates to computational thinking. Your directions on how to write a proper sonnet were easy to understand and complete. If I had never written a sonnet before I would be able to write a basic one with these directions. Make the connection for the students. Today we are going to start a project, but before we begin we will break it down into smaller parts together. Why is it important to break problems down in to smaller parts before beginning?
You don’t need computers to develop computational thinking Computational thinking isn’t just for programmers and you don’t even need a computer to create activities that promote computational thinking! One of my favorites is the classic “how to make a peanut butter and jelly sandwich” When students go through the process of writing directions for a peanut butter and jelly sandwich they actually could use all four cornerstones of computational thinking – decomposition – break it down into smaller parts – gathering ingredients/materials, making sandwich, serving sandwich, Pattern recognition – often when I use a butter knife I use it to spread things, when I make food I like to put it on a plate. Abstraction – when you use bread there are usually different types to choose from – I could create a function that asks the user what type of bread they want for their sandwich and the algorithm is when they actually write the directions.
Some of my favorites Legos - Mad Glibs – abstraction Move it Move it – algorithims Logic puzzles
But sometimes you will use a computer Online logic puzzles like this one: https://www.mathsisfun.com/games/towerofhanoi.html Use electronic planning tools with your students – like Mindomo, Storyboardthat, or Gliffy Use the CODE.org site and have students explore activities that interest them. Explore coding with beginner programming languages like Scratch (drag and drop) and Python
Failure is learning Allow students to grow from failure – I like to show this video to students and then discuss why it is such an exciting video.
Additional Resources https://code.org/curriculum/unplugged http://csunplugged.org/ https://computationalthinkingcourse.withgoogle.com/unit https://scratch.mit.edu/ https://www.python.org/
Contact Me Pam Carr pcarr@sau16.org Twitter @pammcarr