Launching our Teacher Ebook for learning Python and CS Principles

April 1, 2015 at 7:49 am 18 comments

Back in September 2011, I announced that we received NSF funding to try to “beat the book.” (See post here.) Could we create an electronic (Web-based) book that was better for CS teacher learning than reading a physical book? Took us three years, but I’m confident that the answer is now, “Yes.”

Our ebook is hosted by Brad Miller’s Runestone tools and site.  We use worked examples (as mentioned here) interleaved with practice, as Trafton and Reiser recommend.  We have coding in the book as well as Philip Guo’s visualizations.  There are audio tours to provide multi-modality code explanations (see modality effect), and Parson’s problems to provide low cognitive load practice (see mention here). We support book clubs that set their own schedule, in order to create social pressure to complete, but at a scale that makes sense for teachers.

2011 was a long time ago.  That original post didn’t even mention MOOCs.  We ran two studies in the Fall, one on learning with novices and one on usability (which involved several of you — thank you for responding to my call for participants!). I’m not going to say anything about those results here, pending review and publication. We have updated the book based on the results of those studies.  I don’t know if we beat the MOOC.  We’re running at about a 50% completion rate, but we’ll only really know when we go to scale.

I am pleased to announce the book is ready for release!

Please send this url to any teacher you think might want to learn about teaching CS (especially for the AP CS Principles — see learning objectives here) in Python:  Thanks!

Our next steps are to develop a student ebook.  By Fall, we hope to have a teacher and a student CSP ebook, which may make for an additional incentive for teachers to complete.

Entry filed under: Uncategorized. Tags: , , , .

Computer Science Looks Beyond Nerds: Yeah, we still need to say it Let me tell you what I know about gender and CS: An undergrad teaches her faculty about diversity

