## Posts tagged ‘mathematics education’

### Updates: NSF Funding to Study Learning with Teaspoon Languages for Discrete Mathematics

A few months before the pandemic started, Dr. Elise Lockwood at Oregon State reached out to me. She’d heard that I was interested in programming for teaching non-CS subjects, and that’s what she was doing. I loved what she was doing, and we started having regular chats.

Elise is a mathematics education researcher who has been studying how students come to understand counting problems. Like “If you have three letters and four digits, how many license plates can you make?” Or “How many two letter words can you make from the letters ROCKET, if you don’t allow double letters?” She’s been exploring having students learn counting problems by manipulating Python programs to generate all the possible combinations, then counting them. (Check out her recent papers on her Google Scholar page, especially those with her student Adaline De Chenne.)

As I said, I loved what she was doing, but Python seemed heavy-handed for this. I was starting to work on our Teaspoon languages. Could we build lighter-weight languages for the same problems?

As I kept reading Elise’s papers, I started working on two possible designs.

In one of them (called *Counting Sheets*), we play off of students’ understanding of spreadsheets. You can just describe what you want in each column, and the system will exhaustively generate every combination:

Or you can use an “=“ formula that knows how to do very simple operations with sets. Here’s a solution to the two letter words from ROCKET without repeating problem:

This is one of the tools that we’ve been building in support for both Spanish and English keywords (like Pixel Equations, that I talked about last September):

Elise found Counting Sheets intriguing, but she was worried if it would work to make the iterative structures implicit and declarative. Would students need to see the iteration to be able to reason about the counting processes?

So, I built a second Teaspoon language, called *Programmed Counting.* Here, the loops are explicit, like Python, but the only variable type is a set, and the words and phrases of the language come from counting problems.

Elise was a real sport, trying out the languages as I generated prototypes and finding the holes in what I was doing. We met face-to-face only once, when I went to Portland for SIGCSE 2020 — the one that got cancelled the very morning it was supposed to start. I had lunch with Elise, and we worked for a few hours on the designs. Barb and I went home the next day, and the big pandemic lockdown started right afterwards.

Will these work for learning? We don’t know — but we just got funding from NSF to find out! “We” here is me and PhD student Emma Dodoo, and we’ll be involving Adaline as a consultant. Elise is currently a rotator at NSF, so she’s involved only from the sidelines because of NSF COI issues. Our plan is to run experiments with various combinations of the Teaspoon languages (one or both), standalone and with Python. Do we need Python if we have the Teaspoon languages? Do the Teaspoon languages serve as scaffolding to introduce concepts before starting into Python?

Below is the abstract on the new IUSE grant, as an overview of the project. University of Michigan CSE Communications wrote a nice article about the work, available here. Huge thanks to Jessie Houghton, Angela Li, and Derrick White who turned my LiveCode prototypes into functioning Web versions.

## Abstract for NSF

Programming is a powerful tool that scientists, engineers, and mathematicians use to gain insight into their problems. Educators have shown how programming integrated into other subjects can be a powerful tool to enhance learning, from algebra to language arts. However, the cost is learning the programming language. Few students in the US learn programming — less than 5% of high school students nationwide. Most students do not have the opportunity to use programming to support ™ learning. This project is investigating a new approach to designing and implementing programming languages in classrooms: Task-specific programming (TSP) languages. TSP languages are explicitly design for integration in specific classes, to meet teacher needs, and to be usable with less than 10 minutes of instruction. TSP languages can make the power of programming to enhance learning more accessible. This project will test the value of TSP languages in discrete mathematics, which is a gateway course in some computer science programs.

The proposed project tests the use of two different TSP languages and contrasting that with a traditional programming language, Python. The proposed work will contribute to understanding about (1) the role of programming in learning in discrete mathematics, (2) the value of task-specific languages to scaffold learning, (3) how alternative representational forms for programming influence student use of TSP languages, and (4) how the use of TSP languages alone or in combination with traditional languages enhance students’ sense of authenticity and ability to transfer knowledge.

### Task Specific Programming will only matter if it solves a user’s problem (Precalculus TSP Part 4 of 5)

This is the fourth in a five part series about Precalculus Task-Specific Programming. I presented two prototypes in Parts 1 and 2, and discussed what I’m exploring about programming in Part 3.

I’ve shown my prototypes to several teachers — some computer science (e.g., I presented the first prototype at the Work In Progress Workshop at ICER in Toronto) and a half-dozen math teachers. The computer science teachers have been pretty excited, and I have had several requests for the system to try out with various student groups.

