A Conversation with Professional Programmer and Educator, Dave Briccetti
In this interview with Dave Briccetti, we discuss Dave’s background in programming and education, advice for learning a programming language, suggestions for encouraging kids to think ethically (e.g., how to respond to potentially plagiarized content), why Dave prefers professional programming tools in educational settings, and much more.
-
Welcome back to another episode of the
csk8 podcast my name is Jared O'Leary in
today's episode I'm interviewing Dave
Righetti in our conversation we
discussed Dave's background as a
professional programmer and his
experiences working with kids some
advice for learning a new programming
language suggestions for encouraging
kids to think ethically for example we
discuss how to respond to potentially
plagiarized content that a student
presents as their own work we also
discuss why Dave prefers professional
programming tools and educational
settings and much more there are a lot
of show notes in this particular episode
so if you're interested in it you can
find them hopefully in the link inside
the description wherever you're
listening to this or by visiting jared
O'Leary com before we get started with
the episode I just want to make a short
story even shorter and point out that
about 1/3 of the way through
Dave's microphone switches over to his
internal microphone so the recording
sounds a little weird at that point
however the rest of the recording it
uses the external microphone which
sounds much better I hope you enjoyed
this conversation and I hope you
consider sharing it with others and we
will begin the episode with Dave
introducing himself I'm Dave Righetti
I'm 60 years old I've been living in the
San Francisco Bay Area since 1979 I've
been a professional programmer since
computers PCs and Mac's with many
different operating systems languages
and tools I've had about 45 clients and
about five employers so far in my career
some of my favorite projects were in the
areas of satellite imagery analysis
social networking I wrote a now-defunct
Twitter client video conferencing
mechanical engineering semiconductor
manufacturing I also write free
open-source software to help teachers
for example music gradebook for music
teachers and room helper 3000 to help
manage kids in a lab with computers
I've been a part-time programing teacher
since 1987 I currently have about 15
private students who come to the house I
teach computer science one morning a
week to about 75 junior high kids at
private school here in Lafayette and I
teach computer science summers at the
Athenian School in Danville yeah I mean
that's a wide range of areas to get into
and having looked at your YouTube
channel there are there's a wide range
of stuff that you demonstrate in those
videos how did you get into computer
science education what I'm going to tell
you how I came to love computers and
then how I came to be inspired to teach
around 1971 when I was about 12 our
family was visiting my uncle albert
shetty and he was a doctor and in the
basement of his house he had a terminal
with paper connected to a time-sharing
system for medical research and he let
me play with it and I loved it I didn't
know what I was doing it had a
command-line interface you could type
help and try out various commands and it
would also print pictures of Snoopy made
out of character graphics several years
later in the 7576 school year my
sophomore year of high school in Fort
Wayne Indiana
we had terminals in a room in the school
that we would connect to an IBM
mainframe a 370 running at Notre Dame
University and the terminals used
acoustic couplers so we picked up the
telephone we spoke to a human operator
who gave us a phone connection to Notre
Dame and then these these beeps and
whistles and sounds came out and we put
the own handset in a acoustic coupler
just a device to kind of receive the
sounds and send sounds to it so that our
terminal could connect to a remote
computer
and we did basic programming and it was
just fantastic I loved it and I knew
this would be my career at an age when
kids often don't have a lot of control
over their lives or lots of rules and
things for me it was just great fun to
be able to create my own worlds with
rules and invent it was a really fun
time the terminals ran I think at 10
characters per second so they were super
slow I wrote one program that would
randomly generate arithmetic problems
and later I learned that them my teacher
had shown the program to the head of the
math department who was impressed and of
course that made me feel good
in 1976 through 78 my junior and senior
years at Arsenal Technical High School
in Indianapolis we had an IBM system
three with 16 kilobytes of random access
memory or random access memory the
actual physical magnetizable cores with
wires running through them to read them
and write them a memory
and there we learned RPG Fortran and
COBOL and I wrote a program that would
make big signs and the character images
like the shape of the letter a and B and
so forth were all punched on to punch
cards and so you would punch on a card
what the message was that you wanted to
be made on the signs and then you'd run
that whole stack of cards through the
reader into them into the computer and
then a big paper would come out with
your message and I was running for
senior class treasurer at the time and
one day I noticed in the cafeteria that
we were gonna have spaghetti for lunch
so I ran to the computer room and I made
a sign that says if you love spaghetti
veggetti and I hung the sign up at the
cafeteria that day and i won
all right how was I inspired to teach in
California which is was later bought by
Wells Fargo and I was an application
program or on the checking account
system and then later kind of a
lightweight systems programmer not
maintaining the operating system but
supporting the 400 applications
programmers and developing tools and
running a helpdesk and one day one of my
colleagues brought his child and the
child's schoolmates on a field trip into
the our data center where the big
mainframe computers were and they went
to see the big computers behind the
glass walls with magnetic tape drives
and disk drives and Printers and
operators and terminals and I was one of
the few people to have an IBM color 32
brought the kids by and asked me to show
them some graphics and I showed them
some color bar graphs and pie charts
things that today would not be terribly
impressive but it was fun at the time
and the kids loved it and I think that
event helped spark my interest in
teaching and later around 1983 I was
friends with a nice family in Petaluma
California and
one of their sons was in I think
elementary or middle school at the time
and I visited the classroom where they
had an early 8-bit computer I think
maybe a trs-80 and I helped them with
that this was at the time when magazines
would publish these long basic language
programs that we would all type in in
order to play a game and if you were
lucky you would get it right or right
enough that the game would play and
finally in in 87 I started teaching it
the Feather River computer camp outside
of Quincy California in the beautiful
Plumas National Forest and this camp was
run by the Oakland Department of Parks
and Recreation and we would do regular
camp things for much of the time and
then in the afternoons we'd jump on the
bus and for the short ride into town and
at a college there we had computers and
we did some some programming and I did
that for several summers as I recall and
then in 1992 I started teaching at the
Apple Valley College in Pleasant Hill in
a summer program for kids in grades four
through ten I did that until 2014 and we
learned several languages one I started
with basic I think three different kinds
of it and then C++ and JavaScript and
Java and Python and then I learned about
squeak etoys from Alan Kay the one of
the creators of small talk and we used
that for awhile and then scratch was
built on top of squeak and I switched to
scratch primarily because the interface
of it was more familiar to kids who are
used to Mac's
in Windows machines and then tinker came
out Tyn keer
and that's like scratch but it has
physics features and some other features
so we used that for a while
and then Alice from Carnegie Mellon we'd
like that but the graphics were not
really up to the dais standards and the
the evolution of the product was very
slow so I didn't use that for long and
finally Kojo which jo-jo
which is
an environment where the language is
Scala and you could do some interesting
graphical things with it including
turtle graphics and during that time we
had special guests including will write
from Maxis who created Sims and Spore
and in 94 I started offering private
programming lessons to individuals and
pairs of kids if you don't know who will
write is he's basically a legend so it's
like as high profile as you can get in
the gaming world so what's something
that you've believed when you first
begin working with kids but you no
longer believe this is an interesting
question a belief that I've held that
I'm I think I'm losing and I'm want to
hear your I used to think that certain
kids have an aptitude for programming
and others don't and that some kids
maybe just should do other things and
maybe shouldn't do program yes they
don't have sort of a natural world
unlike yourself I am not really well
aware of the research in the literature
and the standards and things like that
is that special to it but I did read
some jewelers book I forget the name
with one but the idea is that everyone
can be like a learner or so you don't
say I'm bad in math to say I'm curious
what what do you think are there people
who just shouldn't shouldn't try to
program or should we try to teach
everyone I mean from an interest
standpoint I think there are some people
who just aren't gonna be interested in
learning how to program and I don't know
if they finish that necessarily be
forced if they don't want to learn
something however from a whether or not
somebody can or cannot learn something
unless there's some kind of a
neurological difference that's like
preventing somebody from learning the
sequencing involved with figuring out
how to program I think pretty much
anyone can learn how to do it so as an
example when I first started music I
started in eighth grade and usually you
start in that district in like fourth or
fifth grade so I started really late and
when I started I was horrible like
couldn't keep like just a solid tempo
going like that kind of bad but then
when I got into college I got a full
ride so within a five year span
I went from as bad as you can be
starting to getting a full ride in
performance so it's just a matter of
whether or not you are willing to and
able to devote the amount of time
necessary to become an expert in
something and every domain is different
but having worked with kids who were
really bad at programming to start with
and then eventually became really good
at it I haven't seen examples yet where
I'm like yeah you're just not cut out
for this but I have seen examples of
yeah you're just not really interested
in this so you're not putting in the
effort to learn it uh-huh
I've had some students recently who had
the interest but we're moving kind of
slowly and that's been good for me
because I think that makes me a better
teacher
I've been lucky that most of my students
have been pretty quick and highly
motivated and have been able to learn
really well and that might mask
deficiencies that I have as a teacher
and especially now as a formally trained
teacher I have certainly had a lot of
instances where kids might be moving at
a different pace than others and if
they're moving slowly sometimes there's
it's just a matter of like reframing and
looking at something from different
perspectives so let's say they don't
understand conditionals having them try
and incorporate if-else statements or
case statements or whatever in different
kinds of programs for different purposes
might eventually help them understand it
but if they just keep trying to apply it
in one way that's not working for them
then it might be heading down a path
that's not gonna be fruitful I don't
know if that makes sense
so how did you learn how to teach and
how do you continue to refine your
abilities as an educator I'm different
from most computer science teachers in
that I don't have formal training in
fact I was a miserable high school
student and barely graduated I was not
motivated I think a traditional learning
environment wasn't wasn't right for me I
only cared about computers and music
French warren and piano but since
graduating high school I've taken a few
college courses but mostly in psychology
si language compiler design but nothing
on teaching I've read some books I have
a mentor Baba Thade who is a local
professional musician and educator over
the last 20 years
I've spent a lot of time in his band
room at Stanley middle school here in
Lafayette helping him with technology
and music things and sometimes sitting
in with the bands I like to joke did my
French horn playing is at the middle
school level which these days it is used
to maybe at the college level but from
Baba theta I've learned I've learned a
lot about inspiring and motivating
students I find them good at explaining
and I've picked up classroom management
techniques over the years but I'm more
I'm more polished definitely as a
programmer and skilled then as a teacher
I'm pretty sure like what do you do to
keep reflecting on and improving what
you're doing well one thing is if there
are other professionals around who are
observing I get feedback from them and
then observing what other teachers do
like for instance Bob afaid if he sees a
student losing interest as he's
explaining something you know they'll
say in a positive tone no Billy stay
with me stay with me and then you know
Billy here's his name and perks up and
we're back on track yeah I think that
practice of observing other people and
having people observe you to get
feedback is invaluable it's one of the
things that we recommend doing in the
professional development that we do at
boot up is we often record teachers
across the district and kind of share
recordings with people so that way they
can see what others are doing in similar
classes that's great do you want to talk
about how you went from initially being
afraid of middle schoolers to where you
are now sure I think when I started
volunteering at Stanley with Bob fade I
was a little intimidated by the rooms
full of these middle school kids just
remembering my own middle school years I
suppose partly through watching Bob and
how how natural and now comfortable he
is despite their awkwardness and and
nervousness and just seeing him act
silly and seeing and just be unconcerned
about how they might think of him and
what he's doing and just you know from
my own case I just I just own that I
might appear if you did that goofy to
them or or whatever and you know just
the other day in class I was we were
doing music with sonic pie and I was
singing along with it and the kids were
singing and so I've gotten over that
so my full-time first full-time gig was
teaching K through six and then at night
I taught nine through twelve
drumline and so I missed out on the
middle school kids but I felt like I had
this balance of like you could get deep
with high school kids and then with the
elementary kids you could just explore a
lot of really fun things and the middle
school kids I initially was just like
well they're really hormonal and can be
Moody and I don't know if I want to deal
with that but then when I worked at a
k-8 school they ended up being some of
my favorite groups of kids to work with
uh-huh it's weird how perceptions can
change yeah so on your YouTube channel
you have a ton of examples that cut
across different disciplinary areas so
like you give examples in arts and math
computer science etc I'm wondering how
do you help kids develop an interest in
these creative intersections a lot of
this comes from thinking of my private
students a lot of what we do together is
driven by my own interests and the
things that I'm currently learning about
and exploring you know most recently
it's just the past couple weeks it's
been sonic PI so we're doing Ruby
programming to make make sound
before that it was computer vision and
drawing little paintings in 3-space with
colored papers taped to our fingertips
against against a camera with with a
group of kids doing that at the same
time since I don't have to follow any
prescribed curriculum or standards with
my basically enrichment and private
classes we just follow our interests and
that's great because it overlaps with
with so many things the computer vision
motors for a while we were doing speech
synthesis and speech recognition and
using the oscillators did modern web
browsers and use the if you look over my
youtube channel over the years you just
you're kind of seeing a reflection of my
my interests over time yeah and not just
your interests you also mentioned our
interests so I love that in an email you
mentioned that you let the kids interest
kind of guide the direction that you go
into it's one of the nice things about
not having to adhere to standards yes I
am grateful for that that we can just
follow our interests and in most of the
classes I've taught
I have developed my own curriculum
essentially in real time or you know one
day at a time so that we can base it on
the abilities of the kids in the
interests of the kids and what do you
hope that people whether it's the kids
engaging in that curriculum or even
adults who watch your YouTube videos
what do you hope that they do with the
concepts that you're exploring there are
a lot of channels to methodically teach
subjects so here's a Python class we're
starting with print and here's if and
here's a loop and so forth and you would
watch all those in sequence to learn
something mine is more to share fun
things that I'm doing and so I just hope
to inspire and give examples and when I
recently reached a thousand subscribers
my students got very excited and said oh
you should turn on ads and and I said no
that's not at all why I'm doing it in a
way this is my gift I benefit from a lot
of other people and things that they've
made I build on other's work this is my
gift and then one thing that I do hope
to increase benefit from is attracting
some more talented private students
might see the videos and who then live
in the area and then come and study with
me now you've you've mentioned in the
summer school classes you had I've
taught a lot of languages with the kids
and in your own professional programming
I know you've used a lot of languages
one of the things that I've really liked
when I was in the classroom is because I
knew several languages I could help
facilitate different platforms or IDs to
kind of help guide kids towards
different languages that might be more
conducive to certain things like you
mentioned ruby with sonic pie it's it's
it's great for making music but it's not
great for making a video game you can't
do that but Swift is great for if you
want to make an app and then like the
scratch is great for if you want to make
a game etc etc so I'm wondering because
you know so many languages and most
teachers don't if you were to kind of
like all of a sudden lose your memory
what would you do or where would you
start to regain the mastery of quickly
learning a programming language I think
Python would be a good start I were to
have lost all my knowledge of my
languages it's because it's a good
general purpose
language javascript' is widely used in
browsers although many people are
transpiling to it so you write the code
in another language and then it gets
changed into JavaScript so you think of
the JavaScript more as a machine code
than a language that a that a human
would read and then I think we're gonna
have Java around for quite some time but
possibly one of its I don't want to
necessarily say the word replacements
but something that many people would use
instead like cotton or Scala learning
multiple languages helps develop the
ability to learn languages which is good
because languages change yeah you know
five years ago I don't think we had
Colin 15 years ago we didn't have Scala
learning how to learn by the way that's
there's a Coursera course called
learning how to learn and for a while it
was the biggest most popular massively
online course MOOC whatever they call
that thing a lot of research from brain
researchers in there I recommend
learning how to learn and in that vein
learning how to learn programming
languages I think it's a it's a good
thing to do I'll put that a link to that
in the show notes one of the my favorite
things to do when I was learning a new
language is think through how I would do
something in that language so if I was
playing a video game I would try and
imagine okay what might the code be for
this particular thing that I'm engaging
with her this particular function or
even if it's just like a program that
are is using and I'd think through it
like okay what would it be in scratch
what would it be in Ruby what would be
in Swift etc so that's something that I
might recommend so what do you think is
important for kids to know about
programming and why well assuming
they're motivated to do it because they
want to write a game or something
they'll need to know enough about a
particular language or tool to
accomplish what they want if they're
wanting to be a programmer professional
programmer they need to know the
elements common to languages you know
variables and types and iterative
constructs and conditions and things
like that maybe functional stuff if
you're taking a AP computer science
course I guess you need to know Java and
the subset of Java that they teach how
do you simultaneously take into
consideration what you think is
important for kids to know with what
their
interested in or excited about well I
guess that comes from the goals it's
interesting I was just watching a video
this morning from Mitch Resnick yeah
sure you know have you maybe even met
him with your work with scratch and he
said that he had the pleasure of
teaching a child about how to use
variables because the kid had a game
were maybe you've even seen the same
video where a shark eats a fish and he
wanted to have a scoreboard so each time
the shark eats the fish the point goes
up the kid learned about variables
because he was motivated to do so and
Mitch talked about how that was a great
way to go as opposed to someone sitting
in a lecture hearing a lot of words
about variables they said some of his
thoughts about that came from Seymour
Papert
there's a tendency for whatever reason
for a lot of educators do think they
have to go in a prescribed order with
things one of the things that I love
about Resnick and pepper
and some other people is that they just
talk about you know if if kids interest
kind of guide their own learning they'll
eventually learn the things it might be
out of order for what might be
considered an ideal way of learning it
but they will enjoy the process that's
kind of something that I feel is missing
in school sometimes definitely the other
idea that that I learned recently from
some of those folks and it could come
from I think Mitch Resnick may be
mentioned Montessori and the idea of not
separating learning into these silos
like here's your English here's your
music here's your math and that's a
great fun thing about programming is it
does kind of blend those things together
yeah I mean especially with what you
mentioned earlier in terms of your scope
in your career you haven't been siloed
into one area or one field that's true
and I think being a contract programmer
with generally shorter projects helps to
keep that that all very exciting so we
had talked before this about how you
think it's important to be very specific
with the symbols that are used when
programming and I was wondering if you
could share some of that conversation
with the audience when my students come
often they will say parenthesis instead
of parenthesis there's no such word and
in fact I've
met very few adults even who would say
parentheses and then they will say - and
you'll hear this all over the place
people say - and if you just have a
mechanical old typewriter that's fine
because you don't have any real dashes
you just have a - but the real symbol
that we use in programming is called the
- - which acts as a - or a subtraction
symbol there are also two dashes there's
an n - e n and then an M - which is a
little bit wider than M - so I just
think it's good for kids who were
working in this medium it's like when we
speak English we try to know the
spelling and punctuation if you're doing
programming and you're using symbols we
should know the names of the symbols
I've heard other computer science
teachers doing C programming have asked
kids to type in hashtag include which
just is not a thing because the symbol
in that language for the preprocessor is
the hash also known as the pound sign
also notice the octave Thorpe which I
teach my students just kind of as a fun
thing and I argue that to be a hash tag
you have to have a hash and a tag and
the symbol by itself is just it's
definitely not a hash tag it's a hash
I'm a little nutty about that and I
think my students kind of think that's
fun well I mean when you've got a
language that if it's checking maybe a
user input or something you need to know
if I should include a lot of or
statements that take into account that
somebody might use something different a
different type of - or - or whatever
that's true so I definitely think it's
important and even just for
communicating with people because if
someone takes you literally someone who
writes English and uses n dashes and M
dashes and hyphens for you to say - when
you mean a - just seems unnecessarily
confusing but I realized that I'm I'm
almost alone in that I realized the rest
of the world is perfectly happy to have
you say - when you mean - I accept that
but they could also mean different
things in different contexts as an
example that we kind of talked about
off-air was that music teachers can
sometimes get frustrated if a kid calls
a sharp symbol in western staff notation
as a hashtag or as a
sign but they're two different symbols
in two different contexts that mean two
different things that would drive me
nuts you had also mentioned to me off
air that you think is very important for
kids to think as ethical computer
scientists so I'm wondering how do you
help kids think ethically one way is
when I get kids together in a group and
we're all on the same local area network
sometimes it's fun to write programs
like client-server programs so you have
I mean in today we would have somebody
write a web server with maybe Python and
Django for instance and then write a
client in some language that connects to
that web server and just does I'm sorry
too technical for people don't do HTTP
but doing an HTTP GET request to get a
page from this students web server so
then we the kids are playful and they
like to to joke and so some kid says
well I'm going to make try to make as
many requests against that web server
for the period of time as I possibly can
I'm just gonna have a loop that goes
forever and essentially doing a DOS
attack do s denial of service against
their friends across the table and I
think that's great as long as they're
doing it with the permission of the kid
and they would never try to do that in
the real world because that you know
it's it's morally wrong and it can get
you in a whole lot of trouble
once I proposed having a class at a
school like a club called the what did I
call it but it definitely had the word
hacking in the name and it was about
kind of whitehat hacking or computer
security or understanding how computer
networks work so that you can prevent
the tax and parents who don't understand
the subtleties of the issues and the
terms were freaked out no we were not
going to have that at our schools right
other things like like obeying copyright
and being sensitive to that many of us
are aware so as artists or musicians or
creators we're creating something we
should feel free to specify how it's to
be used if I make a piece of art I
should be able to say how
how it can be used if I want to make it
public domain where it has no
restrictions that's I can do that and I
and I do that with a lot of my stuff
there are other ways to license like
that Creative Commons licensing so when
my students want to make a game often
they'll just go and search for some
images on the web and I stop them and
say no you as it's so convenient to do
that but you can't do that you've got to
think about what that image is and who
made it and did they decide that they
want you to use it for that purpose so I
send them to maybe the wrong link but
search.creativecommons.org I think is
one way where you can search for sound
files and and graphics that you can have
in your game like try to get them to
think about what if you were the artist
you were making it don't you think you
should be able to say how it's used and
then giving credit for other's work that
you build on I'm a leader in a group
called hack the future and here's this
term hack again what's at eight
different senses or whatever if you go
look it up in this sense it's this
create explore ethical good programming
robotic soldering entrepreneurialism
group and it's free and the kids meet
for a day at some place like the
Computer History Museum in in Mountain
View California or Tech Museum of
innovation in San Jose or Microsoft
headquarters and we have mentors and
usually get about 50 or 70 kids and
they're around tables they're doing
these various things at the end we have
the demo kids show the programs they
wrote and the things that they made
their little robots or the raspberry pie
stuff and one kid got up and he showed a
program with little kangaroos jumping
around or something and I recognized
that program as being one of al swag
arts programs
he's a Python educator and he's written
some books so apparently the kid had had
modified Al's program and without having
any ill intent he gave the impression
that it was his own original work so
here's the situation where you know I
can't let this stand
so without embarrassing the kid I got up
at night and I took to Mike and I and I
and I said how I love how I see the work
that you've made to modify al swag arts
program and I think it's important that
we recognize that your accomplishment
here is building on the work of someone
else and that we always recognize
someone else's work yeah I think that's
a good example of a recommendation that
could be given to other educators
because there's a lot of computer
science standards coming out in the
state different states and a lot of them
have to do with respect and copyright
and attributions and things like that so
I think that's a good way to kind of
take a potentially negative thing and
turn it into a lesson that can be
learned by everyone mm-hmm so what are
you looking forward to in the field of
CS education for my own interests where
I'd like to see students work is
self-driving cars either the full-size
ones or the model ones there's a group
that meets near the Oakland Airport at
this technology company and they on one
of the floors they've got these tracks
laid out people come and they bring
their their cars so it's it's dads and
moms and their kids sometimes I think
that's interesting computer vision is
interesting but for my for myself I'm
just looking forward to learning more
about how full-time professional
professionally trained teachers are you
know what they're doing yeah and your
mention of the self-driving cars there's
an interview that's gonna come up before
this with Sarah Judd who is the
curriculum developer for AI for all and
they're doing a whole curriculum on
right now for high school kids on how to
use AI in everyday life and how to like
program and stuff so oh that sounds
great
yeah I look forward to that episode if
that was around when I was in high
school oh man that would have been so
awesome oh definitely I was content to
make a battleship game they printed out
on paper I won an award for that too by
the way huh that's me
it made me prove that I didn't
plagiarize it which was kind of
interesting there's a little bit back
and forth I mean I did not it was my own
original work they I guess they just
hadn't seen anything like that before
and so they wanted me to prove it how
how did you prove original code like I
could understand it would be harder to
copy somebody else's code back then but
like nowadays with like Stack Overflow
and everybody just sharing stuff on
github but what did you have to do to
prove I can't remember it maybe I walked
them through the code and just showed
that I understood it all okay and as you
say that the opportunities for just you
know like today's I'm
it's pretty easy to find some basic
language code that would make a
battleship game but back then people
have to remember when we wanted
information we would go to the library
or look at a magazine or send a letter
to a company and say please send me a
brochure yeah whenever a kid would show
up with a program that looked a bit more
advanced than they had been
demonstrating it in class I would always
just ask oh so what does this function
do or how does this work and yes usually
the kids who came in with that we're
like oh well it does blah blah blah and
they were able to describe it but every
now and then they'd be like I don't know
that mmm so it's not your code yes and
hopefully they're honest about it and
this gets into ethics again and they'll
admit it sometimes they don't yeah I I'm
thinking of one middle schooler in
particular that I was like so I know
what your code does just by looking at
it but do you and if you don't then you
can sit out the rest of class but if you
do then cool you can keep working on it
so uh-huh he had to sit out Oh too bad
it happens do you have any concerns
about any of the current trends in CS
education before before Java was the AP
course language it was C or C++ wasn't
that C++ yeah C++ so I remember being
glad that Java replaced C++ that's the
language for AP and then I saw this talk
by Alan Kay again at Stanford I think I
watched it online but there it was one
of those publicly available talks he was
dismayed that so many people were
basically that Java had become popular
instead of small talk and I remember
being confused about that at the time
because I thought Java was great so this
must have been like somewhere in like
between 95 and 2000 today I realized
that there are bitter languages and so I
kind of wonder whether Java is the best
language for ap are there any questions
that I have not asked that you want to
discuss we could talk a little bit about
tools for example some people do Python
and Python comes with a kind of minimal
editor called idle and many people are
content with that but I encourage my
students to use professional level tools
there are some many of them are free for
students so as a professional I pay for
a license for IntelliJ IDEA I'll say I'm
not affiliated with them in any way I
only I mean they have great products
they really do and for students and also
teachers you can get a free license but
I don't take advantage of the free
license because I also use it to earn
money as a professional programmer and
it works with JavaScript Java even non
programming languages like HTML and CSS
it works with Scala and Kotlin and all
sorts of stuff so you can do your ear
project with it also a lot of people are
using Microsoft vs code or Visual Studio
code I've been hearing really good
things about that so I encourage my
students to use really good tools and
for instance we were doing something in
Ruby the other day I think it was sort
of in conjunction with sonic PI but I
don't use the built in sonic PI editor I
usually use IntelliJ IDEA ated right
through because and then I copy and
paste it over into sonic PI idea has all
these little elements to kind of notice
what you've coded and they say hey I can
offer you a better way to do that you
know you can shrink these eight lines
down to two and I say yes please it
changes the code and now you now you've
learned something amazing yeah and in
ten years or so when I was really
dedicated to Scala
the Scala plugin for idea taught me all
sorts of things ways to improve the code
so tools really really important and can
can really help another is students
contributing to open source projects and
learning to use version control like git
and github and I don't know how many you
should you should tell me maybe in your
experience how many computer science
educators talk about the importance of
version control and such things at the
high school level definitely not so much
like middle school and below but I will
say what you're talking about with
different IDs and whatnot you can
definitely do that with younger kids
it's just the more options you have
sometimes the more mistakes can happen
so you just got to be aware of that like
I had some fourth graders actually use
Xcode and create apps for their iOS
devices and Xcode is like the
professional IDE that is typically used
on a Mac so even if it's elementary kids
you don't necessarily have to shy away
from these and the fact that you have an
editor that was showing you as some
simplified ways of doing things oh that
would have been awesome I personally
nerd out on finding more simplified ways
of doing the same lines of code so with
git and github it's easy to sell people
on them on the benefits so you made a
mistake you broke your program you sure
wish you had it from a week ago
two weeks ago you look in your version
control history and there it is I have a
couple of open-source projects that some
of my private students contribute to so
they come here their parents pay me for
an hour to teach them and we work on one
of the open-source projects and what
they get out of it is they continue to
improve their programming ability and
they also get a good feeling of
contributing to an open-source project
and they also are making their work
visible the potential employers and
collaborators it's nice to be able to go
look at some of my open-source projects
and see that's see what some of my
students have contributed one of my
projects this broom helper 3000 which I
used to manage a classroom of computer
lab students it has a chat one student
in the chat pasted like the second act -
Romeo and Juliet or something went
really long into the chat and kind of
ruined it for everybody else and so one
of my private students then implemented
a countermeasure to that attack and then
this escalated and then my student made
a little video where he was kind of like
sort of like a smack down for the for
the offender will call the kid will call
the kid jack and so my student on the
video he and I are acting out so I'm
pretending to be the the the boy with
the long paste and it doesn't work and
then my student says take that Jack and
I recorded that that I played that for
the kids at this school in the junior
high in the seventh grade last year so
they saw that and oh man they love that
everybody was laughing and the kid the
perpetrator was left to have all the
attention
and everything and so then you know
later at school in the halls I heard
just completely unrelated to this kids
saying take that Jack so back to
collaborating on open source projects
that's that can be kind of a fun thing
to do do you have any questions for
myself or for the field yeah I do
actually
I know you and I are both interested in
music I'm kind of wondering how and you
have exhaustive outline of your
resources your website it's great you
have tons of stuff I haven't looked at
all of it so forgive me if this is
something that you've explained a
million times but I'm curious how you
blend music with CS education if you do
yeah I certainly do my goal in the class
was to kind of allow kids to explore
their own interests and do that through
CS and in particularly those classes
were coding classes so every platform
that we went through and worked on what
kind of guy to buy what kids were
interested in and a lot of kids were
interested in making music but they felt
like platforms like scratch just didn't
have enough substance to them and to
really dive deep in them so sonic Pie
was one of those platforms where you can
do a lot of cool things and so I I
learned Ruby and learned that platform
so that way I could help kids with it
and they really enjoyed that one the way
they actually got back into programming
was through a language called Max or
max/msp I don't know if you've heard or
seen this before that I know that's a
high end kind of like what a pipeline
for music pieces parts to go together or
something it's a graphical language and
it allows you to kind of construct your
own oscillators or your own loop pedals
or basically any kind of music related
software but the MSP side of things that
allows you to do live processing of
visuals so you can make it so that you
perform a piece of music and when you
play a certain phrase that will trigger
a certain kind of visual to appear on a
screen or things like that or to turn on
a light in
room that you're performing in how does
it know to do that based on a real-time
analysis of the sound or some other Wow
yeah it's it's pretty robust for a
graphical language there's a lot of
really cool art installation kind of
things that you can do with it like one
of the projects that I kind of just made
for fun was a quantize for track loop
pedal so I can make it so that I could
set a metronome and say I want to record
four bars and loop every four bars and
have four different tracks that I could
all trigger and start and stop and
whatnot and that was all just using this
interface and for me what was
interesting about it was trying to
figure out when is this music when is
this coding and when is when are the two
inseparable trying to explore them in
the classroom it was interesting with
kids some of the kids would come to me
and be like we make more music in your
class than we do in our music classroom
well I take that as a compliment cuz
like I want you to create things that
you're interested in but it's kind of
sad that you feel that way that you just
kind of like sit there and passively
engage in music in a class that's
supposed to be about that subject area
yeah yeah my last question for you since
you asked would be so you know a little
bit about me now and what advice do you
have for me to become a better computer
science teacher I mean you kind of
already mentioned it in terms of just
keep learning it's just the advice that
I give to anyone there's always more
that can be learned by not only
exploring within the field but outside
of it so one of the interviews that's
kind of release before this is we were
talking about how in computer science
education the research is often like
siloed into its own thing and it doesn't
necessarily look at other research in
education in other subject areas or
doesn't look necessarily beyond that and
I think for me one of the biggest things
that I've learned from is by actually
going out and reading scholarship in
other domains and going oh what are they
doing in the Health Sciences or what are
they doing in therapies or what are they
doing and whatever and trying to find
ways of incorporating that like it
doesn't always work well but I've
learned some
much just from constantly asking
questions and trying to figure out what
are other people doing and how might I
be able to incorporate that into the
research I'm doing are the classes I'm
facilitating interesting yeah I never
thought of looking into other fields for
that yeah I mean some of my biggest
influence have been in like literacy or
sports psychology or even Media Studies
like those things have significantly
impacted not only my research and
whatnot but just my classes how do you
have time for that and what what are you
spending your time on these days so I'm
a bit OCD when it comes to my scheduling
and that came out of necessity in that
like I had too many plates spinning and
was not being productive and was quite
overwhelmed because there was like
working full-time working on a
dissertation and yada yada yeah so I I
don't know if you've heard of getting
things done the the method yes
so David Allen's book and he's got like
a podcast and stuff I followed that but
then I also just listened to a bunch of
podcasts on productivity and I just like
keep applying those little pieces that I
learned here and there and what I'm
doing and try and be as effective as
possible so like as an example I do the
Pomodoro method and that I'll work for
like I was just gonna mention that yeah
I'll do 50 minutes of work and then I'll
do 10 minutes where I'll go play drum
set downstairs or like walk on my
treadmill while like reading a book or
something and then I'll come back and do
another 50 minutes of work and then I
like I meditate in the morning meditate
midway through the afternoon and then I
work out in the evening and then I've
been trying really hard to make sure
that my evening and weekend times are my
evening and weekend times and that's
coming from somebody who you used to
work seven days a week like 10 plus
hours a day Wow I've realized that I
need those breaks
yeah well good for you it sounds like
that's working for you and I love how
all of your online materials are so well
organized Thanks
I imagine in the world of people who are
making podcasts you were
yours is one of the most organized oh
I'm just trying where my people go to
connect with you and the organizations
that you work with I'm on Twitter
DC Bri CCE TTI
and my website is Dave be soft calm
and YouTube is also the DC Bridge Eddie
and hacked the future group that I
mentioned the story about the work built
on Al swag art that's act the future dot
work and with that that concludes this
week's episode of the sea sk8 podcast
hope you enjoyed this episode in the
show notes you're going to find a ton of
links to resources as well as a an
embedded playlist of one of Dave's
youtube playlists and in that playlist
at the time of this recording there was
over 150 videos that dave has made it
have some really excellent examples of
using coding that combines math and art
and music together so I highly recommend
checking that out in addition I provide
several books and podcasts as
suggestions if you want to become more
intentional with your time or be more
productive throughout your day I hope
you enjoyed this episode next week is
going to be another unpacking
scholarship episode and then in two
weeks from now we'll have yet another
interview
Guest Bio:
I am a professional software developer, computer programming teacher for kids, and community technology and music volunteer.
I teach young programmers in and around Lafayette, California. I help organize, and mentor at Hack the Future (“hack” in the good sense). I have taught kids in the Lafayette and Moraga School Districts in seminars and in lunchtime and after school computer clubs. From 1992–2014, I taught programming to grades 4-10 students at the Diablo Valley College College for Kids summer program in Pleasant Hill, California. Before that I taught for several summers at the Oakland Feather River summer computer camp in Quincy, California.
Since becoming a professional programmer in 1979, I have been involved in many development projects, from small to large, in many areas including student information systems, learning management systems, satellite photo analysis, social networking, videoconferencing, remote device control, finance, education, publishing, mechanical engineering, semiconductor manufacturing, defense, and telecommunications.
For music teacher Bob Athayde at Stanley Middle School (and any other schools who may wish to adopt it), I develop and maintain DBSchools Music Gradebook, the open source online web app Bob and his staff use to manage testing students on their instruments. I recently created RoomHelper 3000, a webapp to help teachers manage classrooms of students on computers.
On YouTube, I produce a series of video lessons on all sorts of programming topics of interest to kids and adults.
Blog
Consulting
Programming for Kids
Software
Content Elsewhere
YouTube channel, including lessons for programmers
Examples of some of the projects Dave explores with kids
Resources/Links Relevant to This Episode
Other podcast episodes that were mentioned or are relevant to this episode
How to Get Started with Computer Science Education
In this episode I provide a framework for how districts and educators can get started with computer science education for free.
Learn more about some of the programming platforms and languages mentioned in the interview
A TEDx video of Mitch Resnick discussing teaching variables through Scratch
Some of the resources I’ve created or curated that explore the intersection of music and coding
Resources for learning more about productivity (note, none of these links are affiliate links)
Books
Podcasts
Some more content Dave has created that relates to this episode
Connect with Dave
Find other CS educators and resources by using the #CSK8 hashtag on Twitter