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
430

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 Slide

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

    View Slide

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

    View Slide

  4. GitHub Travis Python
    Exploring Technologies

    View Slide

  5. GitHub

    View Slide

  6. Travis

    View Slide

  7. Python

    View Slide

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

    View Slide

  9. Clear
    Status
    Key
    Ideas
    Fast
    Grading
    Important Goals

    View Slide

  10. HELP STUDENTS
    AND FACULTY
    EFFECTIVELY
    COLLABORATE

    View Slide

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

    View Slide

  12. USE INDUSTRY
    STANDARD
    TOOLS IN ALL
    COURSE WORK

    View Slide

  13. DEVELOP NEW
    SOLUTIONS IN
    PYTHON WHEN
    NECESSARY

    View Slide

  14. Tools Options Testing
    Benefits of Python

    View Slide

  15. SETUP AND USE
    GITHUB
    CLASSROOM?
    How should I

    View Slide

  16. Create a GitHub organization for your course

    View Slide

  17. Now you have an empty organization

    View Slide

  18. Let GitHub Classroom access the organization

    View Slide

  19. Create a student roster for the Classroom

    View Slide

  20. Create an assignment for your course

    View Slide

  21. CREATE TWO
    REPOSITORIES
    FOR EACH
    ASSIGNMENT

    View Slide

  22. Solution Starter Check
    Using Travis CI

    View Slide

  23. THE STARTER
    REPOSITORY
    SHOULD NOT
    PASS THE TESTS

    View Slide

  24. Create an assignment using the starter

    View Slide

  25. A classroom will contain many assignments

    View Slide

  26. AUTOMATICALLY
    CHECK STUDENT
    SUBMISSIONS?
    How do you

    View Slide

  27. Local Travis
    Flexible Checking

    View Slide

  28. 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 Slide

  29. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. Script Gradle
    Exciting New Features

    View Slide

  34. STUDENTS
    THINK ABOUT
    THIS IDEA?
    What do the

    View Slide

  35. 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 Slide

  36. 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 Slide

  37. 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 Slide

  38. 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 Slide

  39. IMPROVE AND
    STUDY THIS
    APPROACH?
    How can we

    View Slide

  40. Deliverables Insights
    Ideas for Experiments

    View Slide

  41. WHAT CODE AND
    CONCEPTS
    CAUSE STUDENT
    FRUSTRATION?

    View Slide

  42. WHAT FEATURES
    BEST SUPPORT
    EMERGING
    PROGRAMMERS?

    View Slide

  43. HOW DO TEAM
    MEMBERS
    INFLUENCE
    LEARNING?

    View Slide

  44. Pull Requests Bug Reports
    Let's Collaborate

    View Slide

  45. GitHub Classroom developers are great!

    View Slide

  46. Review these slides on SpeakerDeck

    View Slide

  47. See slide source code on GitHub

    View Slide

  48. Check out GatorGrader on GitHub!

    View Slide

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

    View Slide