I teach an undergraduate outreach class. The goal of the class is to equip our undergraduate students with skills, ideas, and supplies to go out to K-12 schools and teach about computer science.
Students are divided up into groups and given projects to work on or jobs to do such as contacting schools, etc. We try to use items that already exist as well as creating some of our own. I am a big fan of videos that express computer science concepts in a unique way, especially the work that Tim Bell has done to put his CS Unplugged activities into video format. It should therefore come as no surprise then that one of the assignments my outreach class was given was to create a video that could be used by K-12 teachers to portray a concept and submit it to the SIGCSE video exhibition. If you would like to watch our video on recursion, visit this link: http://youtu.be/9n8aT0sQxjs or search for “The Recursive Case” on YouTube.
Another fun series of videos were shared with me this morning. Perhaps some of you have already seen this, but it is just hitting our inboxes in the Midwest. Looking for a new way to teach sorting? Give this a go:
http://www.youtube.com/user/AlgoRythmics
I share these ideas with you, not necessarily to promote these specific videos, but to open dialog for others to share fun things they have seen!
So post away in the comment section and let us all know about some of your favorites so we call all fill our tool belts of resources!
Mindy Hart
CSTA Board of Director
Category Archives: Tips & Tricks
Have You Ever Considered a Do-It-Yourself Summer Program?
By Mindy Hart
One of the ways to get kids interested in a topic is through extra-curricular opportunities. And Summer is a prime time for such activities. And a great time to introduce students to topics they may not get curricular exposure to such as computer science. Have you ever thought about running a computer science based day camp or workshop at your school or library during the summer?
I know many people think coordinating an event or program is a lot of work. And while that may be slightly true, here are some tips to make things easier on you.
1) Plan. It never hurts to have a plan- you can always change it, but at least it provides direction.
2) Know why you want to offer this program. Is it just to get kids interested in computing, is it to target an underrepresented population, or as way to earn extra income or funding for a school program?
3) Know your space limitations. Will you be in a school computer lab? How many stations do you have in your available space? Is it feasible for students to bring their own computers?
4) Decide who is going to be involved. Are you targeting a certain age group of students? And who is going to instruct the content? Do you need extra helpers?
5) Choose a time-frame that works for your school district. For example, could you coordinate it with summer school or offer it as a back to school enrichment program? And are full days or half days better in the summer?
6) Know what you are going to teach. Will it just be free programs such as Alice or Scratch that they can continue to use even after the program? Or is there something you would like to throw in as a teaser to get them interested in taking a course in your school later on?
7) The biggest tip is to figure out how it can best be done. Who do you need approval from? Is it going to be fee based? Do you need to have food for the participants? How will you advertise the program?
All in all, there may be a few extra details to work out, but these should get you well on your way to helping create a computer science literate population. And you might have some fun along the way too!
Mindy Hart
CSTA Board Member
Build a Playground!
By Fran Trees
A playground is generally described as an area designed for children to play freely. Oftentimes playgrounds include jungle gyms, see-saws, overhead ladders, sandboxes and various other recreational equipment that can help children develop physical coordination, strength, and flexibility, while they are playing with their friends, enjoying the activities, and improving their social skills.
Let’s bring that playground inside! Why not host a computer playground day?
Imagine three to five clusters of computers. Each cluster is a different type of “sandbox” designed around a theme: Alice, Scratch, Robotics, Game Maker, Greenfoot, or any other fun way to look at computer science and programming. Each sandbox has a playground supervisor who can introduce the activity, instruct, and help out when needed.
Previous blogs have presented great ideas for outreach. The playground can be outreach to different types of populations: high school students, middle school students, elementary school students, computing teachers of all levels, administrators, or parents.
Gather your local teachers who have experience with the activities. Try contacting local colleges, universities, community colleges, or your local CSTA chapter for support and resources. Offer activities that can introduce the “children” to computer science in an enjoyable way while they are playing with their friends, enjoying the activities, improving their computer skills, and learning something about the programs that you offer.
Be creative with your playground but offer structured play activities in each sandbox so the “children” aren’t at a loss and so that everyone has a great time, learns something, and with a smile! Those “children” may become our strongest supporters!
So, host a computer playground day for your local ___________s? You fill in the blank! Have a great time! And then tell us about it!
Fran Trees
CSTA Chapter Liaison
Getting Students to Test Their Programs
By Karen Lang
Animations and creation of games really does motivate students. Doesn’t every student assume they can take an introductory computer science course and get a job at Electronic Arts making video games?
While animations and game development can be a motivational tool, it can also be a good lesson in function design and proper testing. I find that the students, when faced with creating an animation, get caught up in the thrill of seeing something move on their screen and their good programming habits go out the window. The building of an animation and/or game requires a new level of complexity, with the need to incorporate several functions and possible classes or structures. Because of the extra complexity, there is even more need to take it slow, provide good documentation, and test each function as you build it. What I find is that students are so fixated on the end goal, they just throw together all their functions in a hurry without testing and then run the program to see if it works. When something doesn’t work as expected, they don’t know quite where to start to debug it. Despite my admonitions to test as they go, they rarely do.
A couple of days ago, I had a student look at me, extremely frustrated, because his animation would not work. His cat was supposed to move across the screen, and there it sat, still as could be. Yet he stated loudly, over and over, “I know it works!” I looked at his code and there wasn’t a single test case. I asked him how he knew it worked, when he hadn’t tested the code, and the lack of cat movement proved otherwise. He stepped me verbally through his logic, swearing it all made sense. He was so resistant to doing the grunt work of thorough test cases. I told him to go back and test every condition before concluding it worked.
How does one prevent this from happening? I emphasize testing and I deduct grade points for inadequate testing. This one student realized he couldn’t avoid it, if he wanted to see his cat move across the screen. Eventually he had to succumb and test his function to find his error. Do you have any ideas or strategies in cases like this?
Karen Lang
CSTA Board of Directors
Attracting a More Diverse Group of Students
By Barb Ericson
In the fall of 2009 Georgia Tech started a high school weekend computing program. We asked for teacher recommendations for students with at least a B average that have had some computing experience. We weren’t looking for the students who already love computers and programming and intend to major in computer science at Georgia Tech. Our goal was to see if additional exposure to computing would entice more high school students to consider computing careers. We especially wanted to attract a more diverse group of students to computing.
We selected 22 students from 16 schools out of 90 applicants. We selected 11 females and 11 males. The group consists of 13 African Americans, 1 Hispanic, 1 Multi-racial, 4 Caucasians, and 2 Asians. There are 12 seniors, 6 juniors, and 4 sophomores. Only 5 of the 22 students expressed an interest in computing as a career at the beginning of the program. We administered an attitude pre-survey at the beginning of the program. We will administer a post-survey at the end of the school year.
The group attends training in computing at Georgia Tech on Sundays from 1 pm to 5pm followed by a dinner. This fall they were trained on: PicoCrickets, LEGO NXT robots, Scratch, Alice, and Pleo robots. The high school students assist in our computing outreach efforts. Some students work our weekend Girl Scouts or Cool Girls workshops. The students are paid $8.00 an hour for both attending training and helping with our outreach programs. Students can also do outreach in their local community and can develop tutorials. Some of the students are helping local FIRST LEGO League teams.
We have had 2 students leave the program. One moved away and one couldn’t make the Sunday training sessions. We have already had 6 of the students apply to Georgia Tech with a declared major of computer science or computational media. Some of these were not originally considering a career in computing. We have also seen an increased interest in our lending library of LEGO NXT robts, PicoCrickets, and Pleo robots from teachers who have students in the high school program.
We will be doing a more formal evaluation of the program. But, we are excited about the preliminary results. This program was funded by our National Science Foundation Broadening Participation in Computing grant. The cost of this program for fall 2009 was approximately $10,000 in payments to the high school students.
Barb Ericson
CSTA Board of Directors
Lessons in Lego
ByRon Martorelli
Last month the students in my high school collected cans of food for a local food bank. The cans were to be packed into boxes and distributed for the Thanksgiving holiday. I’m sure this event was repeated at many elementary schools, middle schools, high schools and colleges all around the country.
Somehow, I was volunteered to assist the students in the packing process. My group of about twenty students, a mixture of boys and girls, was to collect the boxes after they were packed, then tape them up, and stack them onto pallets to be fork lifted to the waiting truck.
The students began to stack the boxes on the pallet, but in a very unsecure and haphazard manner. As soon as I saw it I had visions of boxes tumbling off the fork lift, so I stopped the process and told them we had to restack them. “Let’s at least use the Lego method of building” was my suggestion. Only one boy knew what I was talking about, and he began to lead the others in stacking the boxes so that the seams overlapped and the boxes were lined up neatly and precisely.
So how does this relate to CS? It made me think about the fact that many of our students do not engage in too many hands-on construction, engineering, or designing projects throughout their K-12 education. Yes, there are some building block type experiences in the lower grades and some science experiments in the upper grades that involve some of this type of experience, but overall it is pretty minimal. This is especially concerning if you factor in the reduced number of students who participate in after school activities that would provide such opportunities. Programs such as YMCAs, Boy Scouts, or Girl Scouts often include these types of activities, but enrollment in these organizations is generally down. After-school building experiences (whether tree houses or doll houses) seems to be a thing of the past, replaced by afternoons of video gaming or computer based social networking.
Many high schools in the U.S. no longer include courses in wood shop, automotive technology, or metal shop as part of core curriculum. Some schools are starting to include a type of Tech Shop, where students use computer software to create animated experiments and design. Without a physical experience in conjunction with this software, however, the student loses the chance to actually build anything.
If we are to educate students in computer science curriculum of programming, computer aided design, software engineering, or animation it seems that it will be important to provide them with hands-on experiences that will give them the opportunity to put into practice what they design. The possible failures of translating their computer based design into reality would provide them with additional learning opportunities. Experiencing the success of that translation will provide them with incentive and enthusiasm to go beyond their initial experiences.
Ron Martorelli
CSTA Board
Keeping Advanced Students Challenged
By Karen Lang
How do you keep your advanced students challenged? My school is a magnet school for 11th and 12th grade students who excel in math and science. Every junior takes computer science. Despite the fact that they are all exceptional students, they come from varied backgrounds. Their technology experiences range from keyboarding to Advanced Placement Computer Science. Many of my students are intimidated by Computer Science class for this reason. They have taken math, science, a language, humanities. But many have never taken a CS course in their life and it’s a scary prospect. For the first month, many of my students will tell me over and over again that they have never taken a CS course before and that they have never programmed before. I tell them to look around as ninety-five percent of their peers are new to CS too.
This just explains that my students are at varying levels of expertise, comfort, and skill, which is the standard situation in most computer science classes. I use pair programming, which helps to alleviate the fear of those who are intimidated by technology. However, I am always looking for ways to keep those who have programmed before and/or just “get it” challenged and engaged.
For every programming lab, I post “dessert” problems to give more challenging problems to those who want to pursue them. I often wonder if that is enough. If a student sees the topic as mundane they may not even try these problems because they don’t see it as challenging enough. I have also sent students to the Project Euler site (http://www.projecteuler.net) to try some of those problems for extra-credit.
A few years ago, two of my advanced students were allowed to work at their own pace on the curriculum. They raced through it, mainly I think to get to what they wanted to learn, which was a different language (I teach using the Scheme language). I do wonder if they would have benefited with the structure and disciplined documentation I require of the rest of the students. These two students did well enough to get through the required labs in order to move on to topics of their own interest. Did they miss out on a more in-depth exploration of Scheme, a functional programming language, with its own nuances and different ways of solving problems? Or did they get more out of exploring what they wanted to learn, pacing themselves, pushing themselves, motivating themselves?
I am curious to hear your strategies for keeping advanced students engaged and motivated within the regular computer science classroom.
Karen Lang
CSTA Board of Directors
When Technicalities Interfere with Learning
By Robb Cutler
I was observing a middle school computer science class the other day working on a 3D graphics project. The teacher was describing how to define colors using the RGBA model. In this model, numerical values are assigned to the red, green, blue, and alpha components of the color. The red, green, and blue values are the amount of each hue present in the color. The alpha value represents the percentage of blending that occurs when the color is painted over another color.
Now, rather than provide the detailed mathematics behind alpha blending which, although accessible, would not have given the the students any real understanding of the concept, the teacher summarized alpha blending with one simple statement: “It’s the invisibility factor, the smaller the value, the more invisible the color will be.”
Is invisibility a completely technically correct explanation? Of course not. But it’s certainly close enough and a more than reasonable description for middle school students. The fact is that sometimes (as this teacher correctly intuited) the technical jargon we use gets in the way of understanding for our younger students. Or worse, it makes a very interesting subject sound bland and boring.
Hans Magnus Enzensberger understood this too when he wrote “The Number Devil”, a wonderful story about Robert, a boy who has mathematical dreams in which he learns about unreasonable numbers, prima donnas, and vroom numbers. The mathematics is sound; it’s only the names of things that have been changed.
While there are certainly those purists (or perhaps puritans) who would be aghast at the idea of not using the precise mathematical monikers (irrational number, prime numbers, and factorials), Enzensberger realized that his terms not only sparked his young readers’ imaginations, but also whetted their interest in learning more mathematics.
In computer science, do words such as polymorphism, boolean, conditional, and algorithm not stimulate the imagination in ways that Enzensberger and the middle school computer science teacher do with their unreasonable numbers and invisibility factors? Are we unintentionally turning younger kids off to computing with our language? And, if so, how can we fix things?
Robb Cutler
CSTA Past President