Posts tagged ‘public policy’
Top business leaders, 27 governors, urge Congress to boost computer science education – The Washington Post
I saw on Facebook that Hadi Partovi was at Congress. Now I see why — there’s an effort underway to get Congress to fund more in CS education. I’m wondering what they want to get funded. Incentives for teachers? Professional development? Pre-service education? Does someone know the details?
Despite this groundswell, three-quarters of U.S. schools do not offer meaningful computer science courses. At a time when every industry in every state is impacted by advances in computer technology, our schools should give all students the opportunity to understand how this technology works, to learn how to be creators, coders, and makers — not just consumers. Instead, what is increasingly a basic skill is only available to the lucky few, leaving most students behind, particularly students of color and girls.
How is this acceptable? America leads the world in technology. We invented the personal computer, the Internet, e-commerce, social networking, and the smartphone. This is our chance to position the next generation to participate in the new American Dream.
At the end of LaTICE 2016, the Vice-Rector of Al-Baha University in Saudi Arabia (see information here) welcomed attendees to LaTICE 2017. After the presentation about Al-Baha University, Sahana Murthy of IIT-Bombay stood up and asked, “Can I come to LaTICE 2017 dressed as I am right now, in Indian clothes?” The Vice-Rector replied, “No.” All women, including foreigners, will be required to cover their hair at LaTICE 2017.
That exchange was a central topic of conversation for the rest of the conference and in social media for me. I heard some female computing education researchers say that they would attend anyway. Many I heard from expressed outrage. Several were angry that the organizing committee for LaTICE would even place the conference in Saudi Arabia under these restrictions.
I spoke to Neena Thota about LaTICE 2017 (seen below after my keynote). She was one of the Chairs for LaTICE 2016 (faculty at Uppsala University and University of St. Joseph in Macau) who went to Saudi Arabia in preparation for the conference. She felt respected there and taken seriously as a scholar, but she did have to cover-up. Neena doesn’t expect that the rules for women in Saudi Arabia (see the Wikipedia page here about them) will change for a long time. Do we simply ignore the scholars there and ostracize them, for rules over which they may have no control? As in Qatar, computer science students in Saudi Arabia are majority female.
The question is no longer rhetorical for me. I was invited to attend the Program Committee meeting at LaTICE 2016 as a non-voting observer, and I have been invited to serve on the PC for LaTICE 2017. I have already had several people warn me that I should not participate. They urged me to shun the conference publicly, in order to send a clear message against the treatment of women in Saudi Arabia.
I’ve been thinking about this, and discussing it with women in my life (my wife, my daughters, and my colleagues). I’m not female, and I can’t fully understand my own biases as a male, so I sought advice from women in my life and very much appreciate all the comments I received. I’ve decided that I will serve on the LaTICE 2017 program committee.
I understand the reasons of anyone who chooses not to participate. Those who choose not to review are sending a message that LaTICE should never have gone to a place that restricts the rights of women. I can understand why women, especially from the West, might choose not to attend. I don’t think foreign women should go there, unless they’re willing to abide by the laws and customs of the place they’re visiting.
Here are my reasons for thinking it worthwhile to engage in LaTICE 2017:
- The female Computing students and faculty in Saudi Arabia might not otherwise be able to attend a conference like LaTICE. Unless LaTICE goes there, they do not get the opportunity to hear other perspectives, to share their practices, and to participate in a community of education scholars. By participating in the PC, I get to share what I know about computing education with the community of scholars in Saudi Arabia, both female and male.
- As an education researcher, I know that learning and change occurs from active dialogue, not from passive silence. I doubt that I can change much in Saudi Arabia, either by my engagement or my public refusal to engage. This semester our seminar on Learning Sciences and Technologies at Georgia Tech read Paulo Freire’s Pedagogy of the Oppressed. Freire points out that privileged people can’t solve the problems of the less-privileged, nor can the privileged even “help” the less-privileged. All that any of us can do is to create dialogue which creates opportunities for learning for everyone. Freire explicitly includes teachers in that everyone. Teachers ought to aim to learn from students. Dialogue requires engagement. Reading papers and responding to them with my comments creates dialogue.
- Finally, I want to be engaged because of what I will learn. I’m curious. I learned more about India from attending LaTICE 2016 (see the first and second blog posts in this series). I would like to learn more about Saudi Arabia. It makes me a more informed and effective researcher when I am more aware of other contexts.
Neeti Pathak, one of the students with whom I work, pointed out that there is interplay between religion and culture in Saudi Arabia. I also look to my own faith in thinking about LaTICE 2017. Pope Francis, the leading figure in my faith, recently made a proclamation encouraging the Church to be more welcoming, even to those that the Church may have once ostracized (see NYTimes piece). That’s a proclamation that relates to LaTICE 2017. Everyone gains by engaging, even with those whose activities and rules we might not like.
I’m not willing to ostracize a whole country, even if they have rules and customs that I think are wrong. I’m not confident that I understand the issues in Saudi Arabia. I’m not confident that my views on them are more than my Western biases interpreting customs and values I don’t understand. I don’t feel justified in making a statement against LaTICE 2017. I see value in engaging in dialogue.
I shared earlier versions of this post with several colleagues, who are angry with me for the stance I’m taking. These are complicated issues. I am sure that there are many more perspectives that I have not yet considered. I welcome further discussion in the comments, including telling me why I’m wrong.
At LaTICE 2016, I attended a session on teacher professional development. I work at preparing high school CS teachers. I felt like I’d be able to relate to the professional development work. I was wrong.
One of the large projects presented at LaTICE 2016 was the T10kT project (see link here) whose goal is to use technology to train 10,000 teachers. What I didn’t realize at first was that the focus is on higher-education teachers, not high school teachers. The only high school outreach activity I learned about at LaTICE 2016 was from the second keynote, on an Informatics Olympiad from Madhavan Mukund (see slides here) which is only for a select group of students.
India has 500 universities, and over 42,000 higher education institutions. They have an enormous problem trying to maintain the quality of their higher-education system (see more on the Wikipedia page). They rely heavily on video, because videos can be placed on a CD or USB drive and mailed. The T10kT instructors can’t always rely on Internet access even to higher-education institutions. They can’t expect travel even to regional hubs because many of the faculty can’t travel (due to expense and family obligations).
As can be seen in the slide above, they have a huge number of participants. I asked at the session, “Why?” Why would all these higher-education faculty be interested in training to become better teachers? The answer was that participants get certificates for participating in T10kT, and those certificates do get considered in promotion decisions. That’s significant, and something I wish we had in the US.
I tried to get a sense for how many primary and secondary schools there are in India, and found estimates ranging from 740K to 1.3M. Compulsory education was only established in 2010 (goes to age 14), and is not well enforced. I heard estimates that about 50% of school-age children go to school because only enrollment is checked, not attendance.
Contrast this with the CS10K effort in the United States. There are about 25-30,000 high schools in the US. Having 10K CS teachers wouldn’t reach every school, but it would make a sizable dent. A goal to get 10K CS teachers in Indian high schools would be laughable. When you increase the number of high schools by two orders of magnitude, 10,000 teachers barely moves the needle. Given the difficulty of access and uncertain Internet, it’s certainly not cheaper to provide professional development in India. They have an enormous shortage of teachers — not just CS. They lack any teachers at all in many schools. The current national focus is on higher-education because the secondary and primary school problems are just so large.
Alan Kay has several times encouraged me to think about how to provide educational technology to support students who do not have access to a teacher. I resisted, because I felt that any educational technology was a poor substitute for a real teacher. Now I realize what a privilege it is to have any teacher at all, and how important it is to think about technology-based guided learning for the majority of students worldwide who do not have access to a teacher.
How do we do it? How do we design technology-based learning supports for Indian students who may not have access to a teacher? I attended a session on IITBx, the edX-hosted MOOCS developed by IIT-Bombay. I tweeted:
— Mark Guzdial (@guzdial) April 3, 2016
One of the IIT-Bombay graduate students responded:
— akothiyal (@akothiyal) April 3, 2016
Here’s the exchange as a screencap, just in case the Twitter feed doesn’t work right above:
I’m sure that Aditi (whose work was described in the previous blog post) is right. Developers in the US can’t expect to build technologies for India and expect them to work, not without involving Indian learners, teachers, and researchers. One of the themes in my book Learner-Centered Design of Computing Education is that motivation is everything in learning, and motivation is tied tightly to notions of identity, community of practice, and context. I learned that I don’t know much about any of those things for India, nor anywhere else in the developing world. The problems are enormous and worth solving, and US researchers and developers have a lot to offer — as collaborators. In the end, it requires understanding on the ground to get the context and motivation right, and nothing works if you don’t get that right.
As I noted in my Blog@CACM post about the ECEP Cohort (see post here), some states are starting to track enrollments and sections of CS classes offered. Georgia is one of those, and I got to see the first presentation of these data at a CS Task Force meeting from Dr. Caitlin McMunn Dooley. Slides from the presentation are here.
There are five courses that currently count towards high school graduation in Georgia, and these are the ones being most closely tracked: AP CS Level A, CS Principles, IB CS Year 1, IB CS Year 2, and a Georgia-specific course, Programming Games, Apps, and Society. If you look at the counts of how many teachers are teaching of these course, it looks like good growth. There are just over 440 high schools in Georgia, so if there were one of these teachers in each high school, we could have 25-50% of Georgia high schools with CS teachers. What we don’t know is how many of these teachers are appearing in multiple categories. These are unlikely to be all unique teachers. How many AP CS teachers, for example, are also teaching CS Principles?
The data below were the most surprising to me. Georgia’s state education system is broken into 16 Regional Education Service Agencies (RESAs). We have the counts of the number of teachers of CS classes in each of those 16 RESAs, and we have the count of the number of sections of CS classes offered in each RESA. Notice that the numbers are pretty similar. For the most part, high school CS teachers in Georgia are only teaching one or two sections of CS. We have very few high school teachers who teach CS full-time. There are a few, e.g., some of our teachers who worked with us in “Georgia Computes!” were teaching five sections of CS each day. Most Georgia CS teachers are likely teaching some other discipline most of the time, and offering just a couple sections of CS.
If our goal is for all high school students to have access to CS education, we need to have more than one section of 30-40 students per teacher or per school (which is roughly the same thing right now). We need more teachers offering a section of CS and/or we need each teacher to offer more sections of CS. Right now, too few teachers offer CS to too few students.
I don’t know how common these trends are nationwide. Few states are tracking CS classes yet. Georgia is one of the leading states measuring progress in CS education. We need more information to know what’s going on.
The President’s new “CS for All” initiative can only be influenced by the federal government. In the United States, individual states make all school education decisions. We just had a meeting of our ECEP cohort (the day after the announcement), and talked about where we’re at. How close are we to CS for All? What’s involved in getting there? I did a Blog@CACM post summarizing the reports.
I’m mentioning this because tomorrow (Friday March 4), Jan Cuny will be recognized by SIGCSE for her Outstanding Contribution to CS Education (see announcement here). Jan has done more for the CS for All effort than anyone else I know. Her efforts in the NSF Broadening Participation in Computing have made significant, long-term progress in promoting CS for everyone, not just the people in CS today. It’s a well-deserved award.
Coincidentally, the day after the President’s announcement, a group of state and territory leaders who belong to the Expanding Computing Education Pathways (ECEP) Alliance presented their five-year plans at a meeting near Washington D.C. Leaders from Alabama, California, Connecticut, Georgia, New Hampshire, South Carolina, Maryland, Massachusetts, Puerto Rico, Texas, and Utah described how they plan to grow CS, broaden participation in computing, and develop teachers. These plans give us insight into the progress toward and challenges to achieving CSforAll.
I’m sharing in this blog post my comments on the K12 CS Ed framework, to serve two purposes.
First, to remind you to do the review which you can start here: http://k12cs.org/review/. The review period ends Wed Feb 17 at 11:59pm PT. Please participate. If you disagree with what I write below, be sure to do the review yourself and counter what I say!
Second, I’m writing from Schloss Dagstuhl where I will be attending the first (to my knowledge) Dagstuhl Seminar on CS Education, on Assessing Learning in Introductory Computer Science (click here for more info). As the seminar leaders say in their introduction, “What is needed are shared objectives and assessment methods that enable more useful computing education research while providing guidance to those outside the area.” The K12 CS Framework is an attempt to define shared objectives, which are a necessary predecessor to effective measurement of learning.
Now, the seminar leaders also raise the research question, “What outcomes would we like to see in non-major courses that are not merely preparing students to write scripts needed on the job?” Providing students with the CS knowledge so that they can “merely prepare to write scripts needed on the job” is an important goal. I’d agree with “in addition to” more than “merely.” Outcomes for non-majors will likely be radically different than for majors — which will be the focus of my poster presentation later this week.
Criteria for Concepts and Practices
Concepts and practices should…
- have broad importance across the field of computer science
I agree. Breadth is good. It’s not important to cover the field of computer science. There is more in mathematics and science than can (or should) be covered in K-12 education.
- be important and relevant to all students’ current and future lives
This is the most important criterion, in opposition to “be important to computer scientists.”
- have potential for connections with other disciplines’ practices, such as Math and Science
- be a useful tool for developing and illuminating more ideas in computer science.
The former is very important. The latter is much less so. CS is very new. I’m not sure that we have the right ideas to teach everyone. Given a choice, it’s much more important to teach everyone CS that helps them learn math and science and is useful to understand computing in their lives. I’d rather not (for example) teach hex and octal just because we use hex and octal in CS.
Computing Devices and Systems
Overview: Computing systems include a broad range of devices that incorporate hardware and software to process information using a variety of inputs and outputs. The term is not limited to computers themselves, but rather includes many everyday objects that contain computational components that sense and act on the world. Complex systems are built from simple components that interact under the control of an operating system in an ever-changing world of technology.
This is quite nice. I have a couple of suggestions. Great research by people like John Pane at CMU has shown that novices think of programs as responding to events, being reactive (e.g., think apps, games, GUI interfaces). Thinking of computing as input-processing-output is an older model, difficult to understand, and less common today.
Are operating systems so important that they belong in the overview? Yes, students should know about operating systems, but they’re not key to CS. I’m thinking of Dan Ingalls’ famous 1981 quote in Byte magazine:
Operating System: An operating system is a collection of things that don’t fit into a language. There shouldn’t be one.
Computing devices require continual diagnosis, maintenance, and upgrades. Effectively maintaining and troubleshooting complex devices is not only a critical skill, but is also essential for sustainability and cost-saving efforts. Researching and applying solutions found in existing knowledge-base resources and recognizing patterns play an important role in troubleshooting.
I strongly disagree with that first statement. I run software that’s been unchanged for over 15 years. It’s a goal of software not to require continual diagnosis, maintenance, and upgrades. It’s worth discussing why software needs continual diagnosis, maintenance, and upgrades, but it is not a key concept and assumption of CS that it does.
A computing system is comprised of an integrated collection of computer components that work together in a hierarchy to process information. At its most basic layer, a computing system operates through binary calculations conducted by transistors; at more advanced layers, a computing system is capable of performing high-level tasks, including the ability to interact with other computing systems.
Transistors? Really? Everyone has to know about transistors? Computing can be mapped to a wide variety of underlying mechanisms (see the Tinkertoy Tic-Tac-Toe computer).
An operating system allows computer components to work together. Without an operating system, computing devices have minimal, if any, utility. The complexity, capability, and compatibility of an operating system impacts the functionality of a computer system.
This is obviously a false statement. The Internet has no operating system, yet leads to many components working together to great utility.
This would be a great place to introduce systems thinking. What are ways to organize components? An operating system is one. Having a powerful set of guidelines that define interactions (like in the Internet) is another. Which works better?
Networks and Communication
Overview: With the very first computing devices, knowledge and information became a very powerful thing. Sharing of that early knowledge gained from computing was a challenge. Networking and communication systems were designed to facilitate the interconnecting of devices and sharing of information. The practices of networking and computing now encompass reliability, authentication, confidentiality, security, acceptable use, filtering, cryptography, and mitigating security concerns and system breeches. A computer or computing system can no longer exist in isolation with the age of the Internet, and with demand for immediate connectivity of large numbers of new devices, this is an area that will continue to see lots of growth and innovation. Without networks and communication, the rest of the computing world would be isolated and the speed of innovation would be much slower.
This is really quite nice — I don’t have any concerns.
Protocols are designed, refined, and selected based on the desired result of communication among devices. Protocols are developed or updated as additional devices need to be connected and the security concerns, regulation, and standardization of devices change.
I’d rather see this section be a statement about communication. Protocols are a set of agreements, made by human beings. They can be structured in a range of ways. This is a great place to connect to other systems that communicate.
Transmitted data may be passed between many devices before reaching its final destination. Computing devices choose paths to transmit data based on a number of factors including routing algorithms, distance, security, redundancy, speed, error handling, and amount of information supported.
The first sentence is absolutely an important idea for understanding the Internet. The rest goes way too deep to be useful for all high school students.
Sure, talk about how the Internet routes data. I think it’s even useful to talk about UDP, in the sense that data can get out of order and there has to be an effort to serialize it and guarantee its delivery. I love the idea of talking about routing so that we can explain by policy ideas like censorship or even “turning off the Internet” are both so hard to actually implement. It’s important to talk about the Internet as a collection of networks held together by guidelines making it complicated to change. It’s super important to point out that there is no master operating system of the Internet — which is a great place to tie into system ideas of decentralized thinking in science.
I’d like for every student to know about the Domain Name Server system. It’s a great example of mapping (how names are mapped to addresses). It’s an amazing example of a decentralized system. It’s useful to know that it’s a separate system, e.g., your “Internet” connection may be working, but you might not be able to get to Google if your DNS server is failing.
As the size and complexity of networks grow, so does the need for systems to prioritize, distribute, load balance, be redundant, perform Quality of Service, provide gateways, be resilient and adaptable; through the use of Access and Distribution Layer Switching.
I don’t see any part of this which is useful for all students to know. I can’t find any definition of what “Distribution Layer Switching” is.
Data and Information
Once collected, data can be stored using computers in a variety of ways. The choices we make about how that data is represented, organized, and physically recorded has impacts on cost, speed, and reliability, as well as accessibility and security.
You’re missing an important point here: that in the end, everything in the computer is represented in binary, usually bytes. Everything, and the computer does now know which byte is a character in a text, the red channel of a particular pixel, or part of an instruction to the virus or to the operating system. The notion that everything in the computer is a representation is a powerful idea. It’s useful because it allows us to understand how we could possibly get a virus from a picture or Word file.
Yes, there are cost, speed, and reliability implications, but those are much higher levels of abstraction and not useful to everyone. Not everyone makes cost estimates of data representations. Everyone gets viruses.
Data often needs to be transformed from its raw state to be easily understood. Data can be transformed through mathematical expressions, aggregation (sum/average of rows/columns), rearrangement, and visualization. The type of transformation can influence the people who view the data.
These are narrow notions of transformation. How about just talking about noise and error? People make mistakes with data. That’s a powerful idea that crosses disciplines.
Data about prior events can be used to predict future events based upon computational models of varying complexity. The accuracy of the prediction depends on the choice of factors and the amount and diversity of data used to produce the model.
This is counter to how science thinks about the world today. This is the billiard ball, Newtonian model of the universe. Let’s not tell students this.
Programs and Algorithms
Types allow programmers to think of problems in terms of data and variables. Programmers use abstraction to define new data types, combine data with operations, and hide implementation details. Collections of data or data structures provide simple interfaces coupled with specific efficiency properties. (introduced at earlier grade bands: data representation, primitive data types, and operations associated with types)
I’m worried about this assumption that predecessor concepts will be introduced in elementary school and then expanded upon in high school. We have very little CS in schools today. States will choose where to emphasize: Build up high school CS first? Elementary school CS first? For at least a decade yet, few students will have K-12 CS Ed.
What happens to high school students who don’t get the predecessor concepts? Just give up on them and wait for the elementary school students?
Control constructs determine when sequences of instructions are executed. Recursion is a control technique in which a procedure calls itself. This is appropriate when problems can be expressed in terms of smaller versions of themselves. Selecting from different control structures that can be used to solve the same problem introduces a tradeoff between runtime efficiency and code readability. (introduced at earlier grade bands: sequence, iteration, branching, events, nesting, and competing control structures)
Not everyone needs to know recursion.
I wish that we taught students a simple notional machine and described everything in terms of that. Here’s what I teach my CS students: A computer can only do six things:
- They can store data with a name(s).
- They can name parts of programs (instructions), and follow those instruction when commanded.
- They can take data apart.
- They can transform data into other forms.
- They can follow a set of instructions repeatedly.
- They can test data (is this true or not?), then take actions depending on what the result is.
Everything that I teach in Python, I relate to one or more of those six points. I make sure that I relate everything to a small, easily learnable notional machine.
I do not see why K-8 students should learn about nesting and competing data structures. This is an example of teaching things that are in CS, but are not useful in math and science.
There are several steps in the development process, including problem clarification, design, implementation, and testing. Teams creating computational artifacts must make important design decisions and iteratively refine them. Different programming environments have distinct resources and features. Selecting from different programming languages and libraries introduces tradeoffs between functionality, efficiency, design and implementation time, security, and personal experience or preference.
No, not everyone needs to know this level of a software development process.
Impacts of Computing
In early grades, students differentiate between responsible and irresponsible computing behaviors. Students learn that responsible behaviors can help individuals while irresponsible behaviors can hurt individuals. They examine legal and ethical considerations for obtaining and sharing information and apply those behaviors to protect original ideas. As students progress academically, they engage in legal and ethical behaviors to guard against intrusive applications and promote a safe and secure computing experience.
Laws impact many areas of computing in an effort to protect privacy, data, property, information, and identity. The legal oversight of computing involves tradeoffs; such laws can expedite or delay advancements and infringe upon or protect human rights. Ethical concerns also shape computing practices and professions. International variations in legal and ethical considerations should be examined.
This is a great point to larger systems issues of politics and history. Describe democracy as a similar set of tradeoffs and design considerations.
The seven practices of computer science are the behaviors and ways of thinking that computationally literate citizens use to fully participate in the modern data-rich and interconnected digital world. Students in grades K-12 should engage in all seven practices over each grade band with increasing sophistication over time.
1. Recognizing and Representing Computational Problems
2. Developing Abstractions
3. Creating Computational Artifacts
4. Testing and Iteratively Refining
5. Fostering an Inclusive Computing Culture
6. Communicating About Computing
7. Collaborating With Computing
I’d rather see 2 as Using Abstractions. Not everyone is going to Develop Abstractions. Developing Abstractions isn’t necessary for everyone. It’s a difficult and challenging thing for students to learn, but you can be effective at using computing without it.
Communicating About Computing
Computationally literate citizens use a variety of mechanisms to share information and insights about computer science. This includes communicating about their design processes, the elements and functionality of computational artifacts, and both the technical and societal implications of computational solutions. For example, they write clear comments on their code, document their work through technical writing, and create demonstrations that include visualizing multiple representations and account for the diversity of audiences members. They attend to precision by using language in contextually appropriate ways (for example, the term function has meanings in both mathematics and computer programming).
These are really programmer-centric ways of talking about computing. Can we open this up, or not list any at all? I like the idea of videos or even dance about computing, not just comments in code.
It’s a starting point. I hope that it gets revised a lot before going out to states for standards.
Mostly, I want the framework writers to emphasize what everyone needs to know and teaching computing as a generative set of ideas. We can use computing as a powerful lever for learning in a wide variety of areas. Don’t teach everyone things about computing that are not generative, that only teach about CS itself.
An article written by Rick Adrion, Barbara Ericson, Renee Fall, and me appears in this month’s Communications of the ACM about our work in the Expanding Computing Education Pathways (ECEP) Alliance. Our annual meeting is today, with 11 states and Puerto Rico, where we talk about how to create sustained change in a state. We are learning a lot about what it takes to make change in our very diverse United States.
The lessons learned from Massachusetts and Georgia are useful for states joining ECEP, but so are the lessons from the other states. We have been surprised at how much our state leaders draw ideas from each other. South Carolina leaders used a teacher survey that was invented in Massachusetts. Utah draws inspiration from a Texas teacher recruitment strategy. What our state leaders find most useful about ECEP is access to other state leaders who share similar goals, for example, to broaden participation in computing by changing education pathways in their states.