Webinar Recording: Teaching Python 3.6 with Games

Yesterday Paul Craven, computer science professor and creator of the Arcade library for Python 2d games, gave a webinar about teaching Python to university students using game writing. The recording is now available:

During the webinar, Paul discussed his techniques for teaching introductory programming, an approach which he has refined over the years based on seeing what works and what doesn’t work. He covered:

  • The iterative process of producing teaching materials
  • Having a good toolchain (PyCharm for writing Sphinx docs, GitHub, ReadTheDocs, etc.)
  • How PyCharm’s IDE features impacted the quality of what students did (PEP 8, function completion, spell checking, etc.)
  • The effect Python 3.5/3.6 type hinting had on the learning/teaching experience
  • How games as a topic made learning fun, and how he adjusted the game library to make it more teachable
  • Teaching self-sufficiency by learning to browse APIs
  • The importance of already-working game examples

Paul then covered a bit of Arcade and the kinds of games it makes easy to write.

The webinar lasted a bit over an hour and had one of our highest number of questions posed during the session. We’ll try to get Paul back again in the future and go more in depth on game writing.

If you have any questions or comments about the webinar, feel free to leave them in the comments below, or you can reach us on Twitter. Paul Craven is on Twitter as well, his Twitter handle is @professorcraven.

-PyCharm Team
The Drive to Develop

This entry was posted in Webinar. Bookmark the permalink.

6 Responses to Webinar Recording: Teaching Python 3.6 with Games

  1. Peter P. says:

    It was excellent, thank you for the tips.
    I forgot to ask one question in the chat window: is the curriculum of the college/uni subject available somewhere? Would be nice to see from where to where the kids are progressing. I think it was mentioned it’s a one semester class, but would be nice to know more details.
    Thanks.

    • Paul Everitt says:

      I don’t think Paul’s complete curriculum is available online, but he has a (very comprehensive and well-done) subset. If that’s of interest, I can get the link for you. He showed it very briefly in the webinar.

      • Peter P. says:

        Hi Paul, yes, that would be nice, if I could get the link.
        I might have missed it during the webinar, sorry about that.
        Even if subset, I am very interested. The games he showed were very impressive, must be a good curriculum behind if kids were progressing this much during a semester. I am sure there are lessons to be learnt there as well. (And sorry for crossposting the original question on youtube, wasn’t sure which place will be monitored.)

          • Peter P. says:

            Thanks, both Pauls! May I have one more?
            I remember from the webinar Paul mentioned he encouraged kids to have their own git repo with their assignments. I plan something similar. Question is, how do you grade their work? What is the process? You request access to their repos and have a look one-by-one, or do you clone them and give a run one-by-one? I might have 20 or so kids in a class, not sure if this works. Or do you teach them doctest module and publish your own test cases they have to run against their code?
            (I had a class of 20 already, but that was without grading and homework, just for fun, a study group actually. Next time I plan homework for them.)

            Peter P.

        • In reply to your message below (which for some odd reason I can’t reply to), how do I grade the work?

          * Students ‘clone’ an initial repository with the directories and blank files set up. The git ignore file is important to have set up so git does not include the pycharm project files, and pyc files.
          * As part of the clone they have to name it with their first/last name.
          * Students ‘share’ in bitbucket the repository with me
          * For the first assignment, students submit the proper link to their repository
          * I copy/paste it using a text editor to clone all the repositories
          * After that, I use a short python script to run an update on all the repositories

          import os

          # Grab a list of all the directories
          a_dir = “.”
          directories = [name for name in os.listdir(a_dir) if os.path.isdir(os.path.join(a_dir, name))]

          # For each directory, pull the info
          for directory in directories:
          print()
          print(“Fetching information for: {}”.format(directory))
          os.chdir(directory)
          print(“git pull”)
          result = os.system(“git checkout .”)
          result = os.system(“git pull”)
          os.chdir(“..”)

          * I grade the directories by going in and directly running their programs.

Leave a Reply

Your email address will not be published. Required fields are marked *