Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A hands-on guide to teaching programming with GitHub, Travis CI, and Python

Gregory Kapfhammer
July 27, 2018
500

A hands-on guide to teaching programming with GitHub, Travis CI, and Python

Want to learn more about this topic? Visit this page to learn about the software that we are engineering: https://www.gregorykapfhammer.com/software/

Gregory Kapfhammer

July 27, 2018
Tweet

More Decks by Gregory Kapfhammer

Transcript

  1. July 28 at PyOhio 2018
    A Hands-On Guide to
    Teaching Programming with
    GitHub, Travis CI, and Python
    Gregory M. Kapfhammer

    View full-size slide

  2. @GregKapfhammer
    www.gregorykapfhammer.com
    Hi! My name is
    GREGORY M. KAPFHAMMER

    View full-size slide

  3. Ask and answer questions
    about effective instruction in
    the programming field
    Roadmap for this Talk

    View full-size slide

  4. GitHub Travis Python
    Exploring Technologies

    View full-size slide

  5. DECIDE TO USE
    GITHUB AND
    TRAVIS CI?
    Why would I

    View full-size slide

  6. Clear
    Status
    Key
    Ideas
    Fast
    Grading
    Important Goals

    View full-size slide

  7. HELP STUDENTS
    AND FACULTY
    EFFECTIVELY
    COLLABORATE

    View full-size slide

  8. Source Code
    Technical Writing
    Commit Counts
    Commit Messages
    Program Output
    Data Files
    Deliverables to Check

    View full-size slide

  9. USE INDUSTRY
    STANDARD
    TOOLS IN ALL
    COURSE WORK

    View full-size slide

  10. DEVELOP NEW
    SOLUTIONS IN
    PYTHON WHEN
    NECESSARY

    View full-size slide

  11. Tools Options Testing
    Benefits of Python

    View full-size slide

  12. SETUP AND USE
    GITHUB
    CLASSROOM?
    How should I

    View full-size slide

  13. Create a GitHub organization for your course

    View full-size slide

  14. Now you have an empty organization

    View full-size slide

  15. Let GitHub Classroom access the organization

    View full-size slide

  16. Create a student roster for the Classroom

    View full-size slide

  17. Create an assignment for your course

    View full-size slide

  18. CREATE TWO
    REPOSITORIES
    FOR EACH
    ASSIGNMENT

    View full-size slide

  19. Solution Starter Check
    Using Travis CI

    View full-size slide

  20. THE STARTER
    REPOSITORY
    SHOULD NOT
    PASS THE TESTS

    View full-size slide

  21. Create an assignment using the starter

    View full-size slide

  22. A classroom will contain many assignments

    View full-size slide

  23. AUTOMATICALLY
    CHECK STUDENT
    SUBMISSIONS?
    How do you

    View full-size slide

  24. Local Travis
    Flexible Checking

    View full-size slide

  25. Use Java and Python
    1. # use both Python and Java
    2. sudo: required
    3. dist: trusty
    4. language: python
    5. python:
    6. - '3.6'
    7. before_install:
    8. - jdk_switcher use oraclejdk8
    9
    Java is the main language for this course

    View full-size slide

  26. Decide if Check Passes
    10. determine_exit_code() {
    11. if [ "$1" -eq 1 ]; then
    12. GATORGRADER_EXIT=1
    13. else
    14. if [ "$2" ]; then
    15. echo "$2 was successful"
    1. #!/bin/bash
    2.
    3. # assume that gatorgrader.py exits correctly
    4. GATORGRADER_EXIT=0
    5.
    6. # assume that the human-readable answer is "No"
    7. GATORGRADER_EXIT_HUMAN_PASS="No"
    8.
    9. # determine if the exit code is always failing
    The build passes if all of the checks pass

    View full-size slide

  27. Running GatorGrader on a Correct Submission
    gkapfham: ~(zsh)

    View full-size slide

  28. Running GatorGrader on an Incorrect Project
    gkapfham: ~(zsh)

    View full-size slide

  29. Computational Expression
    Data Abstraction
    Web Development
    Software Engineering
    Previous Courses and Topics
    Different topics, goals, languages, and levels

    View full-size slide

  30. Script Gradle
    Exciting New Features

    View full-size slide

  31. STUDENTS
    THINK ABOUT
    THIS IDEA?
    What do the

    View full-size slide

  32. This approach ensures that
    the source code and GitHub
    repositories are organized.
    It is easier for me to help
    the students who are
    struggling in an
    introductory course.
    - SAEJIN MAHLAU-HEINERT

    View full-size slide

  33. This tool suite made it easier
    for me to talk with students
    about technical
    requirements. It helped me
    to make complex
    assignments more
    accessible to students.
    - MARIA KIM

    View full-size slide

  34. GatorGrader encouraged
    me to add better code
    comments and try out
    language constructs that I
    would not have otherwise
    investigated. The tool was a
    big help this semester!
    - SAMATHA DARRIS

    View full-size slide

  35. GatorGrader is like having a
    constant coach! I liked
    receiving feedback on the
    quality of my source code
    and writing before turning
    in the final version of my
    lab.
    - ANNA YEAGER

    View full-size slide

  36. IMPROVE AND
    STUDY THIS
    APPROACH?
    How can we

    View full-size slide

  37. Deliverables Insights
    Ideas for Experiments

    View full-size slide

  38. WHAT CODE AND
    CONCEPTS
    CAUSE STUDENT
    FRUSTRATION?

    View full-size slide

  39. WHAT FEATURES
    BEST SUPPORT
    EMERGING
    PROGRAMMERS?

    View full-size slide

  40. HOW DO TEAM
    MEMBERS
    INFLUENCE
    LEARNING?

    View full-size slide

  41. Pull Requests Bug Reports
    Let's Collaborate

    View full-size slide

  42. GitHub Classroom developers are great!

    View full-size slide

  43. Review these slides on SpeakerDeck

    View full-size slide

  44. See slide source code on GitHub

    View full-size slide

  45. Check out GatorGrader on GitHub!

    View full-size slide

  46. Clear
    Status
    Key
    Ideas
    Fast
    Grading
    GatorEducator/GatorGrader
    Main Contributions

    View full-size slide