Computational Thinking

Joel Gethin Lewis

Lecture 1

What I'm going to talk about today:

  1. Introduction.
  2. The History of Graphic Design and the History of Graphic Computers.
  3. What Computational Thinking is and why it's important to everyone (even Graphic Designers).
  4. How to count.

Introduction.

  • I want to teach you how to learn.
  • Talent borrows, genius steals.
  • How these lectures are going to work.
  • How to be lazy like a fox.

I want to teach you how to learn.

  • Each lecture is available online for you to review afterwards, during or even before!
  • Each lecture is supposed to pique your curiosity in different areas. No homework, just pay attention.
  • No stupid questions, only stupid answers. Please ask them via crosslab-gcdcsm.slack.com.
  • The lectures are a mashup of different resources, just like everything else.

Talent borrows, genius steals.

“Nothing is original. Steal from anywhere that resonates with inspiration or fuels your imagination. Devour old films, new films, music, books, paintings, photographs, poems, dreams, random conversations, architecture, bridges, street signs, trees, clouds, bodies of water, light and shadows. Select only things to steal from that speak directly to your soul. If you do this, your work (and theft) will be authentic. Authenticity is invaluable; originality is nonexistent. And don’t bother concealing your thievery—celebrate it if you feel like it. In any case, always remember what Jean-Luc Godard said: “It’s not where you take things from—it’s where you take them to.”

Austin Kleon also has some good tips:

Steal Like An Artist - Promotional Poster

Finishing with Howard Aiken on the flip side:

“Don't worry about people stealing your ideas. If your ideas are any good, you'll have to ram them down people's throats.”

How these lectures are going to work.

Each lecture will be split into four 15 minute sections:

  1. Graphic Design - via Rune Madsen's course "Programming Design Systems".
  2. Computational Thinking - via Ali Almossawi's book "Bad Choices".
  3. An important programming concept - via the Processing Foundation.
  4. Applying that concept in p5.js - building towards making an Animated GIF maker, via an older set of lectures for CSM in 2014, but updated for p5.js.

How to be lazy like a fox.

A quote from Eric S. Raymond's "The Cathedral and the Bazaar" quoting Linus Torvalds:

“In fact, I think Linus's cleverest and most consequential hack was not the construction of the Linux kernel itself, but rather his invention of the Linux development model. When I expressed this opinion in his presence once, he smiled and quietly repeated something he has often said: "I'm basically a very lazy person who likes to get credit for things other people actually do." Lazy like a fox. Or, as Robert Heinlein famously wrote of one of his characters, too lazy to fail.”

How to be lazy like a fox. (continued)

Larry Wall also has some thoughts about laziness: “The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer.”

I originally heard the quote in a talk by Evan Roth.

The History of Graphic Design and the History of Graphic Computers.

Thanks again to Rune Madsen for putting his course online:

http://printingcode.runemadsen.com/lecture-intro/.

Don't forget to click to the slides and press 's' Joel!

Rune's lectures are very biased to the US side of things - a big UK moment was in 1968 with the "Cybernetic Serendipity" exhibition at the ICA. What about where you are from?

What Computational Thinking is and why it's important to everyone (even Graphic Designers).

Thanks again to Ali Almossawi for writing his book.

Read the preface and introduction to "Bad Choices" Joel!

Why is it important? We have big problems to solve, and it's good to solve them better.

Computational Thinking is a way to optimise your interactions with the world.

Comparison computational complexity.svg

N is the number of operations and n is the number of inputs. More explanation.

Graphical Computational Thinking is about building your own tools.

Instead of just using everyone else's tools, wouldn't be able to great to make your own?

That way you could make unique things, share them with others and build a practice around it.

How to count.

  • Binary is a numeral system, that is a writing system for expressing numbers. Decimal is the numeral system that you are probably most familiar with - but you also already know Unary too!
  • Unary just uses the same number of things as the thing you are counting. Tally marks are unary.
  • Another way of thinking about Unary is that it's a numeral system with only one graphical symbol. Decimal has 10 graphical symbols: 0,1,2,3,4,5,6,7,8,9.

How to count in Binary.

  • Binary uses two graphical symbols to count with - lets pick the first two used in Decimal: 0 and 1.
  • Another way of thinking about 0 and 1 is Nothing and Something.
  • Let's make up Binary together.
  • What symbol shall we use to represent zero?

What symbol shall we use to represent zero?

  • 0. Or Nothing.
  • What symbol shall we use to represent one?
  • 1. Or Something.
  • How should we represent two?

How should we represent two?

  • We can't use 0 or 1 because we've already used those. We don't have any symbols left! We need to use two symbols. We have four options: 00 or 01 or 10 or 11.
  • Reading from the left (which is not always the way!) 00 is Nothing Nothing, or just Nothing, or 0 - which we've already used. 01 is Nothing Something, or just Something, or 1 which we've already used. We have two options left: 10 or 11. Which symbols should we use to represent two?

Should two be represented by 10 or 11?

  • Which is simpler? Which is smaller?
  • 11 aka Something Something, or 10 aka Something Nothing.
  • 10 is simpler! So what about three?
  • We only have 11 left, so that should be three. What about four?

How should we represent four?

  • We need another symbol!
  • We need three symbols in a row, that we haven't used already.
  • What options to we have? 000, 001, 010, 011, 100, 101, 110, 111.
  • We've used 000, 010 and 011 already. Which is the next simplest?
  • 100 is simpler than 101, 110 and 111.

Things to think about.

  • This is how all digital information in the world is represented. Using binary numbers. Something or nothing.
  • You now know the programmer joke - “There are only 10 types of people in the world - those that understand binary and those that don't”
  • Can you count to 10 using binary?
  • Using your fingers as binary digits, how high can you count with the fingers of one hand? With both hands? With hands and toes?

Thanks!