Placeholder Image

字幕表 動画を再生する

  • So it is my greatest pleasure to welcome you all here today

  • for the first lecture of, well, Introduction

  • to Computing and Programming.

  • Also known as CS50 or well, CPSC 100, officially here at Yale.

  • >> So we couldn't be more excited to welcome you all here.

  • My name is Patrick Rebeschini.

  • I'm the head instructor for the class.

  • I am here representing a group of about 60 staff members

  • that will work with you throughout the semester.

  • This number is almost 60 of us.

  • Yet along the extraordinary level of commitments

  • that we put into this class, makes CS50 the class

  • at Yale University that offers the greatest level of support

  • to all of you.

  • And we couldn't be more proud of offering this class here again.

  • >> In fact, as you will soon experience, CS50 is much more than a class.

  • It's a community.

  • And you will be part soon of this community.

  • This is the second year that Yale is offering this class.

  • We are building on the extreme success of last year, where

  • for the first time, here at this university,

  • undergraduate learning assistant were adopted in classrooms.

  • It all started with this class last year.

  • >> So as you know, the class is taught jointly with Harvard University.

  • To teach this course we are relying-- we can

  • count on the great expertise of David Malan and the Harvard team.

  • So David has been teaching CS50 for well, 10 years now.

  • And every year he has been pushing the boundaries

  • and improving the classroom experience.

  • Again, we couldn't be more happy to continue this collaboration with them.

  • >> In fact, one of the most interesting parts,

  • I will say of running this class now, both at Harvard and here at Yale,

  • is the really incredible cross-fertilization

  • of ideas, aimed at improving the learning experience to you all.

  • So as a result of this extensive collaboration between the two

  • university, CS50 is proud to announce the new version this year

  • with noticeable changes.

  • David will all tell us about them now.

  • So please-- this being said, please join me

  • and welcome to give a big round of applause

  • to welcome David and Harvard team here at Yale.

  • >> [APPLAUSE]

  • >> DAVID MALAN: Thank you.

  • Thanks.

  • This is CS50, Harvard University's and Yale University's introduction

  • to the intellectual enterprises of computer science

  • and the art of programming.

  • And what that means is that this course ultimately, is about problem solving.

  • Indeed many of you might have come out of high school

  • or have spent the past couple of years wondering what some of your friends

  • did last year or in other classes.

  • And yet, the reality is, no matter what we

  • do at the end of the day in this class, it's going to be about problem solving.

  • >> And as such, perhaps take some reassurance in the fact

  • that 73% of the students that take this class, both here

  • at Yale as well as at Harvard, have never taken a CS class before.

  • So if you're sitting here in the audience today wondering

  • why you are sitting here in the audience today,

  • or maybe you just followed along with some friends,

  • or maybe you've been a little curious as to what

  • computer science and programming is, realize

  • that most of your classmates to the left and to the right of you

  • are very much in that same demographic.

  • >> And indeed, if we look at last year statistics

  • within the student body of CS50, both here and at Harvard, 58% of students

  • describe themselves as less comfortable.

  • 9% is more comfortable.

  • And then 33% is somewhere in between.

  • And there's no formal definition of what these buckets means.

  • You sort of know you're less comfortable if you are.

  • You're feeling a little uneasy with maybe being in the class.

  • You're not quite sure if a computer science class is ultimately for you,

  • and realize that you are in very good company.

  • And indeed the grading, and the assessment,

  • and the feedback, and all of that support structure in the class

  • is ultimately very much individualized.

  • More so than most any other class by design.

  • And indeed, what ultimately matters in this class is not

  • so much where you end up relative to others,

  • but where you, in week 11 or last, and relative to yourself in week

  • 0 here our first.

  • So what does that mean?

  • Well, this means of those 73% of students last year that had never taken

  • a CS class before, by the start of the semester they

  • were dabbling in a language called Scratch, which we ourselves

  • will see here today.

  • And by the end of the semester had they gone

  • through this entire list of challenges.

  • Starting with a language called c.

  • Implementing, what's at first glance, going

  • to be a bit of a challenge for some, but fairly gratifying once you

  • get Super Mario bouncing up and down a pyramid

  • implemented, albeit, with just something called ASCII art.

  • Implementing last year-- what the students last year then

  • did after that was implement their own Caesar cipher and vigenere cipher.

  • So encryption algorithms with which you could

  • scramble information and then unscramble information to send secret messages.

  • The game of 15.

  • If you remember from childhood or some party favor,

  • that little plastic game where you move the numbers up, down, left and right

  • to try to get them in order, actually implementing that game

  • and solving the logic required there.

  • And then we dabbled in forensics last year.

  • >> So by mid-semester, students who had never

  • used their keyboards for this purpose before,

  • were writing software to recover, so to speak,

  • JPEGs or photographs that we had accidentally

  • deleted from a digital memory card from a camera.

  • Recovering secret messages from inside of a bitmap image,

  • and other such types of graphics as well.

  • >> We then transitioned to giving the whole class a dictionary.

  • Just a really big text file with 150,000 English words.

  • And everyone was challenged to somehow read, so to speak,

  • those words into memory.

  • Into the computer's memory.

  • And then answer questions of the form, is this a word?

  • Is this a word?

  • Is this a word?

  • Really just implementing a spell checker.

  • And then challenging each other with a big board--

  • a leader board to see who could use the least amount of memory,

  • in the least amount of time to actually spell check large documents.

  • >> We transitioned from then to implementing ones own web server.

  • So not making web pages in languages like HTML and CSS, if you're familiar.

  • But actually implementing the server that

  • listens on the internet for requests from browsers

  • and then responding to those requests.

  • Then implementing our own e-trade like website, where

  • students could buy and sell stocks.

  • Drawing in nearly real time stock quotes from Yahoo Finance.

  • And allowing students to see how their portfolio develops.

  • And then finally a mash up of Google News and Google

  • Maps whereby students by term by terms end

  • had the ability to click, and round, and search on a Google map.

  • And then see all of the news articles that

  • are proximal to those particular areas.

  • So truly going from zero to 60.

  • >> And along the way having what we had last year called, hacker additions.

  • That raise the bar further for those of you

  • who might very well have a good amount of experience being in that 9%

  • of more comfortable.

  • So realize that there's a very high ceiling

  • even within those challenges for students

  • coming from a different background.

  • Because at the end of the day, we're ultimately

  • focused quite simply on this.

  • >> But what does this mean, problem solving?

  • So let's propose that we distill it like this.

  • So problem solving is really just this kind of picture.

  • So you've got inputs to some problem, something you actually want to solve.

  • The goal is to get outputs, a solution to that problem.

  • And then in the middle is what we'll call a black box.

  • You don't necessarily know or even care what's inside that black box.

  • All you know is that when you feed input into it,

  • you hopefully get output or a solution from it.

  • And while today we'll look both at inputs and outputs,

  • we'll long term, and over the course of the whole semester,

  • focus on what's inside that box.

  • >> And therein will lie something called algorithms.

  • Step by step instructions for actually solving some problems.

  • But what's an example of some inputs?

  • So maybe a simple thing at the start of every school year, someone

  • might want to take attendance.

  • So we might do one, two, three, four, five, six,

  • and how would I keep track of that information.

  • I might just go one, two, three, four, five, six.

  • And just use sort of single digits.

  • >> Or I could actually record this a little longer term.

  • And how do I represent all the humans in this room?

  • Well, I might do something like, OK.

  • I see one person.