[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:12.93,0:00:16.98,Default,,0000,0000,0000,,This presentation is delivered by the\NStanford Center for Professional Development Dialogue: 0,0:00:25.54,0:00:30.01,Default,,0000,0000,0000,,Hi! Welcome, welcome to CS106B,\NProgramming Abstractions. Dialogue: 0,0:00:30.01,0:00:33.01,Default,,0000,0000,0000,,(maybe now our mic is on? Oh, that's iteresting.) Dialogue: 0,0:00:34.00,0:00:37.00,Default,,0000,0000,0000,,The website was probably the most important\Nthing to take away from here, Dialogue: 0,0:00:37.00,0:00:38.00,Default,,0000,0000,0000,,where can you find information about the class Dialogue: 0,0:00:38.00,0:00:40.00,Default,,0000,0000,0000,,for the talk today and give some\Noverview and stuff like that, Dialogue: 0,0:00:40.00,0:00:42.00,Default,,0000,0000,0000,,but this is the home base for all the material. Dialogue: 0,0:00:42.00,0:00:45.39,Default,,0000,0000,0000,,If you managed to get the handouts\Non the way in, you're golden. Dialogue: 0,0:00:45.40,0:00:47.16,Default,,0000,0000,0000,,Otherwise, you can grab them from the website. Dialogue: 0,0:00:47.16,0:00:49.43,Default,,0000,0000,0000,,There's a lot of background information,\Nstaff information, Dialogue: 0,0:00:49.43,0:00:51.52,Default,,0000,0000,0000,,office hours, all sorts of stuff gathered there. Dialogue: 0,0:00:51.52,0:00:53.12,Default,,0000,0000,0000,,It's kind of one stop shopping for Dialogue: 0,0:00:53.12,0:00:56.00,Default,,0000,0000,0000,,figuring things out about our course. Dialogue: 0,0:00:56.00,0:00:57.25,Default,,0000,0000,0000,,Let me tell you what I'm going to do today. Dialogue: 0,0:00:58.00,0:01:00.48,Default,,0000,0000,0000,,The first day of, I know a lot of you are shopping Dialogue: 0,0:01:00.48,0:01:01.48,Default,,0000,0000,0000,,trying to figure out what's the right fit for you, Dialogue: 0,0:01:01.48,0:01:04.00,Default,,0000,0000,0000,,so hopefully today, I'm going to\Ntry to give you some information that will Dialogue: 0,0:01:04.00,0:01:05.00,Default,,0000,0000,0000,,help you make a good decision. Dialogue: 0,0:01:05.00,0:01:07.00,Default,,0000,0000,0000,,I want to tell you a little bit\Nof what our course is about, Dialogue: 0,0:01:07.00,0:01:09.09,Default,,0000,0000,0000,,tell you a little bit about the\Nadministration and logistics Dialogue: 0,0:01:09.09,0:01:11.53,Default,,0000,0000,0000,,most of that stuff is pretty ordinary,\Nand you can read about it. Dialogue: 0,0:01:11.53,0:01:13.25,Default,,0000,0000,0000,,Of course, I have to do a little bit of marketing. Dialogue: 0,0:01:13.25,0:01:14.88,Default,,0000,0000,0000,,I get to give you my unbiased opinions Dialogue: 0,0:01:14.88,0:01:17.00,Default,,0000,0000,0000,,of why this is the absolute\Nbest class you could possibly take. Dialogue: 0,0:01:17.00,0:01:20.00,Default,,0000,0000,0000,,(I get paid per student, you know.) Dialogue: 0,0:01:20.00,0:01:22.00,Default,,0000,0000,0000,,(That's not true.) Dialogue: 0,0:01:23.00,0:01:24.64,Default,,0000,0000,0000,,Maybe we'll even have time to check out Dialogue: 0,0:01:24.64,0:01:27.13,Default,,0000,0000,0000,,a little bit of the C++ language\Nbefore we're done and set today. Dialogue: 0,0:01:27.46,0:01:30.23,Default,,0000,0000,0000,,(and this needs to go away) Dialogue: 0,0:01:30.76,0:01:32.59,Default,,0000,0000,0000,,Let me tell you about CS106. Dialogue: 0,0:01:33.27,0:01:37.00,Default,,0000,0000,0000,,CS106 is the introductory programming\Nsequence here at Stanford. Dialogue: 0,0:01:37.00,0:01:40.00,Default,,0000,0000,0000,,It's our version of CS1,\Nwhere you start at the beginning Dialogue: 0,0:01:40.00,0:01:43.00,Default,,0000,0000,0000,,when you are interested in\Nlearning more about programming. Dialogue: 0,0:01:43.00,0:01:46.00,Default,,0000,0000,0000,,We have a two-quarter sequence,\NA and B, that kind of follow together. Dialogue: 0,0:01:46.00,0:01:48.17,Default,,0000,0000,0000,,They're not particularly tightly coupled, which is to say Dialogue: 0,0:01:48.17,0:01:51.34,Default,,0000,0000,0000,,if you took A and you took little a break, you could come back to B. Dialogue: 0,0:01:51.34,0:01:54.16,Default,,0000,0000,0000,,Or maybe you you actually took a variant of 106a type course Dialogue: 0,0:01:54.16,0:01:59.00,Default,,0000,0000,0000,,that is similar at another institution,\Nyou're probably in a fine place for starting mid stream. Dialogue: 0,0:01:59.00,0:02:04.43,Default,,0000,0000,0000,,We also have an alternate form of B, the CS106X, which is kind of an honors version of that second course. Dialogue: 0,0:02:04.43,0:02:07.09,Default,,0000,0000,0000,,So after you've taken that first course and you're feeling really jazzed up, Dialogue: 0,0:02:07.13,0:02:11.00,Default,,0000,0000,0000,,there is an alternative more intense way to get through the second course that's Dialogue: 0,0:02:11.00,0:02:14.00,Default,,0000,0000,0000,,offered. It's offered this quarter, in fact, so if you're Dialogue: 0,0:02:14.00,0:02:17.00,Default,,0000,0000,0000,,thinking actually about that, that is an option for you as well as Dialogue: 0,0:02:17.00,0:02:18.00,Default,,0000,0000,0000,,sticking with us. Dialogue: 0,0:02:18.00,0:02:19.57,Default,,0000,0000,0000,,What do we do in 106A? Dialogue: 0,0:02:19.57,0:02:22.23,Default,,0000,0000,0000,,'A's official title is programming methodology. Dialogue: 0,0:02:22.87,0:02:25.00,Default,,0000,0000,0000,,It is starting at the very beginning Dialogue: 0,0:02:25.00,0:02:26.00,Default,,0000,0000,0000,,and assuming you have no background in programming. Dialogue: 0,0:02:26.00,0:02:29.00,Default,,0000,0000,0000,,It's teaching you how it works, Dialogue: 0,0:02:29.00,0:02:32.00,Default,,0000,0000,0000,,what the languages look like, what the syntax is like, what things you need Dialogue: 0,0:02:32.00,0:02:34.58,Default,,0000,0000,0000,,to know about how to solve problems using a computer. Dialogue: 0,0:02:34.58,0:02:38.08,Default,,0000,0000,0000,,It covers a lot of the fundamentals about logic control Dialogue: 0,0:02:38.08,0:02:41.00,Default,,0000,0000,0000,,and in general, I think the big issues of 106A Dialogue: 0,0:02:41.00,0:02:44.00,Default,,0000,0000,0000,,have less to do with any particular syntax or Dialogue: 0,0:02:44.00,0:02:46.00,Default,,0000,0000,0000,,feature that you learn about a language but Dialogue: 0,0:02:46.00,0:02:47.88,Default,,0000,0000,0000,,about how do you solve problems on a computer? Dialogue: 0,0:02:47.88,0:02:49.00,Default,,0000,0000,0000,,Somebody gives you a specification of Dialogue: 0,0:02:49.00,0:02:50.00,Default,,0000,0000,0000,,you need to write a program that does X, Dialogue: 0,0:02:50.00,0:02:52.00,Default,,0000,0000,0000,,and you have to figure out how to make that happen, Dialogue: 0,0:02:52.00,0:02:54.02,Default,,0000,0000,0000,,how to break it down, Dialogue: 0,0:02:54.02,0:02:57.00,Default,,0000,0000,0000,,how to step through it, how to develop it, how to test it, Dialogue: 0,0:02:57.00,0:03:00.00,Default,,0000,0000,0000,,how to iterate on it, how to make changes in it later, Dialogue: 0,0:03:00.00,0:03:04.00,Default,,0000,0000,0000,,how to debug it when it's not working well, Dialogue: 0,0:03:04.00,0:03:06.70,Default,,0000,0000,0000,,and those things, (I think), transcend any particular language. Dialogue: 0,0:03:06.70,0:03:09.00,Default,,0000,0000,0000,,We happen to use the Java programming language in our 106A course Dialogue: 0,0:03:09.00,0:03:12.79,Default,,0000,0000,0000,,because it's a great tool for introductory programming, Dialogue: 0,0:03:13.00,0:03:15.06,Default,,0000,0000,0000,,but I don't think of that as being really critical. Dialogue: 0,0:03:15.06,0:03:17.00,Default,,0000,0000,0000,,In fact, if your introductory course was in some other language, Dialogue: 0,0:03:17.00,0:03:19.00,Default,,0000,0000,0000,,some other fairly modern, high level language Dialogue: 0,0:03:19.00,0:03:20.00,Default,,0000,0000,0000,,- let's say Dialogue: 0,0:03:20.00,0:03:24.94,Default,,0000,0000,0000,,you've learned in Python, C, Scheme, or something other than Java, Dialogue: 0,0:03:25.00,0:03:28.00,Default,,0000,0000,0000,,you're probably still fine, 'cause what we're really counting on in B is that you know how to Dialogue: 0,0:03:28.00,0:03:30.50,Default,,0000,0000,0000,,program and think like a computer scientist Dialogue: 0,0:03:30.50,0:03:32.00,Default,,0000,0000,0000,,know how to solve problems Dialogue: 0,0:03:32.00,0:03:34.00,Default,,0000,0000,0000,,Not a lot of the details of the syntax Dialogue: 0,0:03:34.00,0:03:37.00,Default,,0000,0000,0000,,are going to be important to us. Dialogue: 0,0:03:37.00,0:03:40.00,Default,,0000,0000,0000,,"B" picks up from there, saying okay, you've got some fundamentals. Dialogue: 0,0:03:40.00,0:03:43.00,Default,,0000,0000,0000,,Let's start really learning some of the techniques that extend the range of Dialogue: 0,0:03:43.00,0:03:45.00,Default,,0000,0000,0000,,problems you can solve. Dialogue: 0,0:03:45.00,0:03:48.18,Default,,0000,0000,0000,,We look at recursion, which is one of the fundamental Dialogue: 0,0:03:48.18,0:03:50.00,Default,,0000,0000,0000,,problem solving techniques that involves using Dialogue: 0,0:03:50.00,0:03:52.15,Default,,0000,0000,0000,,something akin to mathematical induction Dialogue: 0,0:03:52.15,0:03:54.00,Default,,0000,0000,0000,,to solve problems in terms of themselves. Dialogue: 0,0:03:54.00,0:03:56.05,Default,,0000,0000,0000,,Looking at a lot of algorithms for sorting Dialogue: 0,0:03:56.05,0:03:57.00,Default,,0000,0000,0000,,and searching and hashing and doing Dialogue: 0,0:03:57.00,0:03:58.00,Default,,0000,0000,0000,,things efficiently, knowing how to compare Dialogue: 0,0:03:58.00,0:04:01.00,Default,,0000,0000,0000,,and contrast alternatives in algorithms, Dialogue: 0,0:04:01.00,0:04:04.04,Default,,0000,0000,0000,,having some formalisms by which to discuss those things, Dialogue: 0,0:04:04.04,0:04:08.00,Default,,0000,0000,0000,,and learn some of the classics that are out there for solving these problems. Dialogue: 0,0:04:08.00,0:04:11.00,Default,,0000,0000,0000,,The dynamic data structure, which involves use of pointers to construct things Dialogue: 0,0:04:11.00,0:04:14.01,Default,,0000,0000,0000,,like lists, trees and heaps, graphs that Dialogue: 0,0:04:15.00,0:04:18.00,Default,,0000,0000,0000,,model certain structures that are very effective in solving certain kinds of Dialogue: 0,0:04:18.00,0:04:19.57,Default,,0000,0000,0000,,problems - we'll work through those. Dialogue: 0,0:04:19.57,0:04:22.00,Default,,0000,0000,0000,,A large part of our time is spent on this concept Dialogue: 0,0:04:22.00,0:04:23.90,Default,,0000,0000,0000,,of data abstraction, which is why Dialogue: 0,0:04:23.90,0:04:27.00,Default,,0000,0000,0000,,abstraction shows up as the main word in our title. Dialogue: 0,0:04:29.02,0:04:31.00,Default,,0000,0000,0000,,As we start to solve more and more complex problems, Dialogue: 0,0:04:31.00,0:04:34.00,Default,,0000,0000,0000,,the code itself can kind of become overwhelming if we don't have some Dialogue: 0,0:04:34.00,0:04:36.00,Default,,0000,0000,0000,,technique for managing that complexity. Dialogue: 0,0:04:36.00,0:04:39.91,Default,,0000,0000,0000,,One of the big themes for 106B is how we can use this idea of abstraction, Dialogue: 0,0:04:39.91,0:04:42.00,Default,,0000,0000,0000,,building something and dealing with the low level details but then Dialogue: 0,0:04:42.00,0:04:44.00,Default,,0000,0000,0000,,closing up the box and now treating it as a Dialogue: 0,0:04:44.00,0:04:47.88,Default,,0000,0000,0000,,a fixed entity and building on top of that Dialogue: 0,0:04:47.88,0:04:49.00,Default,,0000,0000,0000,,and then closing another layer around that Dialogue: 0,0:04:49.00,0:04:52.00,Default,,0000,0000,0000,,as a way of working on something, finishing it Dialogue: 0,0:04:52.00,0:04:53.48,Default,,0000,0000,0000,,moving on to some larger piece without Dialogue: 0,0:04:53.48,0:04:55.71,Default,,0000,0000,0000,,having those details clouding our way. Dialogue: 0,0:04:55.71,0:04:59.00,Default,,0000,0000,0000,,It's a very powerful technique for solving larger problems. Dialogue: 0,0:04:59.00,0:05:00.00,Default,,0000,0000,0000,,In that context, Dialogue: 0,0:05:00.00,0:05:04.00,Default,,0000,0000,0000,,we'll be looking at some of the classic data structures, Dialogue: 0,0:05:04.00,0:05:06.00,Default,,0000,0000,0000,,like stacks, queues, lists, maps and sets Dialogue: 0,0:05:06.00,0:05:08.00,Default,,0000,0000,0000,,as part of the domain for that. Dialogue: 0,0:05:08.00,0:05:11.00,Default,,0000,0000,0000,,We do happen to use the C++ programming language, Dialogue: 0,0:05:11.00,0:05:14.00,Default,,0000,0000,0000,,but this is not a C++ course, so to be clear about what you're Dialogue: 0,0:05:14.00,0:05:16.00,Default,,0000,0000,0000,,getting versus what you wanted, Dialogue: 0,0:05:16.00,0:05:17.80,Default,,0000,0000,0000,,we use Java here (as a vehicle) [a]. Dialogue: 0,0:05:17.80,0:05:20.00,Default,,0000,0000,0000,,We use C++ here (as a vehicle) [b]. Dialogue: 0,0:05:20.00,0:05:22.70,Default,,0000,0000,0000,,We happen to think there are good reasons Dialogue: 0,0:05:22.70,0:05:24.39,Default,,0000,0000,0000,,to actually expose you to both languages. Dialogue: 0,0:05:24.39,0:05:25.96,Default,,0000,0000,0000,,(ill talk about that more later) Dialogue: 0,0:05:26.00,0:05:29.00,Default,,0000,0000,0000,,In particular, C++ is an enormous language. Dialogue: 0,0:05:29.00,0:05:30.99,Default,,0000,0000,0000,,It has a lot of language features as well as Dialogue: 0,0:05:30.99,0:05:32.00,Default,,0000,0000,0000,,a very very large standard library, Dialogue: 0,0:05:32.00,0:05:33.95,Default,,0000,0000,0000,,and our goal is not at all Dialogue: 0,0:05:33.95,0:05:36.00,Default,,0000,0000,0000,,to turn you into this industrial strength Dialogue: 0,0:05:36.00,0:05:37.00,Default,,0000,0000,0000,,knows every detail about quirks Dialogue: 0,0:05:37.00,0:05:38.00,Default,,0000,0000,0000,,and ins and outs of C++. Dialogue: 0,0:05:38.91,0:05:41.00,Default,,0000,0000,0000,,There is another class, 193D, that Dialogue: 0,0:05:41.00,0:05:43.00,Default,,0000,0000,0000,,does attempt to do that. Dialogue: 0,0:05:43.00,0:05:45.00,Default,,0000,0000,0000,,In fact, if that's what you're looking for, Dialogue: 0,0:05:45.00,0:05:47.00,Default,,0000,0000,0000,,I suggest you take a look at that. Dialogue: 0,0:05:47.00,0:05:47.97,Default,,0000,0000,0000,,What we're here about is learning Dialogue: 0,0:05:47.97,0:05:50.00,Default,,0000,0000,0000,,advanced programming techniques Dialogue: 0,0:05:50.00,0:05:52.02,Default,,0000,0000,0000,,taking those foundations and building on them Dialogue: 0,0:05:52.02,0:05:53.99,Default,,0000,0000,0000,,to be able to solve more interesting problems. Dialogue: 0,0:05:53.99,0:05:54.99,Default,,0000,0000,0000,,We happen to use C++. Dialogue: 0,0:05:54.99,0:05:56.00,Default,,0000,0000,0000,,You will learn some C++, but I almost Dialogue: 0,0:05:56.00,0:05:58.00,Default,,0000,0000,0000,,consider it a side effect Dialogue: 0,0:05:58.00,0:06:00.00,Default,,0000,0000,0000,,of what we're doing. Dialogue: 0,0:06:03.95,0:06:06.00,Default,,0000,0000,0000,,Just a little note on placement Dialogue: 0,0:06:06.00,0:06:09.04,Default,,0000,0000,0000,,if you're kind of in between and not really sure, Dialogue: 0,0:06:09.04,0:06:13.00,Default,,0000,0000,0000,,these are the very very rough guidelines, but they give you Dialogue: 0,0:06:13.00,0:06:17.00,Default,,0000,0000,0000,,some idea of which groups gravitate where. Dialogue: 0,0:06:17.00,0:06:18.00,Default,,0000,0000,0000,,If you are new to programming or Dialogue: 0,0:06:18.00,0:06:20.00,Default,,0000,0000,0000,,you're not confident about your background Dialogue: 0,0:06:20.00,0:06:22.03,Default,,0000,0000,0000,,- maybe it was a long time ago, if it was self-taught. Dialogue: 0,0:06:22.03,0:06:23.00,Default,,0000,0000,0000,,Maybe it was in a course that you Dialogue: 0,0:06:23.00,0:06:25.09,Default,,0000,0000,0000,,felt was not as good as it could have been Dialogue: 0,0:06:26.00,0:06:27.00,Default,,0000,0000,0000,,or you didn't do as well in it, Dialogue: 0,0:06:27.00,0:06:29.00,Default,,0000,0000,0000,,106A is a great place to start. Dialogue: 0,0:06:29.00,0:06:31.00,Default,,0000,0000,0000,,It actually is by all accounts Dialogue: 0,0:06:31.00,0:06:34.00,Default,,0000,0000,0000,,an extremely popular course at Stanford Dialogue: 0,0:06:34.00,0:06:36.09,Default,,0000,0000,0000,,and services a wide group of people Dialogue: 0,0:06:36.09,0:06:39.00,Default,,0000,0000,0000,,with a little bit of background or no background. Dialogue: 0,0:06:39.00,0:06:42.00,Default,,0000,0000,0000,,All very well getting them up to speed. Dialogue: 0,0:06:42.00,0:06:45.00,Default,,0000,0000,0000,,If you do have something like a solid first course experience Dialogue: 0,0:06:45.00,0:06:47.00,Default,,0000,0000,0000,,So you did well in 106A or took a similar course Dialogue: 0,0:06:47.00,0:06:48.97,Default,,0000,0000,0000,,or perhaps even self-taught your way Dialogue: 0,0:06:48.97,0:06:53.01,Default,,0000,0000,0000,,through a lot of those materials and you feel ready to move on, 106B. Dialogue: 0,0:06:53.01,0:06:55.00,Default,,0000,0000,0000,,An AP course in high school - Dialogue: 0,0:06:55.00,0:06:59.00,Default,,0000,0000,0000,,the A curriculum is a pretty good match for 106A here Dialogue: 0,0:06:59.00,0:07:00.00,Default,,0000,0000,0000,,so you're in a great place. Dialogue: 0,0:07:00.00,0:07:01.98,Default,,0000,0000,0000,,If you have this and you've got a little bit more going for you Dialogue: 0,0:07:01.98,0:07:04.00,Default,,0000,0000,0000,,or you're super enthused and you have a Dialogue: 0,0:07:04.00,0:07:06.00,Default,,0000,0000,0000,,lot of extra time this quarter Dialogue: 0,0:07:06.00,0:07:09.00,Default,,0000,0000,0000,,and want to sit in the company of only Dialogue: 0,0:07:09.00,0:07:11.00,Default,,0000,0000,0000,,the uber geeks, Dialogue: 0,0:07:11.00,0:07:13.00,Default,,0000,0000,0000,,you can check out 106X, Dialogue: 0,0:07:13.00,0:07:15.00,Default,,0000,0000,0000,,Which is a varient of B Dialogue: 0,0:07:15.00,0:07:17.00,Default,,0000,0000,0000,,which covers the same kind of topical ground Dialogue: 0,0:07:17.00,0:07:18.00,Default,,0000,0000,0000,,but at a different level intensity. Dialogue: 0,0:07:18.00,0:07:20.00,Default,,0000,0000,0000,,It amps up a little bit of the assignments, Dialogue: 0,0:07:20.01,0:07:22.96,Default,,0000,0000,0000,,covers some of the material that we won't get a chance to cover, Dialogue: 0,0:07:23.93,0:07:25.00,Default,,0000,0000,0000,,and Dialogue: 0,0:07:25.00,0:07:27.00,Default,,0000,0000,0000,,just pushes the envelope a little bit there. Dialogue: 0,0:07:27.00,0:07:30.00,Default,,0000,0000,0000,,If you have experience comparable to the first two courses Dialogue: 0,0:07:30.00,0:07:31.00,Default,,0000,0000,0000,,- you've Dialogue: 0,0:07:31.94,0:07:34.00,Default,,0000,0000,0000,,done all the things that we're talking about here in B Dialogue: 0,0:07:34.00,0:07:35.00,Default,,0000,0000,0000,,and you feel comfortable with it, Dialogue: 0,0:07:35.00,0:07:37.00,Default,,0000,0000,0000,,it might be that the right place for you is 107, Dialogue: 0,0:07:37.00,0:07:39.99,Default,,0000,0000,0000,,which is the third course in our sequence. Dialogue: 0,0:07:39.99,0:07:42.89,Default,,0000,0000,0000,,And just skipping over our 106 courses entirely Dialogue: 0,0:07:43.92,0:07:45.97,Default,,0000,0000,0000,,That's somewhat rare, Dialogue: 0,0:07:45.97,0:07:47.00,Default,,0000,0000,0000,,so if you're thinking about that, I encourage you to Dialogue: 0,0:07:47.00,0:07:49.01,Default,,0000,0000,0000,,talk to me a little bit to make sure Dialogue: 0,0:07:49.01,0:07:51.00,Default,,0000,0000,0000,,that you won't be missing out on something important Dialogue: 0,0:07:51.00,0:07:54.00,Default,,0000,0000,0000,,in doing so, but certainly there are students who have Dialogue: 0,0:07:55.00,0:07:56.97,Default,,0000,0000,0000,,for example, the AP CS A-B curriculum Dialogue: 0,0:07:56.97,0:07:59.00,Default,,0000,0000,0000,,is pretty comparable to this course here, Dialogue: 0,0:07:59.00,0:08:02.51,Default,,0000,0000,0000,,and so depending on how high quality the course you had was, Dialogue: 0,0:08:02.51,0:08:04.00,Default,,0000,0000,0000,,it might very well be that 107 is right. Dialogue: 0,0:08:04.00,0:08:06.00,Default,,0000,0000,0000,,In some situations where that course was a little bit lacking, Dialogue: 0,0:08:06.00,0:08:09.05,Default,,0000,0000,0000,,there may be some ways that we can help reinforce Dialogue: 0,0:08:09.05,0:08:10.97,Default,,0000,0000,0000,,the things you've learned and build a stronger foundation Dialogue: 0,0:08:10.97,0:08:14.03,Default,,0000,0000,0000,,to move forward from rather than jumping ahead. Dialogue: 0,0:08:15.00,0:08:18.00,Default,,0000,0000,0000,,Any questions about placement? Dialogue: 0,0:08:20.00,0:08:22.00,Default,,0000,0000,0000,,That sort of thing. Dialogue: 0,0:08:22.00,0:08:23.65,Default,,0000,0000,0000,,(Am I talking too fast?) Dialogue: 0,0:08:23.83,0:08:27.00,Default,,0000,0000,0000,,(good, I like that, you can sit in the front whenever you want) Dialogue: 0,0:08:27.98,0:08:30.00,Default,,0000,0000,0000,,Lets talk philosophy Dialogue: 0,0:08:30.00,0:08:34.00,Default,,0000,0000,0000,,I think there's a statement about what we officially are, Dialogue: 0,0:08:34.00,0:08:38.00,Default,,0000,0000,0000,,but I also think that 106 has a long tradition at Stanford Dialogue: 0,0:08:38.00,0:08:40.00,Default,,0000,0000,0000,,that comes back from student motivation. Dialogue: 0,0:08:40.86,0:08:43.00,Default,,0000,0000,0000,,I was here as an undergrad in the 80s Dialogue: 0,0:08:43.00,0:08:45.00,Default,,0000,0000,0000,,when 106s were just getting off the ground, Dialogue: 0,0:08:45.00,0:08:47.00,Default,,0000,0000,0000,,and at the time, Stanford only had a graduate Dialogue: 0,0:08:47.00,0:08:49.00,Default,,0000,0000,0000,,computer science department, and Dialogue: 0,0:08:49.00,0:08:52.00,Default,,0000,0000,0000,,the belief in the nsaid period for computer science Dialogue: 0,0:08:52.00,0:08:53.96,Default,,0000,0000,0000,,was you should get a math degree, Dialogue: 0,0:08:53.96,0:08:55.00,Default,,0000,0000,0000,,and only then would you be mature enough Dialogue: 0,0:08:55.00,0:08:57.00,Default,,0000,0000,0000,,to learn about computers. Dialogue: 0,0:08:57.00,0:08:59.51,Default,,0000,0000,0000,,You weren't ready as a freshman. Dialogue: 0,0:09:00.00,0:09:02.00,Default,,0000,0000,0000,,was a groundswell of Stanford students Dialogue: 0,0:09:02.00,0:09:04.95,Default,,0000,0000,0000,,were like said 'We want access to programming. We want it.' Dialogue: 0,0:09:04.95,0:09:06.00,Default,,0000,0000,0000,,That made it happen. Dialogue: 0,0:09:06.00,0:09:09.00,Default,,0000,0000,0000,,and so part of the 106 was a really careful thought about what the 106's Dialogue: 0,0:09:09.00,0:09:12.00,Default,,0000,0000,0000,,would be a Stanford and what we want them to be Dialogue: 0,0:09:12.00,0:09:13.96,Default,,0000,0000,0000,,in a philosophical sense. Dialogue: 0,0:09:13.96,0:09:16.21,Default,,0000,0000,0000,,One is that we welcome students of\Nall majors and backgrounds. Dialogue: 0,0:09:16.21,0:09:19.00,Default,,0000,0000,0000,,We don't have a version of 106 that's for the majors or Dialogue: 0,0:09:19.00,0:09:21.09,Default,,0000,0000,0000,,potential majors and a version that's for the non-majors Dialogue: 0,0:09:21.09,0:09:24.00,Default,,0000,0000,0000,,and a version that's terminal (you just want to get out of here). Dialogue: 0,0:09:24.00,0:09:27.00,Default,,0000,0000,0000,,We really think that we can bring you all together Dialogue: 0,0:09:27.00,0:09:31.00,Default,,0000,0000,0000,,and design a course that addresses this wide Dialogue: 0,0:09:31.00,0:09:32.99,Default,,0000,0000,0000,,disparate group but still service that well. Dialogue: 0,0:09:33.00,0:09:36.00,Default,,0000,0000,0000,,Partly because you don't know that\Nyou are a CS major yet. Dialogue: 0,0:09:36.00,0:09:39.00,Default,,0000,0000,0000,,I'm going to turn you into a CS major.\NThat's my plan. Dialogue: 0,0:09:39.00,0:09:42.00,Default,,0000,0000,0000,,At Stanford right,\Nnot having to make that choice about a major Dialogue: 0,0:09:42.00,0:09:44.00,Default,,0000,0000,0000,,until into junior year is a gift Dialogue: 0,0:09:45.00,0:09:49.00,Default,,0000,0000,0000,,to allow you to explore\Nand to feel unencumbered by having made some Dialogue: 0,0:09:49.00,0:09:51.00,Default,,0000,0000,0000,,decision when you applied,\Nand I think it's important to respect that Dialogue: 0,0:09:51.00,0:09:53.97,Default,,0000,0000,0000,,gift that Stanford gave you by\Ntrying to make sure our courses don't Dialogue: 0,0:09:54.01,0:09:56.00,Default,,0000,0000,0000,,funnel you one way or\Nthe other before you figure it out. Dialogue: 0,0:09:57.00,0:09:58.00,Default,,0000,0000,0000,,You are all welcome here. Dialogue: 0,0:09:58.00,0:10:00.00,Default,,0000,0000,0000,,We try to make it accessible to everyone. Dialogue: 0,0:10:00.00,0:10:03.00,Default,,0000,0000,0000,,We have certain plans \Nthat help to make that work. Dialogue: 0,0:10:03.00,0:10:07.00,Default,,0000,0000,0000,,We do try to provide a solid,\Npractical foundation in programming Dialogue: 0,0:10:07.00,0:10:11.00,Default,,0000,0000,0000,,that given our placement at Stanford\Nin the middle of the Silicon Valley, Dialogue: 0,0:10:11.00,0:10:14.00,Default,,0000,0000,0000,,there's kind of a strong influence\Nfor us to try to produce students Dialogue: 0,0:10:14.00,0:10:16.00,Default,,0000,0000,0000,,who from the get go are Dialogue: 0,0:10:16.00,0:10:18.00,Default,,0000,0000,0000,,learning things that are actually quite useful Dialogue: 0,0:10:18.00,0:10:19.00,Default,,0000,0000,0000,,outside of the classroom Dialogue: 0,0:10:19.00,0:10:22.00,Default,,0000,0000,0000,,rather than teach you a very academic Dialogue: 0,0:10:22.00,0:10:24.00,Default,,0000,0000,0000,,interesting and mathematical\Nlanguage like Scheme Dialogue: 0,0:10:24.00,0:10:27.00,Default,,0000,0000,0000,,that is very Dialogue: 0,0:10:27.00,0:10:29.04,Default,,0000,0000,0000,,rarely used outside of the classroom. Dialogue: 0,0:10:29.04,0:10:31.00,Default,,0000,0000,0000,,We're trying to teach you on the tools, Dialogue: 0,0:10:31.00,0:10:34.00,Default,,0000,0000,0000,,languages and techniques that are actually in active practice. Dialogue: 0,0:10:34.00,0:10:38.00,Default,,0000,0000,0000,,We are using Java and C++,\Ntwo of the most prevalent languages Dialogue: 0,0:10:38.00,0:10:40.07,Default,,0000,0000,0000,,out in the industry, and\Nwe do a lot of learn by doing. Dialogue: 0,0:10:40.07,0:10:42.00,Default,,0000,0000,0000,,We assign challenging, full-fledged\Nprograms that you work on and you build Dialogue: 0,0:10:42.00,0:10:46.65,Default,,0000,0000,0000,,and so it's not designed to be\Nacademic exercises. Dialogue: 0,0:10:47.00,0:10:54.04,Default,,0000,0000,0000,,You really are building skills\Nthat have applicability here and\Noutside of the class. Dialogue: 0,0:10:55.00,0:10:58.00,Default,,0000,0000,0000,,We have a big emphasis on Dialogue: 0,0:10:58.00,0:10:59.05,Default,,0000,0000,0000,,truth and beauty. Dialogue: 0,0:11:01.00,0:11:04.01,Default,,0000,0000,0000,,This is one area in which some of the\Nsubstitute courses Dialogue: 0,0:11:04.01,0:11:07.00,Default,,0000,0000,0000,,that we have seen students come in with\Nhave a little bit more trouble with Dialogue: 0,0:11:07.00,0:11:10.00,Default,,0000,0000,0000,,is tackling this part of it,\Nwhich is that there are Dialogue: 0,0:11:10.00,0:11:12.00,Default,,0000,0000,0000,,a lot of ways you can get a program to work. Dialogue: 0,0:11:12.00,0:11:14.00,Default,,0000,0000,0000,,Many of them are not pretty. Dialogue: 0,0:11:14.00,0:11:17.00,Default,,0000,0000,0000,,You can just type and type and type and\N(Monkies shakespeare, whatnot) Dialogue: 0,0:11:17.00,0:11:19.00,Default,,0000,0000,0000,,eventually, you can get your way to\Nsomething that works. Dialogue: 0,0:11:19.02,0:11:23.01,Default,,0000,0000,0000,,Well +1, -1, what if I move it here\Nwhat if I copy and paste this there Dialogue: 0,0:11:23.01,0:11:25.02,Default,,0000,0000,0000,,what if I change that name? Dialogue: 0,0:11:25.02,0:11:27.00,Default,,0000,0000,0000,,That, in the end,\Nmight produce a program that from Dialogue: 0,0:11:27.00,0:11:28.00,Default,,0000,0000,0000,,external appearances works. Dialogue: 0,0:11:28.00,0:11:33.72,Default,,0000,0000,0000,,It plays hangman, or whatever was the\Ndesired goal, but that internally is a mess. Dialogue: 0,0:11:34.00,0:11:36.98,Default,,0000,0000,0000,,It's not well structured.\NIt's not well commented. Dialogue: 0,0:11:36.98,0:11:40.00,Default,,0000,0000,0000,,It's not easy to understand.\NIt wouldn't be easy to modify. Dialogue: 0,0:11:40.00,0:11:42.00,Default,,0000,0000,0000,,It makes a lot of decision that are really sub optimal, Dialogue: 0,0:11:42.00,0:11:48.00,Default,,0000,0000,0000,,and we're really interested in producing\Nengineers Dialogue: 0,0:11:48.00,0:11:52.00,Default,,0000,0000,0000,,that have a good sense of design and \Nreally appreciate what is involved in writing Dialogue: 0,0:11:52.00,0:11:56.00,Default,,0000,0000,0000,,good, well designed software, \Nnot just working software. Dialogue: 0,0:11:56.00,0:11:57.00,Default,,0000,0000,0000,,We will be giving you feedback on Dialogue: 0,0:11:57.00,0:12:00.00,Default,,0000,0000,0000,,both the correctness and\Nfunctionality of your code Dialogue: 0,0:12:01.74,0:12:05.00,Default,,0000,0000,0000,,as important if not more so, Dialogue: 0,0:12:05.00,0:12:08.00,Default,,0000,0000,0000,,also on how well we think you did\Nat designing and implementing and Dialogue: 0,0:12:08.00,0:12:11.03,Default,,0000,0000,0000,,writing code that is of\Na high quality. Dialogue: 0,0:12:11.03,0:12:12.03,Default,,0000,0000,0000,,We make a big deal out of that. Dialogue: 0,0:12:12.03,0:12:14.00,Default,,0000,0000,0000,,That is something that is not\Nalways shared by other classes, Dialogue: 0,0:12:14.00,0:12:16.51,Default,,0000,0000,0000,,and so in particular, someone who is self-taught Dialogue: 0,0:12:16.51,0:12:20.00,Default,,0000,0000,0000,,or in a class that didn't emphasize this\Nmight feel that there's a little bit of a gap there\N Dialogue: 0,0:12:20.00,0:12:21.00,Default,,0000,0000,0000,,we need to make\Nthat up with you, Dialogue: 0,0:12:21.00,0:12:23.49,Default,,0000,0000,0000,,and we can work with you. Dialogue: 0,0:12:23.49,0:12:26.00,Default,,0000,0000,0000,,This is a very individual thing,\Nbecause there's not one good example of Dialogue: 0,0:12:26.00,0:12:28.00,Default,,0000,0000,0000,,the perfect style Dialogue: 0,0:12:28.00,0:12:31.00,Default,,0000,0000,0000,,in the way that a lot of different people Dialogue: 0,0:12:31.00,0:12:34.00,Default,,0000,0000,0000,,express themselves in written communication Dialogue: 0,0:12:34.00,0:12:34.99,Default,,0000,0000,0000,,very well but differently. Dialogue: 0,0:12:34.99,0:12:36.50,Default,,0000,0000,0000,,The same thing is true about programs. Dialogue: 0,0:12:36.50,0:12:40.00,Default,,0000,0000,0000,,You will have your own unique style,\Nand we'll work with you to coach you on getting your Dialogue: 0,0:12:40.00,0:12:44.01,Default,,0000,0000,0000,,style to come through and\Nbe beautiful and elegant. Dialogue: 0,0:12:46.00,0:12:50.00,Default,,0000,0000,0000,,This kind of comes back to point 1\Nwe make heavy use of undergraduate Dialogue: 0,0:12:50.00,0:12:53.00,Default,,0000,0000,0000,,section leaders as mentors in this program. Dialogue: 0,0:12:53.00,0:12:59.00,Default,,0000,0000,0000,,We have a staff of 50 or so, undergraduates\Nwho work with the 106A, B and X courses as a team. Dialogue: 0,0:12:59.00,0:13:02.00,Default,,0000,0000,0000,,They have specific responsibilities with their section, Dialogue: 0,0:13:02.00,0:13:06.00,Default,,0000,0000,0000,,so mentoring and grading and meeting with Dialogue: 0,0:13:06.00,0:13:09.00,Default,,0000,0000,0000,,sectionees to give individualized\Nfeedback on their programs Dialogue: 0,0:13:09.00,0:13:10.00,Default,,0000,0000,0000,,as well as Dialogue: 0,0:13:10.00,0:13:13.76,Default,,0000,0000,0000,,answering questions, solving problems,\Nbeing in the lair 30 plus hours. Dialogue: 0,0:13:13.76,0:13:16.00,Default,,0000,0000,0000,,They're most weekday nights about six hours Dialogue: 0,0:13:16.00,0:13:17.00,Default,,0000,0000,0000,,and often Dialogue: 0,0:13:17.00,0:13:20.00,Default,,0000,0000,0000,,well past the midnight when it's supposed to cut off\Nsolving people's problems, Dialogue: 0,0:13:20.00,0:13:23.00,Default,,0000,0000,0000,,helping when you get stuck,\Nanswering your questions Dialogue: 0,0:13:23.00,0:13:26.00,Default,,0000,0000,0000,,and making sure you're all\Nmaking forward progress. Dialogue: 0,0:13:26.00,0:13:29.00,Default,,0000,0000,0000,,That comes back to point 1. Dialogue: 0,0:13:29.00,0:13:31.00,Default,,0000,0000,0000,,In some universities where they're\Nchoosing to use their intro course as a weeder, Dialogue: 0,0:13:31.00,0:13:33.69,Default,,0000,0000,0000,,it's like let's separate the wheat\Nfrom the chaff early Dialogue: 0,0:13:33.69,0:13:35.00,Default,,0000,0000,0000,,and let's make it really hard and not Dialogue: 0,0:13:35.00,0:13:38.00,Default,,0000,0000,0000,,provide too much support,\Nand that way we'll make sure we get the people we want. Dialogue: 0,0:13:38.00,0:13:41.00,Default,,0000,0000,0000,,We have a different idea. Dialogue: 0,0:13:41.00,0:13:42.00,Default,,0000,0000,0000,,Programming is hard,\Nespecially when you're learning. Dialogue: 0,0:13:42.00,0:13:46.00,Default,,0000,0000,0000,,There's a lot of complexity to master,\Nand there are a lot of details that can Dialogue: 0,0:13:46.00,0:13:49.00,Default,,0000,0000,0000,,interfere with moving forward,\Nand we don't want you Dialogue: 0,0:13:49.00,0:13:52.00,Default,,0000,0000,0000,,to get stuck on something that\Nwe can very easily resolve for you. Dialogue: 0,0:13:52.00,0:13:55.98,Default,,0000,0000,0000,,So make sure you have accessible\Nstaff members in person, in email Dialogue: 0,0:13:56.00,0:13:58.00,Default,,0000,0000,0000,,and regularly in section Dialogue: 0,0:13:58.00,0:14:04.00,Default,,0000,0000,0000,,to help get through the roadblocks\Nand keep you moving forward. Dialogue: 0,0:14:04.00,0:14:08.00,Default,,0000,0000,0000,,What do you need to know to be\Nsure you're going to do well? Dialogue: 0,0:14:08.00,0:14:12.00,Default,,0000,0000,0000,,There are people who think to\Nbe a good computer programmer, Dialogue: 0,0:14:12.00,0:14:16.00,Default,,0000,0000,0000,,you need to be good at math,\Nlogic, and drinking Jolt. Dialogue: 0,0:14:16.00,0:14:22.01,Default,,0000,0000,0000,,I think it it comes down to\Npersonality traits than any Dialogue: 0,0:14:22.02,0:14:24.50,Default,,0000,0000,0000,,particular technique or skill. Dialogue: 0,0:14:24.50,0:14:26.00,Default,,0000,0000,0000,,You don't need to be good at math. Dialogue: 0,0:14:26.00,0:14:29.00,Default,,0000,0000,0000,,How much calculus and trig shows up in this? Dialogue: 0,0:14:29.00,0:14:32.00,Default,,0000,0000,0000,,Not very much.\NA little bit of logic - that helps. Dialogue: 0,0:14:32.00,0:14:36.99,Default,,0000,0000,0000,,I think it comes down to traits like\Ncuriosity and determination and hard work. Dialogue: 0,0:14:37.00,0:14:37.98,Default,,0000,0000,0000,,Starting early, Dialogue: 0,0:14:37.98,0:14:41.00,Default,,0000,0000,0000,,asking questions\Nwhen you don't understand something, Dialogue: 0,0:14:41.00,0:14:43.51,Default,,0000,0000,0000,,trying to solve the problem by logic\NI think is very valuable Dialogue: 0,0:14:43.51,0:14:45.00,Default,,0000,0000,0000,,Knowing how to think,\Nhow to make steps Dialogue: 0,0:14:45.00,0:14:47.96,Default,,0000,0000,0000,,why this case works and\Nwhy that case doesn't work Dialogue: 0,0:14:47.97,0:14:51.72,Default,,0000,0000,0000,,thinking about that logically Dialogue: 0,0:14:51.76,0:14:55.74,Default,,0000,0000,0000,,(well its like the movie theater now you guys will all go to sleep)\N(oh look they came back) [lights] Dialogue: 0,0:14:57.00,0:15:01.12,Default,,0000,0000,0000,,I think these are the skills\Nthat serve you the best in this class Dialogue: 0,0:15:01.12,0:15:04.01,Default,,0000,0000,0000,,And probably\Nevery other thing you'd want to tackle. Dialogue: 0,0:15:04.01,0:15:08.00,Default,,0000,0000,0000,,There is a lot of time that will be spent\Nto master this. Dialogue: 0,0:15:08.00,0:15:11.11,Default,,0000,0000,0000,,I can talk about programming all I want,\N(bla, bla, bla) Dialogue: 0,0:15:11.11,0:15:13.00,Default,,0000,0000,0000,,and you can go oh, yeah, that makes a\Nlot of sense. Dialogue: 0,0:15:13.00,0:15:16.00,Default,,0000,0000,0000,,But when you go to write it yourself,\Nit's a very different experience. Dialogue: 0,0:15:16.00,0:15:19.96,Default,,0000,0000,0000,,That's where being\Nfocused and staying on task Dialogue: 0,0:15:20.00,0:15:25.04,Default,,0000,0000,0000,,and getting help when you get stuck\Ncan help you move through that Dialogue: 0,0:15:25.08,0:15:28.08,Default,,0000,0000,0000,,(Any questions about 106?)\N(What we do,) Dialogue: 0,0:15:28.09,0:15:32.07,Default,,0000,0000,0000,,(Why we do what we do.)\N(You guys have nothing to say) Dialogue: 0,0:15:32.07,0:15:34.07,Default,,0000,0000,0000,,(your afraid of having your)\N(voice recorded aren't you?) Dialogue: 0,0:15:34.07,0:15:39.02,Default,,0000,0000,0000,,(For all time your parents will come and see)\N(that you come to class you can prove it) Dialogue: 0,0:15:40.01,0:15:44.00,Default,,0000,0000,0000,,My unbiased opinion about why 106B is\None of the best courses at Stanford Dialogue: 0,0:15:44.00,0:15:47.00,Default,,0000,0000,0000,,(of course I am not at all unbiased) Dialogue: 0,0:15:47.00,0:15:50.00,Default,,0000,0000,0000,,it's going to be Dialogue: 0,0:15:50.00,0:15:53.00,Default,,0000,0000,0000,,totally obvious when I say these things,\Nand you guys are going to have to go Dialogue: 0,0:15:53.00,0:15:54.96,Default,,0000,0000,0000,,along with it.\NI'm actually a Dialogue: 0,0:15:55.00,0:15:58.00,Default,,0000,0000,0000,,geek, really big time,\Nand I happen to love programming. Dialogue: 0,0:15:58.00,0:16:00.00,Default,,0000,0000,0000,,That's why I'm a perfect fit for teaching this class. Dialogue: 0,0:16:00.00,0:16:01.49,Default,,0000,0000,0000,,I have taught 106 B or X more than I've taught Dialogue: 0,0:16:01.49,0:16:04.00,Default,,0000,0000,0000,,any other class that I've taught at\NStanford in my time here, Dialogue: 0,0:16:04.00,0:16:06.33,Default,,0000,0000,0000,,and that's because each quarter\Nwhen we're setting the schedule, Dialogue: 0,0:16:06.33,0:16:08.00,Default,,0000,0000,0000,,I say give me B.\NGive me X. Dialogue: 0,0:16:08.00,0:16:09.00,Default,,0000,0000,0000,,Because there's no better course to teach. Dialogue: 0,0:16:09.00,0:16:12.00,Default,,0000,0000,0000,,Programming is just awesome. Dialogue: 0,0:16:12.00,0:16:15.00,Default,,0000,0000,0000,,If you love programming,\NI think there's almost nothing better to do in the world. Dialogue: 0,0:16:15.00,0:16:17.51,Default,,0000,0000,0000,,You have this task.\NYou're trying to get there. Dialogue: 0,0:16:17.51,0:16:19.17,Default,,0000,0000,0000,,You're coding.\NYou're making stuff happen. Dialogue: 0,0:16:19.17,0:16:21.94,Default,,0000,0000,0000,,You're testing, iterating you're running.\NYou see stuff. Dialogue: 0,0:16:21.95,0:16:25.02,Default,,0000,0000,0000,,You build things.\NWhen you're done, you know it works. Dialogue: 0,0:16:25.02,0:16:28.00,Default,,0000,0000,0000,,That feeling when you write a paper and go\N"was it good enough?" Dialogue: 0,0:16:28.00,0:16:30.00,Default,,0000,0000,0000,,"well I dont know"\Nyou could probably go bolster up this argument Dialogue: 0,0:16:30.00,0:16:32.28,Default,,0000,0000,0000,,When a program works,\Nyou know it. Dialogue: 0,0:16:32.29,0:16:36.00,Default,,0000,0000,0000,,It does what it's supposed to do.\NIt gets the right answer. Dialogue: 0,0:16:36.00,0:16:38.02,Default,,0000,0000,0000,,It plays the game.\NIt solves the problem. Dialogue: 0,0:16:38.02,0:16:42.00,Default,,0000,0000,0000,,Finding and fixing that last bug\N- although debugging is one of the last Dialogue: 0,0:16:42.00,0:16:45.00,Default,,0000,0000,0000,,aspects of programming a lot of people bemoan about;\NI happen to think that if you Dialogue: 0,0:16:45.00,0:16:49.00,Default,,0000,0000,0000,,are driven by debugging,\Nthat is one of the most awesome detective stories Dialogue: 0,0:16:49.00,0:16:53.98,Default,,0000,0000,0000,,Trying to figure out why it happened when you did this,\Nwhen you moved that why it went this way Dialogue: 0,0:16:54.00,0:16:57.00,Default,,0000,0000,0000,,and what this effect caused\Nand understanding once you make the fix how it fixes it Dialogue: 0,0:16:57.00,0:16:58.93,Default,,0000,0000,0000,,staying up late. Dialogue: 0,0:16:58.93,0:17:02.00,Default,,0000,0000,0000,,I have stayed up late more nights debugging\Nthan anything else in my life, Dialogue: 0,0:17:02.00,0:17:04.00,Default,,0000,0000,0000,,and I'm not sad about that at all. Dialogue: 0,0:17:04.00,0:17:08.00,Default,,0000,0000,0000,,That means I'm in the right place.\NHopefully, some of that resonates with you. Dialogue: 0,0:17:09.02,0:17:12.00,Default,,0000,0000,0000,,If that sounds really awful to you, Dialogue: 0,0:17:12.00,0:17:14.00,Default,,0000,0000,0000,,hopefully we can change your mind a bit. Dialogue: 0,0:17:14.00,0:17:18.00,Default,,0000,0000,0000,,That is, in some ways,\Npart of what drives computer science is this Dialogue: 0,0:17:18.00,0:17:21.00,Default,,0000,0000,0000,,wanting to build things.\NWe are engineers. Dialogue: 0,0:17:21.00,0:17:24.00,Default,,0000,0000,0000,,We have this computer science name.\NJust remember Dialogue: 0,0:17:24.00,0:17:29.00,Default,,0000,0000,0000,,- any subject\Nthat's name is something science is not a science. Dialogue: 0,0:17:29.00,0:17:31.95,Default,,0000,0000,0000,,We're trying to puff ourselves up a bit. Dialogue: 0,0:17:32.00,0:17:34.00,Default,,0000,0000,0000,,We do a lot of really great work, Dialogue: 0,0:17:34.00,0:17:37.00,Default,,0000,0000,0000,,and there are a lot of neat scientific\Nprinciples and theories that Dialogue: 0,0:17:37.00,0:17:38.00,Default,,0000,0000,0000,,underpin what we do, Dialogue: 0,0:17:38.00,0:17:41.00,Default,,0000,0000,0000,,but in the end,\NI think what drives a lot of us is just Dialogue: 0,0:17:41.00,0:17:44.99,Default,,0000,0000,0000,,the engineering\N- building stuff that is really neat. Dialogue: 0,0:17:45.01,0:17:49.00,Default,,0000,0000,0000,,It kind of reminds me that my\Nhusband's a mechanical engineer, and so I Dialogue: 0,0:17:49.00,0:17:52.22,Default,,0000,0000,0000,,used to be envious, because\Nhe would always build things. Dialogue: 0,0:17:52.22,0:17:57.00,Default,,0000,0000,0000,,M.E.'s always toting foam core around the campus\Non their paper bicycles and stuff, and it's like Dialogue: 0,0:17:57.00,0:18:00.00,Default,,0000,0000,0000,,they build all these things.\NNow, having watched all the things he builds, it's like Dialogue: 0,0:18:00.00,0:18:02.00,Default,,0000,0000,0000,,mechan-e is really hard.\NYou need all these materials. Dialogue: 0,0:18:02.00,0:18:05.32,Default,,0000,0000,0000,,You need all these tools.\NYou need this mill, you need this lathe Dialogue: 0,0:18:05.32,0:18:07.43,Default,,0000,0000,0000,,You need the hotmelt glue gun,\Nwhich burns the heck out of your fingers Dialogue: 0,0:18:07.43,0:18:08.16,Default,,0000,0000,0000,,anytime you touch it. Dialogue: 0,0:18:08.16,0:18:10.66,Default,,0000,0000,0000,,To build anything. Dialogue: 0,0:18:10.93,0:18:12.56,Default,,0000,0000,0000,,In computer science, you don't need anything. Dialogue: 0,0:18:12.56,0:18:14.00,Default,,0000,0000,0000,,You need a compiler and you need a computer. Dialogue: 0,0:18:14.00,0:18:15.03,Default,,0000,0000,0000,,You need your thought. Dialogue: 0,0:18:15.03,0:18:18.00,Default,,0000,0000,0000,,It's like an abstraction we built out of our brains. Dialogue: 0,0:18:18.00,0:18:20.00,Default,,0000,0000,0000,,There's this relatively small set of things\Nthat you need to master Dialogue: 0,0:18:20.00,0:18:23.99,Default,,0000,0000,0000,,and then you can combine them in these very\Nsophisticated and interesting ways to solve all sorts of problems. Dialogue: 0,0:18:24.00,0:18:26.00,Default,,0000,0000,0000,,There's a very low overhead, Dialogue: 0,0:18:26.00,0:18:30.00,Default,,0000,0000,0000,,and the range of things you can attack\Nwith the same set of skills is huge. Dialogue: 0,0:18:30.00,0:18:36.02,Default,,0000,0000,0000,,Every domain out there can benefit from somebody\Napplying computers in a useful way without fail. Dialogue: 0,0:18:36.02,0:18:39.08,Default,,0000,0000,0000,,There's all sorts of problems\Nwhere technology is part of the answer Dialogue: 0,0:18:39.08,0:18:41.00,Default,,0000,0000,0000,,not the only answer,\Nbut certainly something that you can take Dialogue: 0,0:18:41.00,0:18:44.00,Default,,0000,0000,0000,,whatever interest you have\Nand combine it with computer science Dialogue: 0,0:18:44.00,0:18:47.00,Default,,0000,0000,0000,,and construct something cool. Dialogue: 0,0:18:47.00,0:18:51.00,Default,,0000,0000,0000,,I happen to think that what\Nhappens in the second course is amazing. Dialogue: 0,0:18:51.00,0:18:54.00,Default,,0000,0000,0000,,The first course,\Nyou've kind of got to get up to speed, Dialogue: 0,0:18:54.00,0:18:57.00,Default,,0000,0000,0000,,and there's a lot of basic material\Nthat needs to get covered, Dialogue: 0,0:18:57.00,0:19:00.00,Default,,0000,0000,0000,,and it does set you on the right path,\Nbut in this course, we really Dialogue: 0,0:19:00.00,0:19:04.00,Default,,0000,0000,0000,,get to blossom beyond the basic things. Dialogue: 0,0:19:04.00,0:19:07.00,Default,,0000,0000,0000,,There are a bunch of really neat\Nand very accessible techniques Dialogue: 0,0:19:07.00,0:19:11.00,Default,,0000,0000,0000,,that a second quarter student can understand\Nand master and do really cool things with. Dialogue: 0,0:19:11.00,0:19:14.05,Default,,0000,0000,0000,,You can learn how to do something like\Ncreate a database Dialogue: 0,0:19:14.05,0:19:17.00,Default,,0000,0000,0000,,that has a million entries Dialogue: 0,0:19:17.00,0:19:20.90,Default,,0000,0000,0000,,and then ask for somebody by name and be able to\Ninstantaneously be able to find that name. Dialogue: 0,0:19:20.90,0:19:23.00,Default,,0000,0000,0000,,Not by looking through a million\Nentries trying to find that name Dialogue: 0,0:19:23.00,0:19:26.00,Default,,0000,0000,0000,,Change the size of it.\NMake it ten million, a billion, and still be able to Dialogue: 0,0:19:26.00,0:19:29.00,Default,,0000,0000,0000,,provide that kind of instantaneous access.\NYou're going to learn how to do that. Dialogue: 0,0:19:29.00,0:19:32.00,Default,,0000,0000,0000,,The technique is not some superhuman thing. Dialogue: 0,0:19:32.00,0:19:34.00,Default,,0000,0000,0000,,It's something very clever, admittedly, Dialogue: 0,0:19:34.00,0:19:36.00,Default,,0000,0000,0000,,but it's very accessible. Dialogue: 0,0:19:36.00,0:19:40.00,Default,,0000,0000,0000,,Taking that same million thing and\Nlearning how to sort it efficiently. Dialogue: 0,0:19:40.00,0:19:42.00,Default,,0000,0000,0000,,What if you happen to know things about how it's\Nalmost sorted but just a little but out of sorts? Dialogue: 0,0:19:42.00,0:19:47.00,Default,,0000,0000,0000,,Are there ways you can actually make it\Neven faster to put it in sorted order? Dialogue: 0,0:19:47.00,0:19:50.00,Default,,0000,0000,0000,,There are techniques, for example,\Nlike recursion that take on problems that Dialogue: 0,0:19:50.00,0:19:53.00,Default,,0000,0000,0000,,you might not have any idea when you\Nfirst look at the problem how to solve Dialogue: 0,0:19:53.00,0:19:57.45,Default,,0000,0000,0000,,but once you've got your head around recursion,\Nyou can look at that and say Dialogue: 0,0:19:57.45,0:20:01.03,Default,,0000,0000,0000,,"I can write a five line function\Nthat will solve that problem." Dialogue: 0,0:20:01.03,0:20:05.67,Default,,0000,0000,0000,,This is the kind of power we're going to\Ngive you with our quarter together. Dialogue: 0,0:20:05.67,0:20:10.00,Default,,0000,0000,0000,,There's a bunch of really amazing\Ntheoretical and algorithmic stuff to explore. Dialogue: 0,0:20:10.00,0:20:14.00,Default,,0000,0000,0000,,That really increases the kind of things\Nyou can do with programming. Dialogue: 0,0:20:14.00,0:20:17.84,Default,,0000,0000,0000,,I'm particularly fond of it. Dialogue: 0,0:20:18.01,0:20:20.01,Default,,0000,0000,0000,,\NAs always, I think Dialogue: 0,0:20:20.01,0:20:23.00,Default,,0000,0000,0000,,the section leading program that we have\Ncreated and built at Stanford Dialogue: 0,0:20:23.00,0:20:27.03,Default,,0000,0000,0000,,Is a huge part of what makes our 106\Ncourses so successful, Dialogue: 0,0:20:27.03,0:20:28.00,Default,,0000,0000,0000,,and so Dialogue: 0,0:20:28.00,0:20:32.99,Default,,0000,0000,0000,,having somebody who's individually\Nworking with you, meeting with you weekly Dialogue: 0,0:20:34.00,0:20:37.00,Default,,0000,0000,0000,,and giving you that feedback that's\Nindividualized and personalized for you Dialogue: 0,0:20:37.00,0:20:41.00,Default,,0000,0000,0000,,and helping you get through the rough spots\Nis a lot of what helps to make the experience Dialogue: 0,0:20:41.00,0:20:44.00,Default,,0000,0000,0000,,very fun and very personal, too. Dialogue: 0,0:20:44.00,0:20:48.91,Default,,0000,0000,0000,,What section leaders do I have here?\NAny? Not a one. Dialogue: 0,0:20:49.00,0:20:52.00,Default,,0000,0000,0000,,Those fabulous section leaders.\NWhere are they again? section leaders? Dialogue: 0,0:20:52.00,0:20:54.03,Default,,0000,0000,0000,,Did i say they were fabulous?\NI meant. {\i1}laughs{\i0} Uhh no. Dialogue: 0,0:20:54.03,0:20:57.00,Default,,0000,0000,0000,,We haven't yet identified who's going\Nto what class, so maybe they're all Dialogue: 0,0:20:57.00,0:21:00.85,Default,,0000,0000,0000,,thinking they're going to go somewhere else,\Nbut they're wrong. We'll get some. Dialogue: 0,0:21:03.94,0:21:05.00,Default,,0000,0000,0000,,106B - great. You agree? Dialogue: 0,0:21:05.00,0:21:07.00,Default,,0000,0000,0000,,Have I convinced you? Dialogue: 0,0:21:07.00,0:21:10.00,Default,,0000,0000,0000,,Is anybody still hesitant? Dialogue: 0,0:21:13.00,0:21:16.00,Default,,0000,0000,0000,,Is it a lot of work?\NOh, no. {\i1}laughs{\i0} Dialogue: 0,0:21:16.00,0:21:19.00,Default,,0000,0000,0000,,I just exude it. Osmosis. you learn it. Dialogue: 0,0:21:21.98,0:21:24.92,Default,,0000,0000,0000,,Let me tell you a little bit about logistics. Dialogue: 0,0:21:26.00,0:21:30.00,Default,,0000,0000,0000,,There are some random things you may want\Nto know about how the class works. Dialogue: 0,0:21:30.00,0:21:34.00,Default,,0000,0000,0000,,That the first day I am supposed to do.\N Dialogue: 0,0:21:34.00,0:21:38.36,Default,,0000,0000,0000,,We're going to meet here\NMonday, Wednesday, Friday 2:15 to 3:05. Dialogue: 0,0:21:38.36,0:21:41.92,Default,,0000,0000,0000,,In glorious download\N[ FIXME ] audiotorium Dialogue: 0,0:21:41.93,0:21:45.06,Default,,0000,0000,0000,,It looks like we almost\Nexactly fit in our classroom, Dialogue: 0,0:21:45.06,0:21:47.79,Default,,0000,0000,0000,,which means we're all\Ngoing to be very friendly and cozy. Dialogue: 0,0:21:47.79,0:21:51.13,Default,,0000,0000,0000,,The lectures are being taped\Nand are available online, Dialogue: 0,0:21:51.13,0:21:56.54,Default,,0000,0000,0000,,and so that has the neat side effect that\Nyou can watch them and review them later.\N Dialogue: 0,0:21:56.54,0:21:58.00,Default,,0000,0000,0000,,You could watch them lots of times. Dialogue: 0,0:21:58.00,0:22:01.00,Default,,0000,0000,0000,,It also means that if it were pouring rain and\Nyou were sitting at home in your bunny slippers, Dialogue: 0,0:22:01.00,0:22:04.00,Default,,0000,0000,0000,,you could just say hey,\NI'm not going outside and you could Dialogue: 0,0:22:04.00,0:22:06.00,Default,,0000,0000,0000,,turn on your computer and watch. Dialogue: 0,0:22:06.00,0:22:09.00,Default,,0000,0000,0000,,I'm a big fan of having you come in person.\NThat's because I don't want to Dialogue: 0,0:22:09.00,0:22:11.00,Default,,0000,0000,0000,,lecture to an empty room. Dialogue: 0,0:22:11.00,0:22:14.00,Default,,0000,0000,0000,,I also think there's an interaction there Dialogue: 0,0:22:14.19,0:22:19.00,Default,,0000,0000,0000,,that I'm fond of, and so I hope that you\Nwill make every effort to attend in person\Nas much as you can. Dialogue: 0,0:22:22.01,0:22:26.99,Default,,0000,0000,0000,,It is nice to know that if you do miss a lecture or you Dialogue: 0,0:22:27.00,0:22:29.94,Default,,0000,0000,0000,,get caught up with something, you'll have a chance to review it later online. Dialogue: 0,0:22:30.00,0:22:32.00,Default,,0000,0000,0000,,We will have sections that will meet once a week, Dialogue: 0,0:22:32.00,0:22:34.97,Default,,0000,0000,0000,,just like 106A. Dialogue: 0,0:22:35.00,0:22:38.00,Default,,0000,0000,0000,,The section leader who meets with you is the one Dialogue: 0,0:22:38.00,0:22:41.00,Default,,0000,0000,0000,,who will be grading your programs and sitting with you\Nand doing the conferences. Dialogue: 0,0:22:41.00,0:22:45.94,Default,,0000,0000,0000,,What you need to do to get yourself\Ninto a section - there are several section times listed. Dialogue: 0,0:22:45.96,0:22:47.96,Default,,0000,0000,0000,,They are totally bogus. (so ignore that) Dialogue: 0,0:22:51.00,0:22:53.00,Default,,0000,0000,0000,,What you do is you go to the online\N- if you go to our class webpage, there's a link that tells Dialogue: 0,0:22:53.00,0:22:56.00,Default,,0000,0000,0000,,you how to sign up for a section.\NThe section times aren't up right now, but they will go up tomorrow, Dialogue: 0,0:22:56.00,0:22:58.00,Default,,0000,0000,0000,,and they'll be up through the weekend.\NYou go in and put in your preferences Dialogue: 0,0:22:58.00,0:23:03.93,Default,,0000,0000,0000,,about what times fit your schedule or not,\Nand there's this big computer program Dialogue: 0,0:23:04.00,0:23:08.79,Default,,0000,0000,0000,,that does this magic matching that gets\Neveryone into a section that fits their schedule. Dialogue: 0,0:23:08.88,0:23:11.88,Default,,0000,0000,0000,,That will happen early next week. Dialogue: 0,0:23:14.00,0:23:18.85,Default,,0000,0000,0000,,The signups will be up from Thursday at 5:00\Nuntil Sunday at 5:00. Dialogue: 0,0:23:18.96,0:23:22.00,Default,,0000,0000,0000,,If by Sunday at 5:00\Nyou've got your schedule fixed, then you're fine. Dialogue: 0,0:23:22.00,0:23:25.00,Default,,0000,0000,0000,,If you happen to change after Sunday at 5:00 and after the assignments have been made, Dialogue: 0,0:23:25.00,0:23:27.00,Default,,0000,0000,0000,,at that point, it's a little bit harder. Dialogue: 0,0:23:27.00,0:23:28.00,Default,,0000,0000,0000,,We can make adjustments, but it's on a very case-by-case basis.\N Dialogue: 0,0:23:28.00,0:23:31.00,Default,,0000,0000,0000,,Where we have space and where we can accomodate you. Dialogue: 0,0:23:31.00,0:23:33.00,Default,,0000,0000,0000,,The best thing you can do Dialogue: 0,0:23:33.00,0:23:36.00,Default,,0000,0000,0000,,is by Sunday at 5:00 have a pretty firm idea\Nabout what you can and can't do. Dialogue: 0,0:23:36.00,0:23:37.00,Default,,0000,0000,0000,,There's a list of preferences,\Nso maybe what you can do Dialogue: 0,0:23:37.00,0:23:40.00,Default,,0000,0000,0000,,is pick things that you know will work no matter Dialogue: 0,0:23:40.00,0:23:41.00,Default,,0000,0000,0000,,what happens. Dialogue: 0,0:23:41.00,0:23:44.00,Default,,0000,0000,0000,,for antyhing that is variable if you just dont offer things that you know might Dialogue: 0,0:23:44.00,0:23:44.84,Default,,0000,0000,0000,,go away Dialogue: 0,0:23:44.98,0:23:49.93,Default,,0000,0000,0000,,so there is a list of 20 times and you say I can make these 5 Dialogue: 0,0:23:49.93,0:23:52.39,Default,,0000,0000,0000,,And that way you wont get yourselves in trouble Dialogue: 0,0:23:52.39,0:23:54.91,Default,,0000,0000,0000,,in things that might change. Dialogue: 0,0:23:55.00,0:23:59.00,Default,,0000,0000,0000,,The workload - everybody wants\Nto know how much work.\N Dialogue: 0,0:23:59.00,0:24:02.00,Default,,0000,0000,0000,,It's a five-unit class, and\Nit's a five unit engineering class. Dialogue: 0,0:24:04.00,0:24:06.00,Default,,0000,0000,0000,,You get your five units worth, Dialogue: 0,0:24:06.00,0:24:09.99,Default,,0000,0000,0000,,I would say, so don't worry about that. I won't shortchange you. Dialogue: 0,0:24:11.01,0:24:15.00,Default,,0000,0000,0000,,We have programming assignments not quite weekly.\NI think there are seven of them across Dialogue: 0,0:24:15.00,0:24:18.96,Default,,0000,0000,0000,,ten weeks, so you can calculate it out.\NIt's about a week and a third Dialogue: 0,0:24:19.00,0:24:20.00,Default,,0000,0000,0000,,for any particular one. Dialogue: 0,0:24:20.00,0:24:22.03,Default,,0000,0000,0000,,The students report Dialogue: 0,0:24:22.03,0:24:25.00,Default,,0000,0000,0000,,that it's about a 15-20 hour project, each of them. Dialogue: 0,0:24:25.00,0:24:28.00,Default,,0000,0000,0000,,Some people get them done in less than that.\NSome people take a little bit more. Dialogue: 0,0:24:28.00,0:24:33.03,Default,,0000,0000,0000,,I would say that's kind of the\Nmode range for what people are reporting. Dialogue: 0,0:24:33.03,0:24:37.00,Default,,0000,0000,0000,,I do think that of the people who report less,\Nsome of those are Dialogue: 0,0:24:37.00,0:24:41.00,Default,,0000,0000,0000,,people who are naturally gifted,\Nbut a lot of it has to do with your habits Dialogue: 0,0:24:41.00,0:24:43.00,Default,,0000,0000,0000,,about how you work and\Nhow you make progress, so Dialogue: 0,0:24:43.00,0:24:46.00,Default,,0000,0000,0000,,if you are one of the people who feels \Nyou might be more likely to be on the other Dialogue: 0,0:24:46.00,0:24:49.00,Default,,0000,0000,0000,,end, you can come and talk to\Nme and I can give you some suggestions. Dialogue: 0,0:24:49.00,0:24:55.63,Default,,0000,0000,0000,,Choosing to work in the lair where the\Nhelpers are on duty has really positive effects Dialogue: 0,0:24:55.63,0:24:58.00,Default,,0000,0000,0000,,effects in that when you get stuck,\Nyou have easy access to Dialogue: 0,0:24:58.00,0:24:59.00,Default,,0000,0000,0000,,somebody helping you work through it Dialogue: 0,0:24:59.00,0:25:02.00,Default,,0000,0000,0000,,rather than spending an hour or two\Nfighting something that turns out to be Dialogue: 0,0:25:02.00,0:25:05.00,Default,,0000,0000,0000,,simple but required knowing something\Nthat you didn't yet know. Dialogue: 0,0:25:05.00,0:25:10.25,Default,,0000,0000,0000,,I'm a big fan of learning things yourself.\NThere's also a time when a well-placed Dialogue: 0,0:25:10.59,0:25:14.00,Default,,0000,0000,0000,,bit of advice from somebody\Ncan save you a lot of time. Dialogue: 0,0:25:15.00,0:25:22.16,Default,,0000,0000,0000,,There will be a midterm and a final exam.\NThey'll both be in class, open book, open notes. Dialogue: 0,0:25:22.16,0:25:24.01,Default,,0000,0000,0000,,The midterm is actually technically out of class. Dialogue: 0,0:25:24.01,0:25:28.87,Default,,0000,0000,0000,,have it at night because we need more than\Na 50-minute period to get any coverage of that. Dialogue: 0,0:25:28.87,0:25:31.07,Default,,0000,0000,0000,,Our final exam is scheduled in\Nour university-scheduled slot. Dialogue: 0,0:25:31.07,0:25:36.00,Default,,0000,0000,0000,,Sadly, that is at the very\Nend of the exam week, Dialogue: 0,0:25:36.00,0:25:37.98,Default,,0000,0000,0000,,but that's when the registrar put us,\Nand that's when we need to go. Dialogue: 0,0:25:38.03,0:25:44.01,Default,,0000,0000,0000,,You may want to take a look at that before\Nyou head off to Acapulco for spring break. Dialogue: 0,0:25:44.01,0:25:45.01,Default,,0000,0000,0000,,you need to make sure\Nyou are here for the exam. Dialogue: 0,0:25:45.01,0:25:48.98,Default,,0000,0000,0000,,Male audience: Is the course leader available online? Dialogue: 0,0:25:48.98,0:25:53.06,Default,,0000,0000,0000,,Unfortunately, our publisher will not allow me to distribute the course leader electronically. Dialogue: 0,0:25:54.00,0:25:57.00,Default,,0000,0000,0000,,They're not exactly very in the modern age on this. Dialogue: 0,0:26:00.08,0:26:02.00,Default,,0000,0000,0000,,I'm working on it is the truth. Dialogue: 0,0:26:02.00,0:26:06.04,Default,,0000,0000,0000,,By the time the world sees this, hopefully, we will have some other strategy. Dialogue: 0,0:26:06.04,0:26:08.80,Default,,0000,0000,0000,,We currently are in negotiations. Dialogue: 0,0:26:08.88,0:26:11.00,Default,,0000,0000,0000,,The nice thing about the course reader is that\Nwe have not changed it in the last year. Dialogue: 0,0:26:11.00,0:26:14.00,Default,,0000,0000,0000,,If you know somebody who has\Nit from last fall or last spring. Dialogue: 0,0:26:14.00,0:26:18.00,Default,,0000,0000,0000,,it has some minor edits and typos that were fixed, Dialogue: 0,0:26:18.00,0:26:20.00,Default,,0000,0000,0000,,so if you can get a hold of an old one, it's good. Dialogue: 0,0:26:20.00,0:26:23.10,Default,,0000,0000,0000,,We are getting no royalties on it. Dialogue: 0,0:26:23.10,0:26:26.95,Default,,0000,0000,0000,,We're publishing it at production cost, so where it Dialogue: 0,0:26:26.95,0:26:31.97,Default,,0000,0000,0000,,would have been a $100.00 textbook\Nhad it been bound and all snappy. Dialogue: 0,0:26:32.00,0:26:36.00,Default,,0000,0000,0000,,you're just getting what it cost to photocopy and bind the thing, and Eric and Dialogue: 0,0:26:36.07,0:26:39.98,Default,,0000,0000,0000,,I are eating ramen. Dialogue: 0,0:26:40.00,0:26:42.00,Default,,0000,0000,0000,,It's hopefully cheap enough that Dialogue: 0,0:26:42.00,0:26:44.00,Default,,0000,0000,0000,,you can find a way to get to one Dialogue: 0,0:26:44.00,0:26:47.50,Default,,0000,0000,0000,,or get an old one without it being\Ntoo much of an obstacle. Dialogue: 0,0:26:49.00,0:26:52.80,Default,,0000,0000,0000,,People in general find the course\Nreader to be an asset. Dialogue: 0,0:26:52.80,0:26:54.06,Default,,0000,0000,0000,,We do say it's required reading. Dialogue: 0,0:26:54.06,0:26:58.53,Default,,0000,0000,0000,,It does have a lot of material that's very\Nuseful in understanding the course. Dialogue: 0,0:26:58.61,0:27:02.00,Default,,0000,0000,0000,,There are other people who\Ndon't make as big a use of it, Dialogue: 0,0:27:02.00,0:27:05.00,Default,,0000,0000,0000,,but there are some sections that\Nare really very valuable Dialogue: 0,0:27:05.00,0:27:08.02,Default,,0000,0000,0000,,and other ones that may be more\Nor less depending on your learning style. Dialogue: 0,0:27:08.02,0:27:11.80,Default,,0000,0000,0000,,Whether you appreciate more of a chance to\Nread background material and more examples. Dialogue: 0,0:27:11.80,0:27:15.00,Default,,0000,0000,0000,,There's also a lot of good sample problems in it Dialogue: 0,0:27:15.00,0:27:18.60,Default,,0000,0000,0000,,and review questions in it that help to test your understanding. Dialogue: 0,0:27:22.00,0:27:23.00,Default,,0000,0000,0000,,You know, it's tricky, because the university\Nin general discourages you from giving Dialogue: 0,0:27:26.00,0:27:29.00,Default,,0000,0000,0000,,alternate exams because of Dialogue: 0,0:27:29.00,0:27:33.00,Default,,0000,0000,0000,,- you can imagine the issues\Nof having an exam that has been Dialogue: 0,0:27:33.00,0:27:35.00,Default,,0000,0000,0000,,seen by some number of students before\Nsome other number of students take it. Dialogue: 0,0:27:35.00,0:27:38.18,Default,,0000,0000,0000,,Even though we're all bound by the honor code,\Nit does create a situation where Dialogue: 0,0:27:38.18,0:27:39.48,Default,,0000,0000,0000,,there is some temptation. Dialogue: 0,0:27:39.48,0:27:43.24,Default,,0000,0000,0000,,It's possible it could be a little bit\Nearly without a lot of gap, but I Dialogue: 0,0:27:43.24,0:27:46.03,Default,,0000,0000,0000,,don't think early enough to make alot\Nof help is the truth. Dialogue: 0,0:27:46.03,0:27:49.00,Default,,0000,0000,0000,,We can talk about it.\NThe current plan is not, I would say. Dialogue: 0,0:28:03.01,0:28:07.99,Default,,0000,0000,0000,,A little bit about compilers.\NWe use C++. Dialogue: 0,0:28:07.99,0:28:09.05,Default,,0000,0000,0000,,and we also use Dialogue: 0,0:28:09.05,0:28:11.48,Default,,0000,0000,0000,,some custom libraries, which limits us\Nto distributing on a certain number of platforms Dialogue: 0,0:28:11.48,0:28:15.07,Default,,0000,0000,0000,,we've had a good chance to\Ntest on and work with\N Dialogue: 0,0:28:15.07,0:28:18.96,Default,,0000,0000,0000,,The compilers that we have\Nsupport for is X Code on the Macintosh. Dialogue: 0,0:28:18.96,0:28:22.04,Default,,0000,0000,0000,,xcode is apples free developer tools so Dialogue: 0,0:28:22.06,0:28:25.05,Default,,0000,0000,0000,,Anybody who has Mac OS 10 can freely\Ndownload that, and install our libraries. Dialogue: 0,0:28:25.05,0:28:29.00,Default,,0000,0000,0000,,We're using Microsoft's\NVisual Studio Version 2005 on Windows, Dialogue: 0,0:28:29.00,0:28:32.00,Default,,0000,0000,0000,,we have an arrangement with Microsoft\Nwhere they have distributed the software Dialogue: 0,0:28:32.00,0:28:35.93,Default,,0000,0000,0000,,free of charge to students, so if you would\Nlike to install that on your own Windows computer, Dialogue: 0,0:28:36.00,0:28:38.00,Default,,0000,0000,0000,,we'll give you some handouts on Friday that tell you Dialogue: 0,0:28:38.00,0:28:43.51,Default,,0000,0000,0000,,what to do to get the compiler\Nand get it installed on your systems. Dialogue: 0,0:28:43.57,0:28:48.02,Default,,0000,0000,0000,,Our cluster computers in the dorms\Nand the libraries and Dialogue: 0,0:28:48.05,0:28:53.34,Default,,0000,0000,0000,,the lair both operating systems have both\Nthe compilers and libraries installed, Dialogue: 0,0:28:53.60,0:28:57.00,Default,,0000,0000,0000,,so if you work in a cluster,\Nyou don't have to do anything special. Dialogue: 0,0:28:57.00,0:29:04.00,Default,,0000,0000,0000,,You just walk up and it's got the\Nstuff ready to go. Dialogue: 0,0:29:07.00,0:29:11.00,Default,,0000,0000,0000,,I'm a Mac person. I've been a Mac\Nperson forever. Dialogue: 0,0:29:11.00,0:29:13.00,Default,,0000,0000,0000,,I can't get over the fact that you go to\Nthe start menu to shut the machine down. Dialogue: 0,0:29:13.00,0:29:17.00,Default,,0000,0000,0000,,That makes Windows impossible for me to use. Dialogue: 0,0:29:19.00,0:29:24.97,Default,,0000,0000,0000,,I would say campus wide, there are more\NWindows machines than Macs on campus, Dialogue: 0,0:29:25.01,0:29:29.00,Default,,0000,0000,0000,,So if you want to take a popular vote,\NYou could do that. Dialogue: 0,0:29:29.00,0:29:33.98,Default,,0000,0000,0000,,If you want to be on the side of the Mac bigot,\Nyou can come and be with me in X Code. Dialogue: 0,0:29:44.79,0:29:49.00,Default,,0000,0000,0000,,I've got ten minutes to tell you a little\Nbit about C++. Dialogue: 0,0:29:49.00,0:29:54.04,Default,,0000,0000,0000,,That is the next journey that we're\Ngoing to go on together. Dialogue: 0,0:29:54.04,0:29:57.00,Default,,0000,0000,0000,,The first question is:\NWhy are we doing this to you? Dialogue: 0,0:29:57.00,0:30:02.00,Default,,0000,0000,0000,,I just got comfortable with Java and now\Nyou're telling me to throw away my Java\Nand start over. Dialogue: 0,0:30:02.85,0:30:07.88,Default,,0000,0000,0000,,Let's generate a little bit of love for C++. Dialogue: 0,0:30:08.00,0:30:10.99,Default,,0000,0000,0000,,The advantages of early multilingualism. Dialogue: 0,0:30:10.99,0:30:14.00,Default,,0000,0000,0000,,- I have two small children at home\Nthat are two and four, Dialogue: 0,0:30:14.00,0:30:18.00,Default,,0000,0000,0000,,and I read a lot about bilingualism. Dialogue: 0,0:30:19.00,0:30:22.00,Default,,0000,0000,0000,,It's very clear that for natural\Nlanguages, when you're Dialogue: 0,0:30:22.00,0:30:25.00,Default,,0000,0000,0000,,acquiring a language at those\Nyoung ages that that is the Dialogue: 0,0:30:25.00,0:30:27.84,Default,,0000,0000,0000,,best time to introduce a second\Nor third language. Dialogue: 0,0:30:27.97,0:30:30.92,Default,,0000,0000,0000,,Where you are building the\Npathways and the neurons. Dialogue: 0,0:30:32.00,0:30:35.00,Default,,0000,0000,0000,,It's been looked at in terms of programming\Nlanguages as well, Dialogue: 0,0:30:35.00,0:30:38.00,Default,,0000,0000,0000,,that when you are learning a programming\Nlanguage, there are certain kind Dialogue: 0,0:30:38.00,0:30:41.00,Default,,0000,0000,0000,,of ruts your mind gets into about\Nthe way a language is Dialogue: 0,0:30:41.00,0:30:45.00,Default,,0000,0000,0000,,that is based on your early experiences.\N Dialogue: 0,0:30:45.00,0:30:48.94,Default,,0000,0000,0000,,If you spend a very long time working \Nonly in one language, those ruts get deeper, Dialogue: 0,0:30:49.00,0:30:52.00,Default,,0000,0000,0000,,and you have a certain way of thinking.\NYou're a little bit stuck in that paradigm and its approach. Dialogue: 0,0:30:52.00,0:30:55.68,Default,,0000,0000,0000,,What's easy to do in that language,\Nwhat's hard to do in that language Dialogue: 0,0:30:55.83,0:30:59.98,Default,,0000,0000,0000,,tends to make a stronger impression on\Nyou in a way that makes it harder as you Dialogue: 0,0:31:00.00,0:31:04.00,Default,,0000,0000,0000,,grow and explore the languages to kind of get\Nout of those ruts and shake yourself out of it. Dialogue: 0,0:31:04.00,0:31:07.93,Default,,0000,0000,0000,,There's been some pretty good evidence\Nthat somewhere between one Dialogue: 0,0:31:08.00,0:31:10.96,Default,,0000,0000,0000,,and two is a good time to think\Nabout branching out Dialogue: 0,0:31:10.96,0:31:14.00,Default,,0000,0000,0000,,and starting to think about different \Nways of doing stuff and seeing some Dialogue: 0,0:31:14.00,0:31:20.23,Default,,0000,0000,0000,,different syntax and some different ideas\Nto help build in the flexibility from\N Dialogue: 0,0:31:20.23,0:31:26.45,Default,,0000,0000,0000,,an early age in your career to buy you\Nsome strength later. Dialogue: 0,0:31:26.52,0:31:31.00,Default,,0000,0000,0000,,That's part of what we're doing.\NAnother part of it is actually that a lot of our upper division Dialogue: 0,0:31:31.00,0:31:36.01,Default,,0000,0000,0000,,courses rely on a knowledge of\NC and C++, that family of languages, Dialogue: 0,0:31:36.01,0:31:39.00,Default,,0000,0000,0000,,and that the longer we postpone it,\Nthe more painful it becomes. Dialogue: 0,0:31:39.00,0:31:43.95,Default,,0000,0000,0000,,In the later courses where you're learning\Nabout compilers or graphics or networking, Dialogue: 0,0:31:44.00,0:31:48.00,Default,,0000,0000,0000,,they don't have the time in those classes to stop and teach you C or C++. Dialogue: 0,0:31:48.00,0:31:50.93,Default,,0000,0000,0000,,They need you to know C++ to get the work done. Dialogue: 0,0:31:51.00,0:31:54.94,Default,,0000,0000,0000,,Moving the foundation into a programming class Dialogue: 0,0:31:54.94,0:31:57.00,Default,,0000,0000,0000,,seems to make the most sense in the context of our curriculum. Dialogue: 0,0:31:57.00,0:32:00.00,Default,,0000,0000,0000,,We do switch you over here. Dialogue: 0,0:32:00.00,0:32:04.00,Default,,0000,0000,0000,,The good news is that it's not as big a change as it might sound at first glance. Dialogue: 0,0:32:04.00,0:32:07.00,Default,,0000,0000,0000,,Java is actually highly derivative of C++ for a start. Dialogue: 0,0:32:07.00,0:32:10.00,Default,,0000,0000,0000,,They're kind of cousins in the scheme of language design. Dialogue: 0,0:32:10.00,0:32:12.00,Default,,0000,0000,0000,, Dialogue: 0,0:32:12.00,0:32:14.00,Default,,0000,0000,0000,,They have a lot of syntax. Dialogue: 0,0:32:14.00,0:32:18.11,Default,,0000,0000,0000,,How much C++ do you need to know to start?\NThe answer is zero. Dialogue: 0,0:32:18.11,0:32:21.00,Default,,0000,0000,0000,,You don't even need to know what the word means. Dialogue: 0,0:32:21.00,0:32:22.00,Default,,0000,0000,0000,,In fact, Dialogue: 0,0:32:22.00,0:32:25.00,Default,,0000,0000,0000,,you actually probably know a surprising\Namount about C++ just by virtue of what Dialogue: 0,0:32:25.00,0:32:28.00,Default,,0000,0000,0000,,you already know just translated a little bit. Dialogue: 0,0:32:28.00,0:32:32.00,Default,,0000,0000,0000,,Things like the four loop of Java or the way you declare variables or Dialogue: 0,0:32:32.00,0:32:35.00,Default,,0000,0000,0000,,the way parameters are passed into a function Dialogue: 0,0:32:35.00,0:32:39.00,Default,,0000,0000,0000,,is exhibited in Java in very much the same way it is in C++. Dialogue: 0,0:32:39.00,0:32:42.00,Default,,0000,0000,0000,,There are a bunch of things you already know and you don't even realize. Dialogue: 0,0:32:42.00,0:32:45.47,Default,,0000,0000,0000,,It is not assumed that you know C or C++.\N Dialogue: 0,0:32:45.59,0:32:49.00,Default,,0000,0000,0000,,If you happen to already know those things,\Nyou're ahead of the game. Dialogue: 0,0:32:50.08,0:32:52.00,Default,,0000,0000,0000,,If you have not, Dialogue: 0,0:32:52.00,0:32:54.00,Default,,0000,0000,0000,,then not to worry. Dialogue: 0,0:32:54.00,0:32:57.00,Default,,0000,0000,0000,,How much C++ are you going to learn? Dialogue: 0,0:32:58.00,0:33:00.00,Default,,0000,0000,0000,,We will spend the first Dialogue: 0,0:33:00.00,0:33:02.00,Default,,0000,0000,0000,,three or four lectures Dialogue: 0,0:33:02.00,0:33:05.00,Default,,0000,0000,0000,,just talking about how things get expressed differently in C++ Dialogue: 0,0:33:05.00,0:33:07.00,Default,,0000,0000,0000,,and mostly talking about Dialogue: 0,0:33:07.00,0:33:12.00,Default,,0000,0000,0000,,the differences in the libraries.\NThe syntax itself is quite similar. Dialogue: 0,0:33:12.00,0:33:15.00,Default,,0000,0000,0000,,Some of the more extensive changes have to do with how the C++ Dialogue: 0,0:33:15.00,0:33:17.81,Default,,0000,0000,0000,,string is operated on versus the Java string. Dialogue: 0,0:33:17.81,0:33:20.00,Default,,0000,0000,0000,,How you do file input and output reading Dialogue: 0,0:33:20.00,0:33:23.00,Default,,0000,0000,0000,,in C++ is a little bit different than the way it's done in Java. Dialogue: 0,0:33:23.00,0:33:26.00,Default,,0000,0000,0000,,We'll spend some time saying here are some things you know how to express in one language. Dialogue: 0,0:33:26.00,0:33:29.00,Default,,0000,0000,0000,,We're going to teach you how to express them in another language. Dialogue: 0,0:33:29.00,0:33:31.00,Default,,0000,0000,0000,,It's just mapping from your previous vocabulary onto a new one. Dialogue: 0,0:33:32.00,0:33:35.00,Default,,0000,0000,0000,,Along the way, we will actually introduce some of the C++ Dialogue: 0,0:33:35.00,0:33:38.00,Default,,0000,0000,0000,,features that we need to support our pedagogical goals. Dialogue: 0,0:33:38.00,0:33:42.00,Default,,0000,0000,0000,,We'll be talking about how classes get designed in C++.\NWe'll see how to use classes. Dialogue: 0,0:33:44.00,0:33:45.00,Default,,0000,0000,0000,,those classes, We'll see how to define Dialogue: 0,0:33:45.00,0:33:49.00,Default,,0000,0000,0000,,and we'll look at things like templates, which is the C++ Dialogue: 0,0:33:49.00,0:33:52.00,Default,,0000,0000,0000,,construct for doing generics that you seen in Java - how you can build Dialogue: 0,0:33:52.00,0:33:56.00,Default,,0000,0000,0000,,containers that are type unspecific and things like that. We Dialogue: 0,0:33:56.00,0:34:01.00,Default,,0000,0000,0000,,will learn a little bit of some of the fancier features of C++ like Dialogue: 0,0:34:01.00,0:34:02.00,Default,,0000,0000,0000,,the pass by reference parameter, Dialogue: 0,0:34:02.00,0:34:05.00,Default,,0000,0000,0000,,but there's actually a very large amount of C++ that's just off the Dialogue: 0,0:34:05.00,0:34:07.00,Default,,0000,0000,0000,,table for us. Dialogue: 0,0:34:07.00,0:34:11.00,Default,,0000,0000,0000,,We will not make extensive use of the standard template library or Dialogue: 0,0:34:11.00,0:34:13.00,Default,,0000,0000,0000,,the Dialogue: 0,0:34:13.00,0:34:17.00,Default,,0000,0000,0000,,fancier features of 'static' and 'const' and a bunch of key words that Dialogue: 0,0:34:17.00,0:34:20.00,Default,,0000,0000,0000,,mean nothing to you and should mean nothing to you. Dialogue: 0,0:34:20.00,0:34:23.00,Default,,0000,0000,0000,,You will learn enough to have reading familiarity with Dialogue: 0,0:34:23.00,0:34:26.00,Default,,0000,0000,0000,,C++ and to be able to express yourself quite well in the subset we're using, but Dialogue: 0,0:34:26.00,0:34:29.00,Default,,0000,0000,0000,,it is a subset of C++ that you're being exposed Dialogue: 0,0:34:32.00,0:34:35.00,Default,,0000,0000,0000,,to. Dialogue: 0,0:34:35.00,0:34:39.00,Default,,0000,0000,0000,,If you find yourself really wanting to Dialogue: 0,0:34:39.00,0:34:42.00,Default,,0000,0000,0000,,master C++, Dialogue: 0,0:34:46.00,0:34:48.00,Default,,0000,0000,0000,,we are offering Dialogue: 0,0:34:48.00,0:34:52.00,Default,,0000,0000,0000,,CS106L. CS106L is a lab companion course that is Dialogue: 0,0:34:52.00,0:34:55.00,Default,,0000,0000,0000,,open to students enrolled in 106B or 106X. Dialogue: 0,0:34:55.00,0:34:57.00,Default,,0000,0000,0000,,It meets twice a week. Dialogue: 0,0:34:57.00,0:34:59.00,Default,,0000,0000,0000,,It's actually on Monday and Wednesday late afternoon. Dialogue: 0,0:34:59.00,0:35:02.00,Default,,0000,0000,0000,,It's 4:15 in Hewlett Dialogue: 0,0:35:02.00,0:35:04.00,Default,,0000,0000,0000,,103. It's being taught by a veteran section leader Dialogue: 0,0:35:04.00,0:35:09.00,Default,,0000,0000,0000,,who is very well versed in C++ and who of his own Dialogue: 0,0:35:09.00,0:35:13.00,Default,,0000,0000,0000,,volition volunteered and created this course because Dialogue: 0,0:35:13.00,0:35:16.00,Default,,0000,0000,0000,,he himself was a little frustrated as a prior 106 student Dialogue: 0,0:35:16.00,0:35:19.00,Default,,0000,0000,0000,,in wanting to get at some of those C++ things that weren't Dialogue: 0,0:35:19.00,0:35:20.00,Default,,0000,0000,0000,,fitting with our goals. Dialogue: 0,0:35:20.00,0:35:23.00,Default,,0000,0000,0000,,It is a place where you can Dialogue: 0,0:35:23.00,0:35:26.00,Default,,0000,0000,0000,,get more exposure to standard C++, do some exercises that help Dialogue: 0,0:35:26.00,0:35:29.00,Default,,0000,0000,0000,,you to test out those things and see how those things are expressed and get another Dialogue: 0,0:35:29.00,0:35:32.00,Default,,0000,0000,0000,,unit. It's a pass/fail lab course. Dialogue: 0,0:35:32.00,0:35:35.00,Default,,0000,0000,0000,,You can also just attend or grab the materials if you just want to look at Dialogue: 0,0:35:35.00,0:35:35.00,Default,,0000,0000,0000,,them. Dialogue: 0,0:35:35.00,0:35:38.00,Default,,0000,0000,0000,,It's a great way to Dialogue: 0,0:35:41.00,0:35:43.00,Default,,0000,0000,0000,,broaden that knowledge of C++ beyond what's Dialogue: 0,0:35:43.00,0:35:48.00,Default,,0000,0000,0000,,useful for us in terms of our goals. I'm going Dialogue: 0,0:35:48.00,0:35:53.00,Default,,0000,0000,0000,,to ask you some questions, because I don't get to do all the talking. Dialogue: 0,0:35:53.00,0:35:56.00,Default,,0000,0000,0000,,How much C++ do you need to know? Some of you may know nothing about it, Dialogue: 0,0:35:56.00,0:35:58.00,Default,,0000,0000,0000,,and that is perfectly fine. Some of you probably know something about it or at least Dialogue: 0,0:35:58.00,0:36:02.00,Default,,0000,0000,0000,,have heard something about it. I'm going to have you guys tell me Dialogue: 0,0:36:02.00,0:36:04.00,Default,,0000,0000,0000,,what it Dialogue: 0,0:36:05.00,0:36:09.00,Default,,0000,0000,0000,,is that people tell you about C++ that Dialogue: 0,0:36:09.00,0:36:13.00,Default,,0000,0000,0000,,makes you either excited to learn it or frightened to learn it or Dialogue: 0,0:36:13.00,0:36:15.00,Default,,0000,0000,0000,,interested in how it works. It's Dialogue: 0,0:36:15.00,0:36:17.00,Default,,0000,0000,0000,,what Java is based off of. It is what Java is Dialogue: 0,0:36:17.00,0:36:20.00,Default,,0000,0000,0000,,based Dialogue: 0,0:36:20.00,0:36:24.00,Default,,0000,0000,0000,,off of. That should be a little reassuring Dialogue: 0,0:36:24.00,0:36:28.00,Default,,0000,0000,0000,,that there is a syntax there that got adopted with some minor Dialogue: 0,0:36:28.00,0:36:31.00,Default,,0000,0000,0000,,changes. It should feel Dialogue: 0,0:36:31.00,0:36:34.00,Default,,0000,0000,0000,,more familiar than different when you look at it. Dialogue: 0,0:36:34.00,0:36:37.00,Default,,0000,0000,0000,,It was very strongly influenced by a generation of Dialogue: 0,0:36:37.00,0:36:39.00,Default,,0000,0000,0000,,programmers who C++ was their native language who designed the Dialogue: 0,0:36:39.00,0:36:42.00,Default,,0000,0000,0000,,Java language. That's a good thing to know. What else do you know Dialogue: 0,0:36:42.00,0:36:47.00,Default,,0000,0000,0000,,about C++? Dialogue: 0,0:36:47.00,0:36:49.00,Default,,0000,0000,0000,,It's extended Dialogue: 0,0:36:50.00,0:36:53.00,Default,,0000,0000,0000,,C. Yes. It's extended C. Here's how it fits in the spectrum. Dialogue: 0,0:36:53.00,0:36:56.00,Default,,0000,0000,0000,,C is kind of a 1970s creation. C++ is a Dialogue: 0,0:36:56.00,0:36:58.00,Default,,0000,0000,0000,,decade later. Dialogue: 0,0:36:58.00,0:37:01.00,Default,,0000,0000,0000,,C is the language which it is based on. It is an extended C. It's Dialogue: 0,0:37:01.00,0:37:05.00,Default,,0000,0000,0000,,called a superset. Everything that compiles and works in C Dialogue: 0,0:37:05.00,0:37:07.00,Default,,0000,0000,0000,,still exists in C++, but then they added a bunch of features. Dialogue: 0,0:37:07.00,0:37:10.00,Default,,0000,0000,0000,,Not only did they add a bunch of features but they tried to fix some of the things Dialogue: 0,0:37:10.00,0:37:13.00,Default,,0000,0000,0000,,about C++ by replacing existing things. For example, there's some Dialogue: 0,0:37:13.00,0:37:17.00,Default,,0000,0000,0000,,string handling in C that's kind of very primitive. They added a string Dialogue: 0,0:37:17.00,0:37:18.00,Default,,0000,0000,0000,,object Dialogue: 0,0:37:18.00,0:37:22.00,Default,,0000,0000,0000,,with much cleaner handling and safer semantics into the C++, but they kind of Dialogue: 0,0:37:22.00,0:37:23.00,Default,,0000,0000,0000,,left the old one around. Dialogue: 0,0:37:23.00,0:37:26.00,Default,,0000,0000,0000,,Some parts of C++ feel a little strange Dialogue: 0,0:37:26.00,0:37:32.00,Default,,0000,0000,0000,,because of this history to it - the legacy of incorporating everything C was plus the stuff Dialogue: 0,0:37:32.00,0:37:35.00,Default,,0000,0000,0000,,means at times there's a little bit of weirdness there. It also means Dialogue: 0,0:37:35.00,0:37:39.00,Default,,0000,0000,0000,,that the language, as a result, is very large. Dialogue: 0,0:37:40.00,0:37:44.00,Default,,0000,0000,0000,,C's Dialogue: 0,0:37:44.00,0:37:47.00,Default,,0000,0000,0000,,type safety Dialogue: 0,0:37:47.00,0:37:52.00,Default,,0000,0000,0000,,and runtime features were extended by what Dialogue: 0,0:37:52.00,0:37:56.00,Default,,0000,0000,0000,,got Dialogue: 0,0:37:56.00,0:38:00.00,Default,,0000,0000,0000,,added in C++. A friend of mine told me that [inaudible]. That's a Dialogue: 0,0:38:07.00,0:38:08.00,Default,,0000,0000,0000,,good thing Dialogue: 0,0:38:08.00,0:38:09.00,Default,,0000,0000,0000,,to know. Dialogue: 0,0:38:09.00,0:38:13.00,Default,,0000,0000,0000,,C++ might be a little bit more dangerous than Java. Dialogue: 0,0:38:13.00,0:38:17.00,Default,,0000,0000,0000,,That is true. Java is very Dialogue: 0,0:38:17.00,0:38:21.00,Default,,0000,0000,0000,,concerned with Dialogue: 0,0:38:21.00,0:38:25.00,Default,,0000,0000,0000,,safety, in particular since Java was designed for web Dialogue: 0,0:38:25.00,0:38:27.00,Default,,0000,0000,0000,,delivery of content. It was very important that the program have Dialogue: 0,0:38:27.00,0:38:29.00,Default,,0000,0000,0000,,very constrained Dialogue: 0,0:38:29.00,0:38:31.00,Default,,0000,0000,0000,,features on what it can and can't do, Dialogue: 0,0:38:31.00,0:38:35.00,Default,,0000,0000,0000,,and so as a result, Java tends to be very parental. When you Dialogue: 0,0:38:35.00,0:38:38.00,Default,,0000,0000,0000,,forget to initialize a variable or forget to Dialogue: 0,0:38:38.00,0:38:39.00,Default,,0000,0000,0000,,return from a function, Dialogue: 0,0:38:39.00,0:38:41.00,Default,,0000,0000,0000,,Java's Dialogue: 0,0:38:41.00,0:38:45.00,Default,,0000,0000,0000,,very aggressive about saying hey, you've got to fix this. C++ is a little Dialogue: 0,0:38:46.00,0:38:47.00,Default,,0000,0000,0000,,less Dialogue: 0,0:38:47.00,0:38:51.00,Default,,0000,0000,0000,,parental. Here's the overly protective mom, helicopter mom, Dialogue: 0,0:38:51.00,0:38:54.00,Default,,0000,0000,0000,,the ones who stand. That's Java. Java's making sure - oh, are you okay, Dialogue: 0,0:38:54.00,0:38:57.00,Default,,0000,0000,0000,,sweetie? Let me stand here Dialogue: 0,0:38:57.00,0:39:01.00,Default,,0000,0000,0000,,in case you fall. C++ is crack mom. She's like yeah, I'm over Dialogue: 0,0:39:01.00,0:39:05.00,Default,,0000,0000,0000,,here with my friends. Don't play Dialogue: 0,0:39:05.00,0:39:06.00,Default,,0000,0000,0000,,with Dialogue: 0,0:39:06.00,0:39:08.00,Default,,0000,0000,0000,,the kitchen knives. Dialogue: 0,0:39:08.00,0:39:11.00,Default,,0000,0000,0000,,It's a professional's tool, Dialogue: 0,0:39:11.00,0:39:13.00,Default,,0000,0000,0000,,and professionals don't want to feel encumbered. There are certain things they want Dialogue: 0,0:39:13.00,0:39:16.00,Default,,0000,0000,0000,,to do that require some of this Dialogue: 0,0:39:16.00,0:39:19.00,Default,,0000,0000,0000,,low-level access, and safety usually comes at a cost. Dialogue: 0,0:39:19.00,0:39:23.00,Default,,0000,0000,0000,,Any sort of feature where the language is double-checking for you is taking time and Dialogue: 0,0:39:23.00,0:39:26.00,Default,,0000,0000,0000,,efficiency. There's a cost associated with that. Every time you want Dialogue: 0,0:39:26.00,0:39:28.00,Default,,0000,0000,0000,,to get something out of an array, Dialogue: 0,0:39:28.00,0:39:30.00,Default,,0000,0000,0000,,it's checked to make sure that that number was Dialogue: 0,0:39:30.00,0:39:34.00,Default,,0000,0000,0000,,not off either end. Every array access costs you a little bit more. Dialogue: 0,0:39:34.00,0:39:35.00,Default,,0000,0000,0000,,C++ says Dialogue: 0,0:39:35.00,0:39:38.00,Default,,0000,0000,0000,,I'm not going to charge everybody that penalty. If you actually have the bad sense Dialogue: 0,0:39:38.00,0:39:43.00,Default,,0000,0000,0000,,to write a program that does those things, you deserve to be punished. Dialogue: 0,0:39:43.00,0:39:47.00,Default,,0000,0000,0000,,As a result, you will at some Dialogue: 0,0:39:47.00,0:39:49.00,Default,,0000,0000,0000,,point in this quarter get to experience some of that firsthand. Some of Dialogue: 0,0:39:49.00,0:39:53.00,Default,,0000,0000,0000,,it is a growth experience. Some Dialogue: 0,0:39:53.00,0:39:56.00,Default,,0000,0000,0000,,of it can be frustrating. It is part of what Dialogue: 0,0:39:56.00,0:39:58.00,Default,,0000,0000,0000,,professional tools often look like. They are making these tradeoffs Dialogue: 0,0:39:58.00,0:40:01.00,Default,,0000,0000,0000,,of efficiency over safety that Dialogue: 0,0:40:01.00,0:40:04.00,Default,,0000,0000,0000,,put more of the work back on you as the programmer to be a little more attentive on Dialogue: 0,0:40:04.00,0:40:05.00,Default,,0000,0000,0000,,those things. Dialogue: 0,0:40:05.00,0:40:09.00,Default,,0000,0000,0000,,You can write programs that crash in very spectacular ways Dialogue: 0,0:40:09.00,0:40:14.00,Default,,0000,0000,0000,,much more interesting and varied and dangerous than the kind of things you can do Dialogue: 0,0:40:18.00,0:40:21.00,Default,,0000,0000,0000,,in Java. Good to know. You want to Dialogue: 0,0:40:21.00,0:40:29.00,Default,,0000,0000,0000,,use Dialogue: 0,0:40:29.00,0:40:29.00,Default,,0000,0000,0000,,pointers. Dialogue: 0,0:40:29.00,0:40:31.00,Default,,0000,0000,0000,,You're going to get to use pointers. Dialogue: 0,0:40:31.00,0:40:35.00,Default,,0000,0000,0000,,Pointers are really neat, and they're also very challenging. Pointers are these Dialogue: 0,0:40:35.00,0:40:37.00,Default,,0000,0000,0000,,ways of building these very flexible and amazing Dialogue: 0,0:40:37.00,0:40:40.00,Default,,0000,0000,0000,,data structures - the kind of things that we're going to try to build. At some Dialogue: 0,0:40:40.00,0:40:43.00,Default,,0000,0000,0000,,point, they are going to be the only way to achieve those things well, so building Dialogue: 0,0:40:43.00,0:40:46.00,Default,,0000,0000,0000,,these things called trees, graphs and lists rely on understanding Dialogue: 0,0:40:46.00,0:40:49.00,Default,,0000,0000,0000,,a mastery of the pointer type. The pointer type is complicated, and it's part of Dialogue: 0,0:40:49.00,0:40:51.00,Default,,0000,0000,0000,,that danger thing, which is Dialogue: 0,0:40:51.00,0:40:53.00,Default,,0000,0000,0000,,having access to Dialogue: 0,0:40:53.00,0:40:57.00,Default,,0000,0000,0000,,rearranging memory by virtue of addresses opens up a lot of Dialogue: 0,0:40:57.00,0:40:59.00,Default,,0000,0000,0000,,opportunity for there to be mistakes. Dialogue: 0,0:40:59.00,0:41:02.00,Default,,0000,0000,0000,,Mistakes can be made in the passive voice Dialogue: 0,0:41:02.00,0:41:06.00,Default,,0000,0000,0000,,that have consequences. You'll get to experience firsthand what that's like. Dialogue: 0,0:41:06.00,0:41:09.00,Default,,0000,0000,0000,,There's joy in it, because getting it right is awesome, and there are things that you can Dialogue: 0,0:41:09.00,0:41:12.00,Default,,0000,0000,0000,,achieve that are really extraordinary with pointers, but Dialogue: 0,0:41:12.00,0:41:13.00,Default,,0000,0000,0000,,when it's not working, Dialogue: 0,0:41:13.00,0:41:17.00,Default,,0000,0000,0000,,it can Dialogue: 0,0:41:17.00,0:41:18.00,Default,,0000,0000,0000,,be frustrating. You're getting a Dialogue: 0,0:41:18.00,0:41:22.00,Default,,0000,0000,0000,,little Dialogue: 0,0:41:22.00,0:41:25.00,Default,,0000,0000,0000,,bit of both. It turns out C++ does not have a graphics system built Dialogue: 0,0:41:25.00,0:41:26.00,Default,,0000,0000,0000,,into it. Dialogue: 0,0:41:26.00,0:41:29.00,Default,,0000,0000,0000,,Java is actually distinguished from previous Dialogue: 0,0:41:29.00,0:41:32.00,Default,,0000,0000,0000,,languages. Java tries to solve all problems. Traditionally, a Dialogue: 0,0:41:32.00,0:41:33.00,Default,,0000,0000,0000,,programming language tends to have a set Dialogue: 0,0:41:33.00,0:41:34.00,Default,,0000,0000,0000,,of libraries that have Dialogue: 0,0:41:34.00,0:41:38.00,Default,,0000,0000,0000,,facilities for data management, reading and writing files and sometimes some Dialogue: 0,0:41:38.00,0:41:42.00,Default,,0000,0000,0000,,networking, but they don't tend to actually solve application layer problems. That Dialogue: 0,0:41:42.00,0:41:46.00,Default,,0000,0000,0000,,tended to be a different piece of technology. The Mac Dialogue: 0,0:41:46.00,0:41:49.00,Default,,0000,0000,0000,,OS might offer a graphics library that was written in C++, but C++ Dialogue: 0,0:41:49.00,0:41:50.00,Default,,0000,0000,0000,,the language Dialogue: 0,0:41:50.00,0:41:53.00,Default,,0000,0000,0000,,didn't have a windowing system or graphics system. Dialogue: 0,0:41:53.00,0:41:55.00,Default,,0000,0000,0000,,C++ does not have those features Dialogue: 0,0:41:55.00,0:41:56.00,Default,,0000,0000,0000,,itself, Dialogue: 0,0:41:56.00,0:41:58.00,Default,,0000,0000,0000,,so any C++ compiler Dialogue: 0,0:41:58.00,0:42:02.00,Default,,0000,0000,0000,,you get comes with these basic things about handling files and managing these types of Dialogue: 0,0:42:02.00,0:42:05.00,Default,,0000,0000,0000,,data structures, but it does not come a priori with a bunch of graphics routines. Dialogue: 0,0:42:05.00,0:42:07.00,Default,,0000,0000,0000,,That said, Dialogue: 0,0:42:07.00,0:42:09.00,Default,,0000,0000,0000,,Windows and Mac and Linux and all these things have graphics routines that are Dialogue: 0,0:42:09.00,0:42:12.00,Default,,0000,0000,0000,,written in C++, but they're all different. To say what are they Dialogue: 0,0:42:12.00,0:42:13.00,Default,,0000,0000,0000,,like Dialogue: 0,0:42:13.00,0:42:15.00,Default,,0000,0000,0000,,relative to Java? They're all different relative Dialogue: 0,0:42:15.00,0:42:16.00,Default,,0000,0000,0000,,to Java. It's not standardized. Dialogue: 0,0:42:18.00,0:42:21.00,Default,,0000,0000,0000,,There's a wide variety of them out there, and Dialogue: 0,0:42:21.00,0:42:24.00,Default,,0000,0000,0000,,they tend to have a lot of very impressive and different solved Dialogue: 0,0:42:24.00,0:42:27.00,Default,,0000,0000,0000,,problems, because C++ has a longer history than Java that a lot Dialogue: 0,0:42:27.00,0:42:30.00,Default,,0000,0000,0000,,of problems have been solved in C++ that are available to you, Dialogue: 0,0:42:30.00,0:42:32.00,Default,,0000,0000,0000,,too. There's a lot of existing code Dialogue: 0,0:42:32.00,0:42:36.00,Default,,0000,0000,0000,,other than what you might think is standard. Dialogue: 0,0:42:38.00,0:42:42.00,Default,,0000,0000,0000,,I Dialogue: 0,0:42:42.00,0:42:43.00,Default,,0000,0000,0000,,will Dialogue: 0,0:42:43.00,0:42:47.00,Default,,0000,0000,0000,,see you on Friday, and we'll be seeing some C++. If you have Dialogue: 0,0:42:47.00,0:42:58.00,Default,,0000,0000,0000,,questions about your situation, come and talk to me now.