18 Comments Add your own

  • 1. Doug Blank  |  April 1, 2015 at 8:06 am

    Congratulations on the book’s release! The book will no doubt be a great contribution to CS education.

    And, the tools that you have selected, and helped create, in order to make the ebook possible could form the foundation of further research and better education in many courses. Just recently, I’ve been working with Brad to make Skulpt (Python in the Browser) Processing library 100% compatible with ProcessingJS, and incorporating Philip’s tutor into more tools (like IPython notebook).

    What a great collection of technologies and education research your ebook encapsulates! Definitely raises the bar for all of us.

  • 2. JamieSue Goodman  |  April 1, 2015 at 8:09 am

    Congratulations! The book is a terrific resource and I’m excited to share it with teachers!

    • 3. Mark Guzdial  |  April 2, 2015 at 10:19 am

      Thanks, JamieSue and Doug! We’re so excited to have this out and to see how it works with real teachers.

  • 4. chaikens  |  April 2, 2015 at 9:33 am

    Took a quick look…my several year’s stint with teaching CS1 showed me that assignment is the MOST DIFFICULT fundamental to teach to everybody. Part of the difficulty is the need for the student to imagine the variable…my troubled students never talked about their troubles in those terms of an imagined or drawn image for a variable. (The lesson fragment suggesting that the consistent right-to-left order is the first major problem doesn’t feel right; is there evidence? Consistency in syntax, of course is another thing that must be taught to be habitual.) I wonder if part of the problem is the widespread use of misleading vocabulary in textbooks and technical jargon and literature: We’ve all seen how the assignment machine instructions have been named “MOVE” for generations. Most everyone reads “=” as “equals” when they read code aloud. And programmers who know what they are doing most always say “move” and “equals” when the know, think and mean “assign” (There are good reasons: move and equals only have one syllable and most languages code assign with “=”). Another example: “A variable is a name for a value” which is accurate for functional programming but not for procedural. Has anyone investigated having teachers try to use more accurate vocabulary carefully and consistently?

    • 5. Mark Guzdial  |  April 2, 2015 at 10:18 am

      The PCK that we present in the book is based on research. The assignment misconceptions and complexities come from work by Brian Dorn, Juha Sorva, and Dehnadi & Bornat.

      I don’t know of any work that’s tried to measure teacher language when presenting these concepts, but it’s a fascinating direction to explore. I’ve wondered about the role of language when I teach OOP. So much of what the student is learning is reflected in the language that they use. By the time that they can actually ask a question correctly that uses terms like methods, instances, and classes, they don’t need to ask the question anymore. Learning the language is essentially equivalent to learning the concepts.

      • 6. KDecker  |  April 2, 2015 at 2:48 pm

        “Learning the language is essentially equivalent to learning the concepts.”

        Just another data point on this. I taught intro CS for several years, with other instructors, before we realized that large numbers of students NEVER seemed to catch on to vocabulary (e.g. USE vocab terms when asking questions). I used to think “ho ho, vocabulary quizzes are for my middle school kids’ math course, sure, but not college freshmen…”.

        Then we tried it, and over half the class failed (e.g. which of these things is: a constant definition? a function definition? a function call? an argument? a formal parameter? a conditional test?). No one at all got a perfect score. We blame ourselves, but we do use very consistent terms for certain things: to match the book, and the language IDE (which has a very specific set of guidelines for exactly what terms get used in error messages, for example). Obviously, all these nice error messages and all those comments on the homeworks are often not being understood!

        So now we make sure they know they’ll be tested on it, and provide definitions and practice questions. I also try hard to point out (over and over and over) overloaded English terms that have highly technical CS meanings (the poster child for this in our intro course is the word “TYPE”, as in “data type”, “what types does that function consume; what type does it produce?”, “Is that type really any number at all, like -4.23, or really a positive integer only?”, “function foo expected one argument of type string, but was given -99.”)

        • 7. chaikens  |  April 2, 2015 at 8:34 pm

          This would lead one to suppose that vocabulary and its precise meaning in our disciplinary context need to be recognized by teachers and students alike. I’ve become sensitive to alerting my students to terms overloaded even within one subject. A troublesome example is that “a function’s output” could mean either what it prints or what it returns. Students do confuse printing and returning. And testing a function by typing its function call in an interactive shell like DrJava’s which prints any value returned makes this distinction even more difficult for beginners to recognize. (I’ve tried to address this by assigning Java students to only code complete programs to do what they do when they are run.)

          In math courses for majors it is fair game to demand and test for precise memorization of the relevant definitions—that’s not regarded as grade school stuff.

          • 8. Bonnie  |  April 3, 2015 at 8:39 am

            I also agree that vocabulary is critical, so I spend time on it in class. And I am careful to always use the correct terms and to ask the students to do the same.

            Speaking of interesting shifts in vocabulary – has anyone else noticed the recent trend among students, and even some bloggers, to use the term “codes” instead of “code”? Students tell me they “are having trouble with their codes”. A good example can be found here
            where readers are instructued
            “Step 1: Write the source codes (.java) using a programming text editor”.
            I find this jarring – it makes me think of medical billing codes rather than programming – but maybe I am the only one to notice? I wonder what it means about the way people think about programs?

            • 9. gasstationwithoutpumps  |  April 3, 2015 at 11:11 am

              I think it means that students did not acquire the “countable/uncountable” tag for the word when they learned it. There are a lot of nouns in English that exist is both countable and uncountable forms, with different meanings. Because so many CS students have English as a second language, one may have to explain the countable/uncountable distinction (it affects no just the ability to use plural forms, but also correct article usage).

          • 10. KDecker  |  April 8, 2015 at 9:52 am

            I missed this comment originally: the possible confusion between printing and returning. In my experience the pedagogical approach we use avoids this problem because it is functional-first, and we don’t introduce “printing” to the terminal until quite late in the semester. We also avoid saying “a function’s output”.

            Course staff are very careful to use the language that functions “consume” arguments (of some type/types) and “produce” a value (of some type). Since we start with pure algebraic semantics, and initially use the interpreter as a calculator of sorts, students are comfortable with this from math class [my kids’ school requires graphing calculators that have exactly this kind of interpreter interface].

            We are not limited to the REPL: students produce both GUI and batch (file) I/O programs right away, but the GUI interface is totally functional (e.g. students write a function that consumes the current world/state/simulation structure/object and produces an image that the user will see—the View in MVC parlance) and we talk about writing a file where the creation of the file on disk is a side effect (write-file produces a boolean value). Only in the last third of the course do we introduce void functions (that produce no value) and arbitrary print statements.

            That said, I will make a note to test/quiz on this. It is not a question that comes up in class, piazza, or office hours.

    • 11. Bonnie  |  April 3, 2015 at 8:31 am

      I agree that assignment is really difficult, and because of that, I do not allow my students to say “equals” when they talk about the assignment operator. I also draw pictures constantly, with little boxes for variables, to show them how values are assigned. I tell them that variables are little shoeboxes in memory, with names. This lays the foundation for grappling with references (we use Java) later on. And yes, textbooks are terrible in this regard. Students need to build a mental model, and the textbooks do not facilitate that. Of course, I think most Intro to CS textbooks are terrible in many ways, not just on this topic.

      • 12. gasstationwithoutpumps  |  April 3, 2015 at 11:08 am

        I learned to read the assignment operator as “gets”.

      • 13. chaikens  |  April 3, 2015 at 11:04 pm

        I’ve done everything that Bonnie does and still observed that all the many students with trouble did not describe their thoughts in the terms Bonnie and I used and tried to teach. I also distinguish in cs2 three separate aspects of a variable: name, value and location.

  • 14. Peter Donaldson  |  April 4, 2015 at 10:23 am

    Hi Mark,

    great to see your new eBook is complete and ready to trial on a larger scale. I really like the way you’ve embedded the misconceptions in the book and the support for teacher reading groups.

    Hopefully the book will become more widely available soon as I think the approach you’ve taken would be very useful for further developing any computing teachers pedagogical content knowledge.

    Kind regards,

  • […] on Tuesday. (See our website here, the initial blog post when I announced the project here, and the announcement that the ebook is now available). Her paper, “Analysis of Interactive Features Designed to Enhance Learning in an […]

  • […] teacher ebook summer study is now ended. (Announcement about launching the study is here.) We’re crunching the data now. We’ve already learned a lot about what teachers want in […]

  • […] here at Georgia Tech) ran last year.  This is the pilot that came before our Spring trial (see post here) and which led to our student and teacher ebooks that we recently released (see post here).  The […]

  • […] like our ebooks, to provide computing learning opportunities that fit into busy lives (see ebook post).  I see Valerie calling for something similar — we need more pathways to learn about […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,059,758 hits
April 2015

CS Teaching Tips

%d bloggers like this: