Computer Science: Tool or Way of Knowing?

I gave a talk recently and, at the end, a faculty member from a non-CS discipline asked me “So, is computer science a tool or a fundamental way of knowing?” My answer was an unabashed “YES”. But it depends on the context. It depends on what problem is being solved, and what is already known about the solution method, or whether there even is a solution method already. Let me give two examples.
Consider a problem I give the students in my Taming Big Data course (with thanks to Punch and Enbody). I present them with a spreadsheet of daily information on Google stock trading from the day the stock went public through the end of the month prior to when the assignment is given. Their task is to take this daily data (which includes volume traded and daily closing price) and report on the 6 best months and the 6 worst months for the stock. There’s no mystery about how to compute the monthly values, given daily data. The challenge for the students is not in solving the problem, the challenge is in implementing that in a program. Computing is a tool for implementing a known solution.
Now consider the Human Genome Project. When that project began, everyone knew that computing would have to be utilized. As a discipline, however, computer science didn’t really know what to do. Whole new parts of the field had to be developed in order to address the significant subproblems posed by the Human Genome Project. Computing as a “way of knowing” was critical to the success of the efforts. The combining together of computer science knowledge and biology knowledge led to developments that today are changing people’s lives, thanks to fast and relatively inexpensive gene sequencing.
So we might think this is only relevant when faced with really big problems that are at the edge of today’s knowledge space. No! A look at the CSTA computational thinking strand takes this approach by arguing for the integration of fundamental computing thought processes into numerous disciplines. Students will, we hope, become so imbued with an understanding of computing as a “way of knowing” that they will be positioned to help solve new problems, the genome projects of the future, the grand challenges. We can teach them to program, which is important because we do need to be able to implement existing solutions to existing problems. But we do so much more when we equip them to work at the intersection of fields, solving new problems, and we can start that process very very early.
Valerie Barr
Computational Thinking Task Force Chair

Teaching Students About Their Digital Footprints

This year my high school added a new course that is a survey course for computing. One of the first lessons we did covered what a digital footprint was; how it could affect them, and the consequences. Some of the material was pulled from the ECS curriculum, some from Common Sense Media, and other was gathered resources including some YouTube videos. It was amazing how much the students didn’t know about the technology they use every day. I think I took it for granted that since they are “digital natives” that they would know more about how long information is maintained, who can see it, and what data is actually stored. One of the things most students didn’t know is that photos on their phone can also store the date, time, and gps location of the photo taken. It was amazing how quiet the room became and how large some of their eyes were.
So I have learned something about my students. I have learned that they are all about flashy gadgets that get them what they want and have no interest in the consequences of privacy they give up for it. This reminds me of the many jokes about people not reading directions and just putting something together. My students do not know the “directions” or fine print of their technology. I will admit I guessed that they didn’t and it is one reason we have this new course. We are trying to teach all the things they may need to know about computing and technology or need to experience that we as adults think they already know. A mouthful I know but I promise that is not the class description.
The final wrap up of the unit was a paper that answered different things about digital footprints, social networking, textings, effects, etc. My warm fuzzy feeling came when I was reading the section of their papers where they had to talk about if they would do anything different. Here are some examples of what I read……
“But knowing that what you say can be documented and kept for years, coming back to haunt you at any time, is enough to keep anyone on their toes about what they say.”
“After seeing all the information about posts, texting, and online presence, I will change some of the things I do. I now will watch what I text to people.”
“Yes i do think i will be more careful with what i text or post because it could change my life.” This is a direct copy. Obviously I didn’t emphasize that the computer would not automatically capitalize their i’s. :)
It didn’t matter if my student was male, female, affluent, poor, had an iphone or had an old flip phone. I was reading similar responses from all of them.
I am not claiming this will change them all and that they won’t still do things they shouldn’t online; but I have opened their eyes. There is no greater feeling when you teach to know that your students eyes have been opened. That day I got paid back.
So next time you have a day or two and looking for something to teach in between a unit or a vacation break, I urge you to teach something in the realm of social networking and digital footprints. Open their eyes as it will open yours.
Stephanie Hoeppner
Ohio Cohort Leader
Ohio Chapter Vice President

