CS50 Video Player
    • 🧁

    • 🍨

    • 🍌

    • 🍿
    • 0:00:00Saying Thanks
    • 0:02:54Staff Teaser
    • 0:05:05CS50 Around the World
    • 0:07:08Analyzing Pset Data
    • 0:09:24Problem Solving
    • 0:10:45Life After CS50
    • 0:14:55CS50 Hackathon
    • 0:17:07CS50 Fair
    • 0:18:25Fair Teaser
    • 0:19:58This was CS50
    • 0:21:15Next Courses
    • 0:23:22Majors
    • 0:24:50Computing and the Arts
    • 0:26:18See It, Change It, Make It
    • 0:29:12Applications in the Digital Humanities
    • 0:33:50Scott Petersen
    • 0:35:32Yale Open Music Initiative
    • 0:36:43Programming Music Applications
    • 0:37:4121st Century Computer Music
    • 0:39:38Kyle Jensen
    • 0:40:51Stephen Slade
    • 0:43:41Logical Problem Example
    • 0:45:06CS 201
    • 0:46:32CS 200
    • 0:49:12Jim Aspnes
    • 0:50:00CS 223
    • 0:52:26DUS
    • 0:57:15Closing Remarks
    • 0:00:00[MUSIC PLAYING]
    • 0:00:10SPEAKER 1: All right, this is CS50, and this is week 11.
    • 0:00:14Before we begin today, I thought we'd make some changes in light
    • 0:00:17of the competition on the horizon.
    • 0:00:19First and foremost, this is perhaps in order.
    • 0:00:22And I was down the street just earlier, and I
    • 0:00:26got my shirt for the weekend, which I gather means 900.
    • 0:00:30So good luck this weekend.
    • 0:00:33And before we proceed further, a big thanks to the whole team, honestly,
    • 0:00:36that made this semester possible--
    • 0:00:37Natalie, in particular, who I'm sure you've
    • 0:00:39gotten to know over time, of course, Benedict with whom I
    • 0:00:41went to college some years ago.
    • 0:00:43You recall this picture from week 0, and then of course [? Stelios ?]
    • 0:00:46and [? Anusery ?] and the whole team of TAs and CAs here.
    • 0:00:50And, indeed, this is actually a pretty novel thing.
    • 0:00:52If you haven't quite realized it, especially
    • 0:00:54if you're first year, having undergraduate ULAs [CRASH] or tada.
    • 0:00:59[LAUGHS]
    • 0:01:00That's anticlimactic.
    • 0:01:03OK, so we will tend to this later.
    • 0:01:07So this is actually a pretty novel thing,
    • 0:01:09that there are undergraduates teaching assistants, that you guys can actually
    • 0:01:12teach your own classes, hold office hours, and more.
    • 0:01:14And this was actually initiated just a few years ago by way
    • 0:01:17of CS50's first class of TAs and CAs.
    • 0:01:21So here's a [INAUDIBLE] article from back in 2015.
    • 0:01:24In fact, this is the very first team of undergraduate CAs
    • 0:01:26who first TAed CS50 itself.
    • 0:01:29And in fact, this is now an opportunity that has extended beyond CS50 itself.
    • 0:01:33So if you're thinking about computer science or really any related field
    • 0:01:36and you might like to start teaching-- which frankly is by far the best
    • 0:01:39way to actually learn and absorb this kind of material--
    • 0:01:41realize that CS50 itself will soon start recruiting, and we and the whole team
    • 0:01:46would indeed love to have you on the team.
    • 0:01:48And even if you are among or were among those less comfortable,
    • 0:01:52keep in mind that's what we said in the first lecture still
    • 0:01:55holds true here on out.
    • 0:01:56What really matters ultimately in this class,
    • 0:01:58even if it might not quite feel like this-- it's just what?
    • 0:02:00Four hours after the quiz was due--
    • 0:02:02that what really matters in this course is not so much
    • 0:02:05where you end up relative to your classmates,
    • 0:02:06but where you end up relative to yourselves.
    • 0:02:08And that's something we have and will keep
    • 0:02:10in mind, especially when it comes time for final projects, grades, and beyond.
    • 0:02:14And in fact, these were the percentages broken down
    • 0:02:17in the very first lecture based on problem set zero of this year.
    • 0:02:20So those of you who have been feeling that you
    • 0:02:22are among those less comfortable realize that it's no longer by definition
    • 0:02:26the case.
    • 0:02:26Everyone's been upgraded to somewhere in between or among those
    • 0:02:29more comfortable, and realize this is perhaps
    • 0:02:31just the first such stepping stone.
    • 0:02:34So this has been a tradition of having undergrads TA the class for years
    • 0:02:38up in Cambridge.
    • 0:02:39And in fact, the team there put together with our production team
    • 0:02:42a little invitation for you to consider joining us here
    • 0:02:45in New Haven among our CAs and TAs for the coming year.
    • 0:02:49So allow me to dim the lights and have our team in Cambridge say hello.
    • 0:02:54[VIDEO PLAYBACK]
    • 0:02:54- I'm Elsiah.
    • 0:02:56- My name is Nenia.
    • 0:02:57- I'm Athena Braun.
    • 0:02:58- I'm a sophomore.
    • 0:02:58- I'm a senior.
    • 0:03:00- I'm a junior studying in computer science and linguistics.
    • 0:03:03- I'm concentrating in [? CSL. ?]
    • 0:03:04- CS50 is always just because it's changed my life.
    • 0:03:07It made me a computer science concentrator.
    • 0:03:10- I'm a TF for CS50.
    • 0:03:12- Course assistant.
    • 0:03:12- This is my second year TFing now.
    • 0:03:14- This is my third year being a teaching fellow for CS50.
    • 0:03:17- Becoming part of CF's staff helped empower me so so so much.
    • 0:03:21- I was a total beginner, never anticipated programming beyond CS50.
    • 0:03:26But here I am.
    • 0:03:28This is something I never thought I would do.
    • 0:03:32I think it's just been really exciting going from being a beginner
    • 0:03:35to being comfortable enough to TF this class.
    • 0:03:39- Everything that has come out of this has
    • 0:03:42helped me grow so much as a teacher, as a student.
    • 0:03:44- Also the culture and the environment of it is also pretty.
    • 0:03:47- I've definitely found a community of friends within the CS50 staff.
    • 0:03:51- Be prepared to have students who look up to you
    • 0:03:54and really appreciate the work that you're doing.
    • 0:03:56And just realize that you're not just a teaching fellow.
    • 0:03:58You're not just this person behind the whiteboard.
    • 0:04:01You're like a student who took this, too,
    • 0:04:04and can really level with other people in your section
    • 0:04:07and figure out what's going on and make it a good experience for them.
    • 0:04:10- I decided that I can get the best of both worlds.
    • 0:04:12I can get to teach about computer science.
    • 0:04:14And those are two are my passions.
    • 0:04:16- I just really love teaching computer science to beginners.
    • 0:04:20CS50 is where all that beginner energy is,
    • 0:04:23and it's where I can make a real impact on the students' careers in CS.
    • 0:04:29- It's amazing to see how much this course can do in just a semester
    • 0:04:34and how, from September until December, students learn so much
    • 0:04:38and gain so much experience and knowledge.
    • 0:04:40And watching that and working with them in that process
    • 0:04:42has always been really, really inspiring.
    • 0:04:44- It's been so so wonderful getting to see these people grow,
    • 0:04:47just like I did myself.
    • 0:04:48- One of the most rewarding things I've done here.
    • 0:04:50So that's why I keep coming back.
    • 0:04:52- Going to office hours and helping people out, it makes you feel good.
    • 0:04:56And it makes other people feel good as well.
    • 0:04:58- My name is Brian.
    • 0:04:59- I'm Thomas Lively.
    • 0:05:00- I'm Allison.
    • 0:05:01- I'm Maria.
    • 0:05:02And this is CS50.
    • 0:05:04[END PLAYBACK]
    • 0:05:05SPEAKER 1: So realize, here in New Haven and also in Cambridge,
    • 0:05:08we're fortunate to have quite a few resources,
    • 0:05:10both in terms of the place that we're in and the people that we're around.
    • 0:05:13And one of the focuses of CS50 for years now with its staff
    • 0:05:16has been on something called open courseware, whereby we've long
    • 0:05:18made the courses, videos, and problem sets and software freely available
    • 0:05:21to everyone around the world.
    • 0:05:23And just a couple of years, too, did we start
    • 0:05:24to focus, not just on students who wanted
    • 0:05:26to tune in in any country and any city, have we also started
    • 0:05:29focusing on teachers as well so that they needn't rely only on the textbooks
    • 0:05:33that their schools provide but too can get on the internet and tune into
    • 0:05:36and use in their own classrooms, adapting or adopting
    • 0:05:38this particular curriculum and tools for their own students.
    • 0:05:42And if curious, for instance, every red dot on this map
    • 0:05:44actually represents some cohort of high school students
    • 0:05:49and high school teachers teaching introductory [? CFs ?] via CF50AP
    • 0:05:52as it's called, and every one of the blue dots on the screen
    • 0:05:54represents a university with whom we've been collaborating in some form,
    • 0:05:57either formally with some of the faculty or less
    • 0:05:59formally with some of the student groups there.
    • 0:06:01And so if you're interests in education and in computer science
    • 0:06:04extend beyond, by all means consider applying,
    • 0:06:06not only to TA or SA the class, but to get involved
    • 0:06:09in these other outreach efforts creating curricula, working on tools,
    • 0:06:13and really making an impact.
    • 0:06:14In fact, the communities beyond Cambridge and New Haven
    • 0:06:17include Miami Dade in Florida.
    • 0:06:20This is Chile.
    • 0:06:21This is our team in London.
    • 0:06:23Here in Burma.
    • 0:06:25Here in Ukraine.
    • 0:06:27Here in Cairo.
    • 0:06:29Here in Bolivia and Nicaragua, and then lastly back home in Cambridge.
    • 0:06:34This was our very first cohort of high school teachers
    • 0:06:36who came to town in order to bring a little something back
    • 0:06:39to their own classrooms and teach and adapt as well there.
    • 0:06:43And in fact, just a few years ago, apropos
    • 0:06:45of the event on our own horizon, this was the very first CF50AP hackathon,
    • 0:06:49whereas instead of getting together at 7:00 PM To 7:00 AM,
    • 0:06:52we got together like 10 AM to 2 PM during the high school schedule.
    • 0:06:55And we had eight public and private high schools
    • 0:06:58in the New York City area come together to work on their own problems sets
    • 0:07:01and final projects and the like.
    • 0:07:03So again, if of interest, do you feel welcome to engage
    • 0:07:06with us and so many people around the world in that way.
    • 0:07:08So what have we actually done in the classroom and in the problem sets?
    • 0:07:11So at the end of the day, it's all about problem solving.
    • 0:07:14And hopefully, if you attended CF50 Puzzle Day
    • 0:07:16or certainly engaged in the problems over the past several weeks,
    • 0:07:18you realize that the goals of this class are not so much to teach you C per se,
    • 0:07:23and it doesn't really matter some of the finer
    • 0:07:25implementation details of a lot of the problem sets,
    • 0:07:27but how you went about solving those problems.
    • 0:07:29And we claimed early on that there is a methodology,
    • 0:07:32and there's techniques with which you can solve problems.
    • 0:07:34And indeed, we hope what you exit the course with is sort of an ability
    • 0:07:37now to recognize patterns and other problems you might encounter, not
    • 0:07:40just in CS, but in other fields too.
    • 0:07:43If curious as to how some of your classmates
    • 0:07:45perceived this year's problem sets, we took a look at the data
    • 0:07:48that you kindly provided in problems set eight.
    • 0:07:50This is a bar chart of what everyone thought of the problem set.
    • 0:07:53So purple is hate.
    • 0:07:55Blue is love.
    • 0:07:56So it's hate on top down to love on the bottom.
    • 0:07:59And so what you can see here is that love was kind of invariant,
    • 0:08:05though there was even more liking of problem sets 6 over here.
    • 0:08:10No one really hated problems set 1, which
    • 0:08:12is fantastic, with Mario and the likes.
    • 0:08:14So perhaps you're somewhere in that spectrum.
    • 0:08:16A little more telling was this.
    • 0:08:17How difficult were the problem sets?
    • 0:08:19And these numbers varied a lot more.
    • 0:08:21[? P ?] said 0 and 1 were very blue because blue is easy,
    • 0:08:24green meanwhile on the top would represent hard.
    • 0:08:26So there's definitely some fluctuation based
    • 0:08:28on expectations of the problem sets and which one were newer or in progress.
    • 0:08:32But problem set 5--
    • 0:08:33so misspellings, the spellcheckers-- it's probably pretty fair to say it's
    • 0:08:37pretty orange and a bunch of green, whereas pset
    • 0:08:396 kind of went the other direction, where you had the ability
    • 0:08:42to port some of our programs from C to Python
    • 0:08:44and implement some document similarity.
    • 0:08:47When did you start problem sets?
    • 0:08:49More telling.
    • 0:08:51So [INAUDIBLE] called that they are released way over here on a Friday,
    • 0:08:55but the most common day seems to be Wednesday followed by Friday, followed
    • 0:08:59by Thursday.
    • 0:09:00Thankfully zero people said they started it the morning of it being due.
    • 0:09:04So that's a little something.
    • 0:09:05And then lastly, when did you watch lectures?
    • 0:09:07So it seems that Monday was the common case.
    • 0:09:09Some folks tuned in live on Friday or watched it on demand thereafter,
    • 0:09:12Saturday, Sunday being common.
    • 0:09:14And then there's perhaps correlation between the blue Sunday
    • 0:09:17and the blue Sunday for problem sets as well.
    • 0:09:20So just to give you a sense of your own patterns as well.
    • 0:09:24So where did we begin?
    • 0:09:25So you recalled that we came on up here some 12 weeks ago
    • 0:09:28and played this, IVs hardest game, which was a game written in Scratch
    • 0:09:32but was all about trying to solve some problem.
    • 0:09:34And we distilled this notion of problem solving really into this black box.
    • 0:09:37At the end of the day, all problem solving is is you've got some input--
    • 0:09:41and we happen to represent them in so many different ways, zeros
    • 0:09:43and ones, letters of the alphabet, colors and files, and web requests,
    • 0:09:47and more.
    • 0:09:48But at the end of the day, what you care about is the outputs.
    • 0:09:51And the secret sauce in the middle, we've kept calling what?
    • 0:09:58OK, you're wearing the I took CF50 shirt, so you better have an answer.
    • 0:10:02What's inside the box?
    • 0:10:05Grhythms, exactly.
    • 0:10:07Yeah, algorithms is this sort of fancy sounding term
    • 0:10:11that really is just these step by step instructions for solving some problems.
    • 0:10:15And whether we've solve these problems in Scratch or in C or in Python
    • 0:10:18or in [? Secord ?] or in JavaScript, these really are just tools.
    • 0:10:20And hopefully you found, albeit with deliberately
    • 0:10:23a bit of frustration in recent weeks where
    • 0:10:24you had to Google a bit more on your own or you had to ask more questions,
    • 0:10:28hopefully you felt--
    • 0:10:29though perhaps not pleasurably at the time--
    • 0:10:31that the training wheels were really starting to come off
    • 0:10:33and that the expectations were more on your end to sort of figure something
    • 0:10:37out.
    • 0:10:37But hopefully, we hope you had the right mental model with which
    • 0:10:40to figure out what resources to use and how to go about solving those problems.
    • 0:10:46And so indeed, allow us to propose to you what you
    • 0:10:49can do after CF50, very pragmatically.
    • 0:10:52If your interest lies specifically in software development,
    • 0:10:54you'll hear at the end of today's lecture,
    • 0:10:56too, a number of other directions you can go, particularly by way of classes
    • 0:10:59but with j term on the horizon and summer on the horizon
    • 0:11:03and perhaps jobs on some of your minds, we
    • 0:11:04thought we'd give you a glimpse of just some of the practical things
    • 0:11:07that you might want to keep in mind that will generally
    • 0:11:09be assumed by some other high level systems classes.
    • 0:11:12But just how can you write code and solve problems
    • 0:11:16without CS50, without CS50 [? ide, ?] and certainly without a problem
    • 0:11:19set specification that just tells you what to do?
    • 0:11:22So learning git.
    • 0:11:24This is something you've used underneath the hood for some amount of time,
    • 0:11:27and there's many different implementations
    • 0:11:28of this notion of version control.
    • 0:11:31And git is not the only one.
    • 0:11:32It's perhaps the most popular these days.
    • 0:11:34So many of the things we'll suggest here you
    • 0:11:36could absolutely sub out for something else.
    • 0:11:38But this certainly is very much in vogue.
    • 0:11:39And so if you go to this URL here at some point,
    • 0:11:41CF50 own Brian or [? Hadeie ?] in Cambridge
    • 0:11:44did a fantastic seminar on how to learn git.
    • 0:11:46We'll post all these slides on the website after today as well.
    • 0:11:49And here's Brian from that very same thing.
    • 0:11:53If you want to keep your own projects, whether academically or professionally
    • 0:11:56private, GitHub's great about giving you free access to this.
    • 0:11:59So even though all your work thus far has been in CF50's account,
    • 0:12:03our organization called [INAUDIBLE] 50, you can head here and actually
    • 0:12:06sign up for free accounts to continue using that,
    • 0:12:08and you'll see a little screen a bit like this.
    • 0:12:11Installing git on your own Mac or PC-- and this
    • 0:12:13is where really you can force yourself to take off
    • 0:12:15some of the training wheels.
    • 0:12:16CF50 ide is meant to be pretty representative of a real world software
    • 0:12:21development environment.
    • 0:12:22But it's of course, cloud based.
    • 0:12:23And even I get annoyed if I'm taken Amtrak down here from Cambridge trying
    • 0:12:26to use it because of the latency or weak internet connection,
    • 0:12:29and I don't necessarily have as much control as I might on my own Mac or PC.
    • 0:12:33And so among the options, of course, are to install these very same tools there,
    • 0:12:36among them a text editor.
    • 0:12:38There's dozens of these if not hundreds over the years.
    • 0:12:40One of the most popular perhaps is called Sublime Text, which
    • 0:12:43you can download at this URL here.
    • 0:12:45And this would be the equivalent of the little tab code
    • 0:12:47windows that just come with CF50 ide.
    • 0:12:50But you can use it on your own computer.
    • 0:12:52And you'll see a little something like this with nice and fancy features
    • 0:12:55that are intellectually interesting but just
    • 0:12:56save you time at the end of the day.
    • 0:12:59Atom is a very popular one as well, which you can take a look at online,
    • 0:13:02too.
    • 0:13:03It, too, is freely available.
    • 0:13:04And then Vim and more command line based tools.
    • 0:13:06Actually, to this day I still use Vim myself.
    • 0:13:08If you've ever seen me in lecture open a black and white window that
    • 0:13:11isn't the tabbed code window but via plug-ins and the like,
    • 0:13:14can you make this type of tool and others like it, [? EMAX ?] and beyond,
    • 0:13:18ever more versatile as well.
    • 0:13:20Besides that, in FAQ, apropos of final projects coming up,
    • 0:13:24is that many students end up doing mobile applications,
    • 0:13:27even though we don't teach it per se, web applications, which we introduce
    • 0:13:31you to by way of pset 7 and pset 8.
    • 0:13:33So a very common approach as you're thinking about over Thanksgiving
    • 0:13:35and beyond your final projects is that, if you actually
    • 0:13:39want to put these things out there and not
    • 0:13:40think of it as just meeting the course's own expectations but something
    • 0:13:44you really want to build on and it's something
    • 0:13:46you want to do for your student group or your own entrepreneurial effort
    • 0:13:48or for some other class for what you want to solve some problem using
    • 0:13:51software, realize you can put these things out there using CF50 ide.
    • 0:13:55For instance, if you go to the Share button in our own ide,
    • 0:13:58you'll see an interface like this.
    • 0:14:00And so long as you make the so-called application public,
    • 0:14:02then anyone on the internet can visit that URL
    • 0:14:05and try out your CF50 finance or your mashup or now your final project.
    • 0:14:10Of course, with these free accounts, they
    • 0:14:11tend to shut off after some number of hours of idleness.
    • 0:14:14So it's not the way to run a website that you actually
    • 0:14:16want friends to use for some time.
    • 0:14:18So using things like [INAUDIBLE] is a very popular service.
    • 0:14:21And ask any of the TAs or staff over time,
    • 0:14:23and we'll post some links online as well to get started on this.
    • 0:14:26AWS, Amazon's cloud service, and Microsoft has one,
    • 0:14:29and Google has one as well.
    • 0:14:30Can you sign up for free accounts there.
    • 0:14:32And you can actually get your own free domain names.
    • 0:14:34If this is of interest and you don't want
    • 0:14:36it to be some cryptic sounding domain name,
    • 0:14:38you can actually get them from free from companies like namecheap and the like,
    • 0:14:41leveraging your student status for the next few years
    • 0:14:44to take advantage of all these resources for free.
    • 0:14:48And this one in particular at GitHub's address
    • 0:14:50gives you access to a lot of tools that you might
    • 0:14:52want to experiment with and try out.
    • 0:14:56So where will we head in the coming days?
    • 0:14:59The sort of hardest parts, perhaps, are behind us, with the test and the quiz
    • 0:15:03and all of the problem sets, and all that remains now is the final project.
    • 0:15:06And the hope here really is to take all of the training wheels
    • 0:15:09off and give you a chance to sort of build
    • 0:15:11something that's genuinely of interest.
    • 0:15:12Hopefully it will solve some problem of interest
    • 0:15:14to you or, again, your student group, or something you're working on.
    • 0:15:17And you'll have 12 hours if you'd like to join us in Cambridge, just
    • 0:15:20as your predecessors did last year, to hop on a bus in just a couple of weeks
    • 0:15:23time.
    • 0:15:24Come on down to Cambridge for a 7:00 PM or so start.
    • 0:15:27Upon arrival, you'll be greeted by the staff from Cambridge and New Haven
    • 0:15:31alike.
    • 0:15:32You'll get settled down and grab a name tag
    • 0:15:35and find a place to sit and work on your laptops
    • 0:15:39for pretty much throughout the night.
    • 0:15:40The goal is to actually get something useful done.
    • 0:15:42Ideally it is now to start your final project,
    • 0:15:45since starting it at the middle of the night
    • 0:15:47is probably not the best strategy.
    • 0:15:48And in fact, if you take nothing else away in the way of advice today,
    • 0:15:51get something done over Thanksgiving truly,
    • 0:15:54even if it's just hello world, if you're making an iOS app,
    • 0:15:57or hello world if you're making Android, or copying problem set 7
    • 0:16:01or problem set 8 and then building upon it
    • 0:16:03or starting to for your final project.
    • 0:16:05Just like give yourself that base layer on top
    • 0:16:07of which you can build when you actually arrive at an event like this or dive
    • 0:16:10in on your own.
    • 0:16:12The evening will be punctuated by opportunities to ask the staff help.
    • 0:16:15But it won't be like 12 hours of office hours.
    • 0:16:17The staff will be there, but generally working on their own projects
    • 0:16:19and there to advise you or point you at things,
    • 0:16:21but not necessarily to solve problems in the same way,
    • 0:16:24since your projects will be as unfamiliar to us as they are to you.
    • 0:16:28But we'll point you at what we might know.
    • 0:16:30And it'll be an opportunity really just to have
    • 0:16:32what we hope is a pretty memorable collegiate experience, working
    • 0:16:35on final projects, having some Mexican food around 9 PM, pizza around 1:00 AM.
    • 0:16:42And then if beyond the photo booth and other distractions,
    • 0:16:45if you need a little break here and there, including
    • 0:16:47a therapy dog this year--
    • 0:16:48Milo-- and naps throughout the evening, as happened last year as well,
    • 0:16:55if you make it all the way to 5:00 AM, one of the buses,
    • 0:16:57if you're still up for it, I'm on the way back to New Haven.
    • 0:17:00We'll stop off at IHOP for breakfast for those still awake.
    • 0:17:03And if you're too tired at that point, one of the other shuttles
    • 0:17:05will head back in a different direction altogether.
    • 0:17:08And then the CF50 fair, which is here in New Haven for all Yale students
    • 0:17:11and faculty and staff to come to.
    • 0:17:13This is meant to be an opportunity really
    • 0:17:15to delight in what you pull off over the remaining weeks of the class
    • 0:17:18and really what you accomplished over the course of the semester since week
    • 0:17:210.
    • 0:17:21Last year's event was in Commons, which is currently offline, but has
    • 0:17:25over 1,000 people of students and staff and faculty
    • 0:17:28coming by to really see what you've worked on.
    • 0:17:30And it's a very casual environment.
    • 0:17:31There's music, and there's friends from industry and alumni
    • 0:17:34there to chat up everyone is well.
    • 0:17:36And here's a group of students presenting their final project
    • 0:17:38last year, the same kind of thing happening here,
    • 0:17:42and then even some hardware demonstrations like this one
    • 0:17:44involving VR.
    • 0:17:45So it's really just a fun opportunity to get everyone together before break
    • 0:17:48to see what everyone has accomplished over the course of the term.
    • 0:17:51And alumni, indeed, come back from Facebook and Google
    • 0:17:54and the like to chat up folks about opportunities in the real world
    • 0:17:57as well.
    • 0:17:58And at the end of it all, in addition to cotton candy, as you'll
    • 0:18:00see we have we have and before then, your I
    • 0:18:05took CF50 t-shirt to claim hopefully proudly exactly that.
    • 0:18:10An invitation though is certainly warranted.
    • 0:18:13This year's event will be in a fairly special place, no longer in Commons,
    • 0:18:16but in the Peabody Museum, if you've ever been there.
    • 0:18:19So in addition to the very modern things like laptops and apps, well
    • 0:18:23you'll also see some things from yesteryear.
    • 0:18:25Let's take a look, in fact, what awaits.
    • 0:18:27Thanks to [? Stelios ?] and [? Inusery. ?]
    • 0:18:29[VIDEO PLAYBACK]
    • 0:18:53- Join us at the CF50 fair.
    • 0:18:59[BABY SOUNDS]
    • 0:19:03[END PLAYBACK]
    • 0:19:04SPEAKER 1: So at the very end of today's lecture, after we take a look at some
    • 0:19:08follow on classes and CS, you'll be joined, as is our tradition,
    • 0:19:11by the staff for some cake in back.
    • 0:19:13So do join us and the faculty you were with us today for exactly that.
    • 0:19:17I thought we'd conclude our beginning portion of the lecture 2 with a look
    • 0:19:20back at this semester, but again, in addition to this very practical advice
    • 0:19:24in these next steps that we've offered, do keep in mind that we hope ultimately
    • 0:19:28that, since week 0 now here in week 11, you really
    • 0:19:31do feel empowered and all the more equipped
    • 0:19:33to explore other fields of other areas of computer science.
    • 0:19:37But even if you choose for CS50 or any other science classes
    • 0:19:40to be your last, that you can now bring to bear some of these concepts
    • 0:19:43and these practical skills back to the arts and the humanities,
    • 0:19:45social sciences, and beyond to actually solve problems using computing and data
    • 0:19:49all the more effectively.
    • 0:19:52So in a final sentimental note, a look back at CF50 this past year
    • 0:19:57starring you.
    • 0:19:58[VIDEO PLAYBACK]
    • 0:20:05[MUSIC - BIRDY, "KEEP YOUR HEAD UP"]
    • 0:20:07Times that I've seen you lose your way, not in control, and you won't be told.
    • 0:20:14All I can do to keep you safe is hold you close, hold you
    • 0:20:21close till you can breath on your own, till you can breath on your own.
    • 0:20:38Hold tight.
    • 0:20:39You're slowly coming back to life.
    • 0:20:42I'll be keeping your head up.
    • 0:20:44I'll be keeping your head up, darling.
    • 0:20:46Let go of all your haunted dreams tonight.
    • 0:20:49I'll be keeping your head up.
    • 0:20:51I'll be keeping your head up, darling.
    • 0:20:53Hold tight.
    • 0:20:54You're slowly coming back to life.
    • 0:20:57I'll be keeping your head up.
    • 0:20:59I'll be keeping your head up, darling.
    • 0:21:01Let go of all your haunted dreams tonight.
    • 0:21:05I'll be keeping your head up.
    • 0:21:07I'll be keeping your head up.
    • 0:21:10And I won't let you down.
    • 0:21:15[END PLAYBACK]
    • 0:21:16SPEAKER 1: Thank you so much.
    • 0:21:17Let me turn things over to Benedict, and I'll see you in a bit for cake.
    • 0:21:20BENEDICT: Thank you, of course, to David and Doug and the whole CS50
    • 0:21:24team at Harvard for a fabulous semester, to all of you for a fabulous semester,
    • 0:21:30to Natalie and the rest of our staff here at Yale,
    • 0:21:36and also to Judy Page and Sue Hurlburt who you don't see but,
    • 0:21:40Natalie and I work closely with, to make this class happen.
    • 0:21:45We're really excited by how well it's been going, how well you guys have all
    • 0:21:48been doing.
    • 0:21:49And we really want to see you all around the department.
    • 0:21:53So I'm going to talk for a little bit about some of the classes
    • 0:21:57that we're offering in the spring that we think you should all consider
    • 0:22:00and that you're all ready to take.
    • 0:22:01And then I'm going to pass it off to some of my colleagues
    • 0:22:03who are also teaching classes this spring, that you
    • 0:22:07may want to consider taking.
    • 0:22:08And again, that you can jump right into--
    • 0:22:12great ways to explore different aspects of computer science, or to know you
    • 0:22:15love this, and you want to dive right into the major.
    • 0:22:18So the list here is the classes in the spring that do not
    • 0:22:23have any prerequisites beyond CF50.
    • 0:22:27And we'll talk in just a few minutes about each one
    • 0:22:29of those and also about 223, which would be the logical thing to take after 201.
    • 0:22:36So two of these o35 and 078.
    • 0:22:39These are freshmen seminars.
    • 0:22:41If you're not a freshmen, when we talk about these,
    • 0:22:44you should put your fingers in your ears and go la la la la,
    • 0:22:47because the university will not allow you to take them,
    • 0:22:50and there's nothing that we can do about that.
    • 0:22:52But that doesn't make them any less cool.
    • 0:22:54If you are a freshmen, pay attention because you get one shot at this
    • 0:22:58and then hopefully you're no longer a freshmen and you're out of luck.
    • 0:23:04We have 200 and 201, which are some of our core sequence
    • 0:23:12and an entrepreneurship class and a digital humanities class,
    • 0:23:16and then of course data structures that is kind of, after that,
    • 0:23:20all of our upper level classes open up.
    • 0:23:24So we also have a bunch of majors.
    • 0:23:27And this is something that you may or may not realize.
    • 0:23:29We are not just a peer computer science major.
    • 0:23:33That's a great thing to do.
    • 0:23:34I did that.
    • 0:23:35I survived I enjoyed it.
    • 0:23:38But there's also ways to do a computer science plus math or psychology
    • 0:23:45or engineering major, electrical engineering, where
    • 0:23:50you take roughly the same number of classes as a single major,
    • 0:23:54but you split them between two disciplines.
    • 0:23:58And those ones are pretty natural combinations,
    • 0:24:02but we also have a computing in the arts major, which is
    • 0:24:05a little different than a joint major.
    • 0:24:07It's its own distinct major, which means it has its own distinct director
    • 0:24:10of undergraduate studies.
    • 0:24:12But here you combine about six classes in computer science
    • 0:24:16with about six classes in one of the arts disciplines.
    • 0:24:20So that could be architecture or fine arts or history of art or music
    • 0:24:25or theater, and these are all areas where Yale is also really strong.
    • 0:24:29And its a great way to look at ways that you can use computer science together
    • 0:24:34with other disciplines and also ways that you can pursue multiple interests.
    • 0:24:39Students graduate out of this and go on to get all sorts of jobs, including
    • 0:24:42all of the same jobs that you typically think
    • 0:24:45of a computer science major getting.
    • 0:24:47But it opens the door to other things as well and to exploring other interests.
    • 0:24:52So the computing in the arts major-- just a little bit more about it.
    • 0:24:57This is an interdepartmental major.
    • 0:24:59We've got these different groups set up, where you take six computer science
    • 0:25:05courses, including the core, and then you take about six classes
    • 0:25:12from one of the other departments, and that way you
    • 0:25:15get the grounding in computer science and the experience with that, and then
    • 0:25:21a discipline.
    • 0:25:22And then you start to think about how you can apply them together.
    • 0:25:27So architecture of course is building things,
    • 0:25:29and that's becoming very computational using computer science
    • 0:25:33to develop new structures--
    • 0:25:35art as well.
    • 0:25:39Art history-- this is an area--
    • 0:25:41I work a lot with conservators and archaeologists,
    • 0:25:43and I'll be talking about that.
    • 0:25:47And music-- and we'll have Scott Peterson talk to you some
    • 0:25:51about computer music.
    • 0:25:53And theater, and again these people go off
    • 0:25:56and work at all sorts of cool places.
    • 0:25:58You're not jeopardizing money.
    • 0:26:01You don't have to make money you don't want to.
    • 0:26:03I did, after all go into academia.
    • 0:26:07But if you have further questions, the person to contact
    • 0:26:10is Professor Dorsey, who is unfortunately out of town today.
    • 0:26:14So she couldn't be here.
    • 0:26:17She will also be teaching one of these freshmen seminars
    • 0:26:19in the spring on essentially 3D design.
    • 0:26:26In some sense, you don't need a technical background.
    • 0:26:29But it is a somewhat technical course.
    • 0:26:31So you guys are well-prepared for it, and you'll
    • 0:26:36be talking about 3D scanning, to measure shapes of existing objects,
    • 0:26:41how to model on the computer new shapes, how to modify 3-D models,
    • 0:26:46how to produce them using things like 3D printing and milling and laser cutting.
    • 0:26:52Some of those are things we have in the department.
    • 0:26:54We have 3D printers.
    • 0:26:56In CEID, which you can also sign up for, there's
    • 0:26:58a whole suite of these tools for making things.
    • 0:27:04And, again, you don't need any programming experience.
    • 0:27:08All of you have it.
    • 0:27:09You should have essentially high school math, high school trigonometry,
    • 0:27:15and you have to be a freshmen and you have
    • 0:27:18to pre-register through the freshman seminar lottery for which, if you're
    • 0:27:22curious, you may also want to talk to your college dean
    • 0:27:26and make sure that you understand the process for that.
    • 0:27:29And then it goes into a lottery.
    • 0:27:30And if you're lucky, you get in.
    • 0:27:32So these classes are small.
    • 0:27:34They're limited.
    • 0:27:36The level of math that would be involved in this class
    • 0:27:40would be, for example, when you're doing 3D scanning,
    • 0:27:43you end up having two cameras, and you know the way they're oriented
    • 0:27:48and you know, for instance, that they maybe 10 centimeters apart.
    • 0:27:52So if both of them are seeing the same point on an object,
    • 0:27:55that forms a triangle and you want to know the distance from one
    • 0:28:00of your cameras to the objects.
    • 0:28:01So you can find out how far away it is.
    • 0:28:03And from that, you get shape.
    • 0:28:06And basically, you look at this and you say, well, I know the angle alpha,
    • 0:28:10I know the angle beta, I know this distance 10 centimeters.
    • 0:28:14I can apply the angle side angle theorem to know
    • 0:28:17that I can calculate this point.
    • 0:28:19In particular, there is a law of signs that you plug this formula in,
    • 0:28:24and you find out that if these two points are 10 centimeters apart,
    • 0:28:30you're looking at something that's 13.7 centimeters away.
    • 0:28:38So there's not going to be more than that.
    • 0:28:39We're not talking about advanced calculus.
    • 0:28:41We're not talking about knowing all sorts of programming skills
    • 0:28:45or how 3D models actually work.
    • 0:28:48And it's going to be a combination of lectures and labs and discussions.
    • 0:28:52Again, it will be a limited size class as a seminar.
    • 0:28:55There will be some guest lectures.
    • 0:28:57You'll take a field trip to blue sky that makes the Ice Age movies.
    • 0:29:01They're a big East coast animation studio.
    • 0:29:04Again, if you have questions about that, talk
    • 0:29:06to Professor Dorsi, who's teaching it.
    • 0:29:09And I definitely encourage you, if you're a freshman, to check it out.
    • 0:29:12There's another one that all of you can take
    • 0:29:15that I will be teaching which is a course on applications
    • 0:29:19in the digital humanities.
    • 0:29:22And this is a brand new course.
    • 0:29:25And so it will adapt a little bit depending
    • 0:29:26on exactly who is in the class and how many of you are in the class.
    • 0:29:30I hope there's plenty.
    • 0:29:33And the idea is to talk about different ways
    • 0:29:35to use computer science in the humanities,
    • 0:29:38and then to work in groups on projects, on different projects
    • 0:29:43in the digital humanities.
    • 0:29:45And so I'm having discussions right now with faculty
    • 0:29:47all over campus about interesting projects in their domain
    • 0:29:53so that we'll have a range of ideas to start with.
    • 0:29:56But we'll do about half the semester talking
    • 0:29:59both about application digital humanities, but also about web
    • 0:30:02application development.
    • 0:30:04So these are sort of continuing from pset 8--
    • 0:30:08how do you program in JavaScript, how do you write Flask applications
    • 0:30:12and go a little more advanced than we've done in CS50.
    • 0:30:16How do you write richer web applications with richer client side interfaces?
    • 0:30:25And then how do you apply those?
    • 0:30:26It turns out there's all sorts of applications in the humanities
    • 0:30:30where you want to build databases and can
    • 0:30:32start to ask questions about your data and look for connections between things
    • 0:30:38once you have the tools to assemble all of that data and to visualize it.
    • 0:30:42And so there will be different kinds of things.
    • 0:30:45Some of the ones that I have lined up already
    • 0:30:47will be to detect the meter in poetry and build
    • 0:30:53a database of meter and different poems by different authors
    • 0:30:57and start to look at things like is there a particular style of how
    • 0:31:03one poet may play with meter or similarities between different poets
    • 0:31:09that you might be able to classify, but also as a tool to do this detection
    • 0:31:17and help the process along a good interface for it.
    • 0:31:21There is one with the Yale Babylonian collection,
    • 0:31:25to build a really good database, not just for saying let a search
    • 0:31:29a cylinder seal and see a pretty picture of it
    • 0:31:32and see all of the data we have about it,
    • 0:31:35but also see context, see relationships to other cylinder seals,
    • 0:31:39be able to say, ah, this one has a carving of a stag on it.
    • 0:31:42Let me find the other ones that have carvings of stags on them
    • 0:31:45and try and find relationships and connections between them
    • 0:31:49that can be useful for research.
    • 0:31:52Another interesting one that I learned about yesterday is
    • 0:31:56potentially to curator essentially the public art on campus--
    • 0:32:01so all of the stone carvings on buildings,
    • 0:32:03all of the paintings hanging in buildings,
    • 0:32:05and understand what we have on campus, what
    • 0:32:08we know about the provenance and history and state of preservation,
    • 0:32:12what things we should really take down.
    • 0:32:17And then how do we present those and contextualize them?
    • 0:32:20So I took this picture yesterday.
    • 0:32:22You may have seen a similar picture in the newspaper.
    • 0:32:25This is a carving that was on the outside of Sterling Library
    • 0:32:29right near the entrance to the CTL.
    • 0:32:31And somebody noticed I think last summer that there
    • 0:32:34was this carving on a back entrance of a pilgrim shooting an Indian.
    • 0:32:39And you stop and scratch your head and say,
    • 0:32:42there's nobody that really thinks that's in good taste any longer.
    • 0:32:46And so maybe we should not put it somewhere
    • 0:32:49that is now becoming a prominent entrance to the library.
    • 0:32:52So it's sitting on West Campus in the conservation lab at the moment.
    • 0:32:56But these are sorts of questions that you might be looking into and asking.
    • 0:33:02Working with me on ways to look at potential
    • 0:33:06matches between fragments of ancient wall paintings.
    • 0:33:12These are fragments of wall paintings from Roman times,
    • 0:33:14from about 2000 years ago for example.
    • 0:33:17So a range of different sorts of projects, some with music,
    • 0:33:22and that's what--
    • 0:33:23I'm hoping to then bring in some computer scientists,
    • 0:33:27some people interested in computer science,
    • 0:33:29some are interested in computer and the arts,
    • 0:33:31some interested really in just in the applications to their domains
    • 0:33:34to get a dynamic atmosphere where you're learning from each other
    • 0:33:39and about the kinds of questions you can ask.
    • 0:33:42And again, if you have any questions, you
    • 0:33:44can always feel free to email me about them.
    • 0:33:52And then I want to move on.
    • 0:33:54Scott is another lecturer in the computer science department
    • 0:33:57and specializes in computer music.
    • 0:33:58SCOTT: Awesome, hello.
    • 0:33:59I'm Scott Peterson.
    • 0:34:00I'm a lecturer in computer science.
    • 0:34:03I joined the department last year after serving
    • 0:34:06a number of years in the music department,
    • 0:34:08doing sort of various technological things.
    • 0:34:11I teach four classes, CPSC 035, which I'll talk about at some length
    • 0:34:17in a little bit, 134, 431, 432.
    • 0:34:21And I'm also the director of the Yale Open Music initiative, which
    • 0:34:26I don't know if you've heard about.
    • 0:34:28But I'll also talked about in just a bit.
    • 0:34:31Before I do that, I'll talk very briefly about classes that you probably
    • 0:34:34can't take yet, although maybe.
    • 0:34:37And those are 431 and 432.
    • 0:34:40They are algorithmic and heuristic composition, and sound synthesis
    • 0:34:45respectively.
    • 0:34:46And they have prerequisites, which are 202 and 223, I think.
    • 0:34:53And essentially, they are together a sort
    • 0:34:58of complete look at computer assisted music composition and sound
    • 0:35:04synthesis together-- so using a high level language,
    • 0:35:07and we use supercollider for all of these classes,
    • 0:35:11looking at ways that the machine can help us both organize notes, think
    • 0:35:16about music in different ways, and then also sort
    • 0:35:18of delve into how sound is constructed from the very lowest
    • 0:35:22level of digital representations inside the machine.
    • 0:35:27Before I talk about 35 and 134, I'll talk very briefly
    • 0:35:31about the Yale Open Music initiative.
    • 0:35:33So this is not a class.
    • 0:35:35This is just something that you can join or attend workshops that we give.
    • 0:35:41So this is a sort of loose group of people who are interested in everything
    • 0:35:46at the intersection of music and technology.
    • 0:35:48So this might mean computer music programming outside
    • 0:35:54of the sort of classroom setting.
    • 0:35:56It could mean putting together machines that
    • 0:36:00have arrays of sensors that then send sensor data back
    • 0:36:05to a laptop that asks it for said data and then does
    • 0:36:09some sort of sonification with it.
    • 0:36:13And it's generally informal.
    • 0:36:15We've been the recipient of a couple seed grants
    • 0:36:17that have allowed us to buy some cool stuff, our arduinos and Raspberry Pis
    • 0:36:22and put some of these machines together.
    • 0:36:24And we've given at least one of these workshops in conjunction
    • 0:36:30with the new center for collaborative arts and media,
    • 0:36:34which is another place that you should check out
    • 0:36:36if your interests sort of intersect computer technology and anything
    • 0:36:41sort of artistic.
    • 0:36:43So 134 also has no prerequisites.
    • 0:36:48It uses the same high level language, which is supercollider,
    • 0:36:52to investigate how the machine can help us compose music, also sound
    • 0:37:01synthesis, and also interaction.
    • 0:37:03So this is a quick shot from the music studio in computer science
    • 0:37:10where students of 134 were just working with arduinos and sensor arrays
    • 0:37:14to input incoming sensor data into laptops and supercollider
    • 0:37:20and then sonify that data and some sort of hopefully meaningful way.
    • 0:37:26The enrollment is generally small for these classes.
    • 0:37:29So if you like small classes and a lot of time that sort of seminar
    • 0:37:34feel that you might not get in a class of this size,
    • 0:37:37then this class may be for you.
    • 0:37:39And this is offered in the fall.
    • 0:37:42So the next course is CPSC 025.
    • 0:37:46So this is a freshmen seminar.
    • 0:37:49This is where you plug yours if you're not a freshmen.
    • 0:37:52And this class is divided into generally three parts.
    • 0:37:56The first part is music production.
    • 0:38:00And so we spend a lot of time talking about how we can capture sound
    • 0:38:04in the real world, represent that sound in the machine and software,
    • 0:38:08and then investigating digital audio workstations for sound production,
    • 0:38:14processing, etc.
    • 0:38:15The second part of the class is programming and supercollider,
    • 0:38:19again-- so sort of all the stuff that I talked about.
    • 0:38:22It's a gentle introduction.
    • 0:38:24It doesn't assume that you have any programming, but obviously you do.
    • 0:38:29And then the third part--
    • 0:38:31sort of my favorite part-- is this intersection
    • 0:38:34of the real world and the machine.
    • 0:38:36This is physical computing and sensors, and this
    • 0:38:39is where the wheel meets the road.
    • 0:38:44And we have a lot of projects that work with real world sensor data, that
    • 0:38:55work with human movement, that can sense ambient light, that can sense motion.
    • 0:39:01And then we talk about some of the issues of converting that
    • 0:39:06into meaningful musical information.
    • 0:39:11So if you have any questions about--
    • 0:39:13pardon me-- any questions about any of these or the Open Music initiative
    • 0:39:18or you want a a tour of the music studio in computer science, please
    • 0:39:23feel free to email me.
    • 0:39:25Thanks so much.
    • 0:39:26[APPLAUSE]
    • 0:39:39KYLE JENSEN: Hi, I teach a class that helps you use your computer science
    • 0:39:42knowledge from CS50 to build startups.
    • 0:39:44That could be nonprofits.
    • 0:39:45That could be some scalable software startup like Facebook or Snapchat.
    • 0:39:49The class is computer science 213.
    • 0:39:51It's also management 659.
    • 0:39:53My name is Kyle Jensen.
    • 0:39:55I'm Associate Dean at the Yale School of Management.
    • 0:39:57And this is one of my favorite classes.
    • 0:39:59The class is essentially 50% web application development, full stack,
    • 0:40:02and 50% class that you might find at the business school teaching
    • 0:40:06an introduction to entrepreneurship.
    • 0:40:08Fundamentally, the class helps you identify
    • 0:40:11customers, people whose lives you can change in some fashion,
    • 0:40:15to verify to yourself that those people have some problem that you think
    • 0:40:19they have, to build a business around that,
    • 0:40:21and the technology skills you need in order to do that.
    • 0:40:26I think you should take the class.
    • 0:40:28It's fantastic.
    • 0:40:30Again, my name is Kyle Jensen.
    • 0:40:31You can easily find me on the interwebs.
    • 0:40:33Thank you.
    • 0:40:34[APPLAUSE]
    • 0:40:52STEPHEN SLADE: So I think I have slides.
    • 0:40:54Let's see if this works.
    • 0:40:55Yeah, look at that.
    • 0:40:57OK, I'm Stephen Slade.
    • 0:40:58And I teach both CS200 and 201.
    • 0:41:02And who am I?
    • 0:41:03I am a hybrid.
    • 0:41:05I am both theory and practice.
    • 0:41:08So I was a Yale undergraduate.
    • 0:41:09I majored in music, and I study computer science.
    • 0:41:12I came back here to graduate school.
    • 0:41:14I got a master's in PhD in computer science.
    • 0:41:16In the meantime, I worked in presidential campaigns
    • 0:41:19at the White House designing computer systems, management information
    • 0:41:23systems.
    • 0:41:25I also taught in the business school at NYU.
    • 0:41:28And from there, I migrated to Wall Street.
    • 0:41:31I worked in finance and risk management for many years.
    • 0:41:37So I've looked the world from both sides now,
    • 0:41:40from both the practical and the theoretical.
    • 0:41:44And in theory, there's no difference between theory and practice.
    • 0:41:47But in practice, there is.
    • 0:41:50I've written three books.
    • 0:41:51They were all dedicated to Yale alumni, namely my family.
    • 0:41:55So my wife went to Yale.
    • 0:41:57My three children went to Yale.
    • 0:41:59I have two daughters who majored in computer science,
    • 0:42:02and they both work at Google.
    • 0:42:04I'm a big believer in educating women to be computer scientists.
    • 0:42:10And when they were growing up, I viewed my job as not teaching them to read,
    • 0:42:16but teaching them to love to read.
    • 0:42:19I didn't view my job as teaching them to play the piano,
    • 0:42:22but teaching them to love to play the piano.
    • 0:42:25And I view my job here in CS200 and 201 as not teaching you computer science,
    • 0:42:31but teaching you to love computer science.
    • 0:42:34And I think that's what David tries to do as well.
    • 0:42:37That's my impression.
    • 0:42:39Anyway, so there are two courses--
    • 0:42:41200 and 201.
    • 0:42:43And they're sort of sister courses, sibling courses.
    • 0:42:45They're meant to be theory and practice.
    • 0:42:48So 200 is more practice, 201 is more theory.
    • 0:42:52But they have the Common Core in that they both satisfy the prerequisites
    • 0:42:57for a future in computer science.
    • 0:43:00And in particular, if you take either course, you will learn recursion.
    • 0:43:06And see what happens when you Google recursion.
    • 0:43:10And it's an interesting exercise.
    • 0:43:12You will learn Unix.
    • 0:43:14You will learn computer architecture, machine language.
    • 0:43:17There are programming assignments about every week or so,
    • 0:43:20much like you had in CS50.
    • 0:43:22And in addition, I introduce what I call logical problems.
    • 0:43:26And the idea is to make you realize that you make assumptions
    • 0:43:29about the world that often are false.
    • 0:43:32And this is the bane of the computer programmer,
    • 0:43:34that when you're writing a computer program,
    • 0:43:36you make assumptions about the input or the behavior of the user,
    • 0:43:39and often those assumptions are false.
    • 0:43:41So what I try to do is train you to think out of the box,
    • 0:43:46to think in terms larger than what your normal assumptions are.
    • 0:43:51So for example, here's this a representative logical problem.
    • 0:43:54What is the next number in the following sequence--
    • 0:43:571969, 73, 77, 81, 85, 91, 93, 99.
    • 0:44:04What's the next number?
    • 0:44:05Anyone know?
    • 0:44:07All right, let's analyze it.
    • 0:44:09First of all, they're all years.
    • 0:44:14All right, they're all odd years.
    • 0:44:17Am
    • 0:44:19OK, the current year is 2017, which is an odd year.
    • 0:44:26So that's a plausible answer to the question.
    • 0:44:32So anyone want to guess what the answer to the question is?
    • 0:44:38OK, good because no one will know the answer until at least this weekend,
    • 0:44:43and maybe not even then.
    • 0:44:48[INAUDIBLE]
    • 0:44:50That's almost right.
    • 0:44:52So 1999 was the last time Yale beat Harvard in New Haven.
    • 0:44:59So maybe this Saturday we'll know the answer to the question.
    • 0:45:02We'll see.
    • 0:45:03It's supposed to rain, I think.
    • 0:45:06Anyway.
    • 0:45:09OK, 201, 201 is a prerequisite for the rest of the major,
    • 0:45:16and it's meant to teach you theory.
    • 0:45:18So it teaches you recursion, Unix, machine language, computer
    • 0:45:21architecture.
    • 0:45:22The programming language you used is Racket,
    • 0:45:25which is a dialect of Scheme and LISP.
    • 0:45:28These were languages that were developed maybe 50 years ago,
    • 0:45:33and they've evolved primarily at MIT.
    • 0:45:36But they've been used for artificial intelligence for many years.
    • 0:45:39Putting Racket on your resume is not going to get you anywhere.
    • 0:45:43It's going to get you odd questions.
    • 0:45:47So that's not the point.
    • 0:45:49We will learn Turing machines, Boolean logic.
    • 0:45:52You'll see how to design software that emulates digital gates and circuits.
    • 0:45:59You'll write machine language for a fictional machine, the TC201.
    • 0:46:05We will look at formal languages, regular expressions,
    • 0:46:08deterministic finite automata.
    • 0:46:10We'll look at computational complexity and analysis of algorithms.
    • 0:46:14I think you did a little bit of that in CS50.
    • 0:46:16I have a link here to the syllabus for the current semester
    • 0:46:19in case you want to look.
    • 0:46:22And CS201 satisfies the de jure requirement for the major
    • 0:46:28and for courses like 223.
    • 0:46:32200 is meant to be the practical alternative to 201.
    • 0:46:37And as I say at the bottom, it satisfies the de facto requirements
    • 0:46:41for the higher level courses.
    • 0:46:43So for example, you learn enough about computer science and programming,
    • 0:46:47recursion, Unix, machine language to take the higher level courses,
    • 0:46:51but sometimes you may need the permission of the instructor.
    • 0:46:53But in general, it hasn't been an issue.
    • 0:46:56If you're not a computer science major and you merely
    • 0:46:58want to take a course that will help you in other areas of life,
    • 0:47:04this is probably a reasonable course to take.
    • 0:47:07In particular, the programming language we use
    • 0:47:09is Python, which you should put on your resume--
    • 0:47:13Python.
    • 0:47:15And we will look at Python in much more detail than you had in CS50,
    • 0:47:19but the fact that you've had it already is probably beneficial.
    • 0:47:24So we will do object oriented programming in Python,
    • 0:47:28which is like object oriented programming in C and C++.
    • 0:47:31We'll look at software engineering issues.
    • 0:47:34We will look at databases-- and not only how to use a database like SQL,
    • 0:47:38but actually how to build a database system in an object oriented way.
    • 0:47:42We'll use Python to build an object oriented database.
    • 0:47:48We will do machine language but not on a theoretical machine, the TC201.
    • 0:47:53We'll see how to interpret machine language that's generated by Python.
    • 0:47:59So Python generates what's called byte code,
    • 0:48:02and you will write a byte code interpreter for Python in the course.
    • 0:48:06We'll also look at practical real world problems,
    • 0:48:09not Turing machines, not Boolean expressions.
    • 0:48:12But we will look at cryptography and information security.
    • 0:48:17We will look at machine learning, which is also sort of generally known--
    • 0:48:22it covers things like big data and data science.
    • 0:48:26And we'll look at applications.
    • 0:48:27So some practical applications of machine learning
    • 0:48:31include driverless cars and actually information security.
    • 0:48:36So these days, one interesting application of machine learning
    • 0:48:43is using machine learning to break encryption codes,
    • 0:48:47or to create encryption codes.
    • 0:48:50And again, I have the address of the syllabus from last spring.
    • 0:48:55It'll be a little bit different this year based on what I've said here.
    • 0:49:03And I think that's it.
    • 0:49:06[APPLAUSE]
    • 0:49:10I'll be around if people have questions.
    • 0:49:13JIM: So, yes, so I'm Jim [INAUDIBLE].
    • 0:49:15I'm the DUS for computer science.
    • 0:49:17And I also teach computer science 223, or at least will
    • 0:49:20be teaching computer science 223 in the spring.
    • 0:49:23So what I was asked to come here and talk about was both of these-- first,
    • 0:49:27I'm going to talk about computer science 223
    • 0:49:30and why you might want to or not take that class
    • 0:49:33or not take that class at some point in the future
    • 0:49:36and what's involved in doing that.
    • 0:49:38And then I'm going to talk a little bit more
    • 0:49:39broadly about the computer science major,
    • 0:49:42if that's something that some of you might be considering or some
    • 0:49:44of the other options related to that, like our joint majors
    • 0:49:47or, in some cases, the possibility of double majoring.
    • 0:49:49I did not actually bring any slides.
    • 0:49:51So I'm just going to stand here and wave my arms around a bit.
    • 0:49:53Maybe I'll actually stand up.
    • 0:49:56And I suppose if we have anything that we need to draw,
    • 0:49:58we do have the blackboard here.
    • 0:50:00So let me start by talking about 223.
    • 0:50:03223 is usually the second programming oriented course
    • 0:50:08that people take as part of the computer science major, the first one
    • 0:50:10being computer science 201.
    • 0:50:13If you are thinking of being a computer science major,
    • 0:50:15you should probably go through 201 first.
    • 0:50:18201 is formally a prerequisite for 223, but as with all prerequisites at Yale,
    • 0:50:23this is an open negotiating position.
    • 0:50:26And with permission of the instructor, you
    • 0:50:28can take 223 without previously taking 201.
    • 0:50:31That being said, historically students who have come in to 223
    • 0:50:35without taking 201 have generally not done as well in 223
    • 0:50:38and then 323 after that as people who go through the normal track.
    • 0:50:42If you are doing the computer science major,
    • 0:50:44we do not necessarily require you to take 201 if you've already done 223.
    • 0:50:49But we do ask you to do an extra elective to make up for it.
    • 0:50:52In terms of the actual content of the class, the title the class
    • 0:50:55is data structures and programming techniques.
    • 0:50:57And that's mostly what it's about.
    • 0:50:59We talk about programming from the point of view
    • 0:51:01of how do you organize your code, the programming techniques side on the one
    • 0:51:05part, and how do you organize your data that's
    • 0:51:07operating on the data structure side.
    • 0:51:09The thing that people often find odd running into it, which was probably
    • 0:51:14not going to be so much an issue for you guys having come through CS50,
    • 0:51:18is the language of instruction is C. So for people
    • 0:51:20coming into the program who are used to languages like Java,
    • 0:51:23this can be a little bit of a shock, given that C is
    • 0:51:25such a terrible programming language.
    • 0:51:28We do you C for a reason, which is that we're
    • 0:51:30trying to get you an understanding of computers down at a fairly low level,
    • 0:51:34at the point of individual bits getting shoved around, maybe not so much
    • 0:51:37in 223, but certainly by the time you get to 323.
    • 0:51:41And C is about as close as we can get to actual assembly language
    • 0:51:44and still have it be something that's usable by any human beings
    • 0:51:48at this point pretty much.
    • 0:51:50And so that's why we use that in 223 323.
    • 0:51:54If you want to come take 223, you should feel free to check it out.
    • 0:51:57And then like I said, I'll be teaching it this spring.
    • 0:52:01We offer it generally every semester now.
    • 0:52:03So if you don't want to take it immediately,
    • 0:52:05if you want to consider looking into 201,
    • 0:52:07which we also offer every semester, you can go do that first and then
    • 0:52:10and then come back.
    • 0:52:11It's really up to you.
    • 0:52:14Any questions about 223?
    • 0:52:17All right, so now I'd like to move on to topic two, which
    • 0:52:20is the computer science major.
    • 0:52:22Which I don't know how many of you might be thinking about the computer science
    • 0:52:26major.
    • 0:52:27But so I'm the DUS for computer science, which
    • 0:52:29means that I'm responsible for administering the computer science
    • 0:52:32majors.
    • 0:52:32Since it's a very large major, we actually
    • 0:52:34have two other people who do advising within the major.
    • 0:52:38We have a sophomore class advisor who is currently a professor,
    • 0:52:41[? Rezeech ?] [? Pizscoch, ?] and a junior class advisor,
    • 0:52:44who is currently Yang Yang, although he'll be replaced by [? Brent ?]
    • 0:52:49[? Schuzuleti ?] next semester because he's going to be on leave.
    • 0:52:52I handle all the seniors and freshmen and also handle
    • 0:52:55issues that come up that are a little bit more involved in terms of dealings
    • 0:52:58with the major.
    • 0:52:59The major itself is a fairly straightforward major.
    • 0:53:03We have five core classes, 201 and 223, which
    • 0:53:06I mentioned already, 201 being the introduction to kind
    • 0:53:09of all of computer science intended to give you
    • 0:53:11an idea of what you're getting into.
    • 0:53:13And then 223 is the first of two programming
    • 0:53:16oriented classes on the kind of a track of 223 and 323,
    • 0:53:21which are basically what I mentioned already.
    • 0:53:23And then 323 is more of a systems programming
    • 0:53:25class and computer organization class aimed
    • 0:53:28at giving you an idea of how things work at a fairly low level
    • 0:53:31and how hardware works and so forth.
    • 0:53:33We also have a sort of math theory track on the other side.
    • 0:53:37And we now have basically two versions of that.
    • 0:53:40The standard version of that is computer science 202,
    • 0:53:43mathematical tools for computer science and computer science 365 algorithms.
    • 0:53:47The purpose of 202 is to take people who don't necessarily
    • 0:53:52have much background in mathematics and give you
    • 0:53:54what is often called mathematical maturity, an idea of how proofs work
    • 0:53:58and how definitions work and how things in mathematics works,
    • 0:54:01and kind of cover a little bit about the various different areas
    • 0:54:05within mathematics that are relevant to computer science, mostly
    • 0:54:08in order to get you up to speed so that when
    • 0:54:10you hit 365, the algorithms class--
    • 0:54:12which is a class about reasoning, about things
    • 0:54:14you would be implementing in programs without actually implementing them--
    • 0:54:17you will have the mathematical tools to actually be able to do that.
    • 0:54:21And having gone through the core classes, these five classes,
    • 0:54:25we then ask you to go and do six electives on top of that
    • 0:54:29for the bachelor of science degree plus your senior project, four
    • 0:54:32electives plus the senior project if you're
    • 0:54:34doing the Bachelor of Arts degree.
    • 0:54:35And these advanced electives will typically
    • 0:54:37be 400 level classes in computer science.
    • 0:54:39These vary in terms of what prerequisites they have.
    • 0:54:42You can actually start taking electives pretty much once you
    • 0:54:45get through to 223, and there even one or two that do not have anything
    • 0:54:49beyond 201 as a prerequisite.
    • 0:54:50And of course, as you take more and more of the core classes, more of those
    • 0:54:53will open up.
    • 0:54:54So the typical schedule-- people will start by going and doing
    • 0:54:57201, 202, 223, and so forth.
    • 0:55:00And as the electives become available, you'll
    • 0:55:03start filling them until the point where you get to maybe your senior year,
    • 0:55:06you will be mostly taking electives and doing your senior project.
    • 0:55:09The other track I should mention for the theory side
    • 0:55:13is that if you were really gung ho about mathematics
    • 0:55:15and the theory end of computer science, you
    • 0:55:17have the option of, instead of taking computer science 202,
    • 0:55:20you can take the discrete math course over in mathematics, mathematics 244.
    • 0:55:24And if you do that, that opens up the intensive version
    • 0:55:26of the algorithms class, computer science 366, which is basically
    • 0:55:30a more advanced version of our standard algorithms class,
    • 0:55:33which some people might like to take.
    • 0:55:37So any questions about the basic major or anything like that?
    • 0:55:42We also offer several joint majors.
    • 0:55:45There is a joint major with mathematics, computer science, and mathematics,
    • 0:55:49a joint major with psychology.
    • 0:55:51We also have a joint major with electrical engineering,
    • 0:55:53electrical engineering and computer science.
    • 0:55:56These all have more or less the same structure.
    • 0:55:58You have to take essentially the core classes in both majors.
    • 0:56:02But then when you get up to the elective level,
    • 0:56:04instead of making you take a full set of electives from both sides,
    • 0:56:07you generally have an abbreviated list of electives
    • 0:56:10that you're expected to take from either side,
    • 0:56:12typically working out to about 14 or 15 credits
    • 0:56:14total by the time you complete the major.
    • 0:56:16And you do a single senior project that is acceptable to both majors.
    • 0:56:21Some people will also do double majors by taking advantage of the fact
    • 0:56:24that the computer science major, particularly if you do the BA,
    • 0:56:26is a fairly thin major.
    • 0:56:28So we get a lot of people who will do, say,
    • 0:56:30a BA in computer science, which is 10 credits, and then a major
    • 0:56:33in some other area.
    • 0:56:34And these can vary for departments all the way across Yale.
    • 0:56:38If you can arrange for something that has overlap with computer science, that
    • 0:56:41has courses in common or the courses that
    • 0:56:43could be counted as electives to both majors,
    • 0:56:45this can also be efficient because you can actually
    • 0:56:47get down to as little as eight extra electives
    • 0:56:50to add on a computer science major because we allow up
    • 0:56:52to two courses of overlap.
    • 0:56:54I personally don't necessarily recommend doing a double major just
    • 0:56:57for the sake of doing a double major.
    • 0:56:58But if you're taking a lot of these classes anyway,
    • 0:57:00this might be something that you can look into.
    • 0:57:05I think that's basically it.
    • 0:57:14SPEAKER 1: Thanks so much.
    • 0:57:15All right, so we are officially adjourned.
    • 0:57:17Please join us and the staff in back for cake.
    • 0:57:18And we'll see you at the hackathon and fair.
  • CS50.ai
Shortcuts
Before using a shortcut, click at least once on the video itself (to give it "focus") after closing this window.
Play/Pause spacebar or k
Rewind 10 seconds left arrow or j
Fast forward 10 seconds right arrow or l
Previous frame (while paused) ,
Next frame (while paused) .
Decrease playback rate <
Increase playback rate >
Toggle captions on/off c
Toggle mute m
Toggle full screen f or double-click video