Karin Dalziel’s Why every Library Science student should learn programming reminds me that I’ve been thinking about, and meaning to write about, algorithmic (or computational) thinking.
What is computational thinking? It includes
- Thinking Recursively
- Thinking Abstractly
- Thinking Ahead (caching, pre-fetching…)
- Thinking Procedurally
- Thinking Logically
- Thinking Concurrently
That’s from Jeannette Wing slide 21 [PDF]; subsequent slides give examples. Or, if you prefer podcasts, she chatted about computation thinking with Jon Udell.
I would like to find examples of where librarians and archivists use computational thinking, especially outside the digital realm. It’s hard to argue that programming per se is needed for school media specialists or archivists. Some digital librarians and LIS educators also argue that, for digital librarians, managing programmers and interfacing with users are more pertinent skills than programming per se.
So I’d like to shift the debate. Instead of “should all LIS students learn to program”, I’d like to ask, what can LIS learn from computer science? Programming is only a very small part of computer science; as Jeannette M. Wing writes* [PDF]
Computer science is not computer programming. Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction
and
Having to solve a particular problem, we might ask: How difficult is it to solve? and What’s the best way to solve it? Computer science rests on solid theoretical underpinnings to answer such questions precisely.
Can LIS benefit from considering problems in this way? As a librarian or information professional, have you ever considered a problem from this angle? How did it turn out?
* Jeannette M. Wing Computational Thinking [postprint, PDF] (2006 March). Communications of the ACM, Vol 49, No 3, 33-35.
I agree Computational Thinking is very important and can be a very important tool no mater what area you are in. i am wondering why there are no tools to support computational thinking. if we relay want to push this idea i think its more then teaching a powerful way to think but also giving them the power to do something with this thinking method. its like standards committees, whats better defining a standard if how to do something or just providing a tool to do it by the standard very easily. as a programmer i don’t want to implement long standards but i don’t care about taking a ready module with a simple interface that will implement the standard. should we be educating or creating tool for computational thinking ?