Talking to Administrators and Board Members About Computer Science

We talk to students every day. We talk to parents a few times a year. How often do you talk to your principal, superintendent or school board members? If it’s not at least once a year, you’re missing an important opportunity to get the word out about the vital role of computer science education in your district!
Here are some things that people “up the line” need to know:

  • There are standards for CS Education (http://csta.acm.org/Curriculum/sub/K12Standards.html). While providing your administrators with the standards document is nice, it would be even more effective if you were able to show them how your courses implement them. If your current courses do not map to the standards, this would be a good way to pitch a curriculum change to that course you’ve always wanted to teach!
  • The Computer Science Principles (http://www.csprinciples.org) project is well worth discussing with administration if you would like to add it to your curriculum. Even if you are not eligible to be an official beta site, there are several motivating curriculums shaping up and being shared.
  • Filling the national need for CS graduates begins in K-12. And, yes, there is a national need for people with these skills. It may help to point out that CS grads work in every sector, not just for Microsoft, Apple and Google. There is an article this week in US News and World Report about the energy sector hiring CS grads (http://goo.gl/hCl69).
  • Those CS jobs? They just keep cropping up very high in the rankings of best jobs! The 2012 rankings show that CS related positions take up 50% of the 10 best jobs in 2012 (2nd, 5th, 6th, 7th and 9th place). If your school board puts an emphasis on career readiness, this might be an article you should send to them (http://goo.gl/6g26U)
  • Computer science courses tend to be very engaging. If your district is promoting project based learning, differentiated instruction, mastery, etc. your courses may need very little alteration to be a point of pride.
  • Getting an appointment to talk to your principal or superintendent should be fairly simple, getting on the agenda of your school board meeting may take a little more planning. I recommend starting with the level of administration closest to you that you that you have not already turned into a supporter. Work your way up, but do it this year!
    School administrators of all levels respond well to a case study. You know that you have students whose lives have been improved because of a computer science course. Get their story and tell it (with their permission, of course). If and when you get on the school board agenda, bring a student or two, bring a recent graduate, and be prepared to tell a story about people, not about computers and curriculum. Give everyone all the links to all the resources they will ever need to read about the nitty-gritty, but tell them a story so they want to know more about this amazing discipline.
    Tammy Pirmann
    CSTA School District Representative

    Middle School CS Inspires Medical Breakthrough

    This is why middle school CS is a vital step in the path of a comprehensive K-12 CS education!
    Brittany Wegner, 17, took the grand prize in this year’s Google Science Fair using artificial intelligence she first learned about in 7th grade. Wenger started building artificial intelligence systems in the middle school after studying the future of technology for a school project. Her contest entry was a cloud-based neural network to accurately assess tissue samples for signs of breast cancer.
    “I came across artificial intelligence and was just enthralled. I went home the next day and bought a programming book and decided that was what I was going to teach myself to do,” she said.
    “I taught the computer how to diagnose breast cancer,” Brittany Wenger, told reporter John Roach.
    “And this is really important because currently the least invasive form of biopsy is actually the least conclusive, so a lot of doctors can’t use them.”
    For her Google Science Fair project, she built a neural network with Java and then deployed it to the cloud. She ran 7.6 million trials on it and found it is 99.1 percent sensitive to malignancy. She hopes to refine her program to detect other types of cancer.

  • Read the complete article at http://www.nbcnews.com/technology/futureoftech/17-year-old-girl-builds-artificial-brain-detect-breast-cancer-908308#/technology/futureoftech/google-built-machine-learns-find-cats-internet-846690.
  • Share it with your students, parents.
  • Print a copy for the counselors, and administrators.
  • Point out a goal of the Level 2 Curriculum: “Learning opportunities should be presented in ways that are active, connected, and relevant to them, and should promote the perception of themselves as proactive and empowered problem solvers, creators, and innovators capable of changing the world.” (CSTA K-12 CS Standards, csta.acm.org/Curriculum/sub/CurrFiles/CSTA_K-12_CSS.pdf, page 15.)
  • For slightly older students, take a look at the topic #5 in the Exploring CS curriculum: “Computing and Data Analysis. In this unit students explore how computing has facilitated new methods of managing and interpreting data. Students will use computers to translate, process and visualize data in order to find patterns and test hypotheses. Students will work with a variety of large data sets that illustrate how widespread access to data and information facilitates identification of problems. Students will collect and generate their own data related to local community issues and discuss appropriate methods for data collection and aggregation of data necessary to support making a case or facilitating a discovery.” (Exploring Computer Science, www.exploringcs.org/curriculum.)
  • Pat Phillips
    Editor, CSTA Voice

    What Inspired You?

    As the school year rolls around again, what professional development did you participate in that inspired you for the new year? I recently attended a CS4HS session at the University of Massachusetts Lowell and was truly inspired to spice up my teaching with some new hardware and software. I am grateful to CSTA, Google, Lenovo, and CAITE for sponsoring this great workshop.
    Tom Lauwers introduced us to Finch Robots, a cool sleek design that includes all the regular motors and sensors you would expect, with an accelerometer and a beak that can light up to any RGB color you wish. Its low price point ($99) makes it a viable option for the classroom. The Finch robots also support a variety of programming languages, so it is an easy fit for any CS curriculum.
    In addition to the Finch robots, we spent a morning learning and experimenting with MIT’s AppInventor software. Led by UMass Lowell’s Fred Martin and Mark Sherman, the forty teachers in the workshop were quickly creating apps and downloading them onto our new Lenovo tablets, a bonus takeaway from the workshop (along with a Finch robot!). I marveled at how quickly we were able to code an app, download it, and have it running on the Android device. What a motivator that will be for students, to write a mobile app to show off to friends and family.
    I left this workshop so excited to try out both in my class, and wondering how I will manage to adapt my curriculum to fit them. But I am determined to incorporate these awesome technologies into my teaching. One of my goals in my introductory course is to engage and motivate students to explore the possibilities of computing. I think that Finch robots and AppInventor will help me to achieve that goal.
    Links:
    http://www.finchrobot.com/
    http://appinventor.mit.edu/
    Karen Lang
    CSTA Board of Directors
    9-12 Representative

    Montessori and CS in K-8

    There has recently been a lot of discussion about improving computer science education and the need to include the elementary and middle school students in the process. As a K-8 technology teacher, this age group is always on my mind. After attending a recent Scratch Conference at MIT, I am convinced, more than ever, that 21st century computing skills have an important place in even the earliest rungs of the K-8 ladder.
    Kindergarten, and, in some cases, pre-school, is the ideal time to expose young children to computer science. According to the educational philosophy of Maria Montessori, an Italian physician and educator, young children are primed for learning. Her approach focuses on developing a child’s independence, freedom within limits, and respect for a child’s natural psychological development. She believed “Education is a natural process carried out by the child and is not acquired by listening to words but by experiences in the environment.”
    Montessori emphasized constructivism – the idea that children acquire knowledge by acting on the world around them. This model is a perfect fit with computer science and computational problem-solving. Constructivism stresses the importance of a child’s active participation in the learning process Computer programming places the emphasis of learning on the child by allowing her to take on the active role of designer and builder. At the same time, the iterative nature of computer programming, (i.e., start with a clearly-stated idea, create a working prototype, experiment with it, debug it when things go wrong, get feedback from others, then revise and redesign it) teaches students to think reflectively about the problem-solving process itself. Hence, computer science is a practical and powerful way for teachers to implement constructivist learning in the elementary classroom.
    In order for young children to develop competency in computer science from a natural learning process, parents, teachers and administrators should support this effort. Unfortunately, many adults, instead of encouraging their children to explore computer science, share their knowledge of computer technology in the form of “smart” devices and Apps. According to a 2012 study conducted by the Joan Ganz Cooney Center at Sesame Workshop (iLearnII, An Analysis of the Education Category of Apple’s App Store, Carly Shuler, 2012) over 80% of the top selling apps in the Education category of the iTunes store target children. In 2009, almost half (47%) of the top selling apps targeted preschool or elementary-aged children. By 2012 that number increased to almost three-quarters (72%). While not necessarily a bad thing, parents and teachers should focus their energy on encouraging children to become developers, not consumers, of technology.
    It has long been assumed that only adults, including college and high school students, can understand the basics of computer science. However, recent studies have shown that even children as young as age four, can learn to program.
    The Tangible Kindergarten (TangibleK) Project study, conducted by the DevTech research group at Tufts University, demonstrated the potential of integrating robotics and computer programming into early childhood learning experiences. This research team found that children as young as four and half were able to successfully program a robot to complete a variety of challenges (Kazakoff & Bers, 2011). According to their website: “The overarching goal of the Tangible Kindergarten project was to explore how we can help young children to develop computational thinking by engaging them in computer programming and robotics in a developmentally appropriate way.”
    Building on the philosophy of Maria Montessori, where students are provided specifically designed “materials for development”, the TangibleK curriculum provides ways for young children to engage directly with the programming environment, thus helping preschoolers to take charge of the learning process.
    Because of the proliferation of Apps and other technologies, families and educators are looking for guidance. Now is the time to take charge of the conversation and steer it towards creating a generation of technology producers. According to Professor Marina Bers, Director of the DevTech Research Group, “Computers for most people are black boxes. I believe kids should understand objects are ‘smart’ not because they’re just smart, but because someone programmed them to be smart.”
    Students no longer have to wait until high school to experience the learning benefits of computer science. I am eager to share my love of computing with my K-8 students and thanks to the research from Tufts University, I now have the resources to make that happen.
    Resources:

  • TangibleK Project: http://ase.tufts.edu/devtech/tangiblek/
  • Lego WeDo: http://www.legoeducation.us/eng/search/wedo/_/categories/products/elementary/lego-education-wedo
  • Scratch: www.scratch.mit.edu
  • Scratch Jr.: http://ase.tufts.edu/DevTech/ScratchJr/ScratchJrHome.asp
    Patrice Gans
    CSTA K-8 Representative, and Chair, K-8 Task Force

  • Local Professional Development Rocks!

    Last week I was honored to present and attend CSTA Rocks Ohio! in Columbus, Ohio. This workshop, sponsored by CSTA and Google, was attended by 35 other CS educators from around Ohio and provided professional development opportunities on a dozen different topics over a two and a half day period.
    Angie Thorne and Stephanie Hoeppner (CSTA Ohio President and Vice President) deserve thanks for the planning of the event involving other CSTA members with presenting CS topics. Each session allowed attendees to widen their knowledge and most importantly, to network with other CSTA members in Ohio. Time was provided for hands-on exploration as well as lecture formats.
    This opportunity gave local teachers a chance to participate in quality CS professional development that they might not have otherwise had access. Personally, I was able to meet several other CS teachers and a chance to meet a fellow teacher face-to-face that I have only known through email. At the end of the workshop, I think we all had a good time learning new ideas for our classrooms and fellowshipping with other CS teachers.
    Thank you CSTA and Google for making CSTA Rocks Ohio! possible. I look forward to more opportunities like this in the future!
    Dave Burkhart
    CSTA and CSTA Ohio Memeber

    Turing Award Winner’s Presentation on K-12 CS

    I just got back from attending ITiCSE (http://www.iticse12.org.il/htmls/home.aspx) a computer science education conference that is similar to SIGCSE, except that it is held in the summer in Europe/Asia. It was a fantastic conference. I served on a panel with Barbara Boucher Owens and Judith Gal-Ezer discussing the new CSTA K-12 Computer Science Standards, available from:
    http://csta.acm.org/Curriculum/sub/K12Standards.html
    I think our talk was well received. I also very much enjoyed getting a chance to give a presentation to several Israeli teachers who were holding their own conference the day before the start of ITiCSE. And, I was amazed by the quality of their and their students’ research posters!
    The most interesting part of the conference for me was hearing Michael Rabin’s keynote address. ITiCSE has had success in inviting Turing award winners to give keynote addresses, and Rabin was someone I had not previously met. I was somewhat nervously awaiting his talk, as he is a theoretician, and I couldn’t well remember his classic paper (co-written with Dana Scott) “Finite Automata and Their Decision Problem”. However, the subject of his talk was on K-12 CS education!
    It was a lovely and readily understandable talk. Many of the topics he thought should be covered in high school are explicitly or implicitly addressed as part of the new CS Principles course. I disagreed with his proposed ordering of curricular content. He proposed high schools needed to start teaching computing abstractly, with Turing machines, and then move to more concrete topics such as programming in an actual programming language. I believe most students need to start with the concrete and then move to the abstract (see for example my Inroads article with Steve Cunningham entitled “Teaching computer science in context”, or my Communications of the ACM article with Wanda Dann entitled “Alice 3: Concrete to abstract”). However, I was quite pleased to see a Turing award winner giving a keynote address on K-12 CS education. And his talk was a great start to the ITiCSE conference.
    Steve Cooper
    CSTA Board Chair

    Planning a Summer Institute

    I think my last blog was written while I was monitoring my final exam. This one is written as I take a break from planning for a summer institute for teachers for AP Computer Science. This will be a one-week crash course event here in Columbia, but with some work before the week here in town and some work after. I have a first rate AP teacher from here in town as the Master Teacher to do this with me, and we have about 20 teachers signed up from all across South Carolina.
    We are somewhat unique in South Carolina, apparently, in that the state Department of Education provides substantial funding for the summer institutes. I applied for and received a grant last year but didn’t get enough teachers signed up (the Dept of Ed normally wants at least ten to justify the expense). This year, I applied again, and this year we have the enrollments. I did an institute in 2009, in a year when the state didn’t have the money, but we were able to get the institute funded by an industrial consortium.
    I have taught our first semester course, which the institute has some resemblance to, but not for a while. Fortunately, one of the professors who has taught the course recently has put up about 60 short YouTube videos of various programming, computer, and Java concepts. This should help, since many of the teachers who have signed up for the institute have some programming experience, but some of that experience is not recent, and some of that is not in Java. It’s going to help to have lots of videos for people to scan in order to all get to the same place for the compressed week here in town.
    Duncan Buell
    CSTA University Representative

    Open Book Exams and SMOP

    It is perhaps fitting to write a blog about teaching programming while I sit here and monitor my students as they write the final exam. I did my other exam yesterday (same class, another lecture section) so the grading is very fresh in my mind.
    For the last few years I have been teaching one of the first three courses in our major, and all of these involve programming. I tend these days to make my exams open book, open notes, open anything-printed, but closed to anything electronic. I don’t know how long the closed electronic can survive, but I don’t know another way to keep the students from getting too much help from outside. I do not mind if they print off piles of paper, but I also try to warn them that they need to have indexed all their material. I have seen too many students frantically searching through a thousand pages of stuff looking for the one relevant paragraph. Given the level of detail, I don’t mind that they would have written down good versions of code, provided they know what that code does… (I am thinking here of the question that asks for code to link a node into a linked list, and the thee students yesterday who wrote out the code to unlink a node … what were they thinking?).
    By making all my exams open notes, I can’t ask some of the simple questions like definitions. But I can ask them to become good librarians and good at finding the references to the material. If they can properly index and organize the details, they have probably learned the material. And perhaps through sheer repetition, they might come to understand the precise way in which things are said and written. In general, their writing is fuzzy, which I think is because their thinking is fuzzy. But this isn’t a discipline where fuzzy thinking is a good idea.
    For various reasons, I have been reading a lot of books of late “about” software and about how computing is changing the world. Dreaming in Code, by Scott Rosenberg; Distrust That Particular Flavor, by William Gibson; Programmed Visions, by Wendy Chun. I have also been working with faculty from across campus on digital humanities projects. We live in this strange world in which really great ideas all come down to the issue of SMOP (a Small Matter of Programming). There is a huge amount of work in getting a big software artifact written and tested. There can be major issues in dealing with APIs. All that cool stuff is available for programming iPhones, for example, but it is necessary to understand the classes and methods and how they interrelate. The big issue for me, after a long time teaching, is how to balance the need for “skill” in programming with the need for knowing how to think about putting the small pieces of code together. We still drill students in arithmetic and spelling, probably on the basis that they need to be facile with the basic skills in order to deal with higher concepts. Programming is much the same, except the skills are harder to learn and the higher concepts much harder to understand when they are fuzzy. We can read a bad essay and know that it is bad. It is harder to look at bad code, or to run bad code, and know why we don’t like what we see.
    Duncan Buell
    CSTA University Representative