Posts tagged ‘computing education’
It’s an interesting and open question. Nathan Ensmenger suggests that we have no evidence that computer scientists need a lot of mathematics (math background has been correlated with success in CS classes, not in success in a CS career), but the emphasis on mathematics helped computing a male field (see discussion here). Mathematics has both been found to correlate with success in CS classes, and not correlate with success in object-oriented programming (excellent discussion of these pre-requisite skill studies in Michael Caspersen’s dissertation). It may be true that you don’t have to be good at mathematics to learn to code, but you may have to be good at mathematics to succeed in CS classes and to get along with others in a CS culture who assume a strong math background.
People who program video games probably need more math than the average web designer. But if you just want to code some stuff that appears on the Internet, you got all the math you’ll need when you completed the final level of Math Blaster. (Here’s a good overview of the math skills required for entry-level coding. The hardest thing appears to be the Pythagorean theorem.)
This is a big deal for several reasons. The article below points out the funding that is now available for computing education research. I met someone from a big science education firm a few weeks ago who said that they were now gearing up to address issues in CS, because it’s now in their purview. That’s a good thing — more people paying more attention to computing education research can help us advance our goals of greater access.
The STEM Education Act of 2015, which expands the definition of STEM—an acronym for science, technology, engineering, and mathematics—to include computer science programs, was signed into law yesterday.The bill that became the STEM Education Act was introduced in the House of Representatives by Lamar Smith, a Republican from Texas, and Elizabeth Esty, a Democrat from Conneticut, both members of the Science, Space, and Technology Committee.The new law does not add funding, but it does expand the kinds of STEM programs that can be run and funded by federal government agencies to include computer science. It also makes people who are pursuing a master’s degree and those with a background in computer science eligible for Robert Noyce Teacher Scholarships, which support science and math graduates and professionals who hope to teach.
There are only a couple of universities in Georgia where you can get a CS teaching endorsement (a kind of credential that is an add-on to an initial certification). In both of them, you have to have a CS methods class, where students learn how to teach CS. One of them needed a CS methods course taught, but didn’t have anyone available to teach it. The problem was that it was needed by a single student (these endorsement programs are woefully undersubscribed). I offered to teach it — though not officially, since I’m a GT professor and not a professor at these other schools. So, someone else was signed up to be the instructor-of-record, and I ran the course, all on-line with weekly Skype chats.
Folks might be interested in what’s in a Methods course, so I’m sharing my draft syllabus here. Since there was only one student, I made up a syllabus to submit to check that it met the requirements of the course, and we didn’t update it afterwards. I make no claims about quality of the course. It was a class for one student to meet a requirement, and I wanted the experience of teaching a CS methods course. It did meet all the requirements of the program (which were more prescribed and substantial than most CS courses I teach). Not all the links here are live — some went to servers inside firewalls, and others were sent out via email.
Syllabus for CS Methods Course
- Be able to describe use and when one should use different CS teaching approaches like live coding, peer instruction, pair programming, worked examples, and kinesthetic learning activities.
- Be able to describe and diagnose common student misconceptions, e.g., with assignments, with while vs. if, and so on.
- Be able to describe approaches to teaching computer science, including constructionist, objects-first, functions-first, media computation.
- Write a lesson plan to teach a CS topic for a specific grade level, including assessments.
Assignments (and distribution for final grade):
- Reading reflections (4): 25% of grade
- Lesson plan: 25%
- Exam and grading rubric: 15%
- HW assignment design and grading rubric: 15%
- Project: Create all the teaching material for a single unit within a Computing Pathway class, including lessons plans, homework assignments, grading rubrics, and tests: 30%
- Why is learning to program hard? Read Guzdial chapter from Fincher & Petre and Robins, Rountree, and Rountree.
- Write Reading Reflection #1: Do you agree with the challenges to learning programming that you read there? What additional challenges have you seen?
- Read Juha Sorva appendix A. Link to whole thing.
- Discuss: How would you identify these misconceptions? How would correct them?
- Read a paper on Pair Programming (probably this one).
- Write Reading Reflection #2: Why do you think Pair Programming works as well as it does in this study? Do you think it would work as well in a high school setting?
- Read a paper on Peer Instruction: Pick any one that you like on this site.
- Review KLA website.
- Read four blog posts on worked examples in classroom from this site.
- Discuss: Peer instruction, KLA, worked examples, gesture: When are they useful and when aren’t they?
- Two readings on CS assessment: On concept inventories, and how do we assess CS.
- Write Reading Reflection #3: These papers are both undergraduate computer science. How would it be different when accessing computer science at the high school level? Would the issues be the same or different?
- How we design CS curricula.
- Discuss: Which of these approaches would work best for high school students and why? When would one work better than another?
- Write Reading Reflection #4: Based on all of these readings, come up with a philosophy of teaching K-12 computer science. Pick a grade range you prefer (elementary, middle school, secondary), and describe: What do you think ought to be taught? How do you think it ought to be taught? How do you think it ought to be assessed?
- Discuss the reflection, and pick a topic to write a lesson plan on
- Write a lesson plan: How would you teach the CS topic?
- Discuss afterwards.
- Write a homework description and grading rubric: What would you want students to do, to learn this topic? What misconceptions would you expect? How would you assure yourself they got it right?
- Discuss afterwards.
- Write an exam to test knowledge of that topic and the grading rubric for that exam.
- Discuss afterwards
- Discuss Planning for project. What worked, and what didn’t work? Are there additional things you need to know?
- Week to do additional reading, or to identify a topic for the project.
- Work week on Project
Week 15: Project completed
- Project: Create all the teaching material for a single unit within a Computing Pathway class, including lessons plans, homework assignments, grading rubrics, and tests
The headline that a professor wants to double the number of CS teachers is cool, but as I dug into the piece, I grew jealous. Wisconsin has CS teacher certification! (Even if “confused, disparate, and sometimes absurd.”) They have pre-service teacher programs! They need more CS Teaching Methods classes — I’ve taught CS teaching methods! Are they hiring? (Oh, wait — I’ve heard about what’s happening to Wisconsin state universities.) Except for that university part, Wisconsin sounds like it has it good!
The second piece of the plan consists of easing the process for computer science teachers to receive their license. Getting certified is difficult, according to Brylow. According to one report from the Computer Science Teachers Association, the process is described as “confused, disparate, and sometimes absurd.”UW-La Crosse and UW-Whitewater are the only universities left in the state that offer programs to get certified, after many universities began dropping the program in the 1990s. “Whitewater has graduated three computer science teachers in the past five years and La Crosse has graduated zero in the past five years,” Brylow said. “So we identified that one of the problems is nobody knows how to teach this one critical course called the Computer Science Teaching Methods course.
I’ve written responses to comments like Atwood’s before. His perspective on “coding” is too limited, and he isn’t realizing that being a user and being a programmer is where most people will be (see the “fat line” blog post here). That “provide them plenty of structured opportunities to play with hardware and software” is a pretty good definition of one kind of “teaching kids ‘computer science.'” We need that. But the kids who only need opportunities to “play” in order to learn tend to be highly privileged (see the “rich boys” blog post here). Nobody wants kids to just “type in pedantic command words in a programming environment.” That’s a good definition of poor computing teaching. We need good teachers who know how to support a range of students with different kinds of scaffolding.
So what Atwood is really saying that we need good CS teaching. Yup, you need a lot of that in NYC — I agree.
If you want your kids to have a solid computer science education, encourage them to go build something cool. Not by typing in pedantic command words in a programming environment, but by learning just enough about how that peculiar little blocky world inside their computer works to discover what they and their friends can make with it together. We shouldn’t be teaching kids “computer science.” Instead, we should provide them plenty of structured opportunities to play with hardware and software. There’s a whole world waiting to be unlocked.
At first blush, the Harvard Crimson‘s call seems a stark contrast to the Berkeley student’s call for more access to CS (see previous post here). I hear both student articles asking for the same thing — computing as a literacy to which everyone gets access.
CS50 is a phenomenon. Set aside the “CS50 paraphernalia” described below. CS50 has pizza parties and all night hackathons, sponsored by Facebook. Events are held at the Microsoft New England Research and Development Center. It’s probably the richest and most privileged CS class in the world. If you got into Harvard, and were excited to learn to code, CS50 is absolutely the class you want to be in — and you’re going to get an experience that matches your expectations.
Check out the syllabus for CS50 (linked here). This is a hard-core, intense computer science class for computer science students. It runs on the CS50 appliance in Ubuntu Linux. The course covers C, PHP, and SQL.
When I visited Harvard’s Graduate School of Education last year, I met students who really wanted to learn computer science. They wanted to learn CS in order to teach it. They wanted to learn about Scratch and Blockly, Greenfoot and BlueJ, Media Computation and CS Principles. That’s not the goal of CS50, but the CS50 size and culture sucks all the air out of the room. There’s not going to be another introductory CS course taught when Harvard has CS50 on its hands and in its checkbook.
The Harvard Crimson is saying that they want classes, liberal arts style classes, not phenomena. If it was just a normal class, maybe you could offer more than one of them? Maybe some aimed at other kinds of introductory CS needs?
Outside of the classroom, however, CS50 is anything but the liberal arts course its creators proclaim. Its unprecedented corporate sponsorship ensures that the course has an unmatched visibility on campus.No other course gives away and sells merchandise en masse to its students and fan base. T-shirts, umbrellas, aprons, stress balls, M&Ms, and other CS50 paraphernalia are ubiquitous on Harvard’s campus. No other course makes the first five weeks—that is, the add-drop period—significantly easier than the proceeding eight weeks of the semester, luring less confident students until it’s too late to turn back. In no other course on Harvard’s campus are students allowed to simultaneously register for conflicting courses, even if they too are filmed. No other course has disciplinary procedures that bypass the Ad Board. No other course has seen reports that TFs are instructed to decline to give comment on the course to The Crimson before conferring first with the professor.
Prescribing a lifetime drug at high cost: New York City sets 10 year goal to offer CS in all schools
NYC has joined Chicago and San Francisco and Arkansas in requiring CS in all schools. I appreciate that they recognize the value of computing education. I worry that the people making these decisions don’t realize what’s involved in covering them. In particular, is de Blasio’s decision in New York City a commitment to a long-term cost that they can’t sustain?
de Blasio’s program is going to spend $81M to help existing teachers become CS teachers over the next ten years. Let’s imagine that he succeeds and his program prepares enough CS teachers so that every school has enough teachers to provide CS learning opportunities to every NYC students.
What happens after that? A lot of the teachers going through CS teacher professional development today are new teachers, less than five years into the job. Across all STEM subjects, we lose about 50% of all new teachers within five years. In an ECS study, it was closer to 60% attrition in 3 years. We’re going to burn through those teachers quickly. Code.org counts on CS teachers being in the classroom for only three years.
Where will NYC get the teachers to sustain the effort? Do they need to raise another $81M to keep retraining existing teachers? It’s far cheaper to get teachers pre-service, straight from undergraduate. There are less than five pre-service CS teacher education programs in the United States. None are currently in New York (city or state).
de Blasio’s decision is like an architect’s decision to design a building using a particular kind of material that is hard to make and for which there are no current manufacturers. Or a doctor prescribing a drug that you’ll need for the rest of your life — but which can only be made by a specific pharmacy company at a high cost.
Some of that $81M should be used to build the infrastructure, to create the system that will keep supplying CS teachers for NYC — to create teacher certifications, start teacher education programs, and hire education faculty who will focus on CS education. I pointed out previously that that’s how Germany is bootstrapping CS education. They’re making the investment in CS ed faculty who will keep programs running for decades. My Blog@CACM post (link here) this month is on how CS departments can help grow CS teachers.
CS education is important to 21st century literacy. It’s so important that we shouldn’t promise it only to kids who are in NYC over the next 10 years. What I hope is that de Blasio’s decision leads to that kind of investment. I hope that NYC, Chicago, San Francisco, and Arkansas are going to direct attention to what’s needed to create the steady-state flow of new computing teachers into classrooms.
Meeting that goal will present major challenges, mostly in training enough teachers. There is no state teacher certification in computer science, and no pipeline of computer science teachers coming out of college. Fewer than 10 percent of city schools currently offer any form of computer science education, and only 1 percent of students receive it, according to estimates by the city’s Department of Education.
Computer science will not become a graduation requirement, and middle and high schools may choose to offer it only as an elective. But the goal is for all students, even those in elementary school and those in the poorest neighborhoods, to have some exposure to computer science.