teaching-kids-ruby / discussion

Teaching Kids Ruby Discussion
7 stars 1 forks source link

Interesting in talking about how to teach Ruby and programming to kids? #1

Open patshaughnessy opened 10 years ago

patshaughnessy commented 10 years ago

Hi there… last weekend Jeff (@j3), Ashley (@ag_dubs) and I (@pat_shaughnessy) had a brief Twitter conversation about teaching Ruby (and programming) to kids. We thought many other people might be interested in this topic and setup this page to host a longer discussion.

Later we can move this to Google Groups, Discourse, Basecamp or somewhere else if that makes sense.

Let us know what you think!

Here's a bit of the original twitter conversation:

@pat_shaughnessy Doing a technical review of an upcoming Ruby book for kids - it's fun reviewing someone else's stuff for a change :)

@ag_dubs @pat_shaughnessy v cool! excited to hear more.

@pat_shaughnessy @ag_dubs for sure, I'll definitely talk about it more when it's closer to being done

@j3 @pat_shaughnessy @ag_dubs +1, been wanting to write one for years, curious to see it.

@ag_dubs @j3 @pat_shaughnessy i think it'd be real cool to get some folks together to talk about different approaches to teaching kids programming

@ag_dubs @j3 @pat_shaughnessy esp language based vs language agnostic approaches

@j3 @ag_dubs @pat_shaughnessy count me in. We could host in Denver.

ashleygwilliams commented 10 years ago

hey! jumping in here with my two cents.

i think it'd be great to use this thread for 2 things:

  1. commit papers, research, blog posts about teaching kids to code
  2. organize a meetup of some sort(conf, unconf, or otherwise) to discuss this body of work a. gather any specific topics that you are particularly interested in

thoughts?

tef commented 10 years ago

Hi, i wrote some lessons for python courses, for my last job at code club, and i'm unsure how useful they'll be.

I ran a handful of workshops for 7-13 year olds with these, and I got a bunch of feedback from them. What I found out was surprising, in that they mostly struggled with typing and punctuation. Most didn't know where the tab, - or keys were, or even the difference between - and .

The format of the lessons came about from specific requirements.

If you're writing materials I recommend you focus on these sorts of constraints,

You can see the entire (and short) project guidelines we cooked up, here: https://github.com/CodeClub/project_guidelines/blob/master/README.md

ashleygwilliams commented 10 years ago

who am i: ashley williams, open web engineer at bocoup with a major focus on their training and ed programs. former lead instructor flatiron school. former NYC teaching fellow. middle school science teacher in harlem. self-taught developer in mainly ruby and javascript, but working with some friends to rewrite the etudes for erlang.

issues i'm particularly interested in:

resources that i've enjoyed so far:

resource i'm about to dive into:

tef commented 10 years ago

Going into research and papers next, it really all starts with the work of Seymour Papert and chums, and the work of the MIT media lab. Or in other words: Logo and Scratch.

What happened to the initial enthusiasm for introducing programming to children? Why did Logo and other initiatives not live up to their promise? There were several factors:

  • Early programming languages were too difficult to use. Many children had difficulty mastering the syntax of programming.
  • Programming was often introduced with activities (generating lists of prime numbers, or making simple line drawings) that were not connected to young people’s interests or experiences.
  • Programming was often introduced in contexts where no one had the expertise needed to provide guidance when things went wrong – or encourage deeper explorations when things went right.

Papert argued that programming languages should have a low floor (easy to get started with) and a high ceiling (opportunities for increasingly complex projects over time). In addition, we believe that languages need wide walls (supporting many different types of projects, so that people with different interests and learning styles can all become engaged). Satisfying the triplet of low-floor/high-ceiling/wide-walls hasn’t been easy.

That last paragraph really nails it: low floors, high ceilings, wide walls.

tef commented 10 years ago

I should really mention scratch again:

http://scratch.mit.edu

If you haven't played with this you're missing out. MIT also have a community kicking around for this, http://scratched.media.mit.edu/ run conferences too, and there are also a few clones of scratch from others, including Snap!/BYOB which has first class functions and data structures, used for an introductory course in computer science.

patshaughnessy commented 10 years ago

Wow - great info, thanks!

A couple of relevant conference presentations...

