Placeholder Image

字幕表 動画を再生する

  • [MUSIC PLAYING]

  • SPEAKER 1: All right, this is CS50, and this is week 11.

  • Before we begin today, I thought we'd make some changes in light

  • of the competition on the horizon.

  • First and foremost, this is perhaps in order.

  • And I was down the street just earlier, and I

  • got my shirt for the weekend, which I gather means 900.

  • So good luck this weekend.

  • And before we proceed further, a big thanks to the whole team, honestly,

  • that made this semester possible--

  • Natalie, in particular, who I'm sure you've

  • gotten to know over time, of course, Benedict with whom I

  • went to college some years ago.

  • You recall this picture from week 0, and then of course [? Stelios ?]

  • and [? Anusery ?] and the whole team of TAs and CAs here.

  • And, indeed, this is actually a pretty novel thing.

  • If you haven't quite realized it, especially

  • if you're first year, having undergraduate ULAs [CRASH] or tada.

  • [LAUGHS]

  • That's anticlimactic.

  • OK, so we will tend to this later.

  • So this is actually a pretty novel thing,

  • that there are undergraduates teaching assistants, that you guys can actually

  • teach your own classes, hold office hours, and more.

  • And this was actually initiated just a few years ago by way

  • of CS50's first class of TAs and CAs.

  • So here's a [INAUDIBLE] article from back in 2015.

  • In fact, this is the very first team of undergraduate CAs

  • who first TAed CS50 itself.

  • And in fact, this is now an opportunity that has extended beyond CS50 itself.

  • So if you're thinking about computer science or really any related field

  • and you might like to start teaching-- which frankly is by far the best

  • way to actually learn and absorb this kind of material--

  • realize that CS50 itself will soon start recruiting, and we and the whole team

  • would indeed love to have you on the team.

  • And even if you are among or were among those less comfortable,

  • keep in mind that's what we said in the first lecture still

  • holds true here on out.

  • What really matters ultimately in this class,

  • even if it might not quite feel like this-- it's just what?

  • Four hours after the quiz was due--

  • that what really matters in this course is not so much

  • where you end up relative to your classmates,

  • but where you end up relative to yourselves.

  • And that's something we have and will keep

  • in mind, especially when it comes time for final projects, grades, and beyond.

  • And in fact, these were the percentages broken down

  • in the very first lecture based on problem set zero of this year.

  • So those of you who have been feeling that you

  • are among those less comfortable realize that it's no longer by definition

  • the case.

  • Everyone's been upgraded to somewhere in between or among those

  • more comfortable, and realize this is perhaps

  • just the first such stepping stone.

  • So this has been a tradition of having undergrads TA the class for years

  • up in Cambridge.

  • And in fact, the team there put together with our production team

  • a little invitation for you to consider joining us here

  • in New Haven among our CAs and TAs for the coming year.

  • So allow me to dim the lights and have our team in Cambridge say hello.

  • [VIDEO PLAYBACK]

  • - I'm Elsiah.

  • - My name is Nenia.

  • - I'm Athena Braun.

  • - I'm a sophomore.

  • - I'm a senior.

  • - I'm a junior studying in computer science and linguistics.

  • - I'm concentrating in [? CSL. ?]

  • - CS50 is always just because it's changed my life.

  • It made me a computer science concentrator.

  • - I'm a TF for CS50.

  • - Course assistant.

  • - This is my second year TFing now.

  • - This is my third year being a teaching fellow for CS50.

  • - Becoming part of CF's staff helped empower me so so so much.

  • - I was a total beginner, never anticipated programming beyond CS50.

  • But here I am.

  • This is something I never thought I would do.

  • I think it's just been really exciting going from being a beginner

  • to being comfortable enough to TF this class.

  • - Everything that has come out of this has

  • helped me grow so much as a teacher, as a student.

  • - Also the culture and the environment of it is also pretty.

  • - I've definitely found a community of friends within the CS50 staff.

  • - Be prepared to have students who look up to you

  • and really appreciate the work that you're doing.

  • And just realize that you're not just a teaching fellow.

  • You're not just this person behind the whiteboard.

  • You're like a student who took this, too,

  • and can really level with other people in your section

  • and figure out what's going on and make it a good experience for them.

  • - I decided that I can get the best of both worlds.

  • I can get to teach about computer science.

  • And those are two are my passions.

  • - I just really love teaching computer science to beginners.

  • CS50 is where all that beginner energy is,

  • and it's where I can make a real impact on the students' careers in CS.

  • - It's amazing to see how much this course can do in just a semester

  • and how, from September until December, students learn so much

  • and gain so much experience and knowledge.

  • And watching that and working with them in that process

  • has always been really, really inspiring.

  • - It's been so so wonderful getting to see these people grow,

  • just like I did myself.

  • - One of the most rewarding things I've done here.

  • So that's why I keep coming back.

  • - Going to office hours and helping people out, it makes you feel good.

  • And it makes other people feel good as well.

  • - My name is Brian.

  • - I'm Thomas Lively.

  • - I'm Allison.

  • - I'm Maria.

  • And this is CS50.

  • [END PLAYBACK]

  • SPEAKER 1: So realize, here in New Haven and also in Cambridge,

  • we're fortunate to have quite a few resources,

  • both in terms of the place that we're in and the people that we're around.

  • And one of the focuses of CS50 for years now with its staff

  • has been on something called open courseware, whereby we've long

  • made the courses, videos, and problem sets and software freely available

  • to everyone around the world.

  • And just a couple of years, too, did we start

  • to focus, not just on students who wanted

  • to tune in in any country and any city, have we also started

  • focusing on teachers as well so that they needn't rely only on the textbooks

  • that their schools provide but too can get on the internet and tune into

  • and use in their own classrooms, adapting or adopting

  • this particular curriculum and tools for their own students.

  • And if curious, for instance, every red dot on this map

  • actually represents some cohort of high school students

  • and high school teachers teaching introductory [? CFs ?] via CF50AP

  • as it's called, and every one of the blue dots on the screen

  • represents a university with whom we've been collaborating in some form,

  • either formally with some of the faculty or less

  • formally with some of the student groups there.

  • And so if you're interests in education and in computer science

  • extend beyond, by all means consider applying,

  • not only to TA or SA the class, but to get involved

  • in these other outreach efforts creating curricula, working on tools,

  • and really making an impact.

  • In fact, the communities beyond Cambridge and New Haven

  • include Miami Dade in Florida.

  • This is Chile.

  • This is our team in London.

  • Here in Burma.

  • Here in Ukraine.

  • Here in Cairo.

  • Here in Bolivia and Nicaragua, and then lastly back home in Cambridge.

  • This was our very first cohort of high school teachers

  • who came to town in order to bring a little something back

  • to their own classrooms and teach and adapt as well there.

  • And in fact, just a few years ago, apropos

  • of the event on our own horizon, this was the very first CF50AP hackathon,

  • whereas instead of getting together at 7:00 PM To 7:00 AM,

  • we got together like 10 AM to 2 PM during the high school schedule.

  • And we had eight public and private high schools

  • in the New York City area come together to work on their own problems sets

  • and final projects and the like.

  • So again, if of interest, do you feel welcome to engage

  • with us and so many people around the world in that way.

  • So what have we actually done in the classroom and in the problem sets?

  • So at the end of the day, it's all about problem solving.

  • And hopefully, if you attended CF50 Puzzle Day

  • or certainly engaged in the problems over the past several weeks,

  • you realize that the goals of this class are not so much to teach you C per se,

  • and it doesn't really matter some of the finer

  • implementation details of a lot of the problem sets,

  • but how you went about solving those problems.

  • And we claimed early on that there is a methodology,

  • and there's techniques with which you can solve problems.

  • And indeed, we hope what you exit the course with is sort of an ability

  • now to recognize patterns and other problems you might encounter, not

  • just in CS, but in other fields too.

  • If curious as to how some of your classmates

  • perceived this year's problem sets, we took a look at the data

  • that you kindly provided in problems set eight.

  • This is a bar chart of what everyone thought of the problem set.

  • So purple is hate.

  • Blue is love.

  • So it's hate on top down to love on the bottom.

  • And so what you can see here is that love was kind of invariant,

  • though there was even more liking of problem sets 6 over here.

  • No one really hated problems set 1, which

  • is fantastic, with Mario and the likes.

  • So perhaps you're somewhere in that spectrum.

  • A little more telling was this.

  • How difficult were the problem sets?

  • And these numbers varied a lot more.

  • [? P ?] said 0 and 1 were very blue because blue is easy,

  • green meanwhile on the top would represent hard.

  • So there's definitely some fluctuation based

  • on expectations of the problem sets and which one were newer or in progress.

  • But problem set 5--

  • so misspellings, the spellcheckers-- it's probably pretty fair to say it's

  • pretty orange and a bunch of green, whereas pset

  • 6 kind of went the other direction, where you had the ability

  • to port some of our programs from C to Python

  • and implement some document similarity.

  • When did you start problem sets?

  • More telling.

  • So [INAUDIBLE] called that they are released way over here on a Friday,

  • but the most common day seems to be Wednesday followed by Friday, followed

  • by Thursday.

  • Thankfully zero people said they started it the morning of it being due.

  • So that's a little something.

  • And then lastly, when did you watch lectures?

  • So it seems that Monday was the common case.

  • Some folks tuned in live on Friday or watched it on demand thereafter,

  • Saturday, Sunday being common.

  • And then there's perhaps correlation between the blue Sunday

  • and the blue Sunday for problem sets as well.

  • So just to give you a sense of your own patterns as well.

  • So where did we begin?

  • So you recalled that we came on up here some 12 weeks ago

  • and played this, IVs hardest game, which was a game written in Scratch

  • but was all about trying to solve some problem.

  • And we distilled this notion of problem solving really into this black box.

  • At the end of the day, all problem solving is is you've got some input--

  • and we happen to represent them in so many different ways, zeros

  • and ones, letters of the alphabet, colors and files, and web requests,

  • and more.

  • But at the end of the day, what you care about is the outputs.

  • And the secret sauce in the middle, we've kept calling what?

  • OK, you're wearing the I took CF50 shirt, so you better have an answer.

  • What's inside the box?

  • Grhythms, exactly.

  • Yeah, algorithms is this sort of fancy sounding term

  • that really is just these step by step instructions for solving some problems.

  • And whether we've solve these problems in Scratch or in C or in Python

  • or in [? Secord ?] or in JavaScript, these really are just tools.

  • And hopefully you found, albeit with deliberately

  • a bit of frustration in recent weeks where

  • you had to Google a bit more on your own or you had to ask more questions,

  • hopefully you felt--

  • though perhaps not pleasurably at the time--

  • that the training wheels were really starting to come off

  • and that the expectations were more on your end to sort of figure something

  • out.

  • But hopefully, we hope you had the right mental model with which

  • to figure out what resources to use and how to go about solving those problems.

  • And so indeed, allow us to propose to you what you

  • can do after CF50, very pragmatically.

  • If your interest lies specifically in software development,

  • you'll hear at the end of today's lecture,

  • too, a number of other directions you can go, particularly by way of classes

  • but with j term on the horizon and summer on the horizon

  • and perhaps jobs on some of your minds, we

  • thought we'd give you a glimpse of just some of the practical things

  • that you might want to keep in mind that will generally

  • be assumed by some other high level systems classes.

  • But just how can you write code and solve problems

  • without CS50, without CS50 [? ide, ?] and certainly without a problem

  • set specification that just tells you what to do?

  • So learning git.

  • This is something you've used underneath the hood for some amount of time,

  • and there's many different implementations

  • of this notion of version control.

  • And git is not the only one.

  • It's perhaps the most popular these days.

  • So many of the things we'll suggest here you

  • could absolutely sub out for something else.

  • But this certainly is very much in vogue.

  • And so if you go to this URL here at some point,

  • CF50 own Brian or [? Hadeie ?] in Cambridge

  • did a fantastic seminar on how to learn git.

  • We'll post all these slides on the website after today as well.

  • And here's Brian from that very same thing.

  • If you want to keep your own projects, whether academically or professionally

  • private, GitHub's great about giving you free access to this.

  • So even though all your work thus far has been in CF50's account,

  • our organization called [INAUDIBLE] 50, you can head here and actually

  • sign up for free accounts to continue using that,

  • and you'll see a little screen a bit like this.

  • Installing git on your own Mac or PC-- and this

  • is where really you can force yourself to take off

  • some of the training wheels.

  • CF50 ide is meant to be pretty representative of a real world software

  • development environment.

  • But it's of course, cloud based.

  • And even I get annoyed if I'm taken Amtrak down here from Cambridge trying

  • to use it because of the latency or weak internet connection,

  • and I don't necessarily have as much control as I might on my own Mac or PC.

  • And so among the options, of course, are to install these very same tools there,

  • among them a text editor.

  • There's dozens of these if not hundreds over the years.

  • One of the most popular perhaps is called Sublime Text, which

  • you can download at this URL here.

  • And this would be the equivalent of the little tab code

  • windows that just come with CF50 ide.

  • But you can use it on your own computer.

  • And you'll see a little something like this with nice and fancy features

  • that are intellectually interesting but just

  • save you time at the end of the day.

  • Atom is a very popular one as well, which you can take a look at online,

  • too.

  • It, too, is freely available.

  • And then Vim and more command line based tools.

  • Actually, to this day I still use Vim myself.

  • If you've ever seen me in lecture open a black and white window that

  • isn't the tabbed code window but via plug-ins and the like,

  • can you make this type of tool and others like it, [? EMAX ?] and beyond,

  • ever more versatile as well.

  • Besides that, in FAQ, apropos of final projects coming up,

  • is that many students end up doing mobile applications,

  • even though we don't teach it per se, web applications, which we introduce

  • you to by way of pset 7 and pset 8.

  • So a very common approach as you're thinking about over Thanksgiving

  • and beyond your final projects is that, if you actually

  • want to put these things out there and not

  • think of it as just meeting the course's own expectations but something

  • you really want to build on and it's something

  • you want to do for your student group or your own entrepreneurial effort

  • or for some other class for what you want to solve some problem using

  • software, realize you can put these things out there using CF50 ide.

  • For instance, if you go to the Share button in our own ide,

  • you'll see an interface like this.

  • And so long as you make the so-called application public,

  • then anyone on the internet can visit that URL

  • and try out your CF50 finance or your mashup or now your final project.

  • Of course, with these free accounts, they

  • tend to shut off after some number of hours of idleness.

  • So it's not the way to run a website that you actually

  • want friends to use for some time.

  • So using things like [INAUDIBLE] is a very popular service.

  • And ask any of the TAs or staff over time,

  • and we'll post some links online as well to get started on this.

  • AWS, Amazon's cloud service, and Microsoft has one,

  • and Google has one as well.

  • Can you sign up for free accounts there.

  • And you can actually get your own free domain names.

  • If this is of interest and you don't want

  • it to be some cryptic sounding domain name,

  • you can actually get them from free from companies like namecheap and the like,

  • leveraging your student status for the next few years

  • to take advantage of all these resources for free.

  • And this one in particular at GitHub's address

  • gives you access to a lot of tools that you might

  • want to experiment with and try out.

  • So where will we head in the coming days?

  • The sort of hardest parts, perhaps, are behind us, with the test and the quiz

  • and all of the problem sets, and all that remains now is the final project.

  • And the hope here really is to take all of the training wheels

  • off and give you a chance to sort of build

  • something that's genuinely of interest.

  • Hopefully it will solve some problem of interest

  • to you or, again, your student group, or something you're working on.

  • And you'll have 12 hours if you'd like to join us in Cambridge, just

  • as your predecessors did last year, to hop on a bus in just a couple of weeks

  • time.

  • Come on down to Cambridge for a 7:00 PM or so start.

  • Upon arrival, you'll be greeted by the staff from Cambridge and New Haven

  • alike.

  • You'll get settled down and grab a name tag

  • and find a place to sit and work on your laptops

  • for pretty much throughout the night.

  • The goal is to actually get something useful done.

  • Ideally it is now to start your final project,

  • since starting it at the middle of the night

  • is probably not the best strategy.

  • And in fact, if you take nothing else away in the way of advice today,

  • get something done over Thanksgiving truly,

  • even if it's just hello world, if you're making an iOS app,

  • or hello world if you're making Android, or copying problem set 7

  • or problem set 8 and then building upon it

  • or starting to for your final project.

  • Just like give yourself that base layer on top

  • of which you can build when you actually arrive at an event like this or dive

  • in on your own.

  • The evening will be punctuated by opportunities to ask the staff help.

  • But it won't be like 12 hours of office hours.

  • The staff will be there, but generally working on their own projects

  • and there to advise you or point you at things,

  • but not necessarily to solve problems in the same way,

  • since your projects will be as unfamiliar to us as they are to you.

  • But we'll point you at what we might know.

  • And it'll be an opportunity really just to have

  • what we hope is a pretty memorable collegiate experience, working

  • on final projects, having some Mexican food around 9 PM, pizza around 1:00 AM.

  • And then if beyond the photo booth and other distractions,

  • if you need a little break here and there, including

  • a therapy dog this year--

  • Milo-- and naps throughout the evening, as happened last year as well,

  • if you make it all the way to 5:00 AM, one of the buses,

  • if you're still up for it, I'm on the way back to New Haven.

  • We'll stop off at IHOP for breakfast for those still awake.

  • And if you're too tired at that point, one of the other shuttles

  • will head back in a different direction altogether.

  • And then the CF50 fair, which is here in New Haven for all Yale students

  • and faculty and staff to come to.

  • This is meant to be an opportunity really

  • to delight in what you pull off over the remaining weeks of the class

  • and really what you accomplished over the course of the semester since week

  • 0.

  • Last year's event was in Commons, which is currently offline, but has

  • over 1,000 people of students and staff and faculty

  • coming by to really see what you've worked on.

  • And it's a very casual environment.

  • There's music, and there's friends from industry and alumni

  • there to chat up everyone is well.

  • And here's a group of students presenting their final project

  • last year, the same kind of thing happening here,

  • and then even some hardware demonstrations like this one

  • involving VR.

  • So it's really just a fun opportunity to get everyone together before break

  • to see what everyone has accomplished over the course of the term.

  • And alumni, indeed, come back from Facebook and Google

  • and the like to chat up folks about opportunities in the real world

  • as well.

  • And at the end of it all, in addition to cotton candy, as you'll

  • see we have we have and before then, your I

  • took CF50 t-shirt to claim hopefully proudly exactly that.

  • An invitation though is certainly warranted.

  • This year's event will be in a fairly special place, no longer in Commons,

  • but in the Peabody Museum, if you've ever been there.

  • So in addition to the very modern things like laptops and apps, well

  • you'll also see some things from yesteryear.

  • Let's take a look, in fact, what awaits.

  • Thanks to [? Stelios ?] and [? Inusery. ?]

  • [VIDEO PLAYBACK]

  • - Join us at the CF50 fair.

  • [BABY SOUNDS]

  • [END PLAYBACK]

  • SPEAKER 1: So at the very end of today's lecture, after we take a look at some

  • follow on classes and CS, you'll be joined, as is our tradition,

  • by the staff for some cake in back.

  • So do join us and the faculty you were with us today for exactly that.

  • I thought we'd conclude our beginning portion of the lecture 2 with a look

  • back at this semester, but again, in addition to this very practical advice

  • in these next steps that we've offered, do keep in mind that we hope ultimately

  • that, since week 0 now here in week 11, you really

  • do feel empowered and all the more equipped

  • to explore other fields of other areas of computer science.

  • But even if you choose for CS50 or any other science classes

  • to be your last, that you can now bring to bear some of these concepts

  • and these practical skills back to the arts and the humanities,

  • social sciences, and beyond to actually solve problems using computing and data

  • all the more effectively.

  • So in a final sentimental note, a look back at CF50 this past year

  • starring you.

  • [VIDEO PLAYBACK]

  • [MUSIC - BIRDY, "KEEP YOUR HEAD UP"]

  • Times that I've seen you lose your way, not in control, and you won't be told.

  • All I can do to keep you safe is hold you close, hold you

  • close till you can breath on your own, till you can breath on your own.

  • Hold tight.

  • You're slowly coming back to life.

  • I'll be keeping your head up.

  • I'll be keeping your head up, darling.

  • Let go of all your haunted dreams tonight.

  • I'll be keeping your head up.

  • I'll be keeping your head up, darling.

  • Hold tight.

  • You're slowly coming back to life.

  • I'll be keeping your head up.

  • I'll be keeping your head up, darling.

  • Let go of all your haunted dreams tonight.

  • I'll be keeping your head up.

  • I'll be keeping your head up.

  • And I won't let you down.

  • [END PLAYBACK]

  • SPEAKER 1: Thank you so much.

  • Let me turn things over to Benedict, and I'll see you in a bit for cake.

  • BENEDICT: Thank you, of course, to David and Doug and the whole CS50

  • team at Harvard for a fabulous semester, to all of you for a fabulous semester,

  • to Natalie and the rest of our staff here at Yale,

  • and also to Judy Page and Sue Hurlburt who you don't see but,

  • Natalie and I work closely with, to make this class happen.

  • We're really excited by how well it's been going, how well you guys have all

  • been doing.

  • And we really want to see you all around the department.

  • So I'm going to talk for a little bit about some of the classes

  • that we're offering in the spring that we think you should all consider

  • and that you're all ready to take.

  • And then I'm going to pass it off to some of my colleagues

  • who are also teaching classes this spring, that you

  • may want to consider taking.

  • And again, that you can jump right into--

  • great ways to explore different aspects of computer science, or to know you

  • love this, and you want to dive right into the major.

  • So the list here is the classes in the spring that do not

  • have any prerequisites beyond CF50.

  • And we'll talk in just a few minutes about each one

  • of those and also about 223, which would be the logical thing to take after 201.

  • So two of these o35 and 078.

  • These are freshmen seminars.

  • If you're not a freshmen, when we talk about these,

  • you should put your fingers in your ears and go la la la la,

  • because the university will not allow you to take them,

  • and there's nothing that we can do about that.

  • But that doesn't make them any less cool.

  • If you are a freshmen, pay attention because you get one shot at this

  • and then hopefully you're no longer a freshmen and you're out of luck.

  • We have 200 and 201, which are some of our core sequence

  • and an entrepreneurship class and a digital humanities class,

  • and then of course data structures that is kind of, after that,

  • all of our upper level classes open up.

  • So we also have a bunch of majors.

  • And this is something that you may or may not realize.

  • We are not just a peer computer science major.

  • That's a great thing to do.

  • I did that.

  • I survived I enjoyed it.

  • But there's also ways to do a computer science plus math or psychology

  • or engineering major, electrical engineering, where

  • you take roughly the same number of classes as a single major,

  • but you split them between two disciplines.

  • And those ones are pretty natural combinations,

  • but we also have a computing in the arts major, which is

  • a little different than a joint major.

  • It's its own distinct major, which means it has its own distinct director

  • of undergraduate studies.

  • But here you combine about six classes in computer science

  • with about six classes in one of the arts disciplines.

  • So that could be architecture or fine arts or history of art or music

  • or theater, and these are all areas where Yale is also really strong.

  • And its a great way to look at ways that you can use computer science together

  • with other disciplines and also ways that you can pursue multiple interests.

  • Students graduate out of this and go on to get all sorts of jobs, including

  • all of the same jobs that you typically think

  • of a computer science major getting.

  • But it opens the door to other things as well and to exploring other interests.

  • So the computing in the arts major-- just a little bit more about it.

  • This is an interdepartmental major.

  • We've got these different groups set up, where you take six computer science

  • courses, including the core, and then you take about six classes

  • from one of the other departments, and that way you

  • get the grounding in computer science and the experience with that, and then

  • a discipline.

  • And then you start to think about how you can apply them together.

  • So architecture of course is building things,

  • and that's becoming very computational using computer science

  • to develop new structures--

  • art as well.

  • Art history-- this is an area--

  • I work a lot with conservators and archaeologists,

  • and I'll be talking about that.

  • And music-- and we'll have Scott Peterson talk to you some

  • about computer music.

  • And theater, and again these people go off

  • and work at all sorts of cool places.

  • You're not jeopardizing money.

  • You don't have to make money you don't want to.

  • I did, after all go into academia.

  • But if you have further questions, the person to contact

  • is Professor Dorsey, who is unfortunately out of town today.

  • So she couldn't be here.

  • She will also be teaching one of these freshmen seminars

  • in the spring on essentially 3D design.

  • In some sense, you don't need a technical background.

  • But it is a somewhat technical course.

  • So you guys are well-prepared for it, and you'll

  • be talking about 3D scanning, to measure shapes of existing objects,

  • how to model on the computer new shapes, how to modify 3-D models,

  • how to produce them using things like 3D printing and milling and laser cutting.

  • Some of those are things we have in the department.

  • We have 3D printers.

  • In CEID, which you can also sign up for, there's

  • a whole suite of these tools for making things.

  • And, again, you don't need any programming experience.

  • All of you have it.

  • You should have essentially high school math, high school trigonometry,

  • and you have to be a freshmen and you have

  • to pre-register through the freshman seminar lottery for which, if you're

  • curious, you may also want to talk to your college dean

  • and make sure that you understand the process for that.

  • And then it goes into a lottery.

  • And if you're lucky, you get in.

  • So these classes are small.

  • They're limited.

  • The level of math that would be involved in this class

  • would be, for example, when you're doing 3D scanning,

  • you end up having two cameras, and you know the way they're oriented

  • and you know, for instance, that they maybe 10 centimeters apart.

  • So if both of them are seeing the same point on an object,

  • that forms a triangle and you want to know the distance from one

  • of your cameras to the objects.

  • So you can find out how far away it is.

  • And from that, you get shape.

  • And basically, you look at this and you say, well, I know the angle alpha,

  • I know the angle beta, I know this distance 10 centimeters.

  • I can apply the angle side angle theorem to know

  • that I can calculate this point.

  • In particular, there is a law of signs that you plug this formula in,

  • and you find out that if these two points are 10 centimeters apart,

  • you're looking at something that's 13.7 centimeters away.

  • So there's not going to be more than that.

  • We're not talking about advanced calculus.

  • We're not talking about knowing all sorts of programming skills

  • or how 3D models actually work.

  • And it's going to be a combination of lectures and labs and discussions.

  • Again, it will be a limited size class as a seminar.

  • There will be some guest lectures.

  • You'll take a field trip to blue sky that makes the Ice Age movies.

  • They're a big East coast animation studio.

  • Again, if you have questions about that, talk

  • to Professor Dorsi, who's teaching it.

  • And I definitely encourage you, if you're a freshman, to check it out.

  • There's another one that all of you can take

  • that I will be teaching which is a course on applications

  • in the digital humanities.

  • And this is a brand new course.

  • And so it will adapt a little bit depending

  • on exactly who is in the class and how many of you are in the class.

  • I hope there's plenty.

  • And the idea is to talk about different ways

  • to use computer science in the humanities,

  • and then to work in groups on projects, on different projects

  • in the digital humanities.

  • And so I'm having discussions right now with faculty

  • all over campus about interesting projects in their domain

  • so that we'll have a range of ideas to start with.

  • But we'll do about half the semester talking

  • both about application digital humanities, but also about web

  • application development.

  • So these are sort of continuing from pset 8--

  • how do you program in JavaScript, how do you write Flask applications

  • and go a little more advanced than we've done in CS50.

  • How do you write richer web applications with richer client side interfaces?

  • And then how do you apply those?

  • It turns out there's all sorts of applications in the humanities

  • where you want to build databases and can

  • start to ask questions about your data and look for connections between things

  • once you have the tools to assemble all of that data and to visualize it.

  • And so there will be different kinds of things.

  • Some of the ones that I have lined up already

  • will be to detect the meter in poetry and build

  • a database of meter and different poems by different authors

  • and start to look at things like is there a particular style of how

  • one poet may play with meter or similarities between different poets

  • that you might be able to classify, but also as a tool to do this detection

  • and help the process along a good interface for it.

  • There is one with the Yale Babylonian collection,

  • to build a really good database, not just for saying let a search

  • a cylinder seal and see a pretty picture of it

  • and see all of the data we have about it,

  • but also see context, see relationships to other cylinder seals,

  • be able to say, ah, this one has a carving of a stag on it.

  • Let me find the other ones that have carvings of stags on them

  • and try and find relationships and connections between them

  • that can be useful for research.

  • Another interesting one that I learned about yesterday is

  • potentially to curator essentially the public art on campus--

  • so all of the stone carvings on buildings,

  • all of the paintings hanging in buildings,

  • and understand what we have on campus, what

  • we know about the provenance and history and state of preservation,

  • what things we should really take down.

  • And then how do we present those and contextualize them?

  • So I took this picture yesterday.

  • You may have seen a similar picture in the newspaper.

  • This is a carving that was on the outside of Sterling Library

  • right near the entrance to the CTL.

  • And somebody noticed I think last summer that there

  • was this carving on a back entrance of a pilgrim shooting an Indian.

  • And you stop and scratch your head and say,

  • there's nobody that really thinks that's in good taste any longer.

  • And so maybe we should not put it somewhere

  • that is now becoming a prominent entrance to the library.

  • So it's sitting on West Campus in the conservation lab at the moment.

  • But these are sorts of questions that you might be looking into and asking.

  • Working with me on ways to look at potential

  • matches between fragments of ancient wall paintings.

  • These are fragments of wall paintings from Roman times,

  • from about 2000 years ago for example.

  • So a range of different sorts of projects, some with music,

  • and that's what--

  • I'm hoping to then bring in some computer scientists,

  • some people interested in computer science,

  • some are interested in computer and the arts,

  • some interested really in just in the applications to their domains

  • to get a dynamic atmosphere where you're learning from each other

  • and about the kinds of questions you can ask.

  • And again, if you have any questions, you

  • can always feel free to email me about them.

  • And then I want to move on.

  • Scott is another lecturer in the computer science department

  • and specializes in computer music.

  • SCOTT: Awesome, hello.

  • I'm Scott Peterson.

  • I'm a lecturer in computer science.

  • I joined the department last year after serving

  • a number of years in the music department,

  • doing sort of various technological things.

  • I teach four classes, CPSC 035, which I'll talk about at some length

  • in a little bit, 134, 431, 432.

  • And I'm also the director of the Yale Open Music initiative, which

  • I don't know if you've heard about.

  • But I'll also talked about in just a bit.

  • Before I do that, I'll talk very briefly about classes that you probably

  • can't take yet, although maybe.

  • And those are 431 and 432.

  • They are algorithmic and heuristic composition, and sound synthesis

  • respectively.

  • And they have prerequisites, which are 202 and 223, I think.

  • And essentially, they are together a sort

  • of complete look at computer assisted music composition and sound

  • synthesis together-- so using a high level language,

  • and we use supercollider for all of these classes,

  • looking at ways that the machine can help us both organize notes, think

  • about music in different ways, and then also sort

  • of delve into how sound is constructed from the very lowest

  • level of digital representations inside the machine.

  • Before I talk about 35 and 134, I'll talk very briefly

  • about the Yale Open Music initiative.

  • So this is not a class.

  • This is just something that you can join or attend workshops that we give.

  • So this is a sort of loose group of people who are interested in everything

  • at the intersection of music and technology.

  • So this might mean computer music programming outside

  • of the sort of classroom setting.

  • It could mean putting together machines that

  • have arrays of sensors that then send sensor data back

  • to a laptop that asks it for said data and then does

  • some sort of sonification with it.

  • And it's generally informal.

  • We've been the recipient of a couple seed grants

  • that have allowed us to buy some cool stuff, our arduinos and Raspberry Pis

  • and put some of these machines together.

  • And we've given at least one of these workshops in conjunction

  • with the new center for collaborative arts and media,

  • which is another place that you should check out

  • if your interests sort of intersect computer technology and anything

  • sort of artistic.

  • So 134 also has no prerequisites.

  • It uses the same high level language, which is supercollider,

  • to investigate how the machine can help us compose music, also sound

  • synthesis, and also interaction.

  • So this is a quick shot from the music studio in computer science

  • where students of 134 were just working with arduinos and sensor arrays

  • to input incoming sensor data into laptops and supercollider

  • and then sonify that data and some sort of hopefully meaningful way.

  • The enrollment is generally small for these classes.

  • So if you like small classes and a lot of time that sort of seminar

  • feel that you might not get in a class of this size,

  • then this class may be for you.

  • And this is offered in the fall.

  • So the next course is CPSC 025.

  • So this is a freshmen seminar.

  • This is where you plug yours if you're not a freshmen.

  • And this class is divided into generally three parts.

  • The first part is music production.

  • And so we spend a lot of time talking about how we can capture sound

  • in the real world, represent that sound in the machine and software,

  • and then investigating digital audio workstations for sound production,

  • processing, etc.

  • The second part of the class is programming and supercollider,

  • again-- so sort of all the stuff that I talked about.

  • It's a gentle introduction.

  • It doesn't assume that you have any programming, but obviously you do.

  • And then the third part--

  • sort of my favorite part-- is this intersection

  • of the real world and the machine.

  • This is physical computing and sensors, and this

  • is where the wheel meets the road.

  • And we have a lot of projects that work with real world sensor data, that

  • work with human movement, that can sense ambient light, that can sense motion.

  • And then we talk about some of the issues of converting that

  • into meaningful musical information.

  • So if you have any questions about--

  • pardon me-- any questions about any of these or the Open Music initiative

  • or you want a a tour of the music studio in computer science, please

  • feel free to email me.

  • Thanks so much.

  • [APPLAUSE]

  • KYLE JENSEN: Hi, I teach a class that helps you use your computer science

  • knowledge from CS50 to build startups.

  • That could be nonprofits.

  • That could be some scalable software startup like Facebook or Snapchat.

  • The class is computer science 213.

  • It's also management 659.

  • My name is Kyle Jensen.

  • I'm Associate Dean at the Yale School of Management.

  • And this is one of my favorite classes.

  • The class is essentially 50% web application development, full stack,

  • and 50% class that you might find at the business school teaching

  • an introduction to entrepreneurship.

  • Fundamentally, the class helps you identify

  • customers, people whose lives you can change in some fashion,

  • to verify to yourself that those people have some problem that you think

  • they have, to build a business around that,

  • and the technology skills you need in order to do that.

  • I think you should take the class.

  • It's fantastic.

  • Again, my name is Kyle Jensen.

  • You can easily find me on the interwebs.

  • Thank you.

  • [APPLAUSE]

  • STEPHEN SLADE: So I think I have slides.

  • Let's see if this works.

  • Yeah, look at that.

  • OK, I'm Stephen Slade.

  • And I teach both CS200 and 201.

  • And who am I?

  • I am a hybrid.

  • I am both theory and practice.

  • So I was a Yale undergraduate.

  • I majored in music, and I study computer science.

  • I came back here to graduate school.

  • I got a master's in PhD in computer science.

  • In the meantime, I worked in presidential campaigns

  • at the White House designing computer systems, management information

  • systems.

  • I also taught in the business school at NYU.

  • And from there, I migrated to Wall Street.

  • I worked in finance and risk management for many years.

  • So I've looked the world from both sides now,

  • from both the practical and the theoretical.

  • And in theory, there's no difference between theory and practice.

  • But in practice, there is.

  • I've written three books.

  • They were all dedicated to Yale alumni, namely my family.

  • So my wife went to Yale.

  • My three children went to Yale.

  • I have two daughters who majored in computer science,

  • and they both work at Google.

  • I'm a big believer in educating women to be computer scientists.

  • And when they were growing up, I viewed my job as not teaching them to read,

  • but teaching them to love to read.

  • I didn't view my job as teaching them to play the piano,

  • but teaching them to love to play the piano.

  • And I view my job here in CS200 and 201 as not teaching you computer science,

  • but teaching you to love computer science.

  • And I think that's what David tries to do as well.

  • That's my impression.

  • Anyway, so there are two courses--

  • 200 and 201.

  • And they're sort of sister courses, sibling courses.

  • They're meant to be theory and practice.

  • So 200 is more practice, 201 is more theory.

  • But they have the Common Core in that they both satisfy the prerequisites

  • for a future in computer science.

  • And in particular, if you take either course, you will learn recursion.

  • And see what happens when you Google recursion.

  • And it's an interesting exercise.

  • You will learn Unix.

  • You will learn computer architecture, machine language.

  • There are programming assignments about every week or so,

  • much like you had in CS50.

  • And in addition, I introduce what I call logical problems.

  • And the idea is to make you realize that you make assumptions

  • about the world that often are false.

  • And this is the bane of the computer programmer,

  • that when you're writing a computer program,

  • you make assumptions about the input or the behavior of the user,

  • and often those assumptions are false.

  • So what I try to do is train you to think out of the box,

  • to think in terms larger than what your normal assumptions are.

  • So for example, here's this a representative logical problem.

  • What is the next number in the following sequence--

  • 1969, 73, 77, 81, 85, 91, 93, 99.

  • What's the next number?

  • Anyone know?

  • All right, let's analyze it.

  • First of all, they're all years.

  • All right, they're all odd years.

  • Am

  • OK, the current year is 2017, which is an odd year.

  • So that's a plausible answer to the question.

  • So anyone want to guess what the answer to the question is?

  • OK, good because no one will know the answer until at least this weekend,

  • and maybe not even then.

  • [INAUDIBLE]

  • That's almost right.

  • So 1999 was the last time Yale beat Harvard in New Haven.

  • So maybe this Saturday we'll know the answer to the question.

  • We'll see.

  • It's supposed to rain, I think.

  • Anyway.

  • OK, 201, 201 is a prerequisite for the rest of the major,

  • and it's meant to teach you theory.

  • So it teaches you recursion, Unix, machine language, computer

  • architecture.

  • The programming language you used is Racket,

  • which is a dialect of Scheme and LISP.

  • These were languages that were developed maybe 50 years ago,

  • and they've evolved primarily at MIT.

  • But they've been used for artificial intelligence for many years.

  • Putting Racket on your resume is not going to get you anywhere.

  • It's going to get you odd questions.

  • So that's not the point.

  • We will learn Turing machines, Boolean logic.

  • You'll see how to design software that emulates digital gates and circuits.

  • You'll write machine language for a fictional machine, the TC201.

  • We will look at formal languages, regular expressions,

  • deterministic finite automata.

  • We'll look at computational complexity and analysis of algorithms.

  • I think you did a little bit of that in CS50.

  • I have a link here to the syllabus for the current semester

  • in case you want to look.

  • And CS201 satisfies the de jure requirement for the major

  • and for courses like 223.

  • 200 is meant to be the practical alternative to 201.

  • And as I say at the bottom, it satisfies the de facto requirements

  • for the higher level courses.

  • So for example, you learn enough about computer science and programming,

  • recursion, Unix, machine language to take the higher level courses,

  • but sometimes you may need the permission of the instructor.

  • But in general, it hasn't been an issue.

  • If you're not a computer science major and you merely

  • want to take a course that will help you in other areas of life,

  • this is probably a reasonable course to take.

  • In particular, the programming language we use

  • is Python, which you should put on your resume--

  • Python.

  • And we will look at Python in much more detail than you had in CS50,

  • but the fact that you've had it already is probably beneficial.

  • So we will do object oriented programming in Python,

  • which is like object oriented programming in C and C++.

  • We'll look at software engineering issues.

  • We will look at databases-- and not only how to use a database like SQL,

  • but actually how to build a database system in an object oriented way.

  • We'll use Python to build an object oriented database.

  • We will do machine language but not on a theoretical machine, the TC201.

  • We'll see how to interpret machine language that's generated by Python.

  • So Python generates what's called byte code,

  • and you will write a byte code interpreter for Python in the course.

  • We'll also look at practical real world problems,

  • not Turing machines, not Boolean expressions.

  • But we will look at cryptography and information security.

  • We will look at machine learning, which is also sort of generally known--

  • it covers things like big data and data science.

  • And we'll look at applications.

  • So some practical applications of machine learning

  • include driverless cars and actually information security.

  • So these days, one interesting application of machine learning

  • is using machine learning to break encryption codes,

  • or to create encryption codes.

  • And again, I have the address of the syllabus from last spring.

  • It'll be a little bit different this year based on what I've said here.

  • And I think that's it.

  • [APPLAUSE]

  • I'll be around if people have questions.

  • JIM: So, yes, so I'm Jim [INAUDIBLE].

  • I'm the DUS for computer science.

  • And I also teach computer science 223, or at least will

  • be teaching computer science 223 in the spring.

  • So what I was asked to come here and talk about was both of these-- first,

  • I'm going to talk about computer science 223

  • and why you might want to or not take that class

  • or not take that class at some point in the future

  • and what's involved in doing that.

  • And then I'm going to talk a little bit more

  • broadly about the computer science major,

  • if that's something that some of you might be considering or some

  • of the other options related to that, like our joint majors

  • or, in some cases, the possibility of double majoring.

  • I did not actually bring any slides.

  • So I'm just going to stand here and wave my arms around a bit.

  • Maybe I'll actually stand up.

  • And I suppose if we have anything that we need to draw,

  • we do have the blackboard here.

  • So let me start by talking about 223.

  • 223 is usually the second programming oriented course

  • that people take as part of the computer science major, the first one

  • being computer science 201.

  • If you are thinking of being a computer science major,

  • you should probably go through 201 first.

  • 201 is formally a prerequisite for 223, but as with all prerequisites at Yale,

  • this is an open negotiating position.

  • And with permission of the instructor, you

  • can take 223 without previously taking 201.

  • That being said, historically students who have come in to 223

  • without taking 201 have generally not done as well in 223

  • and then 323 after that as people who go through the normal track.

  • If you are doing the computer science major,

  • we do not necessarily require you to take 201 if you've already done 223.

  • But we do ask you to do an extra elective to make up for it.

  • In terms of the actual content of the class, the title the class

  • is data structures and programming techniques.

  • And that's mostly what it's about.

  • We talk about programming from the point of view

  • of how do you organize your code, the programming techniques side on the one

  • part, and how do you organize your data that's

  • operating on the data structure side.

  • The thing that people often find odd running into it, which was probably

  • not going to be so much an issue for you guys having come through CS50,

  • is the language of instruction is C. So for people

  • coming into the program who are used to languages like Java,

  • this can be a little bit of a shock, given that C is

  • such a terrible programming language.

  • We do you C for a reason, which is that we're

  • trying to get you an understanding of computers down at a fairly low level,

  • at the point of individual bits getting shoved around, maybe not so much

  • in 223, but certainly by the time you get to 323.

  • And C is about as close as we can get to actual assembly language

  • and still have it be something that's usable by any human beings

  • at this point pretty much.

  • And so that's why we use that in 223 323.

  • If you want to come take 223, you should feel free to check it out.

  • And then like I said, I'll be teaching it this spring.

  • We offer it generally every semester now.

  • So if you don't want to take it immediately,

  • if you want to consider looking into 201,

  • which we also offer every semester, you can go do that first and then

  • and then come back.

  • It's really up to you.

  • Any questions about 223?

  • All right, so now I'd like to move on to topic two, which

  • is the computer science major.

  • Which I don't know how many of you might be thinking about the computer science

  • major.

  • But so I'm the DUS for computer science, which

  • means that I'm responsible for administering the computer science

  • majors.

  • Since it's a very large major, we actually

  • have two other people who do advising within the major.

  • We have a sophomore class advisor who is currently a professor,

  • [? Rezeech ?] [? Pizscoch, ?] and a junior class advisor,

  • who is currently Yang Yang, although he'll be replaced by [? Brent ?]

  • [? Schuzuleti ?] next semester because he's going to be on leave.

  • I handle all the seniors and freshmen and also handle

  • issues that come up that are a little bit more involved in terms of dealings

  • with the major.

  • The major itself is a fairly straightforward major.

  • We have five core classes, 201 and 223, which

  • I mentioned already, 201 being the introduction to kind

  • of all of computer science intended to give you

  • an idea of what you're getting into.

  • And then 223 is the first of two programming

  • oriented classes on the kind of a track of 223 and 323,

  • which are basically what I mentioned already.

  • And then 323 is more of a systems programming

  • class and computer organization class aimed

  • at giving you an idea of how things work at a fairly low level

  • and how hardware works and so forth.

  • We also have a sort of math theory track on the other side.

  • And we now have basically two versions of that.

  • The standard version of that is computer science 202,

  • mathematical tools for computer science and computer science 365 algorithms.

  • The purpose of 202 is to take people who don't necessarily

  • have much background in mathematics and give you

  • what is often called mathematical maturity, an idea of how proofs work

  • and how definitions work and how things in mathematics works,

  • and kind of cover a little bit about the various different areas

  • within mathematics that are relevant to computer science, mostly

  • in order to get you up to speed so that when

  • you hit 365, the algorithms class--

  • which is a class about reasoning, about things

  • you would be implementing in programs without actually implementing them--

  • you will have the mathematical tools to actually be able to do that.

  • And having gone through the core classes, these five classes,

  • we then ask you to go and do six electives on top of that

  • for the bachelor of science degree plus your senior project, four

  • electives plus the senior project if you're

  • doing the Bachelor of Arts degree.

  • And these advanced electives will typically

  • be 400 level classes in computer science.

  • These vary in terms of what prerequisites they have.

  • You can actually start taking electives pretty much once you

  • get through to 223, and there even one or two that do not have anything

  • beyond 201 as a prerequisite.

  • And of course, as you take more and more of the core classes, more of those

  • will open up.

  • So the typical schedule-- people will start by going and doing

  • 201, 202, 223, and so forth.

  • And as the electives become available, you'll

  • start filling them until the point where you get to maybe your senior year,

  • you will be mostly taking electives and doing your senior project.

  • The other track I should mention for the theory side

  • is that if you were really gung ho about mathematics

  • and the theory end of computer science, you

  • have the option of, instead of taking computer science 202,

  • you can take the discrete math course over in mathematics, mathematics 244.

  • And if you do that, that opens up the intensive version

  • of the algorithms class, computer science 366, which is basically

  • a more advanced version of our standard algorithms class,

  • which some people might like to take.

  • So any questions about the basic major or anything like that?

  • We also offer several joint majors.

  • There is a joint major with mathematics, computer science, and mathematics,

  • a joint major with psychology.

  • We also have a joint major with electrical engineering,

  • electrical engineering and computer science.

  • These all have more or less the same structure.

  • You have to take essentially the core classes in both majors.

  • But then when you get up to the elective level,

  • instead of making you take a full set of electives from both sides,

  • you generally have an abbreviated list of electives

  • that you're expected to take from either side,

  • typically working out to about 14 or 15 credits

  • total by the time you complete the major.

  • And you do a single senior project that is acceptable to both majors.

  • Some people will also do double majors by taking advantage of the fact

  • that the computer science major, particularly if you do the BA,

  • is a fairly thin major.

  • So we get a lot of people who will do, say,

  • a BA in computer science, which is 10 credits, and then a major

  • in some other area.

  • And these can vary for departments all the way across Yale.

  • If you can arrange for something that has overlap with computer science, that

  • has courses in common or the courses that

  • could be counted as electives to both majors,

  • this can also be efficient because you can actually

  • get down to as little as eight extra electives

  • to add on a computer science major because we allow up

  • to two courses of overlap.

  • I personally don't necessarily recommend doing a double major just

  • for the sake of doing a double major.

  • But if you're taking a lot of these classes anyway,

  • this might be something that you can look into.

  • I think that's basically it.

  • SPEAKER 1: Thanks so much.

  • All right, so we are officially adjourned.

  • Please join us and the staff in back for cake.

  • And we'll see you at the hackathon and fair.

[MUSIC PLAYING]

字幕と単語

ワンタップで英和辞典検索 単語をクリックすると、意味が表示されます

A2 初級

CS50 2017 - 講義12 - イェールでの終わり (CS50 2017 - Lecture 12 - The End at Yale)

  • 28 2
    小克 に公開 2021 年 01 月 14 日
動画の中の単語