►
From YouTube: Pushing the Envelope in CS50 - GitHub Universe 2021
Description
Presented by David J. Malan, Gordon McKay Professor of the Practice of Computer Science
As always, feel free to leave us a comment below and don't forget to subscribe: http://bit.ly/subgithub
Thanks!
Connect with us.
Facebook: http://fb.com/github
Twitter: http://twitter.com/github
LinkedIn: http://linkedin.com/company/github
About GitHub
GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Millions of people use GitHub to build amazing things together. For more info, go to http://github.com
A
Hello
world,
my
name
is
david
malin
and
I'm
here
in
sanders
theater
at
harvard
university,
where
I
teach
cs50
harvard's
introduction
to
the
intellectual
enterprises
of
computer
science
and
the
art
of
programming.
An
introductory
course
for
majors
and
non-majors
alike.
Cs50
is
among
harvard's
largest
courses,
and
indeed
in
healthier
times.
A
Students,
meanwhile,
can
take
both
before
and
after
cs50
itself,
a
whole
suite
of
courses
nowadays
by
cs50s
team,
including
courses
on
artificial
intelligence,
game
development,
web
programming
and
more
of
all,
these
courses
meanwhile,
are
available
at
nx.org
cs50
for
free.
Now
over
the
years
have
we
had
to
provide
students
with
quite
a
bit
of
infrastructure
in
order
to
make
this
and
now
other
courses
possible,
particularly
toward
an
end
to
onboarding
them
to
the
world
of
programming
without
having
to
configure
and
install
software
on
their
own
macs
and
pcs.
A
A
In
the
course
itself
in
2012,
meanwhile,
just
a
few
years
later
did
we
begin
to
experiment
with
downloadable
virtual
machines
in
our
cases
dubbed
the
cs50
appliance,
a
fedora
and
later
ubuntu
image
that
students
could
download
on
their
own
macs
and
pcs
download
something
like
virtualbox
or
vmware
in
order
to
run
their
own
cs50
environment
on
their
own
computer.
A
Because
indeed,
if
cs50
is
the
only
proper
programming
class,
they
ultimately
take,
they
can
at
least
continue
developing
even
without
any
of
the
course's
infrastructure.
Thereafter.
So,
in
order
to
achieve
all
of
these
tools,
we
were
motivated
by
trying
to
solve
just
these
three
problems
enabling
students
to
write
code.
A
We
have
students
log
in
via
oauth,
with
their
own
github,
usernames
and
passwords
for
authorization.
We've
leveraged
github
support
for
teams
so
that
tas
and
students
can
have
read
and
or
write
access
to
the
same
repos
for
code
reviews.
We
leverage
the
web
ui's
interface
for
pull,
requests
or
or
commits
on
which
you
can
type
perline
comment.
Container
orchestration
now
comes
in
the
form
of
code
spaces,
online
testing
via
github
actions,
version
control
via
git
itself
and
more
and
so
within
each
of
these
environments.
A
Can
we
begin
to
take
away
some
of
these
training
wheels
and
have
them
use
the
native
tools
themselves?
Meanwhile,
to
distribute
students,
own
repositories
and
within
its
starter
code,
have
we
been
using
github
classroom
most
recently,
whereby
students
accept
a
assignment
which
has
the
result
of
copying
a
template
repository
for
them
into
our
own
org
that
they
and
perhaps
their
ta
then
have
read
and
or
write
access
to
underneath
the
hood.
Meanwhile?
A
Do
we
then
leverage
web
hooks
or
the
equivalent
thereof,
to
use
github
actions
whereby
we
export
a
prescribed
format
for
github
classroom
in
the
form
of
an
auto-grading.json
file
that
actually
automates
the
process
of
running
a
suite
of
correctness
tests
which
in
our
case
happen
to
use
our
own
command
line
tool,
but
could
really
be
any
unit
testing
tool
or
the
like
and
for
more
qualitative
feedback?
Do
we
leverage
the
web
ui
to
provide
line-by-line
comments,
as
might
be
the
case
with
a
teaching
assistant
working
more
closely
with
their
own
student?
A
And
now,
in
our
case,
for
those
automated
tests?
Do
we
use
our
own
tool
check,
50,
which
essentially
just
wraps
a
unit
testing
suite
for
c
and
python
and
the
like,
but
that
too,
ultimately
is
backed
by
a
github
repo.
So
a
student
would
run
a
command
like
check50
owner,
slash
repo
branch
path
that
simply
indicates
where,
in
the
web
to
go,
get
those
those
correctnesses
from
in
order
to
run
them
locally
on
the
student's
own
code.
A
Now,
in
the
graphical
context,
we
also
have
provided
students
and
built
on
top
of
these
primitives,
something
we
call
cs50
lab,
which
essentially
embeds
a
text
editor
and
terminal
window
alongside
a
rendered
markdown
file,
thereby
enabling
us
and
any
of
any
teacher
online
to
create
in
their
own
github
repository.
A
learning
experience
for
students
that
might
have
some
starter
code
might
have
some
correctness.
A
Assessment
might
also
have
a
narrative
alongside
it
that
ultimately
lives
in
a
repository
indicated
by
again
owner
slash
repo
slash
branch
last
path,
inside
of
which
two
might
be
a
yaml
file
for
some
minimal
configuration,
the
readme
file
for
itself
and
the
starter
code,
and
within
that
yaml
file
would
just
be
a
bunch
of
key
value
pairs
that
tell
our
tool
how
to
configure
the
web
environment
exactly
as
that
teacher
wants
for
their
own
students
also
graphically
as
well.
Within
our
these
most
recent
web
tools,
like
the
ide
and
now
vs
code.
A
Have
we
wrapped
the
process
of
just
starting
the
graphical
debugger
by
a
tool
called
debug
50,
so
that
when
students
compile
and
then
run
their
code
through,
debug
50
does
its
trigger?
Essentially,
a
launch.json
file
in
vs
code
to
get
dynamically
generated
and
configured
so
that
the
debugger
is
right
there
up
and
running
without
students
manually
configuring
anything
themselves
if
you're
familiar
with
rubber
duck
debugging
the
process
of
talking
through
your
logical
problems
in
hopes
of
hearing
any
illogic
with
a
rubber
duck
or
an
inanimate
object.