Why am I looking at precalculus? Because it’s what leads to success in college calculus. I’m influenced by Sadler and Sonnert’s work showing that high school calculus isn’t the critical thing to support success in undergraduate calculus (see article here). It’s precalculus. Undergraduate calculus is a gatekeeper. Students don’t get STEM undergraduate degrees because they can’t get through calculus. So if we want more students to succeed in STEM undergraduate, we want high school precalculus to get better, in terms of more inclusive success.

Precalculus is a pretty abstract set of topics (see an example list here). For the most part, it’s foreword looking: “You’ll need this when you get to Calculus.” My idea is to teach precalculus with concrete contexts made possible by computing, like image filters. I want more students to find precalculus more engaging and more personally meaningful, leading to more learning.

So, might my prototypes help students learn precalculus?

Math teachers have generally been, “*Meh*.”

I’ve had four teachers tell me that it’s “interesting*.” One math teacher was blunt and honest — **neither of these tools solve a problem that students have**. Basic matrix notation and element-by-element matrix operations are the *easiest* parts of matrices. Precalculus students can already (typically) figure out how to plot a given wave equation.

What’s hard? Students struggle with forms of matrix multiplication and determinants. They struggle with what each of the terms in the wave function do, and what influences periodicity. Seeing the graphed points is good, but having the values display in symbolic form like `(3*pi)/2`

would be more powerful for making a connection to a unit circle. I’m learning these in a participatory design context, so I actually pushed more on what would be useful and what I need to do better — I have a much longer list of things to do better than just these points.

The math teachers have generally liked that I am paying attention to disciplinary literacy. I’m using their notations to communicate in the ways that things are represented in their math textbooks. I am trying to communicate in the way that they want to communicate.

Here’s the big insight that I learned from the mathematics teachers with whom I’ve spoken: **Teachers aren’t going to devote class time or their prep time to something that doesn’t solve their problems.** Some teachers are willing to put time into additional, enrichment activities — if the teacher needs more of those. As one teacher told me, “Most math classes are less about *more exploration*, and more about *less failure*.” The point of precalculus is to prepare students to pass calculus. If you want more diverse students to get into STEM careers, more diverse students have to get through calculus. Precalculus is important for that. The goal is *less failure, *more success, and more student understanding of mathematics.

This insight helps me understand why some computational tools just don’t get a foothold in schools. At the risk of critiquing a sacred cow, this helps to explain why Logo didn’t scale. Seymour Papert and crew developed turtle geometry, which Andrea diSessa and Hal Abelson showed was *really* deep. But did Logo actually solve a problem that students and teachers had? Turtle graphics is beautiful, and being body syntonic is great, but that’s not the students’ problem with math. Most of their real problems with mathematics had to do with the cartesian coordinate system, not with being able to play being a turtle. Every kid can walk a square and a triangle. Did students learn general problem-solving skills? Not really. So, why should teachers devote time to something that didn’t reduce student failure in mathematics?

It would be hard to be disciplinary literate when Logo and turtle geometry was invented. Logo was originally developed on teletype machines. (See Cynthia Solomon’s great keynote about this story.) The turtle was originally a robot. Even when they moved Logo to the Apple II, they could not match the representations in the kid’s textbooks, the representations that the teachers were most comfortable with. So instead, we asked student to think in terms of `fd 200 rt 90`

instead of `(x,y)`

. Basic usability principles tell us to use what the user is familiar with. Logo didn’t. It demanded more of the students and teachers, and maybe it was worthwhile in long run — but that tradeoff wasn’t obvious to the teachers.

I have a new goal:

*I want to provide a programming experience that can be used in five minutes which can be integrated into a precalculus class to improve on student learning.*

I want to use programming to solve a learning problem in another domain. Programming won’t enter the classroom if it doesn’t solve a teacher’s problem, which is what they perceive as the student’s problem. *Improving student learning is my users’ (teachers’) goals. Good UI design is about helping the user achieve their goals.*

I’ve started on designs for two more precalc prototypes based on the participatory design sessions I’ve had, and I’m working on improving the wave texture generator to better address real learning problems. The work I’m doing with social science educators is *completely* driven by teachers and student learning challenges. That’s one of the reasons why I don’t have working prototypes there yet — it’s harder to address *real* problems. My precalc prototypes were based on my read of literature on precalculus. That’s never going to be as informed as the teacher-in-the-classroom.

Now, there’s another way in which we might argue that these prototypes help with education — maybe they help with learning something about computer science? Here’s a slide from my SIGCSE 2019 keynote, referencing the learning trajectories work by Katie Rich, Carla Strickland, T. Andrew Binkowski, Cheryl Moran, and Diana Franklin (see this blog post).

