This post summarizes some of what I've got so far. I've also been collecting testimonials to share with the students. These are stories from arts and social science students, graduates, and professors explaining why code is useful to them. I will share those another day.
If you've got any ideas to add to this, please do share!
Why Learn About Data Representation
It’s inevitable: no matter what field you’re in, you’ll have to work with data in some form or another. Having a good mental model of how information is stored on a computer can help you not only manipulate that data, but think about the best ways of collecting, storing, and analyzing it.
For example, if you need to collect images for a project, you might have previously just used colour images by default. But now that you know how much less space grayscale images can take, you might decide that they are the better choice when colour is not needed.
Why Learn Computational Thinking
Computational thinking is about problem solving. We use computers to solve problems in every field these days. It’s not enough to be able to follow a tutorial on “how to do X” - you need a deeper understanding of how computation works in order to tackle previously unseen problems and know that you are solving them correctly and efficiently.
Here are some specific reasons to practice this type of thinking:
- You need to know how to take a problem you need to solve and transform it into something a computer can actually work with. We think too high-level for a computer to “get” what we want to do without breaking things down into really specific chunks.
- The world is becoming increasingly complex, and you need to be able to deal with that complexity.
- Similarly, you need to be able to handle ambiguity and open-endedness in the way a problem is defined and even in how you are expected to solve it.
Why Learn About Algorithms
Algorithmic thinking is part of computational thinking. You might run into a situation where you have to program your own algorithms as solutions to problems. Even if you never touch a line of code again, learning algorithmic thinking is useful. Here’s why:
- You build a mental model for how computers work. This helps you choose the right tool for the job when you have to solve your own problems, and do a better job of troubleshooting when things go wrong.
- The ability to write out an idea correctly and unambiguously transfers to the ability to write effective instructions or arguments in essays and other documents.
- To think algorithmically is to be able to specifically translate a problem into something the computer can solve, whether you use Python, Excel, SBSS, or some other tool to actually solve the problem.
Why Learn How to Code
This is a big one, obviously. Being able to solve problems with code means you can tackle problems that Excel and other programs can’t help you with (for example, text-based problems). It also means that you have full control over the solution, giving you the ability to customize it to suit your needs exactly.
Here are some general reasons to learn how to code:
- Writing some code is the best way to understand concepts that can be applied elsewhere, like if statements and while loops. It is also the most precise form of algorithmic thinking.
- If you know how to code, you have the power to be endlessly creative. From interactive fiction to web apps to computational art, there’s a lot you can do with code that is difficult or impossible without it!
- Writing simple programs can help you automate the really boring parts of using a computer.
- If you have an idea, you don’t have to wait for someone else to create it. You can do it yourself!
- If you can put a knowledge of programming together with whatever it is you are studying, you become extremely valuable to that industry. High paying jobs that few people can do well become open to you.
Here are some real example problems that can best be solved with code:
- Rescaling climate change data to analyze it in new ranges
- Text analysis by making a concordance of a text
- Digitizing horizon shading (when does the sun rise/set behind mountains, local rocks, trees, ...)
- Removing noise from measurements of snow height made by an ultrasonic sounder
- Facilitating collection and analysis of data from an experiment that determines whether seeing the sign of a simple mathematical equation before the numbers gives someone an edge in solving that problem quickly
These are some answers I got on Twitter when I asked “Why do you think an arts/social science student should learn to code? Reply with your reason, be it fun or practical, general or specific.”
- “Same reason a CS student should learn from the arts: a different perspective is aways [sic] 'a good thing'.”
- “Social science - 1 word, data. Arts - creativity.”
- “So they know enough about the difficulty of software dev that, if elected, they don't do a http://healthcare.gov”
- “because Robert A. Heinlein: http://www.elise.com/quotes/heinlein_-_specialization_is_for_insects”
- “the world is increasingly complex, and built, more every day, in code. being unable to understand basic science or software will soon be nearly as self-limiting as lacking numeracy or literacy is for many people now.”