Categories
Computer Science Lesson Opinion Programming Reflection SuperTopic Update

Creating Coding Lessons Reflection – Iteration One

Coding Lesson Reflection

As an Engineering teacher I strongly believe in the power of iteration and reflection. Everything I ask my students to do, I ask them to do more than once. This gives them the opportunity to learn from their mistakes. Iteration is how real design works, so we should teach accordingly. I am such a fan of the concept that I apply it to my teaching practice. What follows is my coding lesson reflection for my first iteration.

The first iteration of creating coding lessons using App Inventor 2 did not go as well as I’d hoped. Because it didn’t go as well as I’d hoped I have Two choices before me. I can scrap the lesson, or I can reflect on it and how to make it better for next quarter. What follows is my reflection on this past quarter. If you haven’t read the first Two posts in this series you should check them out here, and here before continuing. I’ll wait.

Coding Lesson Reflection – Complete Successes

 

My primary goal for Middle Grades Technology Education is to introduce new technology or technical concepts to my students. In terms of technology and concept introduction this lesson was a complete success. Every student in my class was able to have some success in making mobile applications.

The lesson was easy to both scaffold, and differentiate. Depending on individual student ability I could give more, or less help as needed. I was also able to easily alter portions of assignments in order to bring each student to the level of challenge they needed. Everyone stretched, but no one was drowning (at least not for long). Additionally, I think that all of my students were both engaged, and entertained by this lesson. The only times students seemed to lack engagement was when they felt overwhelmed by the content. In this case I could simply add scaffolding to bring them back.

The vehicle for learning here was outstanding. MIT App Inventor 2, worked as well as I had hoped. The interface is well within the comfort level of all of the grade 8 students in my class. They were also able to apply learned concepts to other problems. The phones, and tablets worked how I expected them to with minimal problems. For next year I will need to buy devices for my classroom out of my own budget, but based on how my test devices performed I am comfortable doing so. Ideally, these phones will still be available when my equipment gets purchased.

Coding Lesson Reflection – Mediocre Successes

 

Though MIT App Inventor 2 worked exactly as I had hoped, the tutorials I used didn’t. I have a fairly specific vision for what I want to teach in the course, and the tutorials I used were not exactly right. They were also not as easy for my Grade 8 students to understand as I was hoping for them to be. I am not particularly surprised by this as I have yet to find something made by someone else that I am completely happy with when it comes to curriculum. Using videos for teaching app programming however, seems pretty solid. I also like that the format is comfortable for my students, that they can refer back to the information contained in them, and that it allows me to spend class time scaffolding learning for individual students.

Encouraging collaboration was also “sort of” successful. In the beginning of the quarter I suggested that my students lean on one another for assistance, and tried to facilitate that communication. As the quarter progressed I added collaboration, specifically through web site comments as a requirement. Students were successful in helping one another, but resisted when I added the collaboration requirement later in the quarter.

Coding Lesson Reflection – Unsuccessful

 

The lesson itself was an overall success, but I am left with a distinct feeling that some things went terribly wrong. First, I stepped back to far, and too quickly. By this I mean that I only went through one complete tutorial with my students before giving them the others, and having them try to figure out the tutorials on their own. Doing so was certainty a conscious choice, but it was the wrong choice. I essentially gave my students scaffolding that didn’t involve me, and made the assumption that if they got stuck they would ask me for help. Unfortunately, they didn’t ask for help until they were completely frustrated and lost. The result was that many of  my students didn’t get as far as I’d hoped they would.

Next, the way I graded this lesson was deeply flawed throughout the quarter. Typically in my classes I use a participation grade. Most of the time this method of grading is perfect because I’m not expecting work outside of class. By the time I figured out that I should move to a grade by assignment model everything was already thrown out of whack. I then made the mistake of doing a combined model, which really didn’t work out. Finally, I added different types of grades in the middle of the quarter. The result was grades that poorly reflected the work being done.

My expectations of my students were also incorrect. I had the expectation that many if not all of my students would be doing some of the work for this class at home. Though I had a few do so, most simply didn’t. Some told me they didn’t have a computer or internet at home, and others said they were to busy with other school work.

