okay this is the last introductory video
before we get into the actual stuff - it really is the
exciting part where you're going to look at examples, start writing your own code,
start making stuff, coming up with your ideas, trying things out -
before you start making things, I just want to give you an overview
as to what my plan is for all these videos, so
there's a key thing here - pick up some energy back here, run in
place, run in place - okay
there's a key thing here. I want these videos to cover
the fundamentals of computation, the fundamental building blocks
of computer programming,
and really, there is a short list of things that you need to know and
understand, there are these core elements that will go across
any type of software development, creative coding,
computer science, whatever you want to call it,
writing code on your computer, and really actually
three categories, so, any computer program that runs
needs to have data associated with it, right, it needs to store information about
itself, colors, you know,
sometimes I wish I didn't do this but just to think about
game programming for a second
if you were creating the game Space Invaders
you may need to keep track of the space ship's position on the screen,
which level is the game on,
what's the current players score, there are elements data
that a computer program needs to keep in mind as it's running, and this is actually
one of the first things
we will learn about which is this concept of a variable
this thing that stores data.
In addition, I'm gonna go out over here, in addition to this idea of a variable which
individual piece of data - is an
Okay, don't worry, everything's okay, there's a floor, and I just dropped the cap -
in addition to a variable which is an individual piece of data
we're also going to learn about
something called an array, which we could also think of
as a list, so what about a list of data
instead of like a spaceship as an individual location, what if there are
10 enemies on screen
could we have a list of enemy locations? So any computer program needs to store data
we're gonna learn about variables and arrays. The other thing that we need to really
learn about is this idea of control. How do we control the flow
of a computer program, how do we control the path by which it takes,
right, if the spaceship - I wish I could think of
something less violent - shoots its laser
and hits the enemy its score goes up, right, how do we control that,
how do we control that process,
if the player dropped a seed and a flower blooms,
that's a nicer way of thinking about it, so,
we want to look at this idea of conditionals, conditional logic,
if statements, if this condition is met
then the program executes this instruction, alright,
that's something we're gonna look at. Another control structure we're gonna
is a loop, right, this idea repeating
if we have 100 enemy spaceships,
do we want to have a hundred lines of code - draw spaceship one
draw space ship two, draw space ship three - no, we want to have this loop
draw every spaceship, for every spaceship
draw it on the screen, so this is this idea, really simple, these are these
fundamentals, we're gonna have
a set of videos about each one of these - how do we deal with a variable,
how do we deal with a conditional ,how do we deal with a loop, how do we deal with an array
but another thing that's going to be very primary to this video series is
organizing, I want to say organization,
thinking about how you organize your code, so
when we first start we're gonna be reading very simple instructions,
line, fill, which is set a color,
rectangle, ellipse, just for drawing stuff on the screen
but as we write larger and larger programs we need to encapsulate
ideas into kinda their own mini-programs in
a way, so, the two kind of key principles
of organization that we're going to look at is how to write a function,
what if we figure out a nice way of drawing
a flower pattern on the screen, right,
I can't draw, this is a flower, right,
if we figure out how to draw a flower and we want to have 10 flowers on the screen
are we gonna rewrite all the code for drawing a flower 10 times, maybe that was
a hundred lines of code just to get this pattern,
could we just take this entire idea of a flower and put it in its own function
so that anytime you want a flower on screen we have a new command so to speak
we can just say
"flower", and even more than this idea of functions,
a key principle we wanna look at is objects,
object-oriented programming. This, to me,
is one of the ways that I really started to feel comfortable
writing software,
is once I got to the point of learning object-oriented programming
and understanding something and the screen treating at in this way we look
at the world,
this is an object, this object had data associated with it,
its color is black, it is a dry erase marker, that may be a
piece of data, rather than a permanent marker, and it has functionality,
this thing I could say draw, I could take its cap on and off, right,
remove cap, add cap, so this idea of taking something like a flower
and turning into an object
there's data about this flower, how big how small is it, what color is it,
and it might have functionality, it could grow, the pedals could fall,
so this idea of something happening in a computer graphics application
being packaged up into this object. Now this sounds very theoretical and grand,
or perhaps confusing right now,
but we're going to get into the details of how to
take a program which has variables and conditionals and loops and all this logic and
all this data and how to organize it into a way that we can just say
"hey, there are seed objects and there are flower objects and there is grass
objects and therefore
if we were creating some kind of garden simulation,
for example. So these are all the things we want to learn.
In some programming courses,
something like object-oriented programming might be something that comes
very very late in the game, almost at the very end or
perhaps in like a second semester even as an advanced topic,
but we're going to get to objects
pretty quickly because I want that to be a fundamental way
that we look at creating examples and creating projects in Processing, so
this is kinda, this is the list of fundamentals, right,
these are kind of computer science fundamentals,
I use the word computer science
I, like, "demerit!", my goal is to
never mention the term computer science in any these videos, anyway, I'll go
off on that ran or tangent, not rant, I don't like "rant",
but anyway, edit this out please, somebody, okay,
so these are the fundamentals, the things
that will transfer to any programming language and environment, these are
the kind of core elements, we want to understand these in great detail,
without any fear or sadness, we just want to feel happy and comfortable about all these things
and start to practice
writing programs,
but once we get through this I also want to take a look at
some applications, so what are some types of things that one might do, for example
I really wanna look at images, how do we load images
and draw images to the screen, how do we read
the pixels of an image and manipulate and do image processing, how do we do the
kinds of things that might happen
in a piece software like Photoshop, how do we write that stuff from scratch
with code, what happens if we use a moving image like a camera
or a video, can we do things like computer vision,
how do we write software that can find somebody's face,
how do we write software that can track the skeleton, the human body, with the Kinect
so I wanna have a set of videos about
images and pixels. I also want to look at
data as a topic, so what does it mean to load data into a program
what are the kinds of ways of loading data, there's
plain text, and XML, and JSON,
and there are all sorts of
data classes in Processing that allow you to load data, parse data,
and draw stuff based on that data, so what does it mean to connect to,
you know, data that's local versus data that on a server,
I wanna look at a whole set examples, what does it mean to work with text,
strings, what does it mean to read a novel and count all the words
in that novel, to do a concordance, so I wanna have a set of videos that
deal with data, and I haven't made these videos yet,
so I totally don't know exactly what we're gonna do, we could think about,
what about 3D graphics, so I guess what I meant
is like topics, so this video series is going to
start with the fundamentals, all the fundamental tools of computation, and in there
we're also going to have to learn about
pixels and drawing and color and shape, some basic computer graphic stuff, but
really we're going to focus on these fundamental core concepts of computation,
and from there, once we have all this bag of tricks
we're going to reinforce those ideas, do them over and over again,
practice with them
through a set of topics: images, pixels, data,
3D graphics, I could come up with some others
but is a pretty good starting point right now.
Integration with the web, perhaps, what is this landscape
of, could we do Processing on the web, there's this thing called Processing.js,
which is JavaScript,
we might try to look at that at some point in the video series.
So I think I'm kind of done with talking about this but
just to kind of like walk through the order, this is gonna help me, you can stop,
I'm just gonna organize my own thoughts, and
I'm gonna keep recording, why not, right, this might be a bad idea,
okay, so, we're in the intro
videos right now, so we're kind of going to be done with the intro videos
and actually we're gonna, I guess there's something right before that which is the basics
of drawing in Processing, which we're going to start with, I'll call this like
"1", this will be "2", once we get through the basics of drawing,
we're going to look at variables, that'll be the sort of
videos called number three, then, this would be like
if this were a course, if you were taking a class,
if this were anything other than just me in this weird room rambling,
then this would be like week one, week two, week three, and in fact these
videos are intended to go along with this course that I am teaching here which is
divided into weeks, and this would really actually be week one,
intro and drawing,
so I'll keep that, so this would be variables,
then we're going to look at conditionals and loops,
after that we will get
to arrays, I think I got this right,
and then after that we will look at functions, after that we will look at
objects. So it's kind of like half a semester,
six weeks, this is grossly accelerated in many ways,
you need a lifetime to really master all this stuff,
I need lots more time myself, but this will be
a kind of six-week or six video sections
through all these topics, and again after that, seven
would be images, eight would be data, maybe I'll do that in a different order,
nine would be 3D graphics, so
we'll kinda get to all this stuff.
Okay, so this hopefully gives you a nice overview,
I've kind of wrapped up this introductory stuff, I feel like these were
kind of challenging videos to make in the sense that they're very
kinda, it's less kind of how-to and looking at stuff step-by-step and more
just kinda rambling through general concepts, and I feel like I missed so many
things I meant to say,
so someday I may go back and add things in
or write some stuff in the descriptions but if something is missing
or something is confusing you,
please, at this point I guess your way to interact is to use the comments,
write a comment, ask a question there and we could start with a
dialogue that way,
although the videos may end up also somewhere else embedded
into some sort of site that has them as well.
Okay, so that's that so I will see you
another time, I thank you, I bid you
"adieu," apparently I'm getting into some French stuff in these videos
okay, au revoir!