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.