Coding Lesson Reflection – Immediate Changes

 

The great news about all of this is that I have an opportunity right away to solve some of the problems with this lesson. A new quarter just started, and my coding lesson starts anew along with it. I am certain I can remedy all of my failures, and likely improve some of my mediocre successes.

  • Grading: Beginning with a project based grading system, and setting the expectation early on should allow grades to more accurately reflect the work produced. Additionally, I will insert a collaboration requirement from the beginning, and stress the impact of this requirement on overall grades.
  • Expectations: Now that I am more familiar with what students are capable of I can tailor my expectation accordingly. I can closely examine what is happening in the tutorials I assigned last quarter, as well as the results achieved with them. When I look at what my students did in relation to what I was looking for I can eliminate or scaffold as needed. Additionally, I can be more cognizant of what students are likely able to accomplish at home, and assign work accordingly.
  • Role of the Teacher: In this next iteration of the lesson, I will simply increase the amount of scaffolding I give my students, and be more active in checking up on their work. By increasing this I should be able to achieve better results.
  • Collaboration: This quarter I will institute a collaboration requirement from the start to make collaboration a greater part of classroom culture overall.

 

Coding Lesson Reflection – Long Term Changes

 

In terms of long term changes I am going to focus on the tutorials themselves. As I mention above, though the tutorials I have found are useful they are still not quite right. During summer break it is my intention to make my own tutorials with which to teach this lesson. When I do I will add a new section to SuperStarSTEM.com where my tutorials will live.

Thank you all for reading, and if you have found this post useful please share links wherever you can. Doing so will allow other educators to benefit from our work on SuperStarSTEM.

Note: Just about any Android phone will work for App Inventor 2. Ideally you will find some that are $20-$30, and have both an auto focus and a flash. Those two features are not required, but will allow you to use Rocketbooks in your class. The only required features are an accelerometer, a camera, wifi, and possibly GPS.

 

 

Categories
Computer Science Learning Tools Lesson Opinion Programming SuperTopic Update

Creating Coding Lessons – Grade 6-8: Part 2

coding lessons reflection

Any time I try something new I get some unexpected results. Often I learn something new. Usually I tweak something. Sometimes I find a connection to something else. My students find the lesson easier or harder than I expected. I’ve even discovered that some of my basic assumptions were faulty before. This time is no different. This coding lessons reflection will be of dubious use to you without having read this post. Don’t let me dissuade you though, read away. What follows is an outline, and reflection on what I have done for the coding lesson I am working on so far.

I tend towards jumping right in, and being flexible as I go with new lesson ideas. I know that others prefer to have every moment planned out in advance (and there’s nothing wrong with that), but I am more comfortable winging it a bit. That isn’t to say I don’t have a plan, it’s more to say that my plans are fluid. I trust my research and experience to guide me as I go. This post is a bit different than usual as well. There are a lot of moving pieces to this lesson, and I’m writing to focus my own thinking in addition to documenting what I’m doing for others.

Refined Overview

I am working towards several goals in this lesson. First, I want to provide a solid foundation in computer science to my grade 8 students. Second, I want to introduce my students to some basic web design. Third, I want to give them an outlet for their desire to create. Fourth, I want my students to be less dependent on me for the knowledge they require, and finally I am exploring how to differentiate a performance based lesson across students of varying needs.

Students learn different subjects in different ways. Some students require more scaffolding than others in order to benefit from a lesson, other students learn best with more independence, and still others require something in between. I have always been of the opinion that it is not a given student’s responsibility to learn how I teach. Rather, it is my responsibility to teach how they learn. In the immortal words of Mr. Miyagi: “Teacher say, student do”. My hope here is that I can create a lesson for all students.

Assignments Thus Far

As mentioned here, I started of with a simple tutorial for the Talk to Me App in App Inventor 2. Additionally, I assigned the students to create a google site, populate it with an About Me page, a Links page, a Classwork page, and a Portfolio page. We did the tutorial, and the web site assignments together during class. They were also given a question to answer about computers in general.