You’re not going to learn anything about #1 from my prototypes — you can’t write imprecise or incomplete code in these task-specific programming environments. You can learn about #2 — different sets of transformation *can* produce the same outcomes. You definitely learn about #3 — programs are made by assembling instructions from a (*very*) limited set. If I were to go on and look at the Rich et al. debugging learning trajectories (see paper here), there’s a lot of that in my prototypes, e.g., “Outcome can be used to decide whether or not there are errors.”

So here’s the big research question: *Could students learn something about the nature of programming and programs from using task-specific programming? * I predict yes. Will it be transferable? To text or blocks language? Maybe…

Here’s the bigger research question that these prototypes have me thinking about. For the moment, imagine that we had tools like these which could be used reasonably in less than five minutes of tool-specific learning, and could be dropped into classes as part of a one hour activity. Imagine we could have one or two per class (e.g., algebra, geometry, trigonometry, biology, chemistry, and physics), throughout middle and high school. *Now*: Does it transfer? If you saw a dozen little languages before your first traditional, general-purpose programming language, would you have a deeper sense of what programs did (e.g., would you know that there is no Pea-esque “super-bug” homunculus)? Would you have a new sense for what the activity of programming is about, including debugging?

I don’t know, but I think it’s worth exploring task-specific programming more to see if it works.

**Request to the reader:** I plan to continue working on precalculus task-specific programming (as well as in social studies). If you know a precalculus teacher or mathematics education researcher who would be interested in collaborating with me (e.g., to be a design informant, to try out any of these tools, to collaborate on design or assessment or evaluation), please let me know. It’s been hard to find math ed people who are willing to work with me on something this weird. Thanks!

* In the South, if you hear “Bless your heart!” you should know that you’re likely being insulted. It sort of means, “You are so incompetent that you’re pitiful.” I’ve learned the equivalent from teachers now. It’s “That would make a nice *enhancement* activity” or “We might use that *after testing*.” In other words, “I’d never use this. It doesn’t solve any of my problems.”

### Open Question around Mathematics in Undergraduate Computer Science

I’m always happy to see a new computing education blog, and I’m particularly excited by posts that identify open (research, and otherwise) questions.

At SIGCSE 2019 this past February, we organized a birds of a feather session (a one-hour discussion group) on modernizing mathematics in computer science. We expected a modest number of attendees but were surprised and delighted to host a completely filled room of discrete mathematics, algorithms, and theory of computation educators—60 attendees in total—interested in evolving how we, as a discipline, situate mathematical foundations in our curriculum!

What was even more surprising to us was how the discussion evolved over the hour. Our original intention was to focus on how we might re-shape the foundational portions of the computer curriculum in light of how computing has evolved over the last decade:

