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.