Students are required to create a project page for each app, and to fill it with documentation and reflections on each project. After the first assignment they have been given several more in rapid succession. They were assigned the second part of the Talk to me App, the Ball Bounce App, and were tasked with making unique improvements for each app as well. All of the apps up to this point are part of App Inventor’s Hour of Code. As part of these apps we have discussed the concept of abstraction in computer science. Additional App assignments will be designed to cover other topics mentioned in my last post. As an assessment for this first, basic section I asked students to work through the set of tutorials under the Paint Pot App. This assignment is different as I am not giving students class time to complete it.

Coding Lessons Reflection

All assignments are given in the google classroom, and students are encouraged to ask any questions in the google classroom as well. They are also encouraged to answer each others questions.  The first App assignment, and the first web assignments are the only ones we do together in class. The rest will simply be assignments. Students are given class time to work on their assignments. I also expect them to answer many of their own questions through internet research.

There was some push back on these ideas at first, but students are really beginning to embrace this style. This manner of having video tutorials, and performance tasks is allowing me the time to help those students that need it while allowing other students to work at a more accelerated pace. I don’t know yet how the assessment will pan out. My goal is to have students doing work outside of class which will foster greater levels of collaboration on their sites, and in the classroom. My main concern with this is that some students may be unable to work from home because they lack a computer with internet. We’ll see.

I’ve mapped out the app assignments for the rest of the quarter already. I am however, still trying to fit in the concepts & practices I discussed in the first article. That portion is a moving target that I will revisit periodically. Certainly, the app assignments will have most of these ideas built in. My challenge will be to pull out these specific concepts & practices to shine a light on them. A lot of this will come into greater focus as student move away from tutorials, and into building their own unique ideas, but I need to keep them at the top of my mind.

Differentiation in Coding Lessons Reflection

One of the pleasant surprises I’ve come up with is that assigning work in this manner is exceptionally easy to differentiate. In my current class I have several students who are incredibly comfortable with the subject matter, several who are moderately comfortable, and several who need significant scaffolding in order to be successful. By taking myself out of the initial distribution of knowledge to my students, I allow myself to be available to scaffold where needed.

Additionally, by forcing my students to add unique features to their apps I have allowed my students the opportunity to dictate their own level of challenge. Improvements to an app can run the gamut from changing the color of the screen, to translating typed text into another language before “speaking” it. What I’m left with is a room full of engaged students who are given the exact amount of support they require. This has allowed me to view all of my lessons differently, and will change how I teach moving forward.

Next Steps

This Coding Lessons Reflection would be of reduced value without a discussion of where I plan to go next. The rest of the course will continue to be focused on App Tutorials, and web design. In order, the apps I will assign are:

 

As time goes on the tutorials begin to focus on specific features without repeating information. Many deal with some pretty advanced programming concepts so, I’ll have to pay close attention to how my students are doing. There’s a good deal of work left to do on this unit, and I expect to make revisions as I go. I will continue posting about what is going on with the apps individually, as well as what’s happening in my classroom. The really interesting items will be what the kids come up with for individual apps.

Conclusion

Though I am essentially 20% through this first iteration of my coding lessons curriculum there are still a huge number of questions that need answering. I feel like it is going well, and I am excited to see how everything pans out in the end.

Thanks for reading, and if you’d like to keep updated on what’s happening on the blog please sign up for email updates. I promise I will never send you anything other than updates on my posts. Additionally, the more you share this around the more people will get use out of it. Please use the buttons at the top of the post to let everyone know whats happening here.

 

Categories
Computer Science Learning Tools Lesson Programming SuperTopic Update

Creating Coding Lessons – Grades 6-8: Part 1

Creating Coding Lessons

As a STEM teacher I am continually taking workshops and courses to get better at my job. As a public school teacher I am always on the lookout for those who are willing to donate equipment to my program. While on a follow-up call for a coding PD I took last summer, I was asked what I would need in order to implement coding fully into my curriculum.  My answer was simple: “I need 9 new Android tablets”. I was half joking, but you miss 100% of the shots you don’t take. When the response was: “Okay we should be able to get those to you in January”. I realized I needed to begin Creating Coding Lessons for my grade 8 students, and the idea for this post was born.

