Tuesday, March 10, 2015

Computer science taught as an art

I've been involved with learning, teaching and creating for all my life. During my formative years (in-utero to shortly after high-school graduation) I was focused on getting what I needed to finish. I was also involved in a lot of art (music, graphic design, crafts, dance, theatre) but my socially encouraged (my parenting) focus was on math and science. Needless to say, I have had my feet firmly planted in both art and science my whole life. I guess most people are this way, with different ratios of art to science. I really feel I continue to straddle both these areas as I pass my 1/2 century mark. What this has given me is a deep appreciation and engagement in both art and science. This is why I am more broad than I am deep. And this is why I have learned art as much as I have learned math and science.

Now I am an enterprise architect, educational technologist, computer scientist, teacher, visual arts performer and all around nice guy (well I hope). I still draw and paint, play music (the best I can) and dance in the open. I encourage my kids to engage in art more than science. Surprisingly, my kids math and science skills are good. I do think there is a connection.

I also think computer science can be taught very well as an art. Particularly, in the early stages of learning computer science. Why? Because, it needs to be done with reckless abandon and with the freedom to make a mess. You need to be able to stop half-way and throw it away. You need to be able to change it into something never planned. You need to be able to break something, and then fix it. You also need restraints through assignments (or learning themes), focused subjects, a palette, skills and abilities, uncertainty and little preparation, it all needs to be inspired and interpretive. I also see taking risks and "feeling stupid" is safer with art than science. Doing a scientific experiment seems more serious than dancing like no-one is watching or painting for yourself. Art seems more reckless than science. It is this recklessness that makes art more accessible to learn than science. I also think there is a lower barrier to entry for art than science, though I don't think it needs to be this way.

How I perceive creating and learning art.
My participation in the arts comes in two themes; the visual make things (graphics, painting, architecture, woodworking, and building) and in folk music and dance. How do I learn new things within these realms; by doing, with a whole lot of reading, research and seeking out those who have done it before. How do I believe it best assist to others learn; by involving them, and pointing them toward understanding how they themselves learn and encouraging their own research practices. Together we do things, I've built and created many things with others and the conversation and collaboration is a beautiful thing. Bringing together music and dance is an amazing collaborative effort. Best done with a willingness to fail, and the patience to persist. One of our best dances is tri-martal-o (it took two years to develop), is hauntingly beautiful, the music is inspired and the piece is way fun to dance. The important aspect of learning art is to dive in, create and participate as soon as you can. And remember, make a mess.

How I perceive creating and learning computer science.
Immediate feedback is the way! Being able to get something working by using the tools and techniques immediately is paramount to learning computer science. Programming something and then seeing it run, render, compute... is preferred for learner engagement. Once this immediate feedback has been experienced, the opportunity to create has been fulfilled, and a good number of computing science tasks have been completed then the deepening and complexity can begin. And this deepening and complexity needs to grow iteratively with continued immediate feedback and fulfillment. It should almost be like playing an instrument or creating art; repetition, creation and fun.

I believe it is also important to understand computing science as a creative and where it fits within the big scheme of things (historically, culturally, epistemogically, and algorithmically). This helps to put computing science into life context. Where it fits with being a human being, and this is where it gets interesting. The ability to take working ideas out of your brain and use them (in other ways and experiments) within a device outside of your head. This is computing science, and it is unique in history. For thousands of years we have taken ideas out of our heads and created things; first, wall paintings, then tools and writing, then machines and engines... but now, we can re-incarnate a working idea in another device that can process the idea, and use it with other peoples ideas, or more of our own ideas. And we can process these ideas as experiments and run a collection of ideas for days with different inputs which influence further ideas.

How do I see teaching computer science as an art? 
Create, make a mess, work with others, make... this is why I see the maker movement so positive. And why the webmaking initiatives currently underway as the right way toward teaching computer science. It creates a low barrier to entry and encourages learning with reckless abandon while on a journey of skills and knowledge development. Webmaking also takes learning computer science into the realm of social learning, which I consider more closely aligned with learning the arts than the sciences.

But how would this work for the more complicated computer science topics? The solution is in how more complicated art projects are created. They are more collaborative efforts, where the more experienced are given the complicated tasks and have to be sure their direct collaborators are also engaged. And there is a whole bunch of healthy collaborative critique going on. Look at how a performance art piece is created, learned and performed. What can be taken from this process and applied to teaching the more complicated aspects of computer science.

In my opinion one of the best books when considering the creation of computer software is written by Russell Shackelford and titled "Computing and Algorithms", I've used this book a number of times when teaching entry level computer science. What I fond strongest in this book is how it connects the creation of computer algorithms (software) with art from the scientific perspective. Or at least that is how I read it...

So in the end when teaching computer science as an art it also comes down to practice, practice, practice... if you want to be a good artist, that includes a lot of practice. If you want to be a good computer scientist, that also takes a lot of practice. The key is to find fun, creative and collaborative ways to stay engaged, and treating the learning of computer science as an art will keep it more engaging. Regardless of age. And as the projects and learning become more complicated, increasingly engage others who are peers and mentors. Find the fun individually and as a group.