Here in Boston there was a great talk at the Wicked Good Ruby conference by Mark Sobkowicz that's relevant: http://www.confreaks.com/videos/2739-wickedgoodruby-ruby-the-next-generation

And who can forget the keynote from RubyConf Miami by PJ & Katie Hagerty:: https://www.youtube.com/watch?v=UlG1c3igNM0&list=PLE7tQUdRKcyb5I7Bk1POYW4udtHMUMkK7&index=16

garrettwilkin commented 10 years ago

Hi!

I'm running middle & high school targeted programs to support technological exploration via our new non-profit organization, Hacktivate. I'm interested to connect with others that are in the classroom working with kids as they explore programming and other technology based knowledge areas.

Thanks for kicking off this discussion!

etrepum commented 10 years ago

Some public high schools in SF are using Snap for their CS curriculum, I believe it's a version of the course at Berkeley

tef commented 10 years ago

(snap owes a bit to the earlier work they did with logo, http://www.cs.berkeley.edu/~bh/ check out "Computer science, logo style" )

ghost commented 10 years ago

Hi! I'm a lead trainer for CodeNow, in the SF Bay Area. We're a YC non-profit teaching Ruby to teenagers. We've been at it for a few years now, in several cities (DC, NYC, Miami) and have taught several hundreds students.

Our curriculum is on Github (repo, public page (the 'password' for the public page is c0den0w!124 - it's just a silly measure to prevent kids from looking up the answers) ), if it's of any interest. I'd also be very happy to contribute with knowledge acquired in the process - I've personally been teaching programming to humans from age 6 to 60 across the world for the past 10 years or so, in a variety of contexts (classrooms, universities, after school programs, summer camps, 1-1 mentorship, etc.).

Additionally, I really enjoyed this PyCon 2014 talk by @gvwilson: "Software Carpentry: Lessons Learned". I've found his insights about teaching programming to be universal.

tef commented 10 years ago

(and another aside, but possibly more of a rant)

There is a terrible trend in education to treat learning as rote memorization of the fundamentals, matching the students through a reference manual.

You'll have seen these sorts of materials. The table of contents talks about the features introduced, "Chapter 1, variables. Chapter 2: if statements" etc. Courses aimed for kids generally have "Chapter one: Drawing on screen. Chapter two: Making a game". I.e the learning material is broken down into specific projects and outcomes, rather than being "You will learn Feature X here". )

Glench commented 10 years ago

Seymour Papert and Mitch Resnick have already been mentioned, but I thought I'd mention Papert's canonical work, Mindstorms: Children, Computers, and Powerful Ideas.

And for insights into why programming is hard and how languages and environments can be made learnable: Bret Victor's Learnable Programming.

lynnlangit commented 10 years ago

Hi! I am the co-founder of http://www.TeachingsKidsProgramming.org, we provide free, open-source Java courseware for middle (and high) school aged kids and teacher-training materials.

We have evolved a teaching methods based on implementation of XP technical practices (http://en.wikipedia.org/wiki/Extreme_programming_practices)

I am writing a set of lesson plans on Penflip, that include our teaching practices - https://www.penflip.com/lynnlangit/tkp-lesson-plans.

We are focusing on Java and middle-school kids and teachers, because we want to provide high-quality resources for school teachers (who may not be programmers themselves), which they can use to introduce programming during or after school. We selected Java because that's the language (if any) that is offered in AP programming classes in high school.

We have had some interest from other language communities, including Ruby, in understanding some of our lesson writing and teaching techniques.

Another core principal of our work is that programming should be fun for both girls and boys. My (now 15) year old daughter has been part of our process for over 7 years as well.

inchingforward commented 10 years ago

Hopefully nobody will mind if I add some Alan Kay:

The first part shows Douglas Engelbart doing things with computers that we arguably still haven't been able to match. The second part focuses more on learning/teaching.

Kay recently said: "The children are not going to be able to invent Calculus. It took a genius and two hundred thousand years for that to happen. But in fact, another genius, Seymore [Papert] can figure out a way of contextualizing the important ideas of this so it fits perfectly into the child's world. That changed my life forever. Because once you see that done, it's kind of a duty thereafter to try and make it happen." The above talk touches on this.

etrepum commented 10 years ago

For general teaching/learning I found these particularly useful:

TrevorSayre commented 10 years ago

Worth dropping in the Khan Academy online Computer Programming course for kids: https://www.khanacademy.org/computing/cs/programming

shashi commented 10 years ago

Hey this practically ungooglable talk where Alan Kay demos etoys is packed with insights!

https://www.youtube.com/watch?v=WR1en4e2hA0

Things he creates along the way blew my mind.

More here: http://vpri.org/html/words_links/links_ifnct.htm http://vpri.org/html/work/tlpiese.htm

lynnlangit commented 10 years ago

I have found research around openness to Learning useful, in particular the work of Carol Dweck, published as "Mindset", also referenced in talks (Agile 2012) by Linda Rising and also by a number of TED speakers

lynnlangit commented 10 years ago

Another interesting perspective was written by Dr. Catlin Kelliher. She created StoryTellingAlice and did her thesis on how middle school aged girls learn technology

maxjacobson commented 10 years ago

Hi, I'm a former student of Ashley's. Here's two cool things I've heard of

I recently watched a talk (https://www.youtube.com/watch?v=qDZ5Ku6whi0) about Isla (https://github.com/maryrosecook/isla), a language designed for really young children. There are online demos too (http://islalanguage.org/). It avoids the tricky punctuation problem by avoiding punctuation. The talk goes into a lot more detail about the thoughts that went into it

Another resource I've seen is a free iPad app called Hopscoth that has a visual programming language. I tried it, it's really cool.

reuven commented 10 years ago

Hi, everyone. I'm finishing (in the coming weeks) my PhD at Northwestern University with Uri Wilensky, who did his PhD with Papert. Our group does NetLogo, which takes the basic idea of Logo, but moves it into the area of models -- particularly agent-based modeling and complex systems. It's really cool stuff. (My dissertation is based on the Modeling Commons, which I created in order to make NetLogo modeling social.)

You can be sure that constructionism and Papert's worldview play a large part in my philosophy of education and computers -- including when I'm at my day job, providing consulting and training services to companies.

My day job is working as a consultant. A large part of my consulting work involves teaching adults programming, typically in Python or Ruby. I haven't had a chance to teach kids lately, although over the years, I've taught kids Ruby, Python, JavaScript, and (of course) NetLogo.

My interest in teaching programming led me to create a Discourse forum several weeks ago, called Teaching to Code. I haven't had much time to turn it into a real community, mostly because I'm putting the finishing touches on my dissertation. But I think that it's super-important that people who are teaching programming to others -- adults and kids -- have a basic knowledge and understanding of the research and work that has gone into this subject to date, and can build on what has already been done. I'd be delighted if people want to use the Discourse forum that I set up to continue and extend this discussion.

stevekinney commented 10 years ago

Hey everyone!

Obligatory About Me: I was a New York City public school teacher for the last seven years—starting as a special education teacher and ending up teaching Ruby and JavaScript to students from grades seven through twelve. Like @ashleygwilliams, I am also an alumni of the New York City Teaching Fellows and I even taught middle school science for one year—but in Brooklyn, not Harlem. I ran an intensive code camp in the summer of 2012. I work as the Directory of Educational Technology at a non-profit now making web-based interactive activities for teachers and students to teach economics and personal finance topics.

@maxjacobson Hopscotch is really, really cool. They're NYC-based and I know the CEO. They actually do regular user-testing sessions with kids 8+ and might have some good insight into the ins-and-outs of learning to code. For those of you who haven't seen Hopscotch, it's the soul child of Scratch but for iOS—and with great design. It allows you to access some of the cool sensors in an iPad (e.g. the accelerometer, etc.).

@lynnlangit I'm a huge fan of Carol Dweck; her work was definitely a big influence on me as a teacher. My master's thesis was on the self-perception of students with learning disabilities and the impact of that self-perception on their academic performance and ability to learn. Mindsets is a good read and a great book. She also wrote a book called Self-theories: Their Role in Motivation, Personality, and Development, which is a bit more academic/technical (a euphemism for "not as fun to read"), but goes into greater detail on the ins-and-outs of her research.

@TrevorSayre John Resig did a great talk at EmpireJS in 2012 about the Khan Academy's approach to teaching computer science. It's a little old, but worth it. They're approach is heavily inspired by Bret Victor's "Learnable Programming" talk, which @Glench mentioned.

My interests pretty much overlap with @ashleygwilliams's. I started jotting down a bunch of notes on my subway ride home after seeing this thread. I'll be sure to boil them down to something coherent in the very near future.

janniklaval commented 10 years ago

I should mention phratch : http://www.phratch.com/

It is a port of Scratch on recent platforms (Pharo 3.0). It is mapped to a Smalltalk language. At the beginning, we can use visual blocks. Then you can jump to the real source code.

The evolution of phratch is to go to the robotics: http://www.phratch.com/jetstorm. Probably, this is an interesting point to learn programming using Lego and real objects.

evhan55 commented 10 years ago

+1 to Hopscotch having great visual design

Context: http://blog.interfacevision.com/design/design-visual-progarmming-languages-snapshots/

I worked on Scratch as a developer, designer and teacher for 7 years. I am now interested in all of these ideas as they apply to teaching fine artists how to code, especially in a "studio teaching style".

inchingforward commented 10 years ago

Patterns of Code as Media is an interesting overview of the ways code is presented/communicated. There are many educational tools listed.

joeLepper commented 10 years ago

Hi friends.

I'm a self-taught software engineer but in another life was a high school teacher. I spent a number of years writing content for and developing elearning courseware before going on to pursue more technical challenges. Since having two little girls I've become increasingly interested in the way that they approach and interact with technology.

I came to programming by way of hardware hacking, and am primarily interested in the way that we can use robots and toys to teach the fundamentals of making systems that interact with our environment.

I can't express how happy I am to have found this thread. I'm eager to find a way to contribute to any effort that helps lower the point of entry into what I see as a very liberating toolset. And selfishly, I'm excited to pillage the resources that get posted here.

Cheers.

bennuttall commented 10 years ago

Hi all

I'm a developer on the education team at Raspberry Pi - the team is 50% developer background, 50% teaching background. We recently launched a GitHub based learning platform where resources are collaboratively written on GitHub and are made available on our website under the categories teach, learn and make.

At Raspberry Pi, we tend to focus less on teaching coding, more on computing and try to convey computational thinking incorporated in to the process of making things. Reading, writing and hacking code is an element of this, and the skills involved are important to our cause, but we also really like physical computing and interactive media.

Anyway, what I wanted to throw in was that while Scratch is seen to be a useful tool to teach basic programming knowledge and understanding for young children, and Python offers a similarly engaging experience for older kids, a great stepping stone to bridge the gap (mixed metaphors, whatever) between the visual programming nature of Scratch and the syntax- and indentation- sensitive nature of Python is a music programming tool called Sonic Pi.

Sonic Pi is a Ruby based programming environment which allows the user to create music, and introduces them to programming concepts such as looping and threading. We've found this to be a great tool in education as it gives an alternative output than purely on-screen (they get to make music) and Ruby's syntax is easy to read (2.times do rather than for i in range(2): or for (var i=0; i<=2; i++), doesn't rely on brackets too much (play 60 rather than play(60)) and it allows them to use nested blocks without worrying about indentation.

If a kid has the dexterity to use a mouse, it's great to get them started with some visual programming in Scratch, if they can happily type without getting frustrated, Sonic Pi opens up a new and interesting environment for them to learn programming and make music.

Sonic Pi is developed by Sam Aaron (@samaaron) from Cambridge University and a scheme of work was developed with my colleague Carrie Anne Philbin (@missphilbin) focused on the UK computing curriculum. See our blog post introducing Sonic Pi and see Carrie Anne's video tutorial.

Also I believe the new version of Sonic Pi is also available for Mac.

Ben

samaaron commented 10 years ago

Following @bennuttall's previous comment, if people are interested in seeing what you can do with Sonic Pi take a look at this short (~15 mins) video: https://www.youtube.com/watch?v=NUdAXlcxQgk

drtortoise commented 10 years ago

what @tef said

Hi everyone. I wrote a bunch of materials for codeclub.org.uk, teaching kids aged 9-11 how to program in after-school clubs. At the moment I'm working with the UK Scout Association, rewriting their outdated IT badge to a more current Digital Maker Badge (for kids aged 6-18). Mostly making activities on how to make games, websites, robots. I actually don't like badges. I think everyone should read "Punished by Rewards".

I love arduinos, hardware hacking, making stuff and want to bring the hacker/maker movement to schools.

I've been very disappointed in how teachers use raspberry pis in the classroom, mostly for things they could have used their old computers for anyways (hi @bennuttall)

There's a big push to teach all kids in the UK computing atm, I don't like how they are focused, mostly on how to create worker bees for Tech City/startups and the Gaming Industry. Not so much 'how can we use computing to learn". There's a lot of resources being made to prepare the teachers for the new national compulsory computing curriculum (starting September 2014) and it seems everyone wants in on the gold rush. Some are better than others. I was very disappointed in FutureLearn's MOOC for computing teachers https://medium.com/code-adventures/fd6a5606944d :/

patshaughnessy commented 10 years ago

An amazing set of links, ideas and people! Thanks so much everyone for participating in this ad-hoc discussion. Ashley, Jeff and I will figure out a way to organize this info, and put it somewhere more permanent and searchable.

Btw I just today saw this early version of the cover art for that Ruby kids book I’m reviewing (what started this conversation!) for No Starch Press called "Ruby Wizardry:"

rubywiz_frontcover

The author Eric Weinstein is doing a great job of explaining my favorite language in a fun way kids will enjoy. It’s not available yet, however, still more work to do. Later I'm going to test it on my own 15 yr old daughter and 13 yr old son :)

lynnlangit commented 10 years ago

If anyone on this list lives in London, we at TKP will be teaching a kids event immediately followed by a one hour train-the-trainer for UKYouth on Friday 29 May, 2014 from 1pm to 5pm at Millbank Tower. If you are available and would like to join, just ping me at lynnlangit at live dot com.

The event is 'Introduction to Java Programming with TKP courseware'. For kids ages 11-17.

Marima72 commented 10 years ago

Hi! I teach math and science for kids ages 10-12, Gothenburg, Sweden. In August I also hope to teach them how to code. Love to find discussions on the Internet like this one! Thanks everyone! :-)

bennuttall commented 10 years ago

FYI @beseven

mplsawv commented 10 years ago

Hi everyone!

I am a teacher at a STEM elementary school in Minnesota, USA, and this year started integrating coding into my work with students. We mostly used Code.org, Scratch, AppInventor, Hopscotch, and Kodable, and the kids loved it. I am constantly inspired by what they create.

This year, I also started volunteering/mentoring at CoderDojoTC, part of a world-wide organization (http://coderdojo.com/) that provides free coding sessions to kids on various programming platforms. This is how I first learned about and began exploring Ruby ...and now I'm hooked!

I'm teaching coding camps to kids ages 8-16 this summer, and am teaching a Ruby camp next week. One resource I've found really helpful is a course on iTunes U called Intro to Programming Ruby by Mark Sobkowicz (https://itunes.apple.com/us/course/introduction-to-programming/id592733782). I also am going to have campers use KidsRuby to practice creating games with Gosu.

I am glad to have discovered this thread, and look forward to sharing resources and ideas with all of you. If you are on Twitter, be sure to check out the #kidscancode chat that happens on Tuesday evenings at 7pm, CST.

Best, Andrea

ghost commented 9 years ago

Hola !

@reuven Have you seen the minecraft plugin for logo ?

TY for the great links everyone !

lynnlangit commented 9 years ago

I am headed to Oredev in Malmo, Sweden Nov 1 - Nov 9 and am working on setting up one or more TKP Java kids sessions while there. Also my program director, Jessica Ellis, will be in London at this time leading TKP kids sessions with the UKYouth team there. Reach out to jessica@tkpjava.org, if you'd like to volunteer (as a proctor). This is a great way to get a look at our free, open-source TKP courseware.

As a FYI, we have about 25 hours of validated courseware (designed to be taught either to middle school (ages 11+) or as an on-ramp to high school AP Java) in our TKP library.

As a reminder - our repo is on GitHub (https://github.com/TeachingKidsProgramming/TeachingKidsProgramming.Java)

ghost commented 9 years ago

Found this http://christinacacioppo.com/blog/learning-online (I read HN too much).