If you don’t have access to an Android device for each student (or each pair if you are using pair programming), check out this post for your coding lesson needs.

Creating Coding Lessons Overview

I am Creating Coding Lessons for a 10 week course for 14 grade 8 students. We use tablets and cellular phones running the Android operating system to run our programs. We use Chromebooks, and the App Inventor 2 IDE to create them. This course focuses on teaching Computer Science fundamentals, and specific event based programming skills. Class time is spent on performance tasks, and all assessments are performance based. Any lecture is video based. For the final assessment, students will create an app that solves a real world problem. Successful completion of this task will show mastery of the content at Depth Of Knowledge (DOK) 4. The process for Creating Coding Lessons for this unit will be outlined over several posts.

Standards framework for Computer Science Education in primary grades is evolving. No clear system with fully developed standards, and practices seems to be available. There is a generally accepted framework I will be working from which can be found here, but this will be my interpretation of the general concepts they recommend.

Unlike most of my curriculum posts, I will not initially be focused on a full STEM implementation here. Eventually, Math and Science will be integrated, but to start I will be focusing on Technology and Engineering. Designing a full fledged STEM unit is a daunting task, but designing a focused unit to be altered later is significantly less problematic. In this case I am under a time crunch to start teaching this unit so, Creating Coding Lessons for it needs to happen quickly. Remember that much like the design tasks we use to teach engineering, we can iterate on our lessons. In fact, none of my lessons are exactly as I originally envisioned them.

Creating Coding Lessons Practices

K12cs.org outlines 7 core practices of Computer Science that students in all grade bands should work towards mastering. Within the greater context of the coding unit each performance task should be working towards fostering the following.

  1. Fostering an Inclusive Computing Culture: This practice refers to the idea that computing is for everyone, and that perspectives from various genders, ethnicities, and abilities have positive effects on computing.
  2. Collaborating around Computing: This practice encourages individual students to become used to working collaboratively on teams, and in pairs.
  3. Recognizing and Defining Computational Problems: This practice fosters the ability to recognize, and define problems that can be solved with computing.
  4. Developing and Using Abstractions: The concept of abstraction revolves around helping students develop the ability to generalize portions of a solution for reuse in other computational problems.
  5. Creating Computational Artifacts: This practice involves having students actually create things as opposed to just learn about them conceptually. Students should create programs, videos, robotics systems, and apps as part of their study.
  6. Testing and Refining Computational Artifacts: This practice refers to having students iterate on their creations.
  7. Communicating About Computing: At its core this practice asks students to not only create computational artifacts and iterate on them, but also to be able to describe what their creation does as well as how it does it.

 

Creating Coding Lesson Concepts

In addition to the core practices as outlined by k12cs.org there are 8 Computer Science core concepts. These concepts are broken out by grade band level. This set of lessons is focused on the 6-8 grade band. Additionally, this set lessons is designed to teach students these concepts to a level they should know by the time they graduate grade 8. The descriptions for these concepts, and what students need to know by the end of grade 8 are found here.

  • Algorithms
  • Variables
  • Control
  • Modularity
  • Program Development
  • Culture
  • Social Interactions
  • Safety, Law, and Ethics

 

First Lesson

As evidenced  by the Concepts & Practices above I am teaching far more than simply app development.  I will use the App Inventor 2 IDE & Google sites for the lesson, but I am teaching a core of Computer Science. As it turns out, I just had my first class in this lesson today. After the normal opening day items such as how to get permission to use the rest room, and safety concerns we really only had enough time to get set up with the various systems that will be in play for this class.

Google Classroom

For this course I will use Google Classroom primarily to assign homework, and give students direction for independent research. I use Google Classroom, because I am at a Google school, I’m certain that there are other tools available, but I find it very easy to use, and it’s available to me. Since I am working towards teaching Computer Science through App Development the first thing I did was assign the students a set research questions, and a video.

The questions are: What is a Computer? What are it’s features? What is Computer Science?

