all right hello world this is cs50 on
twitch my name is Colton Ogden I'm today
joined by sorry what are we what are we
talking about today
so Colton's invited me here today to
talk about the sandbox which is one of
CSS these web-based applications and it
complements what's known as cs50 IDE
with which many folks are probably
familiar which is a more feature called
web based IDE or integrated development
environments nice and I mean
traditionally in the past from my memory
we had to do things like install you
know VMware or even before that we had
cs50 appliance yeah back in the day so
really back in the day when I first
started teaching cs50 and even took cs50
many years ago we would all have
usernames and passwords on one of
Harvard's own central servers and that
server ran UNIX or Linux or some similar
operating system so even before the
thing that I was referring to this is
way back this is way back this is way
this is old schools and 20 years ago and
what everyone would do in the class is
connect by a telnet which is really old
school program or a protocol or more
recently by a SSH secure shell by an
encryption to Harvard server where
everyone had a home directory like a
folder where they could put files and
they had access to compilers like GCC or
clang and gdb and other such tools but
fast forward to more recent years we
actually moved off of that environment
to a virtual machine as you say using
VMware or parallels or other software
where students started running on their
own Macs or PCs a virtual machine so
their own copy of Linux and we called it
the cs50 appliance that was a bit heavy
weights and frankly it was bit annoying
to support for students because if they
change their operating system or
upgraded something the thing would often
break and so we eventually transitioned
to a cloud-based integrated development
environment thanks to our friends at
cloud 9 now at Amazon but that is a
complete IDE with a debugger built in
and persistence and and any number of
other features and so it's see us with
these sandbox which we'll look at today
too as well as a counterpart tool it's
really about quick and dirty programming
environments when you just want to demo
something you want to just try out an
idea
you don't want to have to organize your
files and save things and use your your
day-to-day environment you can just
spawn one up and throw it away after and
the beautiful thing too and I think one
of the original sort of motivations for
the appliance is that everybody's in a
consistent environment that's set up the
same way indeed that's been very
important because it's just no fun
especially for new programmers to figure
out why is my Mac not working why is my
PC not working like the instructors is
and so we instead try to just normalize
everyone's environments by using these
days of a browser alone awesome
so today we're actually also for the
very first time looking at all three
platforms extreme to extreme to twitch
normally and we've been looking at
twitch chat exclusively up until now but
we're also looking at YouTube and
Facebook chat today so if you want to
toss questions in both of those chats
will try and pluck them off definitely
draw our attention to them if we miss
them but I say we we cut straight to
your computer here and we can talk about
what the sandbox is start by way of a
demo let's do that so everyone's welcome
to play along at home in fact we can
type into the chat here sandbox dot cs50
dot IO sandbox is also a term of arts
you might have grown up with one outside
like literally a box of sand that you
can play in and build things in a
sandbox in computer science it's
typically some kind of environments
where you can only do certain things and
you are sandbox from that is protected
from other users and that's indeed the
case with cs50 sandbox the programming
environment that you can spawn and
create for yourself it's just for you
and you have administrative or root
privileges you can install software
remove software but it's just your own
until we then throw it away eventually
no one else theoretically can access
that unless you proactively allow them
to do so so it's a nice secure
environment in theory for programming
nice and this is great because it's just
right in the web browser I on any
computer a Chromebook even something
with minimal resources could go in here
and using someone else's server online
tap into some pre-configured programming
environment exactly and we have a
support now for bunches of languages and
the very first thing to do is to go to
that URL sandbox that cs50 dot IO you
may ultimately be prompted to login by a
github and most everyone on this stream
probably has a github comm account if
you don't sign up for one for free at
github comm we can
in his welter and that account just
allows you to use the same tool even
though in itself doesn't use get up we
do use their authentication mechanism
simply to ensure that we know who's
sandbox belongs to whom so here we have
the main menu and there's really very
few questions asked of you initially let
me go ahead and just click on these
environments and you can actually see
the languages and the tools that are
available in the system so most any
language you can think of these days can
you program in in cs50 sandbox we use C
and Python HTML a bit of JavaScript and
so forth
sequel Lite but there's other languages
as well and if there's something you'd
like to use and you don't see on this
list just email us it sis admin's cs50
no sorry sis it means at cs50
harvard.edu and we're happy to figure
out if we can install it for you as well
and you were even telling me I mean we
update this pretty consistently we just
recently added a couple new environments
injuried hot off the press as this
morning is now support for Erlang go
Haskell and Prolog by request of one of
our friends out in Amsterdam whose
University uses those languages in their
courses as well I'm gonna keep bugging
you but no closure no but that only
asked me for closure support about an
hour so so when you get here on the main
menu the default tab is called create
sandbox because presumably that's the
default behavior that you'd want and we
pre check what we presume are the most
common options in this web programming
environment you probably want a terminal
window and in fact you have to have a
terminal window to do anything useful
with it and we presume that you also
want a text editor with tabs so that you
can actually create or edit files what's
this thing called an ex window yeah so
on Linux or UNIX based systems you can
have graphical user interfaces or gooeys
even though you might be more familiar
nowadays with a command-line interface
to those systems um x windows is the
software that you can run on such an
operating system in order to add
graphical support it's essentially a
piece of server software that just sits
there waiting and listening for clients
to connect to it so as to display their
interfaces we can mimic this in the
browser it's a little slow and it's good
really for very slowly interactive
programs buttons and menus but not for
animation and not really for games
because you have an entire
internet between you and the servers
that are running this environment sure
you're making network requests and basic
sending your code over and then they
have to send you back sort of the visual
changes yeah they get updated on that's
a lot of bits yeah it looks like gear
the cat Tobin's asking so is this free
and better than cloud 9 it is free and
different from cloud 9 I would say it is
a subset of the features that cloud 9
and internships with the IDE provides
that is by design among our goals was to
create an alternative to cs50 IDE that
students wouldn't use day-to-day for
their problem sets but instead if they
want to just try out an idea they want
to do a demonstration they want to share
their code in an interactive way with
someone else and in the case here on
campus at Harvard and Yale and elsewhere
we wanted to make it easier for our
teaching fellows or teaching assistants
who helped me and pull them at the
course to be able to just quickly do
demonstrations in class and do it in a
uniform environment if your view cs50
IDE or any IDE you're probably used to
creating projects and folders you
probably want to keep them organized in
the file browser and such and that's
fine but that's a lot for new
programmers we really want to get the
tool out of the way and enable students
to focus on the code and the compiler
and eventually the debugger but here we
have really the first of those two and I
mean we've been used this upstream a
couple times we want to just really fast
get someone's code and just tweak it a
little bit or test something out just
yesterday and the code reviews they have
asked this way for me to pull up a
programming environment was justyou cs50
sandbox and a couple people by the way
are saying that they're impressed with
how you're dressing up so Babic Knight
says that you dress up like a real
professional for sure it's really just a
coincidence because lately in the
mornings have I been teaching a course
at Harvard's Business School which is
for the MBA students therefore rich I I
dress up a little more fancy took the
fun out of it a little bit I mean I
dressed up just for cold all right why
don't we why don't we fire one up I'm
curious to see what they look like if
you'd like to play along at home and
you're at sandbox on cs50 Deo literally
the first thing you can do is hit enter
or click create to get the default
settings and what you'll see us after a
few seconds it's a pretty simple
environment and indeed that's by design
we wanted to get rid of as much visual
clutter as possible to focus only on
problem at hand which is presumably
commands and code right and indeed
that's all you see at the bottom half of
the screen here you see a familiar
terminal window the GUI or user
interface looks a little different in
sandbox than it does in cloud 9 because
these are different tools but same idea
the file browser and a code editor are a
little different but hopefully pretty
straightforward I have no files
initially so if I click on the folder
icon there's nothing there but if I
click the plus icon I get a little
dialog window where I can create or
upload a file so if you've already got
some code you can drag and drop it or
click the upload button or you can just
type out a file like hello dot C if I
want to write a program in C but it
doesn't have to be perceived could be
hello dot PI or hello dot go or any
number of other languages as well
emuebie fw t yg3 I'm not sure how to
actually pronounce that I'm saying that
it's a little bit laggy if you're
watching on twitch we are streaming to
youtube.com slash cs50 and also on
Facebook where you can get a lower
bitrate there and a more watchable
stream and a Bewick net actually asks an
interesting question how is this
different from cs50 labs ah well we're
gonna get there today cs50 labs is a
superset of cs50 sandbox it essentially
is a environment for presenting lessons
tutorials on programming embedding cs50
sandbox as part of it but adding to it
instructions on the left-hand side which
you might have seen in CS at the X 2019
we introduced this for problem set 1 and
2 in the first couple of weeks of the
class and then Vaughn Dingell I'm not
sure if you'd just answer that but when
did sandbox become available in cs50
September of 2018 nice so just a few
months ago so I will say I do like very
much how this is laid out the color
scheme somebody mentioned that it's dark
theme and they're a fan of it but having
just the editor and the terminal I think
we were just talking about this today
it's a kind of an ideal minimalist
development environment yeah it is and
much of the UI that you're seeing on the
bottom portion of the screen is thanks
to our friends at code evolve now called
next tech we met them just about a year
ago and began this collaboration to make
this tool available to cs50 students so
the interactive code window the file
browser and the terminal window is
provided by Nextec which is running on
top of Google's cloud and they're
providing a very similar feature that
cloud 9 on
Amazon provides for cs50 IDE nice the
trucha niece is asking how temper and
you might be talking about this but how
temporary is the sandbox we create and
can we share the link to a created
sandbox to somebody else
short answer yes on both accounts in
fact if you go back to C's main sandbox
is main menu you can click on the tab
called recent sand boxes where you can
see the past I think we've hard-coded it
to be the past 50 sand boxes that you've
created we haven't really decided how
long we're going to keep them around the
design of cs50 sandbox / the tagline
here is that these are meant to be
temporary so more than a day maybe less
than a month we're gonna see what the
usage patterns are exactly like and sort
of figure this out as we go to really
decide what the best use case is for now
we're saying temporary which you should
assume is you know maybe a month give or
take but you shouldn't plan long term
cs50 IDE is meant for long-term
persistent software development so do
keep that in mind I I do I am getting a
little bit of a bootstrap vibe from that
landing page that happened to be written
in bootstrap I'm very good with the
boots and you know bootstrap if you're
unfamiliar is a popular CSS library if
you want to go to get bootstrap calm on
the streams it's freely available
originated at Twitter some time ago and
it just is a nice set of widgets and CSS
properties that you can use to make your
website look nice hopefully without
having to figure out how you make tabs
and nice looking buttons and all about
yourself it's nicely responsive so all
this will collapse nice mostly nicely
when your browser gets small but it look
nice
bootstrap takes care of the UI for us
and then also the sharing of sand boxes
yeah so sharing is possible and this is
not gonna be a very interesting sandbox
but let's go ahead and do this real
quick let me go ahead and whip up the
simplest of programs in C here so
include standard IOH int main void and
you'll notice it has syntax highlighting
like say so if the IDE and there's
providing that feedback to me visually
hello world semicolon so here's a very
simple C program and if you all would
like to now get a copy of the sandbox it
won't be interactive you'll get a
snapshot in time I can go ahead and
click the share icon you'll notice that
I see a bitly URL and if Colton wouldn't
mind pasting this into the chat if you
go to bitly / - gqv
it all lowercase BPL I think let me
confirm that that is correct try a BPI
beat me capital I sometimes bitly URLs
are hard to read even though they're
easy to click this one's doing work okay
so that one's about to paste it into the
chat if you go ahead and click the bitly
link you're about to see you'll have a
copy of my sandbox and you can pick up
where I have left off so the use case
here is in one of our on-campus classes
or sections as we call them if a
Teaching Fellow or teaching assistant is
in the front of the room demoing some
program and he or she wants their
students to start playing with the code
or maybe find some bug in the code or
fix some bug in the code they can just
share or write on the blackboard or
whiteboard that URL and let everyone get
a copy of it that's go 11 yang yang 77 Y
MCM Bennie and head hunter thank you
very much for the follows as well and oh
I guess you might have touched on this
but fatigue dil Mac is asking what's the
difference between the IDE and the
sandbox so the sandbox is a lighter
weight version of cs50 IDE it does not
have a debugger it does not have
built-in chat functionality it doesn't
have collaboration in real-time but it
does have the ability to share sandbox
is by making copies of them and
presumably because it's so much more
lighter weight is it a more performant
and easier to spin up instances it's
faster to start it probably takes five
to ten seconds whereas the IDE may take
five to 60 seconds because it's a longer
term environment that your files are
persistent on in perpetuity and
sometimes they even shut your instance
down a little bit they have to sort of
refire every instantiated and that can
take time indeed to save time and costs
on the on the cloud m4 Anju's asking is
interactive IDE on the cards which I'm
not entirely sure what that is asking
rephrase that if you could not sure and
the true key nice thank you very much
for the follow as well and so now if
folks try to go to this link that we
just pasted in all of the chat URLs will
we see their changes in real time we
will not they will get their own copy of
this and indeed if they look at the URL
they will now be at a different URL
benign I say they've been sent to their
own sandbox so kind of Forks it and
they're in rehashes their URL it is if
you're familiar with github it's like a
fork but with no ability to merge your
changes later that is by design okay
tucks might ask an interesting question
this is kind of related I want to start
a coding Club to enter
younger kids to command lines and
text-editor programming could they use
cs50 sandbox or do you prefer to reserve
it for cs50 and cs50x everyone and
everyone are welcome to use it we have
some support from our friends at Google
who have kindly helped us make this
available to students more generally so
tux man 29 please feel free to use it
just keep in mind that it's a new tool
and it's evolving and again the
environments are meant to be temporary
you see us with the IDE if you want to
guarantee that the students work
persists day after day after day after
day and then Babic nights asking the
same question that I just asked and then
sensotouch 3d was asking how long are
the copy stored and you said that that's
kind of a variable length of time but
you're saying assume a month or less
yeah assume some number of days where we
haven't decided yet I mean anything is
possible we just have to figure out
first just what the sweet spot is and
what people want to use it for cool
awesome just making sure that we have
cut up on the chat across all platforms
here oh I see Nathan on YouTube has
asked couldn't David do hello dot hi
yes he could do that as well let me go
ahead and do hello dot pi and if I do
this print hello world there you go done
with hello dot pi and so there's a file
system present here so if you click on
that folder then I'm presuming that
you'll get a little sidebar indeed now
we'll see two files hello dot C and
hello dot PI and you'll notice or maybe
you didn't notice with my fingers here I
never once went to file save I didn't
hit ctrl s or command S everything in
this environment actually auto saves
additionally by design so that students
who are programming for the first time
don't have to think about with their
code maybe being different in the
browser from what it actually is in the
terminal window when they're trying to
run or compile it and then you can
presumably create folders and things
like that as well yeah you can do that
in a couple of ways so one we can do
this with make dirt mkdir if you're
familiar with that command or we can
also do that by can we do this here
actually let's try this nope you have to
do it at the command line right now okay
and this at the moment is by design but
we should perhaps try to make that a
little easier the goal being that we
don't really expect students to be
creating hierarchies of files and
folders because again these are meant to
be quick and dirty environments where
there's really no notion of a file
system there's just a collection of
files that you were current
using however underneath the hood you
can see this if you hover over the files
that's technically in a folder called
slash route slash sandbox slash hello
dot C and we can actually see this here
if we print working directory PWD you'll
see where you actually are and so how
much of a Linux environment are we
getting through this and this is a
complete installation of Ubuntu 18 point
o4
you can see this if we do cat FC issue
which is a file that shows us a little
something about the underlying system
okay if you want to see the kernel you
can see that as well running full
fledged Linux here and underneath the
hood is using containers which is a
technology similar in spirit to virtual
machines but a little lighter weight and
cloud-based in this case so all of you
have access administrative access to
your own container and you can do things
even like apt-get install fortune or
some such program you can do pip install
you can do gem install those changes
won't persist because again these are
temporary programming environments but
while you're working on a project or
program you can install anything you
want YMCMB was asking can we upload from
cs50 sandbox to get hub or download a
repo and I'm guessing we probably do
have git installed or can download git
yep there's no GUI for that but you can
absolutely run any git command you'd
have to be comfortable though with the
command line interface so get clone get
pull git fetch and so forth
cool awesome just make sure we're all
caught up with everything which it looks
like we're doing pretty well what's the
deal with everyone using MacBooks
because of terminal in higher education
at least in the u.s. Macs are actually
very popular PCs are much more popular
globally but this has long been the case
that Mac's
within education tend to be a bit more
popular not everywhere but that's
definitely the case at Harvard it's
crazy but I it's probably the case that
in cs50 on campus 80% of students or
more I would say more based on my
observations it would be even higher
so that's just been the trend especially
in recent years especially as the iPhone
got popular here as well
shroo new boss is asking will there be
any sessions on machine learning in the
future probably we have one already on
binary classifiers with Nick Wang so if
you go back to our vods go to our twitch
playlist on YouTube you'll see one of
Nick's actually Nick's first stream was
a machine learning introduction and sake
Dylan
I'm not sure where you got that URL
that's one of the temporary URLs to what
you're redirected that won't work it's
only temporary go to cs50 dot IO / cs50
IDE oh I need that super than oh okay I
see
interesting so don't bookmark that and
rarely should you bookmark an
ugly-looking link like that you almost
always meant to be temporary yeah all
right so if for those of you are curious
as to what else is on in cs50 sandbox
let me go ahead and do this there's
actually an open source public repo
which we can paste into the chat sure
github comm slash cs50 slash sandbox and
this isn't all of the code for cs50
sandbox itself but it is the code for
the underlying container to which you
have access the underlying installation
of Ubuntu and some of this is here for
our own administrative purposes but you
can see in this file cs50.h
all of the commands that we have run in
advance for you on top of a default
installation of Ubuntu so essentially
our friends at next Tech are simply
creating these containers running a
bunch of and they're running this script
for us then installs additional software
and so this is what happened most
recently we added go and Prolog and
Haskell in addition to C and Python and
PHP and Ruby and Java and so forth so if
you're curious to go through that file
called cs50.h you can just see all of
the Linux commands that we run for you
in advance before you even have to
access the sandbox in order to ensure
that you have all of the programs and
files that we would want you as a
student or teacher to have available to
you and so when someone selects for
example go or Haskell or Erlang or
whatever environment they happen to want
at that moment in time there's some
condition here or something that changes
how the script is laid out nope not even
the same script is used for all of those
environments so if you are at sandbox
dot cs50 dot IO as of a few weeks ago
you just have to click a radio button
and select a specific language that is
no longer the case they all map to the
same exact image and technically they
always did but we prompted the user for
an additional choice now you can use any
of these environments in any sandbox I
say so they all come okay so you just
use the command line whatever you want
it's already pre-installed for you
everything is there so it's a big image
it's several gigabytes but it does have
everything in it so all you're
configuring at this main menu really are
some of the GUI options
user injured and you said it's using
docker so I'm guessing the actual
footprint of each one of these isn't in
the gigabytes it's a small portion of
whatever the users individual file
system happens to correct yeah no
there's not crazy redundancy there but
it's actually we're using docker to test
things but underneath the hood Google is
not using docker but they are using
containerization I got some of some
other version of that somebody has to
question a Ren Ron Lonny Otto was asking
is cs50 doesn't removed seems like it
has been changed to cs50 dot Harvard
yeah Lonnie Otto you're among the few
that remember that domain name yes it
doesn't redirect anymore anymore we have
been standardizing for several years now
on cs50 dot harvard.edu that was a
remnant for many years ago even though a
few of our applications are still sub
domains in cs50.net what is the tech
stack says jl 97 so it's Ubuntu is the
underlying operating system its LXE
which is a containerization technology
underneath the hood that's running on
top of google compute or google's cloud
service and beyond that the GUI that
you're seeing for cs50 sandbox like the
user interface and the buttons and the
form that you're submitting here and the
login mechanism all that that is
implemented in Python by us in a flask
in particular Babic was asking is this a
bash script and tier SH file earlier yes
cs50 sh is just a bash script that we
use for you in advance before giving you
a sandbox to configure that sandbox in a
uniform way can this be used to setup an
Ubuntu a dev environment and docker on
my local machine short answer yes but
what you're looking at is overkill I
would actually refer back to our docker
stream from a couple weeks ago now we're
and we started really at the beginning
so I would start there if you want to
learn about docker not with this dream
because then so you can just install
that on your own consumer operating
system your consumer machine indeed
thanks to Walter Wiesel chillingborough
one-one-one alfred so and agent flame
appreciate all the hard work that goes
into making this for us is why MCM beni
so thank you for coming into the oldest
Stream tux 1:29 just created a sandbox
installed Lua five-point through through
apt and sure enough it doesn't simply
work the text editor highlights Luke oh
it it doesn't not only does it work
but the text editor also highlights Lua
code I'm impressed thank you we didn't
do that part but genuine interest and
you want to keep using Lua actually what
version of Luud do we have installed any
no we never installed it so if someone
actually brought up a prior point and
one of the messages saying that we
didn't have a little configuration okay
well we can do that so do send us a note
assisted means that cs50 to Harvard ie
February birthday and we're happy to try
to split that into the image some of dr.
Malins lectures says guy UI refer to the
man page where can I find that man and
then the keyword so man stands for
manual in the Linux and UNIX
environments and Mac OS as well and if
you know a command or a function that
you want to learn more information about
you can type man and the name of that
program and you'll see in old-school
sort of black and white user manual for
that program cs50 has a doesn't seem to
have a wrapper for the main pages is
that was that an in development project
do we have something called reference
duck cs50.net
which is only four standard C libraries
but this presents the same information
in a slightly more graphical way but
it's alternative to the main page and
this is parsing the man page database it
did yeah we dumped the whole man page
database which comes freely with Linux
and parsed it and presented it as HTML
instead nice that's really cool just
make sure we're all caught up on check
because we've got a lot of questions o
Mavic was saying docker is kind of
memory heavy for his PC he's got only a
4 gigabyte PC yet understandable that's
small these days for stuff like this
virtualization containerization yeah
cool well I think we're pretty caught up
on the on the questions all right so why
don't we take a look at what we're using
underneath the hood to build this sure
so here on the main menu recall is where
we started and you can choose your
various GUI features but there's a few
other features if I actually click
configure here you'll see some hidden or
more advanced options and this is really
not necessary to use but if you as a
teacher or even you as a student want to
run some number of commands before the
sandbox is created so for instance it
was tux man you mentioned installing Lua
if you wanted to distribute a sandbox
for your students with Lua already
installed and you didn't want to have to
write instructions on the board or an
email as to how to install Lua you could
actually do it here apt-get install and
I don't quite know the
command-u use but maybe it's Lua 5.3 I'm
just guessing if that's indeed the
command you can type that into this form
here and then if you preview the URL
you'll actually see a special URL here
that's read-only that you can copy and
paste your students in an email or any
mechanism like that and you'll see that
embedded in the HTTP parameters is the
command you want every sandbox to run
automatically so you can just automate
this process as well that's cool I
actually didn't realize this is the
feature of the sandbox prior to the
stream well thank you this this part I
did that I like I like that that's
really cool and you can see some other
information the means by which we're
getting a text editor is because we have
a window equals editor parameter and
window equals terminal means we're
getting a terminal window as well and
you can go one step further suppose that
you want to create a sandbox that it
doesn't use Lua for instance but maybe
you just want to teach students about
interactive Python and therefore you
don't want them to even see a linux
shell a bash shell so to speak you can
literally just type Python here as the
command to run and the sandbox is term
on a window you'll see here that the
default command now is going to be
Python so this will happen as soon as it
starts up yeah so let's try that let's
click create now or just visit that URL
by copy/paste and you'll see the same
environment but watch the terminal
window this time instead of seeing a
dollar sign with our bash prompt which
is the default shell that's a Linux
typically uses we will instead now see
once our internet here cooperates hey
and you said just five to ten seconds
usually sometimes a little longer to
instantiate a sandbox indeed sometimes
though maybe for the more custom ones do
you think maybe it's doing a little bit
more work since it doesn't have as much
pre cached
when in doubt reload worst case reboot
although that's there we go ok I'll turn
this up there and you can see it's
immediately running Python it's not
actually running bash or a linux shell
that's really cool that saves so much
headache
I can see potentially especially like
you said in the context of teaching high
schoolers or you know even younger
students trying to learn or folks that
are simply not used to this environment
want to get right to coding in Python
yeah and let's get rid of the text
editor because if you're using the
interactive terminal you probably aren't
working on a file so let's turn off the
text editor let's go ahead and configure
again and run Python instead of the
default bash click create to get a new
sandbox throwing away by deliberately
the one I
easily had and now you'll see I only
have a terminal window instead of the
text editor on top and the terminal
window so now the student can focus on
that and only that this almost feels
like scaffolding towards something else
entirely how about a little bit this
this level of customizability almost
lends itself very nicely towards the
idea of the labs which are oh what a
nice teaser let me just make sure that
we're all caught up I know the tux man
was saying stop I can only love the
sandbox that much so he's a he's a fan
of the features as well
I'm just monitor all the other platforms
were on which I think we're all caught
up on comments we have three computers
in the room on today yeah and this is
great having them all on Twitch
primarily makes it a little bit easier
but some folks are definitely chiming in
on YouTube which is cool but I think
we're all caught up okay alright well
let's go ahead and we just open my chat
windows there let's go ahead and get rid
of that sandbox and that's what I mean
by temporary once you're done with it
just close the window and it will
eventually disappear on you let's go
ahead and look at some of the underlying
technologies not for labs that was an
accidental teaser but for what we're
using underneath the hood here so you'll
notice that we're using bitly somehow to
share the URLs and that's just to make
them shorter technically you could go to
this crazy long URL that's in my
browsers bar here this is what's known
as a UUID or sometimes a GUI D which is
a globally unique identifier it's all
based on probability and statistics this
is 128 bits but presented as hexadecimal
because it looked crazy if it were just
zeros on one yeah and so it comes in
this standard format with a few hyphens
and we just use these uu IDs so that
only it is incredibly unlikely that
anyone the Internet is gonna guess your
UUID
and therefore be able to see your files
it's possible but the odds have been
happening are astronomically low and so
this is very common paradigm when you
want to give unique URLs for something
but with very low probability let other
people access it it's like in Google
Docs or Google Spreadsheets if you share
a URL with the world and you give people
view only access the only way they'll
find that is by knowing the URL or on
YouTube if you've ever uploaded an
unlisted video only by knowing the the
parameter
can anyone else access that video it's
effectively the same way that we and
will not the same an exact way we do it
but it's similar in spirit to how we
hash passwords and things like that
similar to prevent people from guessing
them yes and in this case we're really
just leveraging probability now of
course I have zoomed in on and
highlighted my secret of value so anyone
that watching now could go to sandbox
that cs50 video slash o 3 5 D f e8 4 -
and so forth but that's crazy like no
teacher is gonna want to write that on
the blackboard in class and so we use
bitly in order to short in that same URL
so they're the same but bitly is just a
lot easier to write and not always to
read as we found ourselves but to at
least write down when you want to share
it with someone else
so one we're actually using bittley's
api because we are not certainly
manually going and copying and pasting
these long URLs into bitly bit lyz
website we're using their API to
generate that and if you recall when I
logged in well if you recall when you
logged in you were probably prompted to
use github and you had to authorize the
app even we're using github API for
actually authenticating users so why
don't we take a quick look at those yeah
let's do that and then also thanks to um
Jorah idat and frosty exam for the
follows and I think maybe a couple
people had questions Babic was asking
our Z Z shell or fish shell available in
the sea semester look I don't know about
fish I've never actually used that zishe
nope not at the moment but send us a
feature request and we can try to add
that just email sis admin's at cs50 dot
harbor dot edu I don't know about fish
so I'm gonna guess the command is fish
not there but we don't think it would be
anyway and then the so Shaikh was asking
do we have GPU access um not necessarily
I don't actually know what containers
are being what types of containers are
being used underneath the hood most
likely not GPU usage in the cloud would
typically be more expensive and this is
meant to be a very lightweight
inexpensive mechanism so I think that's
very unlikely the case right now with
the underlying cloud service I think we
might have some aspiring Bitcoin miners
in our chat it's not gonna work and
Bitcoin mining will get detected anyway
and shut down by Google Wood says Ron
Lani Auto would people be able to guess
the bitly URL to gain access
sandbox yes so that is the price you pay
by using any URL shortener if you're
using bitly or tiny URL or the like they
use a smaller address space it's not as
big as 128 bits usually which means yes
people can guess it with higher
probability nice and virtual so 7 was
saying I've been enjoying the C's 50
game dev lessons awesome well thank you
very much for tuning in for those ok so
let's take a look at github API and
bittley's API just to give you a sense
of what's going underneath the hood cuz
that's what's nice about sandbox I mean
as much as it is cs50 sandbox most of
the environment is thanks to our friends
at Nextel Tech in Google and most of the
features were using for authentication
come from github most of the sharing
features come from bitly and so this is
what's actually I think a lot fun about
programming these days once you
understand the fundamentals you can
build really cool applications by just
kind of stitching together
metaphorically different api's and
different services and building your own
idea but standing on the shoulders of
really smart other people and I mean
this is the sort of motivation behind
cs50 zone mesh of pset
right yeah indeed so the cs50 mashup for
that piece set was all about taking
Google Maps and Google News and building
something of your own on top of them
kind of an illustration of don't
reinvent the wheel leverage with the
work that other people have oh yeah I
mean this would have taken us a year or
more probably to build every single
component and that's just probably not a
good use of time yeah
when there's so many other pieces you
can use off-the-shelf thanks to others
Patrick Machado is saying that terminal
usability is awesome and then Babic
night asked cs50 has cs50 ly as well
right is it just a wrapper of bitly used
to be cs50 dot ly we use for shortening
some URLs it used to be a wrapper for
bit late
we actually found it too time-consuming
to use bittley's web-based UI for
shortening urls and so now we just
re-implemented bitly in our own web
application using flask so that we just
actually edit a github repo when we want
to add a short URL only a few of us do
this and we tend to do it longer term so
it's not an arduous at all cool alright
so let's go ahead and just Google
something github authentication not fail
though that's apparently in FAQ API and
you'll see here here we go um basics of
authentication let's start there
there's a few steps involved whenever
using github zone authentication that is
to say you don't want to have users come
up with their own usernames and
passwords on your website you don't even
necessarily want a database for those
things but you do want users to
authenticate but ideally against someone
else
the catch is it's good github or someone
else is going to authenticate your users
you need to be able to talk to github
securely so that github can say this is
Colton who's just logged in and you want
to know not his password but his
identity his username his user ID number
or something like that so there's a few
ways to do this with github I mean
there's a few steps involved you have to
register your application after signing
up for a free account following
instructions like these but I'm gonna go
ahead and try to scroll down to
something familiar here after
authorization looking for a keyword here
I'm one of the real Doc's this isn't
quite the page I want let me go to they
almost look at they're using bootstrap
as well they have their own CSS library
actual data let's go ahead and google
github oh ah there we go
so it turns out that oo auth or version
2 of OAuth is a very popular protocol
for authenticating users against other
websites but getting back securely a
response like Colton's username and his
user ID so frankly we just kind of
follow the instructions here and we
registered an app
we got what's called a client ID and a
client secret and few other details and
then using some code and python and
using the documentation from github did
we write some code such that if you go
to sandbox that's cs50 io / login you're
actually redirected to github.com you're
prompted to log in there and wants to
authorize the application they then
redirect you via HTTP back to us we then
check essentially a security token that
they have sent to us over HTTPS and if
all looks well we decide yes you are in
fact Colton and in this way we don't
need a database of users we don't need
usernames passwords or anything we can
just rely on our friends over there get
up to do all again recycling or not
recycling but reusing other people's
channels and technologies and I think
the other motivation for that is not
just to save time but none of us wants
to sign up for yet another darn like
username and password on another website
if I've already got a github account
maybe just let me use that if I've got a
Google
found a Facebook account let me use that
and so that's why you see a lot of
websites offering third-party logins and
it's investing a lot of trust into large
companies who surely have thought
through a lot of these corner cases and
you have you know a lot of investment in
the security of their websites well
especially when it comes to add
adversaries out there sort of people
with way too much free time that are
trying to misuse your services github
unfortunately probably gets a lot of
people trying to create fake accounts
all the time or denial of service
attacks and such and that could become
something we're vulnerable to if the
wrong person takes an interest and we're
in the business of educating we're in
the business of trying to create course
content and connecting with students
it's arguably not the best use of our
time to also have to think about all of
those problems as well so to the extent
that we can lean on our friends at
github or any third party service to do
that hard thinking is a good thing so
that we can each focus on what we're
hopefully all good at and m4 was asking
is this a privacy trade-off
absolutely.we github knows that you are
logging into our cs50 application we do
disclaim and see us with these problem
sets them for instance that if you're
uncomfortable with that that's fine
create an a dedicated account a
different account that doesn't use your
own name like mine is de meillan I
probably shouldn't use that if I want to
stay private but you can create another
account so that they know that a
different user is accessing cs50 sandbox
but not necessarily that it is you
thanks to the kardi now vish km FDM 12
and rockjaw
for the follow nice bamboo quiz asking
is this buggy Facebook third party app
breaks if Facebook I don't know what
that means but is this buggy no this is
not buggy whatever we're doing I'm not
sure and then k stark asks can I run the
lightweight web server and access it
across the Internet you can not for very
long because these are temporary
programming environments so the intent
is not to run a web server or web
application other than for development
or student purposes but absolutely yes
you can go ahead and access via cs50
sandbox his main menu an embedded
browser and you can create a sandbox
containing this and if we give it a
moment to actually create the new
sandbox what you'll see now is not only
the Co
editor as well as the terminal window
you're also going to see another tab
here called web browser that's an
embedded browser using an iframe that
allows you to access what's on the local
computer so let's do this really quickly
let me go ahead and create hello dot
HTML and let me go ahead and do doctype
HTML Open bracket HTML close bracket
HTML head close head title hello comma
world close title and then let me go
ahead and do a quick body close body and
then hello comma world
HTML is little ceremonious yes so little
tedious but there's a very simple page
called hello dot HTML if I click my
folder there indeed it is in my my
sandbox and if I go ahead now and run
HTTP server which is a free program
happens to be written in JavaScript that
runs an HTTP server or a web server
you'll see that my server is available
on localhost port 8080 well if I
actually go to this embedded browser and
actually scroll up here and click reload
we'll see the two files that are
actually in my account and if I click
hello dot HTML voila
you'll see it embedded right and we can
technically pop this out and access it
in my actual browser so if you two
really want to type this out and visit
this URL you can see it temporarily but
only until the sandbox is turned off
which happens automatically after a
while mr Co 21 was asking can you walk
through the offline sandbox is there an
office in there is not an offline
sandbox there is an offline IDE and if
we go ahead and paste this in this URL
cs50 dot read the docs dot IO dot IDE
dot IDE or slash slash slash ID you will
see exactly that documentation for cs50
IDE offline which is a frankly a bigger
topic unto itself
amazing oh the way of authentication s
is bad like night sometimes third-party
apps takes us do some fishy web sites or
it used to that's possible frankly
that's not Facebook's fault that's
because the user has followed some link
that leads him or her to a fishy web
site unrelated to what we're doing here
you'll be prompted by
github to say are you sure you want to
authorize these of these sandbox to know
who you are but that is a risk to users
and a threat that you need to be mindful
of and only click links and only login
to services that you are inclined to
trust can you use to use your incredible
Street creating at Harvard extension to
accept more of the CS game courses for
the programming and software engineering
certificates I'm not sure we have that
much pulled guy but we will we will
mention it to a colleague of ours Vic
j79 what are you guys making well we've
been making three things hello world in
HD hello world in Python and hello world
in C yeah today's not necessarily an
illustration of programming applications
but more the tool this use 50 sandbox so
if you're just tuning in now definitely
scroll back or watch the violator but so
far we've seen a lot of really awesome
functionality I'm a big fan of the the
ability to customize in advance the
sandbox before you even spin it up yeah
and here we have let's say our final
step when it looked comes to api's let's
take a look at bittley's API so
bittley's API is what we're using in
order to shorten our URLs here so let me
go ahead in a separate window go over
here and just google fitly API since I
don't remember the you are offhand voila
we're there bittley's api cute little I
didn't like that's a new thing I have
not seen that bitly or whatever that it
looks like a Blowfish let's go ahead and
click documentation cuz this is where I
started baby and see here authentication
bit links is where I began so I had
never used bittley's API before this
project and so I didn't literally what
you just saw me do I googled the API I
click to get started I read some
documentation and eventually I made my
way to order called bit links that's
actually the technical term they give to
their short links and you'll see here
bit links is how we refer to shortened
links you can see these with the bitly
domain or your custom branded short
domain that's how we use Tiff's 50 dog
ly original an ingenious idea to because
I imagine all they must be doing is just
triggering a redirect oh yeah this is a
super simple technology but this they
must get tons of traffic and oh yes no
they are they have wonderful
lytx and that's what people would pay
them for typically because if you share
a short link on Twitter and social media
you can use bitly to actually monitor
who and how many people and from where
are people coming who are clicking that
link Martin was saying still missing the
Oh camel example I'm gonna do a no camel
example actually I don't know any Oh
camel can we have multiple contributors
on a single sandbox I think you asked
this earlier but it's not possible right
you only one person can contribute to a
given sandbox you can share it but
you're sharing a copy and that is by
design the ide provides collaboration
Menchu denim's as will you go advanced C
or C++ courses I'm not sure plans for
such right now there certainly there
must be some such courses on EDX or
Coursera the like but we don't have
plans for such likely we'll touch on
some of that stuff at some point on
stream in the future depending on who
has interest in it but yeah J who are
you guys who are you my name is Colton
Ogden my I'm a technologist at Harvard
and a instructor of a game development
course my name is David of course called
cs50 here at Harvard as well as a few
others and this stream of cs50 is all
about introducing students and folks
around the world to just various
technologies languages techniques and
opportunities to learn stuff better
thanks alright so here's what I really
did if I wanted ultimately to create a
bit link so i create clicked on create
bit link and you'll see here and the
documentation for different companies is
gonna look different but you have to
provide some kind of request you have to
specify optionally what domain to use if
not bitly comm bit ly a title for the
link if you care to see it in the
analytics a group value to want to
somehow cluster related values tags for
your analytics and deep links and such
but the long URL is frankly the only one
that really matters that is whatever the
long URL is like sandbox es with da da
da o /u u ID whatever that is and you
want to convert it to a bit link so
essentially I wrote some code in Python
using flask that makes using the a
Python requests library in HTTP POST
request to bittley's domain and then i
get back a response from them which
contains the URL that I was hoping they
would shorten for me and therefore we
displayed to the student to the user
that short URL and we get back a value
called link which is
indeed the shortened link I like how
they Illustrated their the data
structure they expect or like the data
the model for the object they respect
they expect and to also return indeed
and it's recursive to there's some other
interesting stuff in there as well cool
so in short like never be scared I think
to just go off and just learn something
new we thought it would be very tedious
for teachers to have to write crazy long
URLs on the board so we decided to use a
URL shortener and we could have
implemented that ourselves and indeed we
did for our own URL shortener but for a
sandbox we wanted to just lean on
someone else who already does this well
so we chose bitly but you could use
other services as well cs50 introduction
to the art of computer science for
majors and non-majors alike and lots of
phone book ripping don't ask so why
don't we take a look at cs50 lab which
is a separate tool that's built on top
of essentially cs50 sandbox yeah let's
take a look at it all right so if you're
taking CS at the X 2019 the latest
version of cs50 freely available on EDX
at cs50 edx.org not to be confused with
the 2018 in there I'm guessing they're
referring to they they use the 2018 labs
correct but the course itself is till
2019 and critics indeed we simply
version things based on when the matura
was created not when you are necessarily
accessing it um you'll see here at
perhaps a familiar face this is my
lachan a PhD student here at Harvard
who's been with cs50 for some time he
was on stream problem oh nice yeah
that's very true but she came back for
the game one indeed that's right we
played that game forever now and then a
little while no holidays recently so
you'll see here an environment that
looks very similar to cs50 sandbox even
though we're calling it up here on the
right cs50 lab you'll notice that I'm
indeed logged in with one of my test
account to your student 50 and you'll
see almost the same idea we have a code
editor here with a file called hello dot
C we have a built in terminal window and
the motivation of cs50 lab is to give
you a sandbox optionally with some code
pre-built written by your teacher and
then on the left hand side like here to
provide some instructions so we could
for instance start playing zamyla video
where and she welcomes us to the problem
and introduces us to what we're about to
see but once I'm done watching that or
any embedded video I can go ahead and
click Next and move on to the next
part of the program and you'll see that
much likes uses these problem sets which
way back in the day were Word documents
and then PDFs after that they were just
HTML files now there's still HTML files
but the coding environment is right
there you don't have to open multiple
tabs on your browser or keep hitting old
tab or command tab to change among them
and there's some integration between the
code and the actual lab in the web
browsers they're not they're not they
can be yes with some of the more
advanced labs you can actually run
checks and you can run commands by
cutting buttons on the Left that trigger
code to be executed indeed on the right
hand side and that's a super that's a
super cool idea yeah and the motivation
here it pedagogically is to just keep
the instructions right next to the
programming environment so that they
feel cohesive and more like a lesson and
indeed you'll notice the environment is
very similar to code Kadim ii if you've
ever used some of their tutorials and
there's a lot of websites that have
instructions on the left and coding
environments on the right but what's
different about cs50 lab at least we
hope is that it's entirely free and
customizable so you don't have to even
create an account on cs50 you just need
a github account and you just need your
own public repository because everything
you're seeing here it turns out is just
data that's stored in a freely available
github repo and all of what you're
seeing here is indeed HTML but that HTML
was not written a by hand as HTML it's
actually written as markdown which is a
very simple markup language that he's
then converted automatically by us to
HTML so somebody could theoretically
then create an entire course curriculum
on here and make it publicly available
exactly and so a lot of the teachers
with whom we work now in high schools a
few of them have started to create their
own labs and their own github repos they
don't need us they don't need to create
an account they don't need to upload
things they just need to use a github
repo and they're completely in
autonomous and in fact if we keep going
here we'll see that this lab was all
about walking through students through
how to write hello world you'll see that
there's some hints down here as well and
you'll see ultimately that there are
some instructions for how students can
submit this and even though I kept
clicking next students can still back up
the entire script that they were
following is still there so what we're
doing is sort of progressive disclosure
of
content all those next buttons are doing
using javascript is hiding everything
below them so every time you click it it
just reveals a bit more a bit more when
the students ready to see it in this
context for this particular lab it's
kind of like an honor system based
exercise but like you were saying
there's ways to actually make it
enforced such that you do need to
actually compile the code to continue
not to continue you can always continue
at the moment the but it is based on
sort of trust like you the only purpose
to use this lab is if you want to learn
we have not bothered to implement
mechanisms like you must get this
correct before you can even see what's
coming next the goal was to be more I
think open and over-aggressive sure that
makes sense
any comments a question I think we had
we had a few a few questions so the soil
shake with asking David how do you
manage time for these projects after
teaching hours and these streams I'm
impressed and David is exhausted as I
would say Colton has to just keep making
me it's set aside time and wake up and
the good news is I mean I I enjoy doing
these these are a lot of fun thank you
see these sandbox is prompting me for
github auth which you've just closed is
the way that we have to be expected we
do authorize we do authenticate students
because we want to know with what user
ID to associate the sandboxes the Vic J
was asking can you talk about how cs50
was made so cs50 the course was made 30
years ago in some form I took over the
course 12 years ago and it has been
constantly evolving on the tools that
we're now using in the course have been
either open source projects sometimes
commercial software sometimes homemade
projects like cs50 sandbox and labs so
that's probably a bigger topic than
today allows for but as cs50 sandbox and
labs are examples of the process and the
mindset through which we went to figure
out how to design better tools for
students and it looks like he said also
talked about the design of this is it
docker so maybe he's referring also to
the labs but she talked on previously
before just an Ubuntu file system hosted
somewhere else someone some other server
Google said Google Cloud was hosting
most of it Google Cloud is hosting the
programming environment our server on
Amazon is hosting the instructions in
this case and is actually converting the
markdown to HTML cs50 lab also is a
flask based
Python application em foreign juicing
I'm impressed how you stand in front of
those bright lights for so oh yeah me
too it's a little hot especially early
in the year when it's still warm out in
Sanders Theater yeah cool I think that
that's that's alright well let's take a
look at where this all came from right
because it looks like this is pretty
involved there's a video there's HTML
there's like headings there's mono
spaced fonts there's some sample code
and commands and the like so notice the
URL here and this might change I should
disclose a disclaim but right now the
way the labs worker as follows you go to
lab that's cs50 dot IO and just to be
clear there's nothing there of interest
right now it's still in the to-do list
actually make a main menu so that's to
be expected no styling or anything
that's our eyes tml no the goal is to
distribute the labs not the landing page
right now but you'll notice after the
laptop cs50 dot io domain name you'll
notice cs50 slash labs it turns out that
cs50 is the name of our github account
or github organization Labs is the name
of a repository of code on github com
and then this is a branch there called
2018 slash fall and this is the name of
a folder in that repository on that
branch so can this hook into any github
account then didn't necessarily have to
be cs50 slash X nope this can be
anyone's account so you literally right
now if you follow along right now or
right after the stream of the
instructions that we're going to provide
you with you can create your own lab to
visit a URL of this format and voila
even without our help or intervention it
will just work their goal is to enable
teachers and students to be entirely
self-sufficient so is it then I guess
fetching all of the files and rendering
them sort of in that embedded web
browser and just putting them into the
file system indeed we can take a look
let's go ahead and go to github.com
slash cs50 slash labs which is the name
of the repository I mentioned there's
this weird word here called tree which
is a github.com specific feature it has
nothing to do with the repository itself
that just ends up in the URLs when
you're browsing a repository here's the
name of the branch and here's the
subdirectory I care about and you can
see this over here if you've used github
comm before you can see some branches in
this little drop down so we have 2018
fall 2019 spring 2019 X and so forth I
also want to point out that
see if he's on Brenda yeah he's here
curious QT and she's actually in the
chat now shout out here Brenda was the
most recent contributor to this
repository because our labs are open
source as well so you can see the
contents and indeed that's what we're
about to look at cool
so in this repository notice are just
three files dot cs50 amyl readme dot
meed and hello dot C why is this
noteworthy well notice in the lab itself
there was one file we saw earlier hello
dot C and it turns out all of the
instructions you're seeing on the left
hand side that is readme MD ok so just
as on github.com you can create a
markdown file called readme MD and it
gets automatically rendered as HTML for
you underneath all of your files in your
repo so are we taking that same approach
to make it easy for teachers to just
write some pretty simple markdown they
don't even have to know HTML and it will
just get automatically converted by us
in lab dot cs50 bio to HTML can we see
what some of the markdown looks like my
chest absolutely so let's do that let's
go over to the repository you will see a
preview of the markdown here but again
github automatically renders markdown as
HTML but not all of it because we have
some custom tags as they're called tiny
markdown that we've added support to
github doesn't understand those we
understand them so let's go and look at
the raw file to actually see everything
that's going on I'm gonna click on read
meetup MD and again is going to be
partially rendered by github just to be
user-friendly I don't care about that I
want raw files I don't want any
interventions and here you'll see the
same content but written is marked down
so do you know offhand
for instance what the hash sign is I
believe that's a the fewer of the hashes
the larger the heading size yep so
that's an h1 tag if you do hash and then
some word or words you're gonna get an
Open bracket h1 tag some content and a
closed h1 tag here you're going to get
an h2 tag and and you can perhaps infer
if you have three and four and five
that's an h2 and three and four and five
and exams so notice these are custom
features these are not built into
markdown itself we are using underneath
the hood a free tool called Jekyll
Jekyll is a static site generator super
popular for making your own personal
home pages and portfolios it is what you
know pages uses when you want to publish
for free to github pages
static website we are using it a tube
just because it's so popular nice and so
I just basically pre processes all of
this and sort of replaces this video
stuff I meana it's gonna parse all the
markdown at once but wherever it sees
this almost like Jinja it's gonna
replace that with some value some iframe
if it's a video next one might be a
button of some kind of links to
something else
exactly okay and you'll see what these
are these are custom tags so these won't
work normally these won't work on github
pages but they will work on lab cs50 io
and so we've taken a open-source product
called Jekyll free and opensource
and we just added features using its API
nice
okay so we've coded the video parser
write module ourselves and what that
does is if laptop sees 1500 sees in your
readme MD the keyword video it's gonna
look at the next thing it sees which is
hopefully a URL on YouTube and it's
gonna create the requisite iframe by
which to embed it in the instructions
for you that's pretty cool and this is
just an alternative to copying and
pasting yourself the actual iframe code
we don't want teachers to have to worry
about think about any HTML so we just
magically do this for them well I like
it we have a few comments in a lot of
people worry we're messaging also on
YouTube
twon was asking toin win men asked there
are multiple playlists of cs50 each year
on YouTube such as cs50 twenty eighteen
twenty seventeen twenty sixteen and so
on which one do you highly recommend a
beginner with no programming experience
it begins with thank you well I love
them all equally but I'm a little biased
I would just typically recommend the
most recent because one the tools are
gonna be the most up-to-date the content
is gonna be the most up-to-date if we
talked about any current events in the
news that's gonna be up-to-date and
theoretically we try to make the course
better and better and better every year
which suggests that the most recent
version is the best though we will defer
to others opinion on that aspiration
there are a lot of different color there
is a lot of different content for cs50
is there a means to follow lessons and
complete the general content of cs50
asks Duane yeah so Twain if you go to
cs50 edx.org that's perhaps the simplest
way to see everything from
most recent year altogether you can sign
up for free as an auditor no need to pay
and you'll see everything there as well
it looks like yela joined their
non-friends yella from Amsterdam who's
contributed to some of the code that
underlies this and they've been using
some of these labs as well and the
automatic grading feature is called
check 50 hello guys if I get it
correctly the cs50 lab constantly
refreshes the education frame correct
this is our sky car every time you push
a change to your repository and a
student reloads the page or visits us
for the first time they will see the
latest version of your readme we check
the hash of your latest commits and if
we don't already have a copy of that
latest one we clone your repo which has
to be public in this design and then we
render the HTML so you don't have to do
anything we just push it and then we
will automatically notice but if the
student already has a lab open in a tab
from like yesterday they are gonna have
to hit reload they won't lose their
files in the sandbox they will be
reloading the HTML on the left-hand side
and the nice thing to note about the
differences between Santa box and labs
you know you're talking about the
sandbox is sort of ephemeral it
disappears after a certain period of
time the labs by the nature of them
fetching statically you know allocated
github content correct they'll always be
they'll never disappear because they're
constantly just pulling the information
they might be spinning up instances of
the sandbox but the labs ultimately are
they last long reckon that any changes
students make to a lab is persisted and
that is not temporary but we'll keep
that until until we stop maintaining
this particular tool so you can assume
it will be there tomorrow
Patricia asks I'm teaching ap cs50 using
the legacy IDE any plans on moving the
AP course to cs50 labs yes next this
coming fall so if you start your next
year in August or September everything
will have switched over to the new
version of cs50 IDE as well as these
tools cs50 sandbox in cs50 lab what we
did Patricia this past year on campus
here in Cambridge is we started the
semester with scratch as always we then
introduced cs50 Stan box just for
in-class demos and lectures just as you
can if you would like in your own
classroom this coming fall though you
can also start using sandbox right now
even though students won't know about it
from any of our
from last year we then use cs50 lab for
P problems that's 1 & 2 at Harvard
College here you can certainly use that
for some of your own problems and then
after that for problem set 3 and the
rest of the semester we transition to
cs50 IDE so the legacy IDE to which
petitioner refers is what internally is
version 3 thanks to our friends at cloud
9 that's still running on an older
Google cloud now that cloud 9 is part of
Amazon version 4 of cloud 9 as well as
cs50 zone IDE will soon starting the
summer beyond amazon's infrastructure as
well the UI and everything will still
look the same but we'll be helping folks
migrate from one to the other but we're
waiting for the high school school year
up to end big changes Ivan's asking
greetings from Kingston I was wondering
if you have any content to learn iOS
programming have a good day not recently
Ivan a colleague and I my friend Dan
Armendariz now at Amazon actually will
quote the notes as well
years ago we did teach a course called
computer science East 76 at Harvard's
Extension school but it's been many
years and even though the materials
still freely available at CS 76 dot TV
it's outdated by now Apple has made so
many changes that I would go to
Sanford's course online Google Stanford
iOS course they should have a much much
more recent and free version of a course
as well I think they're like iOS like
they've released I think an SDK for
every iOS version oh my god it changes
so fast and I think would the one that
we did was way at six or five of
something like that years ago so don't
just go to go to Stanford for your iOS
program
Ziggy says so happy you guys are
providing this content currently going
through CS degreed nice to see how
others present this annihilation are
those independent repos missed it in get
asks Babic or can we even nest and get
repos oh you can't nest git repos I
don't quite know what you mean there
maybe you mean get sub modules or sub
trees but short answer no we don't clone
those recursively anyway but you can
have sub folders in the repository so we
have a hello folder we have a Mario
folder we have a bunch of other folders
and we'll come back to this you can have
multiple labs in your repository as Lee
said the cs50 lab is awesome for doing
the problem sets thanks for all the hard
work you put into it every welcome just
want to say cs50 is the best MOOC on the
Internet
really stuck with a/c part of the course
willing to start with Python soon says
DS hang in there the see stuff will sir
be well Python will seem so much easier
once you've gotten comfy with the C part
yeah definitely and then Babic said the
work goes into setup the coding
environment with end and all this saves
a lot of time given that you have
internet working properly you have to
agree very very nice very great and hang
in there yeah we do know that some folks
have slow internet expensive Internet no
internet and we do have cs50 IDE offline
for that even though it's a bit
complicated to set up with docker and
such so we do here you we're just
waiting for certain technologies to
catch up so that we can make all of this
technology offline of all someone with
slow internet but maybe with a bit of
RAM you would maybe recommend set up a
docker local docker instance and yeah
and just be too painful using a slow
internet connection use something
offline if you can in that case yeah
Ziggy Vic j.vin dev and Roy Koch up
thank you very much for the follows and
if something goes wrong with cs50
resources sandbox IDE lab reference etc
where do we report the bugs or typos uh
any of our social media channels we read
everything even though we do our best to
reply to everything and we always notice
when something is broken with the tool
so simply reach out on actually let's
type out if you could cs50 dot EDX org
slash communities by any of those
channels with one of us will spot it
this way you've been posed by whatever
mechanisms you have an account and then
we're gonna go ahead and post one other
URL where you can't report things but
you can keep track of things can you go
ahead and share cs50 dot status page io
one word like that yeah this is cs50
Status page which is hosted by a third
party so that if we are down hopefully
they are not you can still see our
status and what we'll do typically is
either automatically if we notice
something's wrong automatically with
some of our checks will automatically
announce to the world something is
broken here's what we know or sometimes
we manually post alerts as to what is
wrong so that you can keep tabs on any
problems we're working on awesome I
think we're all caught up on two
questions one question I had was with
these
the sort of webviews is there a way for
us to click a button to go to an
entirely another sort of exercise
contained exercise not at the moment
within Labs once you're in the lab you
are in that lab we deliberately aren't
linking them together we've thought
about this people have asked about this
still thinking about it because labs
tend to take a non-trivial amount of
time it could be several hours for some
students and I haven't been convinced
that we necessarily want to tie them all
together because the reality is
someone's more likely to go to sleep
sometimes than to just click next and
move on to the next one so it's possible
we just haven't decided if that's the UI
we want to provide sure so we can share
a few other features though of the
markdown file here you might recall the
green next buttons yeah I was clicking
the means by which you create those is
you just create this but this is a
Jekyll tag that we've added support for
and that frankly just creates a little
bit of HTML in the DOM and then we're
using javascript and jQuery a library
that's popular in the JavaScript world
we are effectively any time we see a
next button hiding everything below it
so every time you click on the button
you are inducing a function to be called
a click handler that is then revealing
everything between that button and any
next button in the page so more on that
Colton will be leading with some of the
team some Colton will be leading some
seminar some streams on JavaScript and
jQuery a little tired it's like a couple
weeks we'll be doing at Java Script from
the beginning without any jQuery and
then we'll actually dive into jQuery
because since that's a JavaScript
library I think it makes sense to start
with the JavaScript basics go to jQuery
and it'll make some full websites using
all the stuff we learned so far
and you'll see now if you've never seen
markdown before it's almost entirely
just ASCII or Unicode text but you'll
see some tricks like this this is going
to go ahead and give me italics in HTML
it's gonna generate like an e/m tag for
me automatically these back ticks as
they're called are how you can create
mono spaced code type fonts so that you
can display it as though it's a code or
command if we keep scrolling down here
we'll see this is how you can do a
multi-line code block you can do
back-to-back take back tick and then
type the command and it will show up in
a little mono spaced font in a blatte in
a gray box and if we keep going you'll
see another h2
which is gonna be induced by this keep
going and here it just gets a little
repetitive right these are really just
step-by-step instructions but this is by
design even though for a teacher that
starts to get a little long the idea is
to keep it in a familiar world github
already supports readme MD files
hopefully folks are familiar with them
and we didn't want to have to create a
complicated thing we have to create
multiple files and so forth it's just
one text file written and marked out and
we take care of the rendering of it as
HTML for you we're sort of adopting
github x' paradigm and repurposing it
completely which is really cool yeah
yeah I mean why reinvent the wheel why
reinvent login why reinvent markdown
support why reinvent any number of
features when we can just lean on others
for them let's go ahead and take a look
at a slightly more complicated lab
because there's more features than this
the hello we're a lab that we provide is
really by design the simplest of them so
let me go ahead to a different lab and
to Babic nights question earlier about
nesting if this is an answer to that
question you'll see that in our cs50 /
labs repo we have a whole bunch of labs
these are all of the labs we use this
past fall on the 2018 / fall branch and
again if you want to play along at home
all of this is in github com
if you train with my pasting / cs50
slash labs and let me go ahead and go
into one of my favorites that we've used
in the course for many years
mário for those less comfortable you'll
see in this directory we have a few more
files and let me go ahead and point
these out as well as one we didn't look
at earlier so you'll see a readme MD
file with the instructions for this lab
you'll see Mario dot C which is our
distribution code the starter code
there's pseudocode text which is
actually just a file we asked students
as part of the homework to write
pseudocode in for their Mario algorithm
before they do it
pyramid dot Peng is just an image that
we can show students a screenshot that's
gets rendered in the HTML but there's
this other file here and hello dot our
hello lab had this as well so let me go
ahead and let's look at in the context
of hello because that was a little
simpler let me go back to hello and look
at that third and final file here called
cs50 Hamel so this is cs50 specific and
this is a file format that we came up
with Chad and with yella two of our team
members who were here with us this past
summer because we also supports this
same type of configuration file for some
of these other auto braiding tools
you'll
that we have a gamble file yet another
markup language which is just a similar
in spirit to JSON if you're familiar but
without all of the parentheses and curly
braces I sort of think of Yambol as the
pythonic Jason sure that works yeah
actually no parentheses without all the
curly braces and square brackets yeah so
you'll see here a few things so one just
the name lab 52 indicate to our tools
that this is for cs50 labs aka lab 50 a
commands here that we use early on just
a disable check 50 for this particular
lab because it's it's so it's relatively
simple and then files if this is a camel
array of all the files we want to
include or exclude so what we do using
gamal syntax which might be new to you
as we say exclude star which means don't
include any files from this repo but by
the way go ahead and include one file
after all called hello dot C so the
default is to include star which I'm
guessing why you're doing exclude star
correct and these are in order from top
to bottom unfortunately this is not good
design much like exclamation point
importance in CSS means important and
not not important right you might read
it in code yeah so in yeah Mel does bang
exclude mean exclude not don't exclude
yeah horrible horrible horrible design
yeah that's weird it's the opposite of
what you might think is a program I
would expect the exclamation point a bit
the end
but yes yes I agree this is important
yeah and not the other way around so
let's go into the Mario lab but actually
do it in the context of the browser
let's go to mario slash less and we will
see zamyla again but for a different
problem here we have the same kind of
environment but notice the video has
changed slightly even though we're still
joined by this oh my Allah we have over
here on the right hand side an empty
pseudocode text file because we want
students to write some pseudocode and
then we want them to work on Mario dot C
which also is not complete there's a big
gap here where we want them to start
writing their code that's cool we can
sort of provide a boilerplate code for
students to just dive right into the
problem so this is why again cs50 lab is
really designed for teachers to create
and for students to use if we click the
folder you'll see those two files Mario
dot C in pseudo code text and if you're
familiar with the command line already
LS for list will show us those same two
files but notice here in this lab if I
click
next I'll see you a screenshot and I
alluded to that earlier we'll see some
sample output which is just thanks to
markdown and if we keep going and going
you'll see some sample output so again
these are just the instructions but
you'll also see here at riot command and
if I click try it you'll see just a
reminder for students so we also wanted
this to be pedagogically useful and we
didn't want to overwhelm students with
everything and we also didn't want to
tell them everything so we wanted to
start making things a little more
interactive so by clicking try it you
see a reminder as to how you can try
this out but using the staff solution in
the sandbox so you'll see a bitly URL
and if I click this link it'll open
another tab containing not the laughs
but a staff implementation of Mario but
without the source code just the
compiled program how feasible would it
be to actually integrate this with the
existing lab I'm guessing it's probably
requires some wiring a little bit we
could absolutely distribute a sample
solution with the lab but then we have
to decide where to put it and you would
have to use like a slash or a tilde to
access it in another folder so it's all
possible we just decided not to do that
however we thought about creating inline
sandboxes even it just gets a little
overwhelming eventually and then we have
inline sandbox that's pretty meta yeah
we haven't really decided on that yet
but anything is possible certainly and
if I click Next a few other times you'll
see a command like this spoilers so we
also wanted to build into the lab
environment the notion of hints or
spoilers and if I go ahead and click
this you'll see some sample pseudocode
that we just give to students just to
help them this is again one of the first
problems that they implement in this
course called cs50 and we don't want
them to struggle just with the basics of
pseudocode so if they're sitting here in
pseudocode text and they're really not
sure what to write we have this feature
built into labs where a teacher or we
can create a button called anything we
want and if you click it notice you see
more information okay I like the next
styling you have the YouTube with a
little dialogue oh thank you well that's
all thanks to github github actually has
a library called primer CSS and in
primer let's go to this here it's free
and open source and it's an alternative
to bootstrap and foundation and semantic
if you're familiar with those it's just
an open source CSS library that helps
you make your tools to look like github
which for the first version of this tool
we wanted it to be because it's all
based on git
it's all we wanted students to maybe
feel like they're kind of working within
the same world
University exactly it looks like warrior
X Club on YouTube asks how to
participate in the cs50 fair for foreign
students I'm not currently possible if
you're not registered in the on-campus
class if you do officially take the
course through Harvard's Extension
school the continuing ed program those
students can participate in the
on-campus affair the the reason is well
anyone is welcome to come to see us
fifties lectures we only have so much
room for the fair on campus we have some
800 students this past year so it's
tough to fit in even the students that
we have so by all means keep that in
mind and if we can find a bigger space
someday will happily open it up further
it was beautiful but it was packed Duane
was asking I've done some HTML CSS and
sass but no JavaScript yet today here
you have some JavaScript coming up soon
yes in a couple of weeks we'll be doing
JavaScript and jQuery so stay tuned for
those and then somebody in the twitch
chat had another comment they said sorry
once a tux man was said that they just
wanted to chime in that they tested the
sandbox in Safari and that it works
great I'm sorry sorry on iOS Safari oh
it does yes the sandbox mostly works on
mobile it's not designed to and our
friends at next Tech only officially
supports I believe Chrome and a few
other modern browsers on desktop and
laptops but yes it does work pretty well
on iOS even on a small phone which is
great can see us with the IDE does not
work well on a device if it's never
designed with mobile in mind we've heard
reports that cs50 sandbox does not work
as well on Android which is a little
unfortunate but again the underlying
software is not designed for mobile so
it kind of sort of works but we're not
offering it up officially as mobile
friendly yet Kay stark double-oh-seven
can i download files from the sandbox
meaning can I export files from the
sandbox yep you can go ahead here and
off to the side there's a little dot dot
dot next to every file and you can go
ahead and click download to grab all of
the files or if you're comfortable with
git you can certainly use git and do
things like git add and then get commits
and then get push and push your code to
something like a github repository
Wow this is showing all the code that I
wrote actually in CS practice as Babic
before I made Mario working great work
indeed nice Google awesome I think
that's all cut up Oh an m4 was saying
that they dig gamble and I'm just want
to make sure that I got all of the
recent followers so it's like bright
coke Cup actually I think I did catch up
all the ballers think we round up well
let's take a final look in our remaining
time at some of the documentation so
that if you're a teacher especially you
can follow those instructions and start
creating your own labs if that's of
interest you can certainly use cs50 zone
as well and if you even if your student
you want to just create lessons for
friends or for other folks by all means
you're welcome to use the labs as well
all of this is free sandbox and labs you
just need a free github.com account so
that you can authenticate and you can
save your information but for the most
part that's all you need to get started
so let's go ahead and point you at the
documentation if you go again if you
don't mind to cs50 dot read the docs dot
IO along the left hand side of the menu
you'll see a link to cs50 sandbox for
instance and if I scroll in on this it's
mostly just a high-level overview of how
cs50 sandbox works we explain some
features that it has and features that
it doesn't have to help people
understand the differences between it
and cs50 IDE which is also freely
available but you'll also notice our
official documentation for the HTTP
parameters that are built in there and
you'll see that here are some of the
most popular configuration parameters
the ability to specify file names to pre
create whether or not you want a text
editor or bennet browser or the like and
a few other features so you can go ahead
here and see some sample code as well
this is cool so you get there maybe
visualize a teacher spawning an
individual sandbox for each student in a
classroom yep exactly and now let's go
to cs50 lab which is a little more
involved because it takes a little more
manual setup to do in a github
repository it does assume that you're
pretty familiar with git either they're
the web UI on github comm or
command-line interface and you'll see
here that we have official documentation
for the format of the URLs so here you
see lab dot cs50 dot IO / owner slash
repo slash branch slash path each of
which is prefixed by a colon which just
means it's a placeholder you don't
literally type out those words and what
those values are it can't I li depends
on your own
github username and branch name and all
of that and then if you scroll down here
before you'll see some examples of
exactly how you can go about configuring
dot cs50 dot yam all the possible values
that are allowed and so forth so on the
one hand you can just look at our open
source labs and infer from that how to
do it it's pretty straightforward but
here's the official formal documentation
as well so it's very nicely styled again
well this we have our friends that read
the docs to thank for because they
provide this framework for creating very
pretty looking documentation I feel like
I've seen that like different Python
libraries have used this yes indeed so
it actually uses something called Sphinx
underneath the hood which is open source
software via which you generate
documentation from a file format called
restructured text or the rst frankly I
don't love rst but to read the docs also
supports markdown these days so we use
markdown for almost everything except
when we have to use restructured text
sounds similar in spirit to Jekyll a
little bit it is a functionally
equivalent to Jekyll just harder to use
nice that's cool very flexible awesome
platform great for education great for I
think a community driven development I
think that that could be don't you
aspect to this we want to to ultimately
make it easy for teachers out there to
create for free their own code Academy
style lessons without having to be tied
to a particular platform but with the
ability to collaborate with others to
make their own code open source to
version control things on github so just
to get a lot of familiar features for
free and then build some hopefully
pedagogically compelling experiences for
students yeah it's an awesome nice sort
of offshoot from the IDE idea well we
have a few minutes here we're happy to
take a couple of questions and again go
to all the URLs that Colton has kindly
been pasting into the chat so if you'd
like to learn more play more but the
first place to start literally is
sandbox stuff cs50 IO and then
optionally these other links we've been
pasting in next yeah we'll take some
questions
Ivan asked our said I took cs50 four or
five years ago through EDX while I was
in Mexico I'm so thankful with all that
you do guys yeah and so tomorrow we'll
be doing a stream on solitaire so just
me tomorrow we'll be coding solitaire
from scratch
the windows well it's not a Windows game
but it's a card game that was popularly
shipped with Windows older versions of
Windows Windows 95 etc where you place
cards down store sequentially draw them
from a deck physically played long
before its windows incarnation obviously
but we'll be doing it in love and Lua
and then on Friday Emily Hong will be
joining us for a look at web scraping
nice and solitaire don't be just you
just me for solitaire or salsa
solitarily will be programming solitaire
okay so that's early thanks for the kind
words and Koppenberg thanks for this
yeah oh and a question from Kate stark
double-oh-seven
can we connect multiple sandboxes using
that not really you can connect one to
another via HTTP as I demoed earlier
when running a web server but they won't
accept other incoming port connections
so most likely you cannot achieve what
you're alluding to I would say do you
have any side project going I do one is
called cs50 sandbox about used to be lab
both of which are continuing to be in
progress we do have one other project
that's still in motion and actually
hopefully soon will this be merged in if
I go to cs50 s Python library which is
the open source library we use partway
through the semester to introduce
students to Python IO or input/output as
well as to sequel you'll notice that
there's a pull request to your pending
this might be merged in as soon as later
today but it contains a whole bunch of
changes to the library that I've been
working on as a side project with cs50
zone cream sedan you'll see there's a
lot of changes in here some of which are
actually collapsed and you'll see some
feedback from Korean since all of this
is publicly available and you'll see
that we've made lots of changes to the
sequel code the goal of which is to
actually support different formats so if
you're curious and if you're familiar
already with cs50 s Python library with
this pull request or proposal aspires to
do is this this past year we had support
for sequel queries that look like this
use some sequel and if you want to have
some placeholders in it you do colon
something and then colon something else
and then you pass in arguments like that
first equal someone and last equals
someone using pythons named parameters
that's just one way but we're also going
to add
for Python dictionaries which might be
helpful in some contexts even though we
won't necessarily introduce them to
students because it's not solving a new
problem you can also though starting
this fall
use what are called positional
parameters you can go ahead and select
your code here and just put in question
marks and therefore pass in just a
second and a third argument without
named parameters now arguably this is
not as good as the existing approach
using the : placeholders because it's a
little less and it's a little more
ambiguous as to which is first which is
second like you have to think a bit more
but it shortens the code it cleans it up
and honestly I find it incredibly
redundant when a student has to say
first here and first over here sometimes
a third place if they have that value in
a variable let alone last so we've
decided just to offer up different
options and so this pull request
documents any number of different
formats that you can start using with
the cs50 library for sequel and we
handle all of the escaping hopefully
correctly for what are called sequel
injection attacks which we talked about
in the course as well so that's my most
recent side project from this past
weekend nice pretty cool I think you
were mentioning that actually yesterday
Romania says crazy flock hello Frank
from Harvard here solitarily solid temp
lol does EDX use bootstrap asks the soul
shake if not then why not I don't know
you'd have to ask them you could
certainly look at their code and we can
look at their code let's go to EDX org
let's go to view developer view source
and let's literally search for bootstrap
I see no mention of it which does not
mean they don't use it however bootstrap
tends to use certain classes and
bootstrap tends to look a certain way
unless you've steamed it or skinned it
very differently I don't think they do
use bootstrap I'm not seeing bootstrap
like widgets
I'm not seeing classes in here that
resemble bootstrap so I'm gonna guess
with high probability that they're not
using bootstrap why not bootstrap is not
the only library out there they could
have been using their own they could
have been using some other third party
that's the thing
Colton I'm a little stuck on the Mario
assignment any tips for the first
problem to have the player always land
above ground so for the games course yes
you're not the ASCII version yes so this
is related to the games course that I
teach
implement in love and Lua which we'll be
looking at tomorrow a version of Super
Mario Brothers that's actually sprite
based and you can move things around
continuously so that particular exercise
has you generating the world from
scratch
you literally go row by row and sort of
sort of simply implement gaps in the
ground bushes pillars obstacles but the
the algorithm as it stands is purely
random there's no sort of ensuring that
the very first area that Mario spawns is
necessarily above-ground there is a
module in the exercise I believe it's a
level maker lua where this is all laid
out though entire algorithm and it's
essentially just a in a nested for loop
that goes row by row column by column
rather in this case about the entire
world and just starts at the bottom or
sits way down and does an if check and
if some coin flip returns true it'll
join a flatland if not it'll generate
just empty space and abyss and so you
could easily just hard-code you know the
very beginning to be whatever you want
and so without giving the answer away
which I might have already done instead
of maybe making it truly random
influence the weight of where Mario does
spawn which I believe is that X level 1
grid wise or X level 2 and just change
the way that the level maker actually
works make it you know if it's a coin
flip for solid ground and coin flip for
a chasm may be influenced that a little
bit I seek a stark now asks can we try
to create a honeypot using the sandbox
to route 1 1 right unwanted traffic into
it for dev only probably not for the
same reason it only exposes HTTP and
therefore you can access things like a
temporary web page but the container
will be shut off after some amount of
use when it's idling with no human
interaction and it doesn't allow
incoming connections on other ports so
most likely not that's not really the
right tool I would sign up for like a
free account on AWS Amazon's Cloud or
Google or Microsoft Azure and use those
services instead which will give you
more control Babic was asking or we're
not using f strings in your pull
requests in my pull request here no that
was the live
actually we've started
internationalizing some of our libraries
which means making them translatable
into other human languages for error
messages and such F strings don't make
that easy we instead use the older
format of the dot format method so that
we can factor out the strings and it's
just cleaner that way interesting and
you're welcome adam edx question
auditing cs50 opens the whole course and
grading justnot certificate how to find
similar courses that since I tried
auditing a course but it has no grading
in a time limit I don't know if you can
search for such on that X you can try
emailing info at edx.org to ask them
that question
I'm afraid I'm just not familiar enough
with the brains of offerings B on cs50
zone adamantine asks about what you can
do with a free W aid with a free AWS
account anything really it gives you
access to virtual machines to containers
any number of cloud-based services it's
what's known as infrastructure as a
service as well as a platform as a
service which means they have a huge
menu of offerings I would go to
aws.amazon.com and just read through
some of the summaries of the features
they have and that will much more
thoroughly answer that questions a
little bit overwhelming to be honest
many yeah how important is it asks am
torah how important is C is it necessary
to learn see if I'm comfortable with
Python necessary you know important
whether it not it's important is really
up to you I do think understanding a
language like C makes you better as a
software engineer you understand what's
going on underneath the hood so to speak
of higher-level languages like Python
but you definitely don't need to learn
it and many students go on to be very
successful programmers and computer
scientists without knowing it we just
tend to introduce it because we do think
it has pedagogical value all right well
I think we have a couple more on another
minute or two here see any questions I
see a comment from Patricia on YouTube
online IDs or a game changer for CS
education thanks for making lab
available very welcomed hope you do find
it helpful in your own classroom whether
this semester or this coming fall the
cs50 in general use AWS or Google cloud
asks em for njh you
mostly AWS we have since early on
probably five six seven eight years now
and indeed our friends at cloud nine
recently transitioned over to Amazon so
we're using them all two more now as a
result
sérgio demo what are you guys going or
what are you going to do what are you
gonna do well we're gonna get ready for
our next streams in just a couple of
days you're with Colton both solitaire
and with Emily when a cs50 Teaching
Fellows do take a look back at some of
our past streams if you're curious about
docker do you take a look at the URLs
we've been pasting into the chat on both
twitch and YouTube here today if you'd
like to learn more and feel free to
reach out by any of these communities if
you'd like to connect with classmates or
any of us but thanks so much for tuning
in it it sounds like I think we're at
the end here and for in JH you has to go
to a galaxy s 10 launch now so that
seems like the right time to wrap up and
say goodbye that's amazing well thanks
everybody so much for tuning in thanks
to David for holding this awesome
discussion of the sandbox and labs
thank you tune in tomorrow for solitaire
for me solitarily programming solitaire
well it's gonna be a good time we'll
make a game from scratch and then Friday
Emily Hong for the very first time web
scraping and then the weekend so thanks
all again thank you all we will see you
tomorrow