The undergraduate computer science curriculum is ever-changing but has seen particular turmoil recently. Topics such as machine learning, data science, and concurrency and parallelism have grown in importance over the last few years. As the content of our curriculum changes, so too does the mathematical foundations on which it rests. Do our current theoretical courses adequately support these foundations or must we consider new pedagogy that is more relevant to our students’ needs? In this BoF, we will discuss what a modern mathematics curriculum for computer scientists should cover and how we should go about accomplishing this in our classrooms.(https://dl.acm.org/citation.cfm?id=3293748)…

At this point, we shifted our focus from trying to answer the original “concept” question to identifying the myriad of problems that educators wrestled with along these three dimensions. We outline the problems that people raised below:

From https://cs-foundations-ed.github.io/sigcse/2019/03/29/bof-report.html

### Fixing Mathematical Notation with Computing, and “Proving” It with Education

I was looking for a paper that I needed to review last night, and came upon these paragraphs in the paper I brought up by mistake.

This is bold language:

It might be argued that mathematical notation (MN) is adequate as it is, and could not benefit from the infusion of ideas from programming languages. However, MN suffers an important defect: it is not executable on a computer, and cannot be used for rapid and accurate exploration of mathematical notions.

The paper I found in my archive “Computers and Mathematical Notation” doesn’t seem to be published anywhere.The author is Kenneth E. Iverson, the inventor of APL. This paper echoes some of the thoughts in Iverson’s 1980 Turing Award Lecture, “Notation as a Tool of Thought.”

The unpbulished paper is notable because he wrote it in J, his successor language to APL. He realized that his languages would be more accessible if they used the ASCII character set. J (which you can find at http://jsoftware.com/) is essentially APL, but mapped to a normal keyboard.

The attempt to “fix” mathematical notation (“suggestions for improvement,” to be exact) is bold and interesting. What makes his argument particularly relevant for this blog is *how* he made the argument. How do you “prove” that you have improved on traditional mathematics notation?

Iverson decided that education was the way to do it. He wrote mathematics textbooks, using J. He wanted to show that basic mathematics is more explorable using his notation.

- Arithmetic: http://www.jsoftware.com/books/pdf/arithmetic.pdf
- Calculus: http://www.jsoftware.com/books/pdf/calculus.pdf
- Discrete Mathematics: http://www.jsoftware.com/books/pdf/cmc.pdf (as a companion to “Concrete Mathematics”)

I find this network of papers and textbooks fascinating. I love the goal of inventing a programming notation, not to develop software, but to improve the expression and exploration of mathematics. (In that sense, J is like Mathematica.) I am intrigued by the challenge of how to show that you succeeded, and to use education as a way to demonstrate that success. I’m amazed at these multiple textbooks that Iverson wrote and released for free, to encourage exploration of mathematical ideas with J.

This week, I was informed that I will be receiving the 2019 SIGCSE Award for Outstanding Contribution to CS Education. The award will be presented at the 2019 SIGCSE Technical Symposium to be held in Minneapolis, MN from Feb 27 – March 2, 2019. I am honored and thrilled. SIGCSE has been my academic home since my first ACM publication at SIGCSE’94. The list of awardees is stunning, including my advisor, Elliot Soloway, Alan Kay, Hal Abelson, Jan Cuny, Alan Perlis, Judith Gal-Ezer, Sally Fincher, Grace Murray Hopper, Wirth, Knuth, and Dijkstra (among many others — the award started in 1981). It’s an impressive club I’m joining.

That announcement didn’t feel like enough for a blog post in itself, so I’m just tacking it on down here. I’ll probably write more about it when I figure out what I’m going to say in my talk.

### What would convince faculty in other disciplines that programming is useful?

Recently I came across an article from the journal *Issues in Information Systems*, “Faculty perspectives on the information technology and analytics requirements of business students.” The authors surveyed 204 business faculty from 20 different universities. They found that “[N]early a third of respondents (32.6%) felt that computer programming skills should not be required at all. Interestingly, the same number (32.6%) also believe that Calculus should not be required of business students.” Below is the table with the results. About a third of faculty actually thought that all business students should take a three credit hour course in programming, but a third also felt that it shouldn’t be required at all. Details in the table below:

I’ve been working with the Georgia Department of Education on a new kind of pre-calculus course that uses computing to demonstrate the pre-calc concepts in a variety of contexts, e.g., scalar multiplication of a vector by reducing red in all the pixels in a picture, matrix multiplication by doing transforms of objects in 3-D space, periodicity of functions (like trigonometric functions) to generate sounds, etc. We did a careful mapping of each pre-calculus learning objective to relevant computing demonstrations, with multiple possible computing contexts for each pre-calculus learning objective. The course was rejected by the mathematics oversight board today. They didn’t buy it at all. Among the responses: “The description of the course states that it is ‘designed to prepare students for calculus and other college level mathematics courses,’ which they believe it does not” and “Members feel that computer science is not mathematics and should not be replacing a mathematics course.”

I’m struck by these two stories. For me, programming is this useful new notation that can enhance learning in many disciplines. I’m swayed by the results with Bootstrap and with the CT-STEM effort at Northwestern. I hadn’t realized the extent to which the teachers in the non-CS disciplines were not buying the story.

- Business faculty are clearly dubious about the benefits of programming for business students. I wonder if they’ve done the studies about how many business school graduates use programming (from SQL queries and spreadsheet macros, to data analysis and even modeling and simulation) in their daily jobs.
- Mathematics faculty are clearly dubious that (a) programming to apply mathematics topics leads to more mathematics learning and (b) computer science is even related to mathematics.

These create an interesting set of research questions to me. Why are faculty in non-CS disciplines dubious about the advantages of programming for their students? What do they think programming is? Maybe they’re right — maybe “programming” as we are currently defining it isn’t worth the credit hours for their students. How could we re-define programming (and programming languages and tools) to make it more useful?

### Do we really want computerized personalized tutoring systems? Answer: Yes

An excerpt from Mitchel Resnick’s new book *Lifelong Kindergarten: Cultivating Creativity through Projects, Passion, Peers, and Play *is published below in the Hechinger Report. Mitchel argues against computerized personal tutoring systems, because they are only good for “highly structured and well-defined knowledge.” Because we don’t know how to build these tutoring systems to teach important topics like creativity and ethics.

Agreed, but we are not currently reaching all students with the “highly structured and well-defined knowledge” that we want them to have. We prefer students to have well-educated teachers, and we want students to learn creativity and ethics, too. But if we can teach topics like mathematics well with personalized tutoring systems, why shouldn’t we use them? Here in Atlanta, students are not learning mathematics well (see blog post referencing an article by Kamau Bobb). We have good results on teaching students algebra with cognitive tutors.

Here’s my concern: Wealthy schools can reject computerized personal tutoring systems because they can afford well-trained teachers, which means that there is less of a demand for computerized personal tutoring systems. Lower demand means higher costs, which means that less-wealthy schools can’t afford them. If we encourage more computerized personal tutoring systems where they are appropriate, more of them get created, they get better, and they get cheaper.

But I’m skeptical about personalized tutoring systems. One problem is that these systems tend to work only in subject areas with highly structured and well-defined knowledge. In these fields, computers can assess student understanding through multiple-choice questions and other straightforward assessments. But computers can’t assess the creativity of a design, the beauty of a poem, or the ethics of an argument. If schools rely more on personalized tutoring systems, will they end up focusing more on domains of knowledge that are easiest to assess in an automated way?

### CS Teacher Interview: Emmanuel Schanzer on Integrating CS into Other Subjects

I love that Bootstrap is building on their great success with algebra to integrate CS into Physics and Social Studies. I’m so looking forward to hearing how this works out. I’m working on related projects, following Bootstrap’s lead.

Lots of governors, superintendents and principals made pledges to bring CS to every child, but discovered that dedicated CS electives and required CS classes were either incredibly expensive (hiring/retaining new teachers), logistically impossible (adding a new class given finite hours in the day and rooms in the building), or actively undermined equity (opt-in classes are only taken by students with the means and/or inclination). As a result, they started asking how they might integrate CS into other subjects — and authentic integration is our special sauce! Squeezing CS into math is something folks have been trying to do for decades, with little success. Our success with Bootstrap:Algebra means we’ve got a track record of doing it right, which means we’ve been approached about integration into everything from Physics to Social Studies.

Source: Computer Science Teacher: CS Teacher Interview: Emmanuel Schanzer–The Update

### We need a greater variety of CS teaching methods: The Way We Teach Math Is Holding Women Back

As I often do, I was trying to convince my colleagues that there is no “Geek Gene.” One of them agreed that there is no Geek Gene. But still…some people can’t learn CS, he insisted. He pointed out that some people take a class “6-8 times to pass it.”

That got me thinking about the evidence he offered. If someone takes the same course six times and can’t pass, does that mean that the student can’t learn CS?

*Or maybe it proves that we’re insane*, if Einstein’s famous quote is right (“Insanity: doing the same thing over and over again and expecting different results.”) If the problem is our teaching and learning methods, simply repeating the exact same methods six times is not going to work. Think about in terms of teaching reading. We recognize that we need a variety of methods for teaching reading. Having a dyslexic person take the exact same mainstream class six times will simply not work.

Why we are so resistant (as in the mathematics story linked below) to consider alternative teaching methods in CS?

The irony of the widespread emphasis on speed in math classrooms, with damaging timed tests given to students from an early age, is that some of the world’s most successful mathematicians describe themselves as slow thinkers. In his autobiography, Laurent Schwartz, winner of the world’s highest award in mathematics, described feeling “stupid” in school because he was a slow thinker. “I was always deeply uncertain about my own intellectual capacity; I thought I was unintelligent,” he wrote. “And it is true that I was, and still am, rather slow. I need time to seize things because I always need to understand them fully.”

When students struggle in speed-driven math classes, they often believe the problem lies within themselves, not realizing that fast-paced lecturing is a faulty teaching method. The students most likely to internalize the problem are women and students of color. This is one of the main reasons that these students choose not to go forward in mathematics and other STEM subjects, and likely why a study found that in 2011, 74% of the STEM workforce was male and 71% was white.

Source: Jo Boaler on Women in STEM, Ivanka Trump and Betsy DeVos – Motto

### NSF Education Research Questions and Warnings for #CSforAll during #CSEdWeek

Joan Ferrini-Mundy spoke at our White House Symposium on State Implementation of CS for All (pictured above). Joan is the Assistant Director at NSF for the Education and Human Resources Directorate. She speaks for *Education Research*. She phrased her remarks as three research areas for the CS for All initiative, but I think that they could be reasonably interpreted as three sets of warnings. These are the things that could go wrong, that we ought to be paying attention to.

**1. Graduation Requirements:** Joan noted that many states are making CS “count” towards high school graduation requirements. She mentioned that we ought to consider the comments of organizations such as NSTA (National Science Teachers Association) and NCTM (National Council of Teachers of Mathematics). She asked us to think about how we resolve these tensions, and to track what are the long term effects of these “counting” choices.

People in the room may not have been aware that NSTA had just (October 17) come out with a statement, “Computer Science Should Supplement, not Supplant Science Education.”

The NCTM’s statement (March 2015) is more friendly towards computer science, it’s still voiced as a concern:

Ensuring that students complete college- and career-readiness requirements in mathematics is essential. Although knowledge of computer science is also fundamental, a computer science course should be considered as a substitute for a mathematics course graduation requirement only if the substitution does not interfere with a student’s ability to complete core readiness requirements in mathematics. For example, in states requiring four years of mathematics courses for high school graduation, such a substitution would be unlikely to adversely affect readiness.

Both the NSTA and NCTM statements are really saying that you ought to have enough science and mathematics. If you only require a couple science or math courses, then you shouldn’t swap out CS for one of those. I think it’s a reasonable position, but Joan is suggesting that we ought to be checking. How much CS, science, and mathematics are high school students getting? Is it enough to be prepared for college and career? Do we need to re-think CS counting as science or mathematics?

**2. Teacher Credentialing:** Teacher credentials in computer science are a mishmash. Rarely is there a specific CS credential. Most often, teachers have a credential in business or other Career and Technical Education (CTE or CATE, depending on the state), and sometimes mathematics or science. Joan asked us, “How is that working?” Does the background matter? Which works best? It’s not an obvious choice. For example, some CS Ed researchers have pointed out that CTE teachers are often better at teaching diverse audiences than science or mathematics teachers, so CTE teachers might be better for broadening participation in computing. We ought to be checking.

**3. The Mix of Curricular Issues:** While STEM has a bunch of frameworks and standards to deal with, we know what they are. There’s NGSS (Next Generation Science Standards) and the National Research Council Framework. There’s Common Core. There are the NCTM recommendations.

In Computer Science, everything is new and just developing. We just had the K-12 CS Framework released. There are ISTE Standards, and CSTA Standards, and individual state standards like in Massachusetts. Unlike science and mathematics, CS has almost no assessments for these standards. Joan explicitly asked, “What works where?” Are our frameworks and standards good? Who’s going to develop the assessments? What’s working, and under what conditions?

I’d say Joan is being a critical friend. She wants to see CS for All succeed, but she doesn’t want that to cost achievement in other areas of STEM. She wants us to think about the quality of CS education with the same critical eye that we apply to mathematics and science education.

### Spreadsheets as an intuitive approach to variables: I don’t buy it

A piece in *The Guardian* (linked by Deepak Kumar on Facebook) described how Visicalc became so popular, and suggests that spreadsheets make variables “intuitive.” I don’t buy it. Yes, I believe that spreadsheets help students to understand that a value can change (which is what the quote below describes). I am not sure that spreadsheets help students to understand the *implications* of that change. In SBF (Structure, Behavior, Function) terms, spreadsheets make the *structural* aspect of variables visible — variables vary. They don’t make evident the *behavior* (how variables connect/influence to one another), and they don’t help students to understand *function *of the variable or the overall spreadsheet. If we think about the misconceptions that students have about variables, the varying characteristic is not the most challenging one.

The Bootstrap folks have some evidence that their approach to teaching variables in Racket helps students understand variables better in algebra. It would be interesting to explore the use of spreadsheets in a similar curriculum — could spreadsheets help with algebra, too? I don’t expect that we’d get the same results, in part because spreadsheet variables don’t *look* like algebra variables. Surface-level features matter a lot for novices.

Years ago, I began to wonder if the popularity of spreadsheets might be due to the fact that humans are genetically programmed to understand them. At the time, I was teaching mathematics to complete beginners, and finding that while they were fine with arithmetic, algebra completely eluded them. The moment one said “let x be the number of apples”, their eyes would glaze and one knew they were lost. But the same people had no problem entering a number into a spreadsheet cell labelled “Number of apples”, happily changing it at will and observing the ensuing results. In other words, they intuitively understood the concept of a variable.

Source: Why a simple spreadsheet spread like wildfire | Opinion | The Guardian

### You Don’t Have to Be Good at Math to Learn to Code – The Atlantic

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.)

Source: You Don’t Have to Be Good at Math to Learn to Code – The Atlantic

### Get CS into Schools through Math and Science Classes: What we might lose

The August issue of *Communications of the ACM* (see here) includes a paper in the Viewpoints Education column by Uri Wilensky, Corey E. Brady, and Michael S. Horn on “Fostering Computational Literacy in Science Classrooms.” I was eager to get Uri’s perspective on CS education in high schools into the Viewpoints column after hearing him speak at the January CS Education Research workshop.

Uri suggests that the best way to get computational literacy into high schools is by adding computer science to science classes. He’s done the hard work of connecting his agent-based modeling curriculum to Next Generation Science Standards. In Uri’s model, Computer Science isn’t a “something else” to add to high school. It helps science teachers meet their needs.

Uri isn’t the only one pursuing this model. Shriram and Matthias suggested teaching computer science through mathematics classes in CACM in 2009. Bootstrap introduces computer science at the middle school level as a way to learn Algebra more effectively. Irene Lee’s GUTS (“Growing Up Thinking Scientifically”) introduces computation as a tool in middle school science.

In most states today, computer science is classified as a business/vocational subject, called “Career and Technical Education (CTE).” There are distinct advantages to a model that puts CS inside science and mathematics classes. Professional development becomes much easier. Science and mathematics teachers have more of the background knowledge to pick up CS than do most business teachers. CS becomes the addition of some modules to existing classes, not creating whole new classes.

It’s an idea well worth thinking about. I can think of three reasons *not* to pursue CS through math/science model, and the third one may be a show-stopper.

*(1) Can science and math teachers help us broaden participation in computing?* Remember that the goal of the NSF CS10K effort is to broaden *access* to computing so as to broaden *participation* in computing. As Jane Margolis has noted, CTE teachers know how to teach diverse groups of students. Science and mathematics classes have their own problems with too little diversity. Does moving CS into science and mathematics classes make it more or less likely that we’ll attract a more diverse audience to computing?

*(2) Do we lose our spot at the table?* I’ve noted in a Blog@CACM post that there are computer scientists annoyed that CS is being classified by states as “science” or “mathematics.” Peter Denning has argued that computer science *is* a science, but cuts across many fields including mathematics and engineering. If we get subsumed into mathematics and computer science classes, do we lose our chance to be a peer science or a peer subject to mathematics? And is that going against the trend in universities? Increasingly, universities are deciding that computer science is its own discipline, either creating Colleges/Schools of CS (e.g., Georgia Tech and CMU) or creating Colleges/Schools of Information/Informatics (e.g., U. Washington, U. Michigan, Drexler, and Penn State).

*(3) Do we lose significant funding for CS in schools?* Here’s the big one. Currently, computer science is classified as “Career and Technical Education.” As CTE, CS classes are eligible for Perkins funding — which is

*not*available for academic classes, like mathematics or science.

I tried to find out just how much individual schools get from Perkins. Nationwide, over $1.2 billion USD gets distributed. I found a guide for schools on accessing Perkins funds. States get upwards of $250K for administration of the funds. I know that some State Departments of Education use Perkins funding to pay for Department of Education personnel who manage CTE programs. To get any funding, high schools must be eligible for at least $15K. That’s a lot of money for a high school.

The various CS Education Acts (e.g., on the 2011 incarnation and on the 2013 incarnation) are about getting CS classified as STEM in order to access funding set aside for STEM education. As I understand it, none of these acts has passed. Right now, schools can get a considerable amount of funding if CS stays in CTE. If schools move CS to math and science, there is no additional funding available.

Perkins funding is one of the reasons why CS has remained in CTE in South Carolina. It would be nice to have CS in academic programs where it might be promoted among students aiming for college. But to move CS is to lose thousands of dollars in funding. South Carolina has so far decided that it’s not in their best interests.

Unless a CS education act ever passes Congress, it may not make economic sense to move CS into science or mathematics courses. The federal government provides support for STEM classes and CTE classes. CS is currently in CTE. We shouldn’t pull it out until it counts as STEM. This is another good reason to support a CS education act.

### Big Data vs. Ed Psychology: Work harder vs. work smarter

I met with a prospective PhD student recently, who told me that she’s interested in using big data to inform her design of computing education. She said that she disliked designing something, just crossing her fingers hoping it would work. She and the faculty she’s working with are trying to use big data to inform their design decisions.

That’s a fine approach, but it’s pretty work-intensive. You gather all this data, then you have to figure out what’s relevant, and what it means, and how it influences practice. It’s a very computer science-y way of solving the problem, but it’s rather brute force.

There is a richer data source with much more easily applicable design guidelines: ** educational psychology literature**. Educational psychologists have been thinking about these issues for a

*long*time. They

*know*

*a lot of things.*

We’re finding that we can inform a lot of our design decisions by simply reading the relevant education literature:

- Like our work on subgoal labeling,
- And on worked examples,
- And on lower-cognitive load learning,
- And on peer instruction.

I was recently reading a computer science paper in which the author said that we don’t know much about mathematics education, and that’s because we’ve never had enough data to come up with findings. But there were no references to mathematics education literature. We actually know a **lot**** **about mathematics education literature. Too often, I fear that we computer scientists want to invent it all ourselves, as if that was a better approach. Why not just talk to and read the work of really smart people who have devoted their lives to figuring out how to teach better?

### How did math and science education grow out of math and science departments?

In the 18th and 19th centuries, mathematics became part of the core curriculum, and in the early 20th century, mathematics *education *started being taken seriously. The first Chair of mathematics education was created in 1893 — in a mathematics department.

I don’t know how science education research came to be seen as a standalone field. I know that the earliest Physics Education Researchers (like Lillian McDermott) started (and in Lillian’s case, remain) in Physics.

If you look at most Schools/Colleges/Departments of Education today, there are programs in science education, mathematics education, and sometimes even history or reading education. At what point did these fields break away from their original domain departments become established in Education? What was the development path? Clearly, becoming part of the core curriculum is key. Then it’s important to teach teachers about it.

I honestly don’t know the answer, and I’m hoping that readers here might be able to lend some light. What is the developmental path such that computing education is becomes entrenched, part of what we teach teachers about, and something that grows beyond computer science departments?

### Teaching CS in Schools with Meaning: Contexts and problems come first

Richard Hake relates a story from Alan Schoenfeld:

One of the problems on the NAEP [National Assessment of Educational Progress] secondary mathematics exam, which was administered to a stratified sample of 45,000 students nationwide, was the following: An army bus holds 36 soldiers. If 1128 soldiers are being bused to their training site, how many buses are needed?

Seventy percent of the students who took the exam set up the correct long division and performed it correctly. However, the following are the answers those students gave to the question of ‘how many buses are needed?’: 29% said…31 remainder 12; 18% said…31; 23% said…32, which is correct. (30% did not do the computation correctly).

It’s frightening enough that fewer than one-fourth of the students got the right answer. More frightening is that almost one out of three students said that the number of buses needed is ‘31 remainder 12’.

The problem that Hake and Schoenfeld are both pointing out is that we teach mathematics (and much else in our curriculum) completely divorced from the contexts in which the mathematics make sense. The children taking the NAEP knew *how* to do the mathematics, but not * why*, and not nearly enough about how the mathematics helps to solve a problem. They knew mathematics, but now what it was

**.**

*for*Hake relates this story in an article about Louis Paul Benezet, an educator who ran a radical experiment in the 1930’s. Benezet saw how mindlessly young children were performing mathematics, so he made a dramatic change: Almost entirely remove mathematics from grades 1-5. Start teaching mathematics in grade 6, with a focus on problem-solving (e.g., start from estimation, so that you have a sense of when an answer is reasonable). Sixth graders can understand the problems for which one should use mathematics. The point is *not* to introduce the * solution*, until students understood the

*. Remarkably, the experimental 6th graders completely caught up in just four months to the 6th graders who had had mathematics all five previous years.*

**problem**The experiment was radical then, and as far as I know, has not been replicated — even though evaluations suggest it worked well. It runs against our intuition about curriculum. Mathematics is important, right? We should do *more* of it, and as *early* as possible. How could you *remove* any of it? Benezet argued that, instead, young children should do more reading and writing, saving the mathematics for when it made sense.

Hake uses Benezet (and the evaluation of Benezet’s approach by Berman) to argue for a similar radical approach to physics education — teaching some things to kids to build up intuition, but with a focus on *using* physics to solve problems, and introducing the problems only when the students can understand them. There are lessons here for computing education, too.

- First,
*problems and contexts*Teaching a FOR loop and arrays**always**come first!*before*teaching a problem in which they are useful just leads to rote learning, brittle knowledge which can’t be applied anywhere, let alone transferred. - Second, the answer to the question “What should be removed from our overly-packed curriculum to squeeze computer science in?” may be “Get rid of the overly-packed curriculum.” There may be things that we’re teaching at the wrong time, in the wrong way, which really is just a waste of everyone’s time.
- Finally, just how young should we be teaching programming? Several people sent me the link to the report about Estonia teaching all first graders to program (quoted and linked below). Sure, you
*can*teach first graders to program — but will they understand*why*they’re programming? What problems will first graders recognize as problems for which programming is a solution?

I do applaud the national will in Estonia to value computing education, but I do wonder if teaching programming so young leads to rote learning and the idea that “31 remainder 12” is a reasonable number of buses.

We’re reading today that Estonia is implementing a new education program that will have 100 percent of publicly educated students learning to write code.

Called ProgeTiiger, the new initiative aims to turn children from avid consumers of technology (which they naturally are; try giving a 5-year-old an iPad sometime) into developers of technology (which they are not; see downward-spiraling computer science university degree program enrollment stats).

ProgreTiiger education will start with students in the first grade, which starts around the age of 7 or 8 for Estonians. The compsci education will continue through a student’s final years of public school, around age 16. Teachers are being trained on the new skills, and private sector IT companies are also getting involved, which makes sense, given that these entities will likely end up being the long-term beneficiaries of a technologically literate populace.

via Guess who’s winning the brains race, with 100% of first graders learning to code? | VentureBeat.

Recent Comments