00:00:00,032 --> 00:00:01,740 SPEAKER 1: No longer in the weeks to come are we going to be focusing on the command line alone. DAVID J MALAN: So this has been an evolution, I think, in the classroom. Increasingly, in recent years, have we tried to-- have I tried to keep pace with certain trends in industry and programming paradigms. And as MVC became more and more popular in Python, and PHP, and other languages, still, did we weave it into the course. So we weren't just using raw PHP years ago, and we're not just using Python out of the box. We're actually standing on the shoulders of very popular frameworks that actually do solve very well-defined problems. And the reality is to take away some of those abstractions and some of that structure, we would be doing students, I think, a disservice to not show them how they're going to do things in the real world. And so we instead use something in Python like Flask, which is a very popular micro framework-- micro framework in that it's not the bloated framework that some of the larger things are. But it allows us to get certain jobs done like routing, for instance, and other certain functionality like parsing the [? HTTP ?] requests that come in. And so that's nice. DOUG LLOYD: Were you concerned about using a micro framework, as opposed to one of the more full fledged-- that's not really the right term, but one of the larger frameworks that might have some more features? DAVID J MALAN: No, quite the opposite. I mean, I either wanted to give them nothing which felt extreme, or the least amount of structure possible to get real work done. And so by contrast, we could have something like Django, but you just get so much more with that, and you get the whole kitchen sink. And I think you lose the appreciation of what you have to build and what the framework is building for you. I think when you're new to the language itself as most students were with Python, you might not necessarily grasp the distinction between what is Python the language, and what is Django the framework in terms of what functions are available to you. So Flask seemed to strike the right balance DOUG LLOYD: I mean it was definitely an overhaul of [? P SET 7. ?] We used to be that all of the functionalities of P SET 7, were mock e-trade like website where we have students buying, and selling, and quoting stocks. And all of those-- all that functionality used to be the individual files of students that write [? by.php ?] and implement all of the functionality required to purchase a stock in its own file, but in Python, we had to kind of reinvent the way the assignment was set up. DAVID J MALAN: It simplified it a bit. I think it kept all of the controller code that students were writing in one place, which I think was compelling. And what's been important to me too, is like we realize that many students-- most students perhaps who do web based final projects, are going to almost always base their own project on [? P SET 7's ?] distribution code or [? P SET 8, ?] and I really did want the code were giving students and the blanks they were filling in to be represented of how they should start their own projects once they graduate from CS50. And so I mean we really obsessed over every line of code and the distribution code, making sure that we can justify everything. And making sure that it really was representative of how you might start a general web application that has both the back end and a front end. DOUG LLOYD: But what's also interesting about [? P SET 7 ?] is that because we had a problem set in Python before, we were actually able to take off some more of the training than we would have otherwise been able to-- We always had to leave on in the PHP iteration of this problem set. DAVID J MALAN: That was nice I think. I think the price we pay is something to co mingle our discussion and lecture of Python itself with Python at the command line in Python in a web context. DOUG LLOYD: True. DAVID J MALAN: And so this web programming in Python could potentially stand on its own. We didn't have that additional week. And so we really focused the last portion of this particular week on the web application of the same, but I think that's OK. Because at the end of the day, we already have from the previous week what-- from previous weeks like what the internet is, what's HTTP and TCP. So we're already layering and layering. So to start with Python, and then end with a bit of web programming in Python, I feel like it's the right natural progression. And then you go one step further of course a week later, with JavaScript and the front end. And so it kind of works, though we could certainly-- it would certainly be nice to have even more time for every detail. DOUG LLOYD: If only we had 30 more weeks.