Haglund uses the first of three rationales for coding: it’s a good way to teach computational thinking, a skill likely to be valuable in college and careers.
Code.org advocates that “Every student in every school should have the opportunity to learn computer science.” Let’s call this the access and equity argument. They argue that computer science drives innovation and as a career pathway it remains marginalized in K-12, particularly at schools serving underrepresented minorities.
School districts have rushed to adding coding to the curriculum using a mixture of these three arguments–computational thinking, access and equity to lucrative career pathways, and valuable CTE skills.
On the last two points (short and long term employability) about 60,000 U.S. students graduated bachelor degrees in computer and information services. There are probably 10 times as many computing jobs open and that could double by 2020.
The old Advanced Placement Computer Science class focuses on Java, a widely used object-oriented programming language–it’s a CTE approach. The new AP Computer Science Principles course (launched fall 2016) “offers a multidisciplinary approach to teaching the underlying principles of computation.” It’s an extension of Haglund’s computational thinking argument.
The first point of this post is to get clear about your objectives for adding coding to the curriculum. That will bring focus to the effort, staff it appropriately, prioritize it in the master schedule, and frame the size and nature of the investment.
Typical Problems With Teaching Coding In School
“Computer programming and computational thinking are the new foundation for our ever-increasing technological society—a society that calls for innovation, entrepreneurship, teamwork and creative thinking,” said Idit Harel, CEO of Globaloria, an advocate for computer programming for all.
Harel is not a fan of the “pop computing” apps kids see in schools. She thinks students “aren’t doing the hard thinking that defines what the subject of computing is today, and most importantly, what it can be in the future.” Rather than a quick fix, Harel would like to see students engaged in computing projects every day.
A 2014 UK study on teaching computing (now required) highlighted three challenges: teacher subject knowledge, the high need for differentiation and technical problems. They concluded that “one specific focus should be on supporting students to develop resilience and the ability to learn from mistakes.” (It always comes back to social and emotional learning, right?)
The Computer Science Teachers Association predicts there will be more than 9 million U.S. STEM jobs by 2020 with half requiring computer science knowledge and skills. They published a report listing reasons why schools in the United States are failing at teaching computer programming skills. They find the certification processes deeply flawed and (not surprisingly) want a lot more certified CS teachers with multiple roots to the classroom. They note that CS credits only count for core graduation requirements in 14 states.
Below is a diagram of how and where CSTA would like to see subjects introduced–it’s pretty well aligned with the new AP CS class.
The central problem with the CTE approach to coding is that it’s tough to keep up with the hottest languages for current job opportunities. And it appears that in the near future, artificial intelligence (AI) will begin replacing coding jobs.
Gottfried Sehringer, marketing VP for a web development firm, said, “Don’t teach everyone how to code. Teach them how to identify and understand needs, as well as how to visually express logic. Teach them how technology works, so they can understand the realm of possibility and then envision game-changing innovations.”
The best way to avoid teaching soon to be obsolete computer languages to waves of young people that may never use them is to lead with problems worth solving and teach just-in-time (JIT) coding.
From week one at Olin College, students are conducting projects. Amon Millner, an assistant professor of computing and innovation at Olin, teaches computing across the curriculum–like a roving coding ninja. “All Olin students are exposed to computing in their first semester, in the context of a class about simulating and modeling real world problems,” said Millner.
This just-in-time approach isn’t easy to pull off without talent like Dr. Millner’s, but it’s the best way to integrate computing into a PBL approach. Olin also encourages freshmen to learn new maker skills from anyone on campus who has earned relevant certification.
At the innovative global college Minerva, the ability to code in Python is an entrance requirement, and incoming students find a way to learn it before coming to campus. Minerva requires Python because it is useful for back end coding, data science and using machine learning programs like Google’s open TensorFlow.
Olin and Minerva point to the opportunity to make coding a required microcredential but allowing students and teachers to identify how and when to incorporate it into projects.
Teaching Data Science
While there is high demand for coding skills today, AI will increasingly take over routine coding jobs as it grows in sophistication. In the way that web site development has become a drag and drop affair for many new sites, AI will automate code development in many fields.
The longer term and larger employment and impact opportunities lie in data science–assembling, scrubbing and analyzing big data sets. Data science is a subset of computer science. (It’s not in the old AP CS course but an important part of the new AP CS Principles course.)
What is data science? It’s a set of methods and tools used to extract knowledge and insights from data sets which may be highly structured or very unstructured. Draws heavily on statistics and data analysis.
Why have I never heard of this field? It’s new. You would not have seen many jost postings for it in the last decade. But five years ago, Tom Davenport in HRB called the “The Sexiest Job of the 21st Century.”
How is data science different than coding? Computer programming is usually a very directed task with specific functionality in mind. Data science is usually more discovery oriented. As Davenport explained, “Data scientists make discoveries while swimming in data.”
What is data wrangling? It’s the messy process of sourcing, mapping and transforming raw data into a clean data set worth analyzing, visualizing and extracting new knowledge.
What about data analytics? It’s the discovery, interpretation and communication of meaningful patterns in data.
How do we move from coding to machine learning and data science? Two recent podcasts discuss the transition:
Eric Lander, who runs the Broad Institute, said in a few years every biologist will be computational. It looks like the same will be true for doctors, mechanics, economists, water managers and soldiers. As every profession becomes computational, wrangling big data sets will become more important.
Because these big data sets will often require partnerships with multiple sources, data science is becoming a social science requiring strong collaboration skills. For example, young people who want to study local water quality could set up hundreds of sensors, survey households and convince the local water department to give them access to their water quality data.
As the data analysis tools get better and easier to use, the new challenge will be problem finding–identifying and framing problems worth solving–and then funding, staffing and managing projects around solutions. We call this Cause + Code, the new impact formula. It combines design thinking (problem finding/framing, user empathy), data wrangling, some coding and a lot of project management.
While exponential technology and AI are mentioned these days, it’s often in association with likely job losses. The good news is that there’s never been a better time to make a difference. The new lever is wrangling big datasets associated with a big problem and aiming smart tools at them to find or build big solutions.
- Clarify your objectives for adding coding to the curriculum (e.g., computational thinking, career path, specific CTE skills) and then support those goals with staffing, investment and student support.
- If you do offer programming classes, make sure they are very current and linked to employment opportunities (high schools may want to rely on career centers, community colleges or coding bootcamps for this).
- In the same way schools have integrated writing across the curriculum, look for ways to integrate data science across the curriculum, because every problem worth solving has a data set associated with it. A couple big integrated community connected projects each year can be a great place for a data science integration.
- Create a business or university partnership to support computing and data science across the curriculum.