-
This presentation is delivered by the Stanford Center for Professional
-
Development.
-
So welcome to CS106A.
-
If you don't think you should be in CS106A, you think you should be somewhere
-
different, now is probably a good time
-
to go, not that I would discourage anyone from taking this class. I think we'll have a lovely
-
time in here.
-
But this class is CS106A or E70A, so if you're,
-
like, "Wait. I thought I was in E70A," you're fine. They're the same class; it's the
-
same thing. No worries,
-
okay? There's four handouts. They're in the back. If you haven't already gotten the handouts because you came in and
-
you sat down, don't worry. You can pick them up on the way out. They're
-
the same handouts. They'll still be there.
-
So
-
just a quick introduction. That's what the first four handouts actually give you.
-
They give you a little bit of an introduction to the class, what we're gonna cover, some
-
logistics for the class and some other stuff. I'm gonna go over all
-
that today so we can sort of get a good idea for where we're at, okay? So just a quick show
-
of hands before we get into a bunch of things in the class.
-
This is kind of an intro-programming course; well, it is. I shouldn't say it's kind of an
-
intro-programming course. It is an intro-programming course. And
-
it's always good to get an idea as to how much familiarity you may have
-
beforehand, okay?
-
So just quick show of hands.
-
How many people can recognize a computer that's on?
-
Good, good. That's the prerequisite for this class. So if you're worried about
-
how much previous experience you've had
-
or your friend who, like, worked their way through high school by programming for Google or
-
whatever,
-
don't worry about it because all you need to know in here is basically
-
either how to turn a computer on or to recognize a computer that's on if you
-
were to walk up to it and it were already to be on, all right?
-
So but a little bit more seriously, how many people have actually used a computer
-
for anything?
-
All right. I would expect most of you. So now, we begin to bump it up
-
a notch. How many people have used it for word processing?
-
Okay. Most folks. How many people have done web browsing?
-
Yeah, I won't ask you what you look at, all right? It's just I don't wanna know.
-
How many people have actually created a web page? Okay.
-
Fair number. How many people have done any kind of programming before?
-
Fair number.
-
All right. How about how many folks have done actually programmed in Java before?
-
All right. A few folks. How about another language, C, C++,
-
BASIC,
-
anyone program in BASIC? Yeah,
-
oh, I love - that was the first language I learned, and it was kind of
-
like the warm and fuzzy, and I felt good. There was actually people who argued that if you learn
-
BASIC as your first language, you're brain damaged, then you're just beyond help. But if
-
that's the case, we're all
-
in the boat together because I'm probably brain damaged as well. The truth is I
-
probably am, but that's a whole different story.
-
All right. So one thing you should know kind of up front is actually this course
-
is gonna be provided eventually somewhere down the line as part of
-
Stanford School of Engineering Free Course Initiative,
-
which means not only are we recording this course to broadcast to a bunch
-
of companies and industry who are watching this course, but we're eventually
-
gonna provide it free to the world.
-
So how does that impact your life?
-
And on the average day, it doesn't at all.
-
The only way it does impact your life is just so you should know, the lawyers told me to
-
tell you that your
-
voice, should you ask a question, may actually be recorded as part of the
-
video.
-
As a result, your voice may end up going out to thousands of people or millions
-
of people in the world.
-
If you have an issue with that, come talk to me.
-
If you don't, everything is just fine, all right? Don't worry. We're not gonna put your picture up
-
or anything like that. You might wanna be on the video, like, "Hey,
-
ma, I'm on
-
TV." We decided that we're just gonna not show anyone actually on the video,
-
but your voice may actually get recorded, okay?
-
Now, along those lines, you may also notice there are some microphones in the room.
-
So when you wanna ask a question, please make sure to use the microphone
-
because that's not only good for people in here to be able to hear your question,
-
it's also good for all the folks that this is getting broadcast to because not
-
only are we gonna broadcast to the world, but there's actually some folks who are sort
-
of watching this live now in various companies in Silicon Valley.
-
So it's real important that you actually use the microphone, so just remember that. And
-
every once in a while, I might get on your case and be, like, "Please use the microphone."
-
I'm not trying to be argumentative or anything. I just wanna make sure we
-
pick up all the audio, all
-
right? So with that said, a little bit of an introduction. That's kind of a way of background.
-
I didn't give you any sort of introduction. So just to introduce myself, my name's
-
Mehran Sahami. I'm the professor for the class.
-
Don't call my Professor Sahami, way too formal.
-
Don't call me Mr. Sahami. That, I think of my dad.
-
And don't call me Mrs. Sahami, or we're gonna have issues, all right?
-
So just call me
-
Mehran. We'll get along. It's just fine, all right? It's to keep things a little bit more
-
informal, but that way it's a little bit easier to discuss stuff as you go along.
-
There is also a head TA for the class, Ben Newman, who's standing up there. Get to know
-
Ben.
-
He has all the real power in this class. I'm just kind of the monkey that gets up here and
-
gives the lectures. But Ben really is the one who's got all the
-
power.
-
Along with the head TA for the class, we have a large section leading staff. So
-
the section leaders here, could you stand up if you're here? They're kind
-
of all over the place, some over here, some over there, and some over there. As
-
you can see, there's a pretty large number of folks. And this isn't even all of them.
-
We sort of have more - we just can't stuff them all into the room -
-
who are section leaders for the class, and these folks are all here to make sure
-
that everyone in this class has as good an experience as possible when
-
we're sort of going through the class. And the best way to reach all of us is
-
email. So on Handout No. 1, you get my email and Ben's email.
-
We'll tell you how to sign up for section. That's how you'll meet your section leader and get your section
-
leader's email. That will all be coming soon. But email really is kind of a happy form of
-
communication to
-
get a hold of us, okay?
-
So with that said, I wanna tell you a little bit about this class and kind of
-
what we're gonna do in here and what you should expect and make sure that
-
-
you don't feel scared off by this class, okay? Because it really is meant to sort of be an
-
interesting time.
-
But one question that comes up is why is this class called Programming
-
Methodology,
-
right? Why don't we just call this class, like,
-
Programming with Java?
-
And the real reason for that is that programming methodology is about good
-
software engineering principles. It's about something that's much larger than
-
just programming. So some people, like, they'll go and get a book somewhere and they'll
-
think they learned how to program by just reading the book. And they're,
-
like, "Oh, I know how to program. Isn't that great?" And it's, like,
-
yeah, you might know the mechanics of the language, but the mechanics of the
-
language are nothing compared to understanding the software engineering
-
principles
-
that go into actually developing a software system. And that's what you're gonna
-
learn about in this class. You're gonna learn a lot of those principles. But in order
-
to be able to use
-
those principles and apply them, you also need to have the language to program in,
-
and that language that we're gonna use in this class is Java. So the way I like to
-
think about it and the way I tell a lot of people is writing a good program or
-
learning how to program is like learning to be a good
-
essay writer. And you're, like, "Oh, but part
-
of the reason I'm taking this class, Mehran, is that I don't like writing essays." That's fine.
-
It's okay. Trust me. I didn't like writing essays either. But
-
the whole point is that when you write an essay, it's not a formulated kind of
-
thing. You're, like, "Well, what about five-paragraph essays?" Yeah, just block that from
-
your mind. That was a bad time, right? That was just, like, '70s education at work.
-
It's not a formulated kind of thing. There's an art to writing an essay,
-
right? In order to write an essay, you need to know a language. You need to know English or German or
-
Hindi or whatever language you wanna use,
-
but then you use that language to write an essay.
-
Just knowing the language doesn't make you a good essay writer though. Being
-
a good essay writer makes you a good essay writer.
-
So that's the same difference in programming and software engineering. Knowing the
-
language, in order to be a good programmer, like a good essayist,
-
you need to know a language to write your programs in, whether that be Java or C or
-
C++ or whatever. Here we're gonna use Java.
-
But just knowing the language doesn't make you a good software engineer and
-
doesn't make you understand what the principles are of writing good software,
-
which is what you're also gonna get in this class in addition to the language, and that's kind of
-
a key thing to stress.
-
So if you're sort of worried, if you were kind of looking around and you saw a bunch of people raising
-
their hands when I asked, "Do
-
you have any previous programming experience?" and some folks raised their
-
hands, and you got a little worried and you're like, "Oh, am I gonna be in some sense at
-
a disadvantage because I haven't done any programming before?" The answer, plain and
-
simple, is no, okay? You're
-
gonna learn everything you need to learn from the first principle because as a
-
matter of fact,
-
in some cases you might be in slightly better shape. That's not necessarily to say
-
that that's the way it will be. But
-
how many people are Star Wars fans? Just wondering. Anyone? I'm
-
talking about the old-school, original, like, three movies. Those were so good, and
-
we're not - no George R. Binks here, all right?
-
So if you remember - and sort of I'm a big Star Wars fan, and that's just a whole
-
separate point.
-
But in the second movie, Yoda actually said something which I thought was quite
-
profound, which is he says
-
sometimes you have to unlearn what you have learned.
-
And one of the things we actually find is that some people who are self-taught programmers,
-
some of them are just fine, and some of them are very good.
-
But some of them have picked up some really bad habits along the way, and it's
-
like being a bad essay writer.
-
And to go from being a bad essay writer to a good essay writer, in some cases, can
-
actually be harder
-
than from not being an essay writer to being a good essay writer because you
-
have to unlearn the bad habits.
-
So if you're worried about, "Oh, I've had no previous experience,"
-
don't worry. You're okay, blank slate, you're just fine. And now if you're thinking,
-
"Oh, I have some previous experience. Do I have bad habits?" Don't worry. You'll be
-
fine, too, okay? So it's all gonna work out.
-
So the next question that kind of comes up - hopefully that helps put some of your fears
-
aside.
-
Another one of the things is that we really strive to make everyone successful in this
-
class, okay? At some other schools,
-
people wanna do computer science or they wanna do an
-
engineering major or whatever. And you come into the first day of class, and they say,
-
"Oh, only one third of you are actually gonna make it through this program. And
-
look to the person to your left and look to the person to your right, and only one
-
of you will make it through." And you're, like, "Oh,
-
man, that's real nice."
-
It's not like that here. As a matter of fact, we want all of you to be extremely
-
successful in this class, which is why we have a huge course staff, which is why over years
-
and years we've refined how we do a lot of the teaching in this class
-
to make sure you have the best possible experience and to make sure that everyone
-
gets through.
-
And the important thing about that is that you're not competing against anyone
-
except yourself in this class. It's not like we're gonna have a curve and
-
we're gonna say, "Oh, we have a certain number of "F"s and a certain number of
-
"D"s and a certain number of "C"s."
-
All we really have going into it is an expectation that when you get out of
-
here, there's a set of stuff we want you to know.
-
And if you know that stuff well,
-
you get an "A."
-
And if everyone knows that stuff well,
-
everyone gets an "A."
-
And I got no problems with that. Registrar might have a problem with that, but that's okay.
-
You don't need to worry about that.
-
So you don't need to think about, oh,
-
is someone else doing better than you or whatever. And we'll talk about
-
issues of collaboration in just a little bit. All you need to think about is
-
learning the stuff yourself as well as you possibly can, and you'll be just fine
-
and you'll get a good grade, okay?
-
So that's really all we ask,
-
which is not
-
a trivial amount, right? It requires you to really understand the material.
-
So another question that comes up is are you in the right place, right? This
-
isn't the only introductory programming class at Stanford. And so I wanna spend a
-
little bit of time making sure you actually are in the right place
-
by going over some of the different options. So right
-
now, as you know, you're in CS106A.
-
And CS106A, we're sort of happy over here,
-
right? As
-
a matter of fact, we're not only happy, we're happy and we're also a little bit loopy,
-
right?
-
There is no previous programming experience required, as I mentioned, right? All you
-
need to know is basically if you can get to a computer and know how to
-
figure out that it's on, you're in good shape.
-
But what 106A does is it's a real rigorous class. You learn programming in
-
here, and you learn it in a way that makes you ready to be an engineer if you so
-
choose to be an engineer.
-
That's not to say you're all gonna be engineers. I would love for all of you to
-
be computer science majors, but statistics in the past show only about
-
6 percent of you will be computer science majors. That's not because we
-
turn anyone off to computer science;
-
it's because we make programming accessible to so many people
-
that you don't have to be a computer science or a Double E or even an
-
engineering major to do extremely well in the class. And we actually have sort
-
of a significant percentage of the entire campus undergraduate student body
-
at Stanford actually goes through this class and does well, okay?
-
So don't worry if you're, like, "Oh, but I'm not really a CS person." I hope
-
we'll turn you into one by the end of the class. No, it's okay. But
-
you'll be prepared if that's what you wanna do. So this leads into a whole
-
engineering sequence
-
that can go on to other engineering majors or the computer science majors.
-
If you're, like, "Huh, I'm not sure if that's really what I wanna do. As a matter of fact,
-
I'm so sure that's not what I wanna do,
-
I only wanna get the general educational requirement out of the way, and
-
I'm positive there is nothing else I wanna do. Really, no matter how much I like
-
it, like, there is no way you're gonna drag me into anything that would involve
-
anything remotely techie."
-
They're the class CS105. And this is happy,
-
yeah,
-
this is kind of, oh, we're happy in our little happy world.
-
And I don't wanna say it's holding hands and singing, "Kumbaya," because that's not what it is. It's a real
-
class.
-
But it's meant to be a general educational requirement, right? It
-
doesn't lead into the 106s. It's meant to be its own self-contained class.
-
You do some Java script in there. You do a little bit of what computers are about.
-
Computers in society is a good time. We all hold hands. We're all happy. I don't
-
teach the class, so I don't actually hold hands.
-
But it's a fun time, okay? It just doesn't lead to anything else. So think of this as
-
kind of a terminal class, right? So it's sort of like, well, we'll hook you up to the
-
IV drip. And
-
you're, like, "Well, 106A, you told me I don't need any previous background.
-
Well,
-
hey, Mehran, I got lots of background. I got so much background, it hurts. I got AP
-
background, I got working through school doing software engineering
-
background.
-
I'm not sure I should be here."
-
That could be the case. We have another class called CS106X, and as
-
the "X" kind of implies, it's sort of the extreme games version of the class. No, it
-
stands for accelerated, right, because
-
"A" was already taken, so we had to come up with something else.
-
So the way CS106X works is it really is a very fast-paced class. It's
-
meant for people who've got previous AP exam
-
credit, like, got a 4 or 5 on the AP,
-
or have had significant and prior programming experience before.
-
If you're not sure which one of these classes is for you, you can come talk to me
-
afterwards, or I'd also encourage you, you could go to pick up the syllabus for
-
CS106X and compare it to CS106A.
-
This class is all in C++. And if you're thinking, "Hey, Mehran, I'm doing 106A. I wanna learn
-
Java and C++," don't worry. You'll eventually, if you so choose, take a
-
class called CS106B, which is where this class sort of leads to, which
-
is
-
C++ and all of the other stuff you would have learned in this accelerated
-
class,
-
okay? So you still certainly have that course path. So don't let anyone make you think -
-
I know a lot of times, and especially for Stanford students, you come in here and you're, like, "Well,
-
every class I took in high school was like an honors or an AP class,
-
or if it wasn't an honors or an AP class, like, I had to tie half my brain
-
before my head because I'm just that hardcore."
-
And so everyone just wants to, like, do
-
the most hardcore thing they can, right? And what I'm here to tell you is that
-
you shouldn't necessarily think about it that way. You should think about it as where
-
you feel most comfortable.
-
Some number of years ago, let's just say greater than 10, maybe 15, I was
-
sitting where you're sitting right now,
-
literally.
-
I was in CS106A in Terman Auditorium as a freshman,
-
okay? It was perfectly fine. It worked out. I went to grad school, did the faculty
-
thing. It's just fine. It will open your doors to CS. You're not at any kind of
-
disadvantage by starting here. So know where you've been, literally. Like, that seat
-
right there was where I was
-
most of the time.
-
So just something to keep in mind in terms of the different options that are actually
-
available to you.
-
Now, with that said, let's just assume for the rest of this lecture that this is the
-
right place for you. And if it's not, well, afterwards we can kind of talk about it,
-
or if you really are convinced now that it's not the right place, you can feel free and try
-
to
-
scramble over 20 of your classmates and actually leave the room, which is
-
probably impossible. All right.
-
So a few other things you should know, some mechanics. So Handout No. 1, should
-
you wanna follow along at home,
-
is the class web page.
-
And so all the stuff that we think of as course materials, including online
-
copies of the handouts, things that you'll need to do for the assignments, announcements
-
related to the class
-
are all on the class web page,
-
which is
-
www.stanford.edu/class/cs106a.
-
And because that's just kind of a whole bunch to remember, we make your life easy
-
and so there is an equivalent form of the URL, which is just
-
cs106a.stanford.edu, which is the easy thing to remember. You put that in, it'll take
-
you to the class web page, okay?
-
And you should check that regularly because all the
-
announcements and handouts - we'll give out hard copies of all the handouts in class, but
-
should you happen to miss class for whatever reason, you wanna go print
-
whatever copies of the handouts we're actually giving out, you can find them all on
-
the web page, okay?
-
Now, there's this funky thing about units. So you may have noticed that this class is for three
-
to five units, and that kind of brings up the natural question, "Should I take it for three
-
or five units?"
-
If you're an undergrad, you take it for five units, end of story. That's life in the city.
-
Congratulations. Five units.
-
If you're a graduate student, you can have the option of taking it for three
-
units if you want, if you're gonna run into some unit cap.
-
It doesn't change the amount of work you have to do.
-
Welcome to graduate school.
-
Same work, fewer units.
-
So that's just the way life is. If you have a unit cap and you're a grad student, in
-
three units you can take it if you want. You can take it for five if you want as well. If you're an
-
undergrad, you take it for five, all right?
-
So why is it five units? And you might think, "Hey,
-
this class only meets three times a week. How come it's five units?" Well, it actually
-
has a fourth meeting every week, which is your section, and that's something you
-
should sign up for.
-
So how you actually sign up for your section
-
is sections are at a bunch of different times. You don't sign up for them in
-
Axess, even though they're all kind of listed in the time schedule. That's not where
-
you sign up for them. In Axess, you just sign up for the class.
-
How you sign up for a section is you go to a website, cs198.stanford.edu/section
-
-
-
and this will give us a list of preferences for
-
section times that you wanna sign up for, and there's some matching process that goes on.
-
It takes all your preferences into consideration with the whole system, and
-
eventually you get an email
-
by sometime early next week that tells you what section you're in. And section's 50
-
minutes, once a week. It's required to go to. It's actually gonna be part of your class
-
participation grade, which we'll talk about in just a bit, okay?
-
When do these sign-ups happen? They happen between 5:00 p.m. this Thursday
-
is when they go up. So if you try to go there now, you can't sign up. Remember 5:00
-
p.m. Thursday. So they're up, and then they're down
-
at 5:00 p.m. on Sunday, okay? So
-
make sure you sign up probably this weekend. If you're planning on being out of
-
town this weekend, you wanna sign up before you go. Sign up early, but don't
-
sign up often because you only need one section, okay?
-
If you're an SCPD student - every once in a while you'll hear me refer to SCPD
-
students. That stands for Stanford Center for Professional Development.
-
They are the folks in industry who actually take this class
-
via broadcast. If you're an SCPD student, you're automatically enrolled for a section,
-
so you don't actually need to do this, and your section will meet at - so for SCPD
-
- and if you're wondering what an SCPD student is, you're not one, okay?
-
So SCPD section meets Friday from 1:15 to 2:05. It meets
-
live, if you wanna go there live, in Skilling Auditorium. But if you're
-
watching it remotely, it meets on Channel E2. I
-
know it seems weird to say it meets on channel - what does that mean? It meets on
-
Channel E2, okay? That is grammatically the correct way of saying it.
-
All right.
-
So there's a little bit more administrative stuff. Now,
-
textbooks, right? Textbooks, there's nothing quite like the extortion that is
-
textbooks. So there are
-
two textbooks that are required for this class. Well, one's a course reader and
-
one's a textbook. The course reader is called, Karel the Robot Learns Java. You
-
can pick it up at the bookstore. It's relatively cheap. It was actually written by Eric
-
Roberts here. And surprisingly enough, the textbook for the class was also written by
-
Eric Roberts, The Art and Science of Java, which is available now in your local
-
bookstore,
-
including the bookstore on campus, so you can go and pick up a copy of this.
-
So both these things you actually wanna have because they're required for the
-
class. We'll go through all of them. We'll go through basically everything except
-
the last chapter of this book. So you
-
sort of get your money's worth. We're just gonna do it a little bit out of
-
order, but we'll go through the whole thing,
-
okay? So email,
-
how many of you have email accounts? All
-
right. I will ask the reverse question because I think at this point, some people just don't
-
wanna put up their hands.
-
How many people don't have email accounts?
-
Odd how that is not the complement of the folks who had their hands up
-
previously.
-
Email's required for this class. Chances are, by being at Stanford, you've already gotten an
-
email account through your SUNet ID, but if you don't have an email account, get
-
an email account and that's how you'll stay in contact with us. That's how we'll stay in
-
contact with you, except we'll also meet with you live in person,
-
but email is kind of the general method for communication. As a matter of fact, for your
-
first assignment, and part of your first assignment is to send us an email,
-
just because we love you
-
and we don't get enough email as it is.
-
So you need to have an email account to be able to do that. So if you have not
-
already, you can kind of get ahead of the game and go set up your email
-
account. Now, don't worry. You'll get the first assignment next time. So you still get, like,
-
two days of breathing space before your assignment goes out, okay?
-
There is also gonna be lots of handouts in the class. They'll be either given out in class,
-
well, they will be given out in class, but we'll also post them online in case you miss them.
-
And how much real work do you do in this class? That's always kind of an interesting
-
question.
-
So let's talk a little bit about assignments
-
and a little bit of other logistical things.
-
So assignments,
-
we'll just call them the dreaded assigns. There are seven programming assignments.
-
And if you look at the syllabus Handout No. 2, it tells you when all of them
-
are due all the way through by day, so you can plan out your whole quarter. It's
-
just that much fun, okay?
-
And these seven programming assignments are weighted slightly more toward the
-
last assignments because the assignments will tend to get more complicated. That doesn't
-
necessarily mean there'll be more programming;
-
it just means conceptually, they'll become more complicated,
-
so we tend to weigh them more toward the end of the class. So the later assignments count
-
more than the early assignments.
-
How you're gonna be actually doing your programming is using a little tool called Eclipse.
-
And Eclipse thankfully is free, so you don't have to pay for it. As a matter of
-
fact, you can download it from the CS106A website. And if you're wondering
-
how you do that, don't worry. We'll give you a handout next class that explains
-
to you the whole grueling process
-
of downloading and installing Eclipse.
-
And you can use this either on the Mac or the PC. So if you have your own
-
computer, you can certainly work on this yourself. You just download it to your
-
own machine. We'll explain the whole process in a handout.
-
If you don't have your own computer, the public computer clusters on campus
-
will have Eclipse installed on them, and so you can use Eclipse there. So you're
-
sort of happy to go either way, okay? Now,
-
the important thing, remember I mentioned that whole notion of software
-
engineering in the class, and that's something we take really seriously, so
-
seriously as a matter of fact that when you turn in your assignments, one thing we could do is we could take
-
your assignments
-
and we could just kind of look at it and go, "Yeah, interesting, 'B.' Here you go.
-
Thanks for playing."
-
And you don't learn a whole lot from them. So in order to actually learn a lot from
-
your assignments, we could take your assignment and write a whole bunch of
-
comments on it and hand it back to you. Even that's kind of not enough.
-
What really is a little bit more that makes it more fun is every week after
-
you turn in your assignment and your section leader looks it over and grades it,
-
you'll actually meet with your section leader for about 10 to 15 minutes
-
every week or every time an assignment is due
-
to actually go over in something referred to as interactive grading. And it's
-
a chance to sit there and talk with an actual human being about what's good in
-
your assignment, what are some of the things you need to work on, what are some of the
-
software engineering principles you need to develop. And that way, you can really
-
sort of get more detailed information and be able to ask questions to develop
-
yourself as a programmer as well as get help if you need help,
-
okay? And that's in addition to going to section, going to class and all that stuff. So
-
it's another 15 minutes a week. You'll actually schedule that time with your
-
section leader on a regular basis
-
when you're gonna have interactive grading or just affectionately
-
referred to as IGs because at Stanford, everything's just short and we just can't
-
say, like, psychology; we have to say psyche.
-
So it's IG. Just remember that, all right?
-
And then how are these things graded? So the other thing we could do is I told you
-
we could just write "B" and hand it back to you.
-
But we found that that's not really great because people get all wrapped
-
around the axle about the grade.
-
And so for a while, we did numbers and we're, like, huh, why don't we give a number between 1 and
-
20? And so what happens there?
-
People get all wrapped around the axle about numbers.
-
So then we thought, huh, what was a happier time when we were in school?
-
I remember when we were in school, and we used to get back assignments and they
-
had, like, smiley faces on them.
-
Well, we can't do that because then it doesn't appear to be a rigorous Stanford
-
class.
-
So instead of the smiley face,
-
we come up with something else,
-
which looks surprisingly like this. It's kind of involved to actually draw, so I need to
-
erase the board to do it. Check.
-
That's kind of the beginning of our grading scale, okay?
-
And the way our grading scale works is we start off with a check in the middle,
-
which says this is a pretty solid program. It meets all the requirements
-
for the program. Maybe it's got a little problem here or there, but it's a check.
-
Then we have sort of two grades on the two sides of it: check plus and check
-
minus.
-
Check plus is, like,
-
solid.
-
You did a great job; you got everything right; things look good, a nice style in
-
your program, nice software engineering, and the program works flawlessly.
-
Good job. This is like total "A."
-
Check is kind of like, yeah, you're sort of there. It's kind of like "A" minus, "B" plus,
-
maybe on some occasions "B."
-
But it's kind of like it's pretty good work; you're in pretty good
-
shape here.
-
And so a lot of grades in this class ends up being check pluses and checks, and if that's
-
the case, you're perfectly fine grade-wise.
-
Check minus, as you can imagine, this is kind of thinking about "B," "B" minus. It's,
-
yeah, there are some slightly more significant problems with your program.
-
But that's not where it ends, right, because we wanna
-
be able to even shoot for in some sense bigger gustoes. There was a plus
-
and a minus.
-
So plus is like,
-
oh, nice job, kind of a hearty
-
pat on the back. If you get
-
pluses all the way through on all your assignments, you're in a pretty good
-
candidate to get an "A" plus.
-
And minus, like, just take good over here and replace it with bad, it's kind of like,
-
oh,
-
bad times, right,
-
or maybe, you know - but
-
even there was, like, more significant problems with this program or just the
-
style on the program is just really bad.
-
But even there, we don't stop. And you're, like, "Come on, man. Like, I thought the whole reason
-
was to simplify this." Don't worry. And it gets even better because we have a plus-plus
-
and a minus-minus. And at this point, we've run out of board space, so we can't go any further.
-
But a plus-plus
-
is just outrageous,
-
right? It's the kind of thing - so this is the kind of thing your section leader can't
-
actually give you
-
without coming and talking to Ben and I first
-
because they get a program that just goes - it has to actually exceed the
-
requirements for the assignment. It's by a long shot.
-
Like, you'll get all your assignment requirements, and what we encourage you
-
to do is you can do a grade assignment and get everything right and have good style,
-
and you'll be in this category. And for the later assignments, you may be in this category if it's
-
flawless.
-
But we'll actually - if you want to go for the plus-plus,
-
go beyond the assignment requirements. And the way we think about the plus-plus, it's a
-
program that makes you weep
-
in a good way.
-
It's just like your section leader sees it, and they're just, like,
-
this is so good, I've gotta show someone else. And they come and show Ben and
-
I, and we're, like, sitting there looking at this on a monitor, and, like, tears are just welling in our eyes, and there was,
-
like,
-
soft violin music playing in the background and we get out the wine and
-
cheese.
-
So this is just, like, this is the kind of thing that gets you, like,
-
remembered and the, oh, if you want a letter of recommendation, just ask because you got
-
a plus-plus. Like, oh,
-
it's awesome, right? There are very few of these in a quarter. So just by sort of
-
way of comparison, in a class this size, probably throughout the span of the
-
whole quarter, I'd expect there to be maybe ten plus-pluses,
-
I mean, ten assignment plus-pluses, not ten students who get plus-pluses across the
-
board.
-
So it's really something to strive for, but if you strive for it,
-
like, we're giving you the credit for it. And this gets remembered and you get, like,
-
extra credit and everything.
-
So we're left with this,
-
right? This assignment also makes you weep,
-
but not in the good way, right? It makes you kind of weep in the sense, like, I look at
-
them and I'm, like,
-
oh, man, like, what did I teach? Like, where did I go wrong, right? I, like,
-
blame myself.
-
I blame you a little bit, but I blame myself.
-
And this is really just, like, the program is just, like, it's a
-
shell. Like, there really wasn't much effort that was put into it. Yeah, you slapped something together
-
or it doesn't really work,
-
that whole deal. And then if you don't turn anything in, we do kind of reserve the
-
zero to distinguish from the
-
"made really bad effort" versus "didn't make any effort at all."
-
And we just won't talk about these, right? Let's just hope we can avoid those
-
if possible. But that's kind of how the grading scale works now. Now,
-
at the same time, I trust all of you to be responsible people.
-
And every once in a while, something bad happens to a good person, and
-
there's an assignment that you'd like to be able to turn in, but for whatever reason, you
-
can't turn in on time. And I just wanna treat you like adults.
-
I don't want you to have to worry about coming in and asking for an extension
-
or, like, "Oh, I had this really hard thing in another class, and I couldn't do it at the same time." Up
-
front,
-
everyone gets two free extensions, okay? So
-
in terms of late days - we refer to these as late days, strangely enough - you
-
get two free ones.
-
What a late day is, is a class day. They're not 24-hour days, but class days.
-
So if something is due on a Wednesday, you turned in on a Friday, that's a late
-
day. That's one.
-
You turn it in on the following Monday, that's two late days.
-
You can split up your two late days among two different assignments. You can use
-
them both on one assignment.
-
But we encourage you to not use them at all because if you use your late days, you fall behind
-
in the class.
-
The way you should think about these things are these are pre-approved extensions.
-
They're not the kind of thing where you just think, "Oh, yeah, I'm not gonna do the
-
assignment because I wanna go and play Frisbee golf," right?
-
Think of it, well, you wouldn't come ask me for an extension - you might, but you probably wouldn't
-
ask me for an extension if you're, like, "Hey, hey, Mehran, can I turn in the
-
assignment, like, on Wednesday because
-
I'm playing Frisbee golf this afternoon," right? If you would feel embarrassed
-
asking that question, you probably don't wanna use one of your free late days.
-
But something happens like,
-
oh, it's a tough week, you've got midterms in other classes and you got this assignment
-
due or whatever, that's a good time to use it.
-
So we just trust you. And most people, we actually encourage you not to use them
-
because it just makes you fall behind in the class.
-
Because we trust you and we give you these two up front, getting extensions
-
beyond your two free class days is virtually impossible because we sort of
-
up front said,
-
hey, it's your responsibility. We're giving you two freebies.
-
We're not gonna give you a third extension. Imagine if you had to come ask us for three
-
extensions. By the third one, we'd be, like, okay, what's going on, which is why
-
we don't necessarily give extensions beyond these two.
-
The only time we might give an extension beyond the two free ones is for
-
something major, like
-
death in the family or, like, serious medical problems that might require surgery or
-
something like that.
-
Every once in a while, unfortunately, that happens. I hope it doesn't happen in this
-
class.
-
But those are the only kinds of things that we give extensions to beyond the two
-
free late days.
-
Importantly, don't ask your section leader for extensions. They cannot grant you
-
extensions. Only Ben, who has all the power in this class, can give extensions, which
-
is why you should get to know Ben and then hopefully you won't need to talk to him about
-
extensions, okay? So
-
other thing to keep in mind is that three days late is the max.
-
Beyond three days late, which is basically one class week, if you think
-
about late days being class days, we will not accept an assignment. And the reason
-
for that is at a certain point, you're so late, you're better off just doing the
-
next assignment, letting the old one go.
-
So to sort of enforce that policy, after three days, we don't accept that
-
assignment late anymore. It's just gonna be a zero if it's not turned in, okay?
-
And that just kind of forces you to keep up.
-
Couple other minor things, well, I shouldn't say they're minor things. They're actually kind of important. Exams: There's
-
two exams in this class. There's a midterm and a final.
-
Both of them are, well, I shouldn't say both. The midterm is out of class. It's
-
from 7:00 to 8:30 p.m.
-
on Tuesday, October 30. And it's on the syllabus. It's there. It's on the syllabus; it's
-
on Handout No. 1. We repeat it multiple times. The date will eventually be announced
-
when we get close to the midterm.
-
But if you have a conflict with this time, you need to send me email, okay?
-
You can send me email a little closer to the midterm because I'll announce it again for people who have
-
conflicts.
-
But since it's an out-of-class exam, you need to send me email if you have a conflict.
-
I'll get all the constraints from people who have conflicts and try to schedule an
-
alternate time if there's enough people with conflicts.
-
But 7:00 to 8:30 is when you need to know about the midterm. And to make up for
-
the fact that we have an out-of-class midterm, I actually give you sort of
-
a belated free day, which is the Friday of the week of the midterm, we don't have
-
class to make up for the fact that we made you come to the midterm outside of class.
-
But the midterm's an hour and a half, and we can't compress time. If we could, we'd
-
have different issues.
-
We can't compress time and fit it into a 50 minute class, which is why it's
-
out of class, but you get a free day for it,
-
all right? Last but not least,
-
few things about grading.
-
Grading, one of those things as you might be able to tell from this little board
-
over here or something, if I didn't have to do it, I wouldn't do it
-
because honestly, as corny as this sounds, I just believe in the love of learning.
-
Like, I think if you're passionate about something, you just go do it and you
-
learn it.
-
But I'm na?ve, and so that's not the way learning always works. So sometimes we
-
actually need grading to make sure that learning takes place. And so this is how your
-
grade breaks down:
-
Forty-five percent of your grade is on the programming assignments, okay?
-
Fifteen percent is the midterm, which we'll just call the mid because we like to
-
abbreviate everything.
-
Thirty percent is the final. It's a three-hour final exam in the regular final
-
time slot for this class.
-
If you think or are under the delusion that you should take two
-
classes at the same time,
-
that's a bad idea because their final exams are at the same time,
-
okay? So you should not take two classes as the same time
-
because our final exam is scheduled for - I believe it's December 13, which
-
is a
-
Thursday, 12:15 to 3:15. That's the regular final exam slot for
-
this class. And any other class at the same time will conflict with that slot. Thirty
-
percent of your grade is the final. And that, if you add it all up,
-
it's not just that I'm bad with math. It's because 10 percent of your grade is actually
-
participation. And this is things like
-
did you go to your interactive grading sessions? Did you regularly attend
-
section? Did you participate in section? Did you participate in class, right?
-
And so, in order to help you participate in class,
-
there's a little incentive to participate in class, which is sugar in the afternoon.
-
So someone raise their hand. All
-
right.
-
Yeah, sometimes I'm not a good shot. And this will tell you, if you're sitting in
-
the back of the room, I can't throw a Kit Kat back there because they're a little
-
-
too light. Oh, yeah, sorry.
-
If you sit in the back of the room, the roof prevents me from actually being able to hit
-
you. So if you want the food, come up. But if you ask questions in class,
-
hey, that's a good time. It's just a little way to be able to reward you for
-
actually participating in class
-
or to keep your blood sugar up if you need it, all right?
-
So that's participation. It's 10 percent of your grade, and as a matter of fact, at the end of the quarter, I ask
-
every one of your section leaders to actually tell me how much you participated in class, and
-
some of them just say, "Oh, this person was wonderful. They came every time. They participated.
-
It's just a great thing."
-
And that helps your grade out a lot, okay?
-
Now, the final thing,
-
and as you can kind of tell,
-
most of the time, I'm not the most serious person in the world. I just like
-
to have fun with things, and I think it's important for you to have fun with
-
things.
-
There is just one place where I get real serious, and it's one place where Stanford
-
gets real serious.
-
Anyone wanna guess what that is?
-
Plagiarism and the honor code. As a matter of fact, that's what we call a social. So we
-
had someone down here who got it and then a whole bunch of people who I don't
-
know, so we just spray. All right.
-
So the honor code,
-
in terms of the honor code, the
-
question comes up is what is the honor code all about, and how does that affect working
-
in groups and computer science, etc.?
-
Does that mean we shouldn't talk to each other?
-
No. The answer to all those is no, okay? If you look at Handout No. 4,
-
which is all about the honor code,
-
we encourage you to talk to each other. We encourage you to talk about concepts
-
in the class, talk about different strategies to problems, to think about
-
the ways that you could potentially approach some problem or
-
the way different control constructs when we eventually get to them work in the
-
class. And discussion is perfectly fine,
-
especially among the course staff, but also amongst yourselves. That's a great
-
thing.
-
So where do we draw the line? And we try to make a bright line for where you've
-
crossed the line for the honor code, which is
-
don't share code,
-
plain and simple,
-
in any respect, okay?
-
Don't give a file to someone else that's got your code in it. Don't get code
-
from someone else. Don't look at someone else's printout. Don't give them a
-
printout.
-
If you have two people who are sitting looking at the same screen together,
-
that code can't belong to both of you.
-
It belongs to one of you.
-
I don't know which one, but it becomes an honor code violation. So you shouldn't
-
both - two people shouldn't be staring at the monitor together.
-
If it ever gets to the point where you're looking at someone else's code, that's
-
where you're gonna reach an issue, okay?
-
Discuss as much as you want. That's great.
-
Write your own code. That's all we care about. And you're, like, "Well, what is
-
code, Mehran? What does that word mean?" Code is geek speak for your program,
-
so when you program, the program that you write is what we affectionately refer to
-
as code.
-
And the idea of programming is what we refer to as coding,
-
strangely enough. Computer scientists need to make everything
-
more complicated than it really is so we can
-
get people under the illusion that they should pay us lots of money to do what we do.
-
I mean, you're, like, "Oh, I just write programs." And they're, like, "Oh, yeah, I should pay you
-
half." And you're, like, "No, no, no. I write code." And they're, like, "Oh, yeah." Suddenly, it's much more
-
impressive. So
-
don't share code.
-
The other thing is if you talk to other people, like if you have a study group to
-
talk about solution approaches or you go, let's say, talk to the TA or your section
-
leader
-
to how you should approach a problem, and they give you a lot of hints as to how
-
to do it,
-
cite collaboration.
-
So cite and collaboration gets you out of trouble. Any collaboration that you cite
-
you cannot be held responsible for under the honor code.
-
You can actually copy someone else's program and say, "I copied this program
-
from Mary Smith."
-
And I'll look at that and say,
-
"They cited it," and it will warm the cockles of my heart.
-
And Mary Smith will get full credit, and you'll get a zero because you copied your
-
program from Mary Smith,
-
but it's not an honor code violation because you cited the work, okay? So
-
the bottom line is keep yourself safe and cite your collaborations. And I
-
guarantee you most of the time, you'll be just fine.
-
Now, you might wonder why do I make such a big deal about this. And the reason I
-
make a big deal about this is for a while, thankfully it's not true anymore, but
-
for a while,
-
the computer science department actually had more honor code violations than the
-
rest of the university combined.
-
Take everything else in the university, put them all together, they were like over
-
here. And we're, like, we're computer science,
-
which is not a fun distinction to have, let me tell you.
-
And you might wonder why is that? Is that because computer science people are just
-
mischievous and dishonest? No.
-
It's because it's easier to catch honor code violations in computer science. We have a
-
whole bunch of tools that allow us - then we take all your programs and we run them through
-
this tool, and it compares them not only to everyone else in here, but, like,
-
to everyone from the last, like, X years where X is the large number of people who've
-
ever gone through the classes, right?
-
And it's an extremely good tool from finding where honor code violations
-
happen,
-
from where they don't. And it
-
doesn't find spurious violations. To be honest, I've never lost an honor code
-
case. When I
-
find an honor code case,
-
it is blatant.
-
And you take it to judicial affairs, and they look at it, and they're, like,
-
yeah, this is blatant.
-
And I take it to the student, and every student I've ever confronted them
-
with never said, "No, no, no. I didn't cheat." They said, "You caught me," okay?
-
So it's blatant. It's not like, oh, there's some little line in it, "Oh, am I gonna need to
-
worry about an honor code violation?"
-
Remember those rules, you have nothing to worry about in this class. It's people who go and,
-
like, fish out printouts from the recycle bins and copy other people's
-
code that are the people we catch, right? It's blatant cheating
-
that we catch.
-
But we catch it.
-
We catch it all the time. So I hope, I pray it doesn't happen in this class.
-
But the reason I make a big deal about it is historically if I look at the
-
evidence, it happens and we catch it. And when we catch it, we're required by the
-
university to prosecute. And I feel bad because usually it's someone who just made a
-
bad call, like,
-
they were up way too late the night before working on something else, and
-
they're not thinking straight. And rather than just taking a late day or turning in their
-
assignment late and getting a slight penalty on it beyond their two free late
-
days,
-
they decide to cheat. And that's just always the wrong call, okay?
-
So you just don't wanna put yourself in that situation. So I get real serious
-
about it for a moment, and hopefully it won't be an issue and we can just kind of go on, okay?
-
So with that said, that's a whole bunch of logistical stuff.
-
Any questions about the logistics of this class or anything I just talked
-
about? Uh huh? You had briefly mentioned the late penalty.
-
Oh, the late penalty, good point.
-
So remember our little bucket scale.
-
If you go beyond your two free late days, every day you turn in an assignment late beyond
-
those, it drops down one bucket.
-
So let's say you already used your two free late days on Assignment No. 1. And on
-
Assignment No. 2, you turned in something one day late and you would have gotten a
-
check normally, it becomes a check minus.
-
So that's how it is. It's one bucket per late day beyond your two free ones. Uh huh? Are the sections first come, first served?
-
Yeah, the sign-ups, well, they take into consideration your preference, but
-
part of your preference is to do the match is first come, first served.
-
So you wanna sign up early.
-
Oh,
-
thanks for your honesty. As a matter of fact,
-
I dig honesty, all right?
-
Any other questions?
-
It's just honesty's cool. Uh huh? How much time should we plan on studying [inaudible]?
-
Oh, good question. How much time should you plan? And this is something that I say for
-
classes in general at Stanford, which is not always true,
-
which is take the number of units that a class is,
-
multiply it by three. That's how many hours you'll spend per week in that class, total,
-
on average.
-
So what that means is in 106A, a 5 unit class, you multiply by 3, you
-
get 15.
-
Five of those hours are roughly spent between class, section, interactive grading,
-
other stuff.
-
That means on average about ten hours a week will be spent on your assignments
-
in this class.
-
Again, that's an average. Sometimes when I go to computer science conferences, I sit there and joke
-
around with plans. And we're, like, "Oh, how long did your assignments take?"
-
And I say, "Oh, on average, ten hours." And what I really mean when I say on average 10
-
hours
-
is they take between 3 and 45,
-
okay? It's a large variance event, right?
-
Ten is the average. Some people take a really long time. Some people get through it
-
really quickly, but that's about the average you can plan for. Uh huh?
-
Another question? [Inaudible] late days [inaudible] class days?
-
Yeah, all late days are class days, so the free ones -
-
the halfway mark's really my reach. That's about it.
-
All right. So I do wanna give you your very beginning of an introduction to
-
programming before we sort of break for the day. How
-
are we doing on time?
-
And so in order to kind of see this,
-
there's a few things that we wanna keep in mind. Actually, let me show you a
-
little picture, okay?
-
Sometimes
-
when we talk about writing programs,
-
we talk about debugging programs,
-
right? How many people ever heard the term debugging or bugs in programs?
-
A bug in a program is an error in a program, so sometimes when you hear us
-
say, "Oh, come see," like, your section leader to help debug or see the helpers in LaIR.
-
That's another thing. In the Tresidder computer cluster is the LaIR.
-
It's a computer cluster that we have helpers there to help you get through
-
this class. What is it?
-
Sunday through
-
Thursday, every week, from around 2:00 in the afternoon 'til midnight every day, okay,
-
to help you get through the class. So that's a good place if, you know, you can
-
work in your dorm room certainly, but if you also want help, go to the Tresidder
-
computer cluster, and there will be helpers there. There's a little queue you sign up for
-
to get help, and that's a great place, and it's all explained in Handout
-
No. 1,
-
but that's just something to keep in mind.
-
Where the term debugging comes from, it turns out this is an apocryphal story, but I'll tell
-
you anyway.
-
Back in the days of yore, in 1945 actually, there was a computer called the
-
Mark II at Harvard. And there was a woman named Grace Murray Hopper. Anyone ever
-
heard of Grace Murray Hopper?
-
A few folks. She was actually the first woman who was an admiral in the navy.
-
And she was also one of the very early pioneers of computer programming. She did
-
a lot of computer programming when she was actually a captain, and she was stationed
-
at Harvard as part of some sort of navy thing. I don't know why, but that's what
-
happened.
-
And they had this huge computer there, and they were noticing the computer was
-
on the fritz, and they couldn't understand what was wrong. And this is one of these
-
big old machines in the days of yore that has vacuum tubes and stuff inside it.
-
So they walked inside the computer, right, because then you could actually open it up
-
and walk inside your computer.
-
And they saw this,
-
and I don't know if you can see that, but that's a moth.
-
It was a moth that had sort of given its life to be immortalized because it had actually
-
shorted out across two relays in the computer
-
and was causing these sort of
-
errors to happen on the fritz. And so they took the bug out, and once
-
they actually plucked this little charred bug out of there, the computer started
-
working fine again, and she taped it in her log book. And this log book's actually
-
preserved in the Smithsonian Institution now, which is where all this comes
-
from. Here's all the standard disclaimer information: "Image used under fair use for
-
education purposes. Use of this image is exempt from Creative Commons
-
and other licenses," just so you know.
-
Now the lawyers are happy.
-
But this is where we think of sort of the modern term debugging actually came from.
-
Now, it turns out the actual story is that the term debugging came from the
-
1800s, in the late 1800s
-
from mechanical devices. People actually referred to debugging as fixing mechanical
-
devices.
-
But this is kind of the apocryphal story for how it comes up in computer science. Now,
-
with that said,
-
what is the platform in which you're gonna sort of do your first debugging or
-
your first work on? We talked about Java, but in fact in this class, we're not
-
gonna start with Java.
-
We're gonna start with something even sort of simpler than Java because as I
-
mentioned, sometimes what happens in computer science is people learn all the features
-
of some language. And they think just knowing the language makes them a good
-
software engineer.
-
And they get so worried about all the features of the language
-
that they don't kind of think about the big picture.
-
And so there was a guy named Rich Pattis, who oddly enough was actually a grad
-
student at the time at
-
Stanford,
-
and he said, "You know what? If we're gonna teach computer science, when we first start out, why don't
-
we have people not worry about all of the different
-
commands of the language and all the different things they can do?
-
Let's start with something really simple so you can learn all the commands
-
real quick. And then you've mastered everything there is to master about that
-
language, and you can focus on the software engineering concepts." And it turns out to
-
be a brilliant idea, which has actually been adopted by a bunch of people.
-
And so Rich, who's a wonderfully friendly guy - sometime if we get him to
-
come to Stanford, I'll introduce you; he's just very nice -
-
came up with this thing called Karel the Robot. And
-
the term, "Karel"
-
actually comes from
-
Karel Capek.
-
Anyone know who he is? Oh, free candy. Uh huh? He coined the term,
-
"robot."
-
He coined the term, "robot." He was a Czech playwright who actually wrote a play
-
called, "RUR,"
-
which was about robots. And the word robot actually comes from a Czech word, the
-
Czech word for work.
-
And so the robot is named after
-
Karel. And some people say Karl, which is kind of actually closer to I believe if - I
-
don't know if there's anyone who speaks Czech in the room - but closer to the
-
actual pronunciation. But we say Karel these days because it's kind of like
-
gender neutral, okay?
-
And so Karel the Robot
-
is basically this robot that lives in a really simple world. And so I'll show you
-
all that you can meet Karel the Robot. He's friendly; he's fun.
-
I'll show you Karel the Robot.
-
-
So we gotta get Karel running. He's at the factory. He's getting souped up. We're energizing Karel.
-
You gotta add some color to it. Otherwise -
-
all right.
-
We're begging for him. Come on, Karel.
-
There he is. Oh,
-
yeah.
-
That's Karel the Robot. He looks like one of the old Macintoshes if you remember the original
-
Macintoshes that look like a lunch pail, except he's got legs.
-
One sticks out his back. That's just the way it is.
-
And the way Karel works is he lives in a grid. To you, it may not be exciting, but to
-
Karel, it's way exciting.
-
So Karel lives in this little grid, and the way the grid works is there are streets and
-
avenues in the grid. Streets run horizontally, so this is First Street,
-
Second Street, Third Street.
-
And then over here, we have avenues, First Avenue, Second Avenue, Third
-
Avenue, Fourth Avenue, Fifth Avenue. It's kind of like Karel lives in Manhattan if you wanna
-
think about it that way, okay?
-
So Karel always is on one of these corners. So right now, he's at the corner of
-
First Street and First Avenue, or we just refer to it as 1 1 if you wanna
-
think about sort of Cartesian coordinates, right? But
-
just think of them as streets and avenues.
-
That's where Karel lives.
-
And Karel can move around in this world. There's a bunch of things that Karel can do.
-
He can take steps forward.
-
He can turn around to face different directions, and he can sense certain
-
things about his world.
-
So there's some things that exist in Karel's world, okay?
-
Things like walls that Karel cannot move through, right, so his world has
-
walls all around it that he can't go through, so he can't fall off the end of the
-
world.
-
And there's other walls like this one if Karel were over here, he can't step through
-
that wall.
-
There's also something referred to as beepers in Karel's world. And what a
-
beeper is, is it's like a big diamond,
-
okay? But what a beeper really is, is basically just some marker that he puts in
-
the world. You can think of a beeper like a piece of candy.
-
And Karel just goes around, like, putting pieces of candy in the world. As a matter of fact, not
-
only does he put pieces of candy in the world,
-
he carries around a whole bag of candy. So he has a beeper bag with him, and
-
sometimes that bag has a whole bunch of beepers in it; sometimes it only has one
-
beeper; sometimes,
-
it's sad Karel, and he has no beepers. But he's still got the bag.
-
There just don't happen to be any beepers in it. So he can potentially, if he
-
come across a beeper in his world, he can pick it up and put it in his bag,
-
or he can take, if he's got beepers in his bag, he can take them out of his bag
-
and put them places in the world.
-
And corners in the world can have either zero - if they have no beepers, they just appear
-
like a little dot -
-
or one or more beepers
-
on them that Karel can potentially pick up, okay?
-
So any questions about beepers or Karel having a little bag of beepers?
-
And that's it.
-
That's Karel.
-
That's his world. His world, we can make it larger if we want. We can put in walls in
-
different places. We can put beepers in different places. We can have Karel be in a
-
different place.
-
But starting next time, what you're gonna realize is with this extremely simple world,
-
there's actually some complicated things you can do. And after about a week - so
-
this first week, we're gonna focus on Karel - you'll notice that Karel is
-
actually a very nice, gentle introduction into Java. And a lot of the concepts that
-
we learn, sort of software engineering concepts using Karel, will translate over to the
-
Java world, okay?
-
So any questions about Karel or any of the other logistics that you've actually
-
heard about in the class?
-
Alrighty then. Welcome to 106A. I'll see you on Wednesday.