This chat includes a discussion of topics of interest to K-8 teachers who teach and/or integrate computer science.The Computer Science Teachers Association is a membership organization that supports and promotes the teaching of computer science and other computing disciplines. CSTA provides opportunities for K–12 teachers and students to better understand the computing disciplines and to more successfully prepare themselves to teach and learn.
#csk8 is a structured chat so questions are numbered Q1 for Question 1, Q2 for Question 2 and answers should start with A1 for the answer to Q1, A2 to answer Q2, etc.
#csk8 Hi, Mark Miller here. I run https://t.co/LP2bL8AMzE, a nonprofit that offers both in-school and out-of-school enrichment, as well as PD and consultation, on K-12 coding, making, and robotics. We're based in San Mateo Cty, CA. (Have laptop, will travel) ;-)
Comp sci and comp eng teacher from Ontario Canada. Enjoy taking high school CS concepts to younger students who seem to be able to handle it just fine :) #csk8
Hey everyone. My name is Paul. I’m a Computer Science teacher from Ontario, Canada. I teach CS at both the K-12 and University levels. I’m passionate about #CS4All education, so it’s great to be here this evening. #csk8
Q1: What can we do to make sure that we are identifying the coding misconceptions of our 5-14 year old students? Please share assignments or projects that lend themselves to revealing misconceptions about coding. #csk8
A1: I think it’s important to sometimes ‘take the training wheels off’ . Ss can often follow step by step guides, but what happens when they’re asked to create something novel? #csk8
Ms Schmidt/Danielsons 1st graders coding their Dash robots through maze teach about the Sun, Earth & Moon w Mrs Dixon in #dpsk8 Innovation Lab! https://t.co/7xMNbrTmnP
Yep, hard to find misconceptions if they are following a step by step tutorial. Open-ended activities show more right? What about puzzle based activities?
#csk8
Welcome, Peter. We're on Q1 What can we do to make sure that we are identifying the coding misconceptions of our 5-14 year old students? Please share assignments or projects that lend themselves to revealing misconceptions about coding. #csk8
A1 #csk8 biggest issue is Ss thinking it doesn't rrlate to them have form Ss studying graphic design. He used scripts to automate the time consuming jobs - spends 20 min where others take 2 hours. Coding is a tool for anyone.
A1 It is important to emphasize to Ss that they should observe carefully and actually READ the error messages. I ask them to be able to describe their bug, give it a name, think about how they solved it and try to "generalize" to a "class of bugs." Don't hide the bug! #csk8
Q1: What can we do to make sure that we are identifying the coding misconceptions of our 5-14 year old students? Please share assignments or projects that lend themselves to revealing misconceptions about coding. #csk8
A1 It is important to emphasize to Ss that they should observe carefully and actually READ the error messages. I ask them to be able to describe their bug, give it a name, think about how they solved it and try to "generalize" to a "class of bugs." Don't hide the bug! #csk8
Q2: What are some misconceptions that you have seen from your students when they are programming loops? How can we help students to correct these? #csk8
#csk8 A1 I think puzzle-based activities, while they attract and engage Ss, ultimately do them a disservice. Programming is not the same as solving a puzzle, especially not one where only the relevant blocks or chunks of code are available to select from
Yep, hard to find misconceptions if they are following a step by step tutorial. Open-ended activities show more right? What about puzzle based activities?
#csk8
I agree, but do as an alternative to tutorial based activities on one hand and open ended on the other hand, do you see them as being a tool to expose misconceptions?
#csk8
A1: In the French classroom, my students enjoy making virtual stories/video games, en français, using @scratch. I encourage my students to plan their solution using a paper prototype prior to implementing their solution. #CSK8
A1: As a warmup we sometimes use "wrecked" programs with intentional mistakes that are common misconceptions. Students work in pairs to correct the wrecked program. #csk8
Hi #csk8 sorry - a little late. Jim Cash from @PeelSchools - I work with teachers in 26 schools in Brampton as a resource teacher. Our working vision of 21st century learning is here: https://t.co/bRC44f7bHm
A1: Also consider a matching activity.. for example I noticed students were struggling with string vs. integer data types and made a card sort. They have to match program to output. https://t.co/RbqyDJaVoG#csk8
Agree - just because the students can do a puzzle based activity with a select set of blocks, does not mean they can code a new problem. Learning to come up with what to solve, then how is the hard part #csk8
#csk8 A1 cont'd A number of things. For example, sometimes we use an "upside down cup" procedure instead of hand-raise to get help. We don't rush right over. They also can't turn over the cup without asking a member of their table group for ideas. More advanced also search online
Welcome, Jim. We are on Q2: What are some misconceptions that you have seen from your students when they are programming loops? How can we help students to correct these? #csk8
No matter what the project, I walk around, observe and chat with students throughout class. They share their thinking with me. Also when teachers try out programs prior to class, especially with other educators when possible, they can identify possible misconceptions #csk8
A2: side note: I’ve heard very young Ss using #scratchJr say ‘it has to be on the couch to be in the loop’ they think the loop block looks like a couch. (Or is it sofa in USA?) #csk8
Great point Lisa about having try out programs ahead of time. Too often, that doesn't happen, but that isn't new to CS. Often a product of competition for time and resources. #csk8
A1: I think that, when thinking of our K-8 students, thinking of coding for this age group as a curriculum is problematic. I like thinking of it as a *literacy*. I see coding as a way for students to formalize and share their logical thinking & problem solving. #csk8
A2: Younger students using Scratch often just use the Repeat block around everything - including a Repeat 1 ... or a Repeat 999999 ... ! Need to ask them if they really want it repeated/ and if so, is it is really forever. #csk8
When students are learning about if/else statements I use this one, kids have to figure out which script dresses the cat appropriately and why the other two don't work https://t.co/5dVo32U88v#csk8
A2: Understanding how many times a loop will repeat can trip some students up - especially with nested loops. I like to have students do these on paper and then write the code to see if they were correct. #csk8
Q3: What are some misconceptions about conditionals that you have seen when your students are programming and how can we help students correct these? #csk8
A2 The #1 technique is "play turtle" (be the computer). Ensuring that key variables are shown and observed changing is #2 (print statements if text-based language). Typical bug: When GreenFlag, if xyz then abc. They don't understand why it doesn't work without a Forever
#csk8
A2 #csk8 - I sometimes see parallel loops, that is, a loop here, a loop there that actually run at the same time. This becomes problematic as their projects become more complicated / sophisticated. The code works but becomes very hard to control.
A2: I find that students are often concerned that they’re not using the *right* type of loop (while/for). I encourage students try to implement their solution using both types of loops to demonstrate that both constructs are quite often equally valid. #csk8
Yes! That’s the beauty of cs! High ceiling and endless possibilities of extension activities! I encourage newbie cs teachers to have extensions literally in their back pocket (on cards). #csk8
A3: if statements seem okay, else if are usually ok. But if... else If ...else.... else if... else if.... else... can sometimes cause problems. But I like wrestling with these problems because they are often logic based and not syntax, I think. #csk8
Q2 Biggest issue is transition to open ended problems (training wheels @stevenpfloyd ) Being able to identify where loops work. Whether counting or while loops. #CSK8
In reply to
@VisionsByVicky, @cashjim, @PeelSchools, @stevenpfloyd
Ss coding Dash around maze & recording their understanding of 2nd grade conrent area w fun facts. So much problem solving & collaboration! #csk8#csforall@WonderWorkshop#dpsk8#smusd
So how do we scaffold this for students so they are more able to take on progressively harder logic, and not get frustrated to the point of shutting down? #csk8
A3 #csk8 - helping students is very tricky to do so that the support is as idiosyncratic as the learning. I find that the best use of my time is to spend large chunks of it engaged in observing and discussing their projects. The "help" has to be HELP and not solving for them...
A3 #csk8 nesting is a challenge. Also, even MS S's are confused about < versus > and they don't understand that they can choose either one if the operands are in the correct order.
A3: Setting up more complex conditionals is difficult - do not use OR / AND correctly in Scratch. In Python, the most common bug I see is - combining a boolean with a string, example using x == 'Quit' or 'Exit' #csk8
A3 #csk8 - I find it one of the hardest things to do - to not do it for them. I can usually see a way to fix the problem. Sometimes it is a teachable moment for core CT concepts but other times it is a logic process. I have to hold back and engage in discussion and probe thinking
A3: The biggest problem my younger students have is not understanding that their if needs to be in a loop if they want it to always be checked. We do lots of modeling of this both with and without loops. #csk8
A3 #csk8 I think the key is for them to see that modularity (making your own block, defining your own function) and testing IN ISOLATION is the key to easy debugging. Also, making blocks/functions STATE PRESERVING! Many T's don't know this.
#csk8@mimiller if you haven't covered functions yet, start Ss on the right track by encouraging them to add only a little bit (one block) at a time and test
In reply to
@mlmiller, @Todd_Lash, @stevenpfloyd, @mimiller
You should have seen some of the indenting in pseudo code one of my students did last year. They should have been using functions ... and weren't. #csk8
A3: In my experience, students understand the basics of conditionals quickly. It’s the leap from *writing* simple conditional statements to *applying* conditional statements (i.e. loop control) that students find a little challenging at first. But, practice makes perfect! #csk8
A4: Students mix up setting vs. incrementing variables in Scratch. Having students write pseudo code or trace and explain what the code will do can help. #csk8
A4: Does anyone see Ss getting confused by the difference between the mathematical concept of variable and the CS concept of variable? Id so, how do you address it? #csk8
A4 #csk8 K8 Ss generally do not have the background to really understand variables -- that they have a NAME, a VALUE, and a SCOPE/EXTENT. Even the idea of "for all sprites" versus "for this sprite only" is tricky, tho not impossible, to get across. Essential for Python!
#csk8 A4. How variable values are updated through a program. I’ve tried to address this by having the value of the variable visible (easy to do with scratch and via a debugger screen with other IDE’s) and then slowing the program down (wait blocks) or stepping through it.
A4: Initializing a variable - especially in Scratch which has a default value of 0 and may appear to work at first till they run the program again. Students do not really test their programs to begin with, and many times this is missed. Ask for projects to be peer tested #csk8
#csk8 Back in the day, the first thing a 4th grader would do was to "teach the turtle a new word" like TO SQUARE. It is sad that Scratch has led us away from Papert's deep insight that defining recursive functions is the heart of programming.
In reply to
@techteacher, @Todd_Lash, @stevenpfloyd, @mimiller
Q4 #csk8 - just today I saw Ss in Grade 5 trying to change *values* in their projects to *variables* - one of the issues is that, due to arbitrary curriculum, some concepts are unknown e.g. negative numbers. Some Ss today used a one variable for -ve #s and another for +ve #s
A4: In Scratch, one problem is them not understanding where to make a variable and how to implement it in their code. Another is using the same variable in multiple places where the value isn't appropriate #csk8
#csk8 using abstraction to manage complexity is the KEY insight of CS, for those who aren't going to go on to advanced topics like determining if P = NP
A4: Every now and then I encounter students who can’t get the order correct. They confuse num1 = num 2 with num2 = num1. #csk8
it’s interesting, but they get it straight eventually. #csk8
Q5: What misconceptions have you seen around procedures or functions (this includes more blocks in Scratch)? How can we help students to correct these? #csk8
Agree - and sometimes it is best to wait till the student reaches a problem for which scope of variables does not work as expected. Then they are willing to listen and learn - till then let them use the for all sprites/ global scope. #csk8
Ss coding Dash around maze & recording their understanding of 2nd grade conrent area w fun facts. So much problem solving & collaboration! #csk8#csforall@WonderWorkshop#dpsk8#smusd
Yes. I’ve heard this called ‘just in time teaching’ . They might not be engaged when it’s all front loaded, but will listen when the instruction solves the problem theyve just encountered. #csk8
Ha! Yes. Today I was watching my students getting their Python projects 'peer tested' - and it can be pretty tough, especially as students try to break the other's program. Agree, they will not read through code #csk8
A5 we write out the steps as we walk through them (talking robots). Identify verb phrases that repeat (i.e. turn right) to determine what functions we need. #CSK8
A5: In Scratch, my students have issues with when they would use a function. I have students who just never do and students who make everything a function. #csk8
#csk8 I get S's to read through code by giving the Python source of a very fun Adventure Game (it is a text-based game in a text-based language). They figure out which global variable to change to get infinite Health, how to edit the code to add their own room to the dungeon, etc
#csk8 A5. I struggled teaching some of the value of functions (to reduce complexity via abstraction) without using a problem that is crazy complex. Ss do it, but they really don’t understand why.
A5 #csk8 - I think the parameter passing in the Scratch 'make a block' is tricky sometimes. Alos, one of the best ways I have seen success with these is not through lessons but through students redesigning their existing code & creating a new block (procedure) where appropriate
A5: A big one for me in Sonic Pi is students forgetting to call the function and wondering why they don't hear anything. I tell them when working with functions if you don't get an error message, thats prob whats wrong. #csk8
Q6: What misconceptions have you seen students encounter when they transition from a block-based programming language to a text based language? How can we help students to correct these? #csk8
A1 ~ not going too quickly. My Gr 10 CS teacher never really explained nested Ifs and I flailed for a while not knowing how to end my ifs cause of rushed introduction of ideas #csk8
Ya, there’s a papert quote about Ss not being engaged when a T ‘pretends’ to solve an arithmetic problem. Ss know that the T knows the answer already. But coding problems, the Ss know the teacher is figuring it out for themselves so they observe the prob solving process. #csk8
I think reading and explaining code is probably one of the biggest helps to identify misconceptions. I like to do this on paper because I find they always want to change the code if they can rather than reading the code. #csk8
#csk8 and I have a problem with the fact that "make your own blocks" in Scratch does not in fact allow you to define a FUNCTION, in that you cannot RETURN A VALUE
Yes I know! Many like you prefer to use Snap as a result, which has real functions. I think Scratch functions were designed more for younger kids - to be used as a name for a piece of code. They often do not need the return value. #csk8
#csk8 my preferred sequence for MS is Scratch -> SNAP! -> Python for 6-7-8. It isn't essential but it allows them to see a block-based version of PROPER programming before they tackle text.
Maybe not the "material" but students come across "novel" problems all the time in the process of coding their projects. Ts can figure it out with Ss and it is authentic... But, the more a teacher codes him/herself, the richer the conversations/learning will be for everyone.
A6: I don't know if it's necessarily a misconception, but students struggle with needing to know syntax. We spend an entire lesson on syntax like we would vocabulary in an English class. #csk8
#csk8 They were a complete after thought. Original Scratch lacked them entirely (an insult to Seymour in my view). Hence UCB created BYOB (Build Your Own Blocks) which became SNAP!
A3~ being specific enough in their conditions. Also why use == vs < ...sometimes it is easier and smarter to just check when greater than a value and not exactly that value #csk8
#csk8 A6 @shuchig has some really good research on this. Blocks abstract out a lot for students besides just syntax. When Ss transition to text, they have to do those things (what order do I put the parameters in?) on their own.
I agree. It’s nice to learn alongside but I definitely agree that Ts need to have seen the end result so that they know how to best get the Ss there.
But there are times when we ask Ss to be creative and they will end up working on problems and projects that are new to Ts. #csk8
#csk8 I like that Ts are modeling lifelong learning for their Ss. I don't like that they have no knowledge of the history or big ideas of the field. For example, how many teachers know that a block/function should normally be STATE PRESERVING? (Why add TURN 90 at end of SQUARE?)
Agree - transitioning from block to text based is all about understanding that syntax really matters. It is an initial shock, but that does not take that long to learn. #csk8
A7 #csk8 - Wow, misconceptions come up with every student, every session. Therein lies our work as teachers, I think. Sure there are some common patterns but as an adult, I am too used to thinking formally/abstractly to easily empathize with Ss who are new to it. It's a struggle
A3 #CSK8 the point about using < or > rather than == is an impt subtlety for those who have learned that values may not be exact, eg., you might be < the edge, then move 5 steps, and be > the edge -- never being right on it. I think you share that point later in their growth
Yes, totally an issue I think. In comp sci we are assigning a value to another, the value of num1 is assigned the value of num2. I think in math you’re just showing they’re equal (maybe)
#csk8
Thanks for jumping in :) @DaveLanovaz
A7 #csk8 - I find more and more that the better I understand HOW my students are coding and WHY they wrote the code they way they did, then I can better understand HOW they are thinking. Then, it is easier to help in a constructive way... Code is thinking made concrete.
No matter what the project, I walk around, observe and chat with students throughout class. They share their thinking with me. Also when teachers try out programs prior to class, especially with other educators when possible, they can identify possible misconceptions #csk8
As part of my research, I've seen that it promotes inequity in who is seen as the expert when the teacher needs help. It also is contributing to students seeing coding as just "getting it done" since teachers don't have the background to question and give rich feedback. #CSK8
A7 Not sure if this was mentioned yet but many people just starting out & who use tutorial & coding puzzle applications (not actual coding) are confused when real coding doesn’t tell them how many lines they should have solved it in. #csk8
Q8: Thinking about teacher development, what do teachers need to learn in order to recognize and address these misconceptions? How can they learn this? #csk8
A3 #csk8 - helping students is very tricky to do so that the support is as idiosyncratic as the learning. I find that the best use of my time is to spend large chunks of it engaged in observing and discussing their projects. The "help" has to be HELP and not solving for them...
A7 #csk8 - I find more and more that the better I understand HOW my students are coding and WHY they wrote the code they way they did, then I can better understand HOW they are thinking. Then, it is easier to help in a constructive way... Code is thinking made concrete.
A8: Teachers need to have good content knowledge of CS and need to know how to read and trace code. We need to be able to model this for our students. #csk8
A7: The most common misconception is that students think can just start coding and adding on without testing!. I have to keep reminding them to think about the algorithm, and write and run and test small parts of the project first. #csk8
#csk8 I think there is a place for both (attempting projects the teacher has never tried) and (teaching concepts which the teacher firmly understands).
Tricky though. Should Ts wait until they’re totally familiar with all concepts and projects before teaching? There seems to currently be a push to ‘jump right in!’ Perhaps because training can’t happen quick enough (time/$). #csk8
A7: The most common misconception is that students think can just start coding and adding on without testing!. I have to keep reminding them to think about the algorithm, and write and run and test small parts of the project first. #csk8
Ahhh, but teachers need to consider themselves adaptive experts. A mentor/mentee relationship can work well when attempting to foster authentic and meaningful learning, especially with cs... more of a maker culture...not saying content knowledge is unimportant though #csk8
#csk8 A8. Experience and PLN’s. 3rd grade math teacher can anticipate what will give Ss problems, and have a plan when those problems surface. Novice ones lean on more experienced Ts. Need to replicate in CS.
A8 T's need time to step back from huge spreadsheets of standards for CS & learn THE BIG IDEAS of CS. Then they need to create their own portfolio of projects that at least involve PAGES of code. Then they will grock things like, testing each module in isolation is key #csk8
#csk8 cont... The difference is the purpose of the learning. If you are TEACHING a new concept, you should know it. If students are APPLYING previously taught concepts in PBL environments, I wouldn't want them to not be able to venture into previously uncharted territory.
Well said. With experience, teachers can predict how they will think and how they will code! And that can help a teacher better help the students. #csk8
Analogy: Would you think it best practice to try& teach reading w/a book you couldn't read or math w/ a concept you didn't understand? T doesn't have to have tried the project, but to give quality feedback/ questioning that promotes growth, Ts needs content knowledge. #CSK8