My students are asked to research the above questions, and provide answers on their individual Google site. I made the questions broad based intentionally to see what the kids come up with. This question set serves the primary purpose of getting students used to research. The discussions that will follow will work to refine their understanding of computer science. By the end of this course they should have a better understanding of the above concepts.

The video I assigned is here and just covers the basics of the App Inventor 2 IDE, as well as walking learners through creating their first app. We will actually create the app in class, but I wanted them familiar with the video before we work through it. I gave my students the option of attempting the project by themselves as well. Allowing students this opportunity will take advantage of their excitement, and allow them additional autonomy if they would like it.

Google Sites

In addition to software development, web site design is another foundational Computer Science skill. Teaching some simple design, with a simple tool will make later exploration more efficient. I also want to have a way for my students to effectively collaborate with one another in their work, and to archive their work. With all of this in mind, having them create a digital portfolio is the right call. Again, I work at a Google School so I have access to this tool, but others are certainly out there. Additionally, for younger students I really like Google Sites. It is easy to use, and incredibly easy to control who sees the content. One of the things I am trying to teach my students is the concept of safe computing, and one of the foundations of safe computing is limiting access.

Some things to keep in mind here are that students will need to “share” their site with you in for for you to view/edit it. You should also have them set their privacy settings to “anyone with the link”. This allows them to share it more easily while keeping the  circle of viewers small. I ask my students to set up an about me page, a links page, and an assignments page to start. When they complete an assigned question they put the link to their answer in the comments to the question in google classroom. Later I will have them collaborate using their sites by posting links to them in the google classroom.

 

Talk to me App

The first App we will develop is a simple piece of software that is designed to use the text to talk feature of the Android Operating System. This feature allows a user to input a string of text, and the computer will “read” that string out loud through the device’s speakers. In this first iteration of the App, students will program in a graphical button on the device’s screen which when tapped will “speak” a pre-determined statement. The tutorial for this app can be found here.

This particular App isn’t overly complex. It requires changes to the code itself in order to change the message spoken, and only has one component. However, if we look a bit deeper it teaches a good deal more than we think. First, this tutorial, and the app created with it gives students a solid overview of how App Inventor 2 works, which will serve them well later on. Second, it shows all of the computing practices outlined above. Thirdly, it opens up conversations about algorithms, program development, and modularity. You can also add important general coding good practices such as annotation. Finally, this program allows you to ease students in to how you will be assessing, and grading them.

Grading & Assessment

If you’ve already had a look at my Ev3 Robotics Lesson 2 post you are familiar with my method for assessing a computer program. Assuming you haven’t gotten to that post yet, I assess computer programs by breaking them down into three measurable components. They are Accuracy, Efficiency, and Annotation. Accuracy refers to whether the program functions predictably. Efficiency deals with how many commands are used, and Annotation refers to what manner of commentary a program contains. In the case of this first lesson, as we will be creating the program in class by following a tutorial so using this method gets a bit tricky.

For most of my classes I use a class participation rubric, which would apply here. When students have advanced sufficiently for assessment I create a separate rubric for the assessment. For an example of what that may look like, click the link in the first sentence of this section.

Part 1 Conclusion

This first article is about getting set up to teach using  variety of tools. Though the first lesson is discussed here, it is not done in detail.  I will do a series of reflection posts about how the lesson is going, and discuss further lessons in greater detail. If you found this article helpful, please share it wherever you think it will do the most good. Stay tuned for more in this series.

 

 

Categories
Computer Science Learning Tools Lesson Programming Quick STEM Resources STEM Drop-In SuperTopic Update

Coding Lesson : Intro To Block Based Programming

coding lesson computer

I love Lego Mindstorms Ev3 for teaching a coding lesson, but the price to get started is tough to swallow. Enough kits to teach a coding lesson to a class of  16  is 4, which translates to over $1,550.00. Even after getting the kits, you still need 4 computers (not Chromebooks) to run the software. The unfortunate financial reality of Public Education in America is that we are constantly in a state of near starvation. As such, it is not easy to get funds for unproven curricular tools. Stories from other teachers about STEM with robots is not enough to get you the money you need. Typically you need to demonstrate some major benefit in order to get extra money. How then, do you prove that learning coding has a positive impact on your students without breaking your budget?

Block Based Programming

Block based programming means that instead of typing in words with specific formatting to create a program, programmers use graphical blocks. Presenting programming in this manner will allow you to reach younger students. Traditional coding such as that found in the Python Programming Language is often difficult for younger students to process. After all, they may not fully grasp common English yet. Older learners can benefit from spending some time with a block based language as well.

Block based systems allow learners to discover programming structures, and the basics of how computer programs are constructed more easily. Generally speaking the only difference between computer programming languages are the semantic structures used to translate human commands into something a computer can understand. As such, once a student has a grasp of one language (even a block based one) other languages get much easier to grasp.

Coding Lesson with Block Based Programming

Unlike many of my other posts this will not be an actual lesson plan, but rather a guide to a few online lesson plans that I like in particular. I am a firm believer in “why fix it it it ain’t broke”. In this case, since there are so many top quality lessons out there for free I’m not going to reinvent the wheel. I have many, many, other things to occupy myself with.

www.Code.org

I list this one first because it is my personal go to for my students. Any time a students ask about any kind of coding lesson, any time a student seems to want more coding, or any time I need to give them a break from the normal curriculum this is where I go. There are dozens of online coding lessons that can introduce coding, and even allow a deeper delve for students. I typically suggest my students start with the Hour of Code. There are several different content options, and different options based on grade level. After they complete the hour long coding lesson, they can expand into other areas of the site. Code.org is so engaging for the kids that I often use it as a reward. Honestly, if you use nothing else from any of my posts use this.

www.Scratch.MIT.edu

I have used Scratch a little bit myself. I have also only used Scratch in my classroom for students who want independent study. In my class it has been used exclusively on the Raspberry Pi, not the web based version. On the Pi it is amazing. It really allows kids to do physical programming. All of that said, I have spoken with teachers that have used the web version, and its fantastic. One nice thing about Scratch is that it allows kids to be exceptionally creative with their programming.

When I used it I had the kids working through this book, they loved it. Additionally, there are plenty of tutorials on the Scratch Help site, and elsewhere. A great way you could use Scratch is to combine it with the Makey Makey. I haven’t had the opportunity to do so, but I can see its value. If I do use it this way, I can see students making both a game, and a controller for the game they make.

App Inventor 2 (The Best Tool EVER!)

App Inventor 2 is a web based IDE (Integrated Development Environment) for the Android operating system. This block based programming resource will allow your students to create, share, and even sell apps on for any Android device. I don’t know what you are teaching now, but if what you teach touches computers, or computer programming in any way your most common question is “How do I make games/apps?”. Our students hear stories all the time about how kids have made millions making apps. The stories are true, and with the right idea our students can do the same.

In addition to the rare case of a student actually making money by creating an app, this tool is phenomenal for any kind of performance based assessment. In PBA we are working towards having our students create something meaningful, and useful to show mastery of a topic. What better way to do that in a concrete manner than by creating an app that solves a real world problem? Another phenomenal feature is the focus on event driven programming. Being able to teach the concept of EDP alone is well worth using this tool.

There are a huge number of tutorials available for free online dealing with all aspects of AI 2. This is one that is free, and focused on app creation.  I certainly recommend running yourself through any tutorials you use, but you don’t need to be an expert to teach with this tool. The only challenge is that you need some Android devices to use. I solved this problem by purchasing some cheap Android tablets for my classroom, but you don’t need to buy them. Your students may have these devices already, or you may be able to get them donated.

Conclusion

Though it takes some work and creativity, it is absolutely possible to teach coding on a budget. In your classroom you can wrap coding into some other lesson, use coding to help teach a lesson, or teach it as a lesson itself. No matter how you decide to add coding to a STEM curriculum you really need to add it. In my experience few subjects foster higher levels of engagement, teach problem solving more effectively, or develop grit like a coding lesson.

I hope you’ve found this article helpful. If you have, and would like to be updated whenever we post a new article please sign up for notifications below. If you think you know anyone who would benefit from this knowledge, please share the article on your various social media platforms.