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

4ae30d49c8cc07e42d5a871efb9bcfba?s=47 Gregory Kapfhammer
July 27, 2018
210

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/

4ae30d49c8cc07e42d5a871efb9bcfba?s=128

Gregory Kapfhammer

July 27, 2018
Tweet

Transcript

  1. July 28 at PyOhio 2018 A Hands-On Guide to Teaching

    Programming with GitHub, Travis CI, and Python Gregory M. Kapfhammer
  2. @GregKapfhammer www.gregorykapfhammer.com Hi! My name is GREGORY M. KAPFHAMMER

  3. Ask and answer questions about effective instruction in the programming

    field Roadmap for this Talk
  4. GitHub Travis Python Exploring Technologies

  5. GitHub

  6. Travis

  7. Python

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

  9. Clear Status Key Ideas Fast Grading Important Goals

  10. HELP STUDENTS AND FACULTY EFFECTIVELY COLLABORATE

  11. Source Code Technical Writing Commit Counts Commit Messages Program Output

    Data Files Deliverables to Check
  12. USE INDUSTRY STANDARD TOOLS IN ALL COURSE WORK

  13. DEVELOP NEW SOLUTIONS IN PYTHON WHEN NECESSARY

  14. Tools Options Testing Benefits of Python

  15. SETUP AND USE GITHUB CLASSROOM? How should I

  16. Create a GitHub organization for your course

  17. Now you have an empty organization

  18. Let GitHub Classroom access the organization

  19. Create a student roster for the Classroom

  20. Create an assignment for your course

  21. CREATE TWO REPOSITORIES FOR EACH ASSIGNMENT

  22. Solution Starter Check Using Travis CI

  23. THE STARTER REPOSITORY SHOULD NOT PASS THE TESTS

  24. Create an assignment using the starter

  25. A classroom will contain many assignments

  26. AUTOMATICALLY CHECK STUDENT SUBMISSIONS? How do you

  27. Local Travis Flexible Checking

  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
  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
  30. Running GatorGrader on a Correct Submission gkapfham: ~(zsh)

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

  32. Computational Expression Data Abstraction Web Development Software Engineering Previous Courses

    and Topics Different topics, goals, languages, and levels
  33. Script Gradle Exciting New Features

  34. STUDENTS THINK ABOUT THIS IDEA? What do the

  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
  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
  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
  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
  39. IMPROVE AND STUDY THIS APPROACH? How can we

  40. Deliverables Insights Ideas for Experiments

  41. WHAT CODE AND CONCEPTS CAUSE STUDENT FRUSTRATION?

  42. WHAT FEATURES BEST SUPPORT EMERGING PROGRAMMERS?

  43. HOW DO TEAM MEMBERS INFLUENCE LEARNING?

  44. Pull Requests Bug Reports Let's Collaborate

  45. GitHub Classroom developers are great!

  46. Review these slides on SpeakerDeck

  47. See slide source code on GitHub

  48. Check out GatorGrader on GitHub!

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