Pro Yearly is on sale from $80 to $50! »

Using Python, Travis CI, and GitHub to Effectively Teach Programming

Using Python, Travis CI, and GitHub to Effectively Teach Programming

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

October 05, 2018
Tweet

Transcript

  1. Using Python, Travis CI, and GitHub to Effectively Teach Programming

    Gregory M. Kapfhammer October 5 at PyGotham 2018
  2. @GregKapfhammer www.gregorykapfhammer.com Hi! My name is GREGORY M. KAPFHAMMER

  3. Introduce strategies and tools for effectively teaching programming Roadmap for

    this Talk
  4. USE INDUSTRY STANDARD SOFTWARE IN ALL COURSES

  5. SUITABLE FOR INSTRUCTORS IN INDUSTRY OR ACADEMIA

  6. GitHub Travis Python Discuss in greater detail! Exploring Technologies

  7. GitHub

  8. Travis

  9. Python

  10. Clear Status Key Ideas Fast Grading Important Goals

  11. HELP STUDENTS AND TEACHERS EFFECTIVELY COLLABORATE

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

    Data Files Deliverables to Check
  13. LEVERAGE EXISTING TOOLS WHENEVER POSSIBLE

  14. Source code linting Markdown linting Prose checking JUnit test suite

    Pytest test suite Automated build tools Tools to Support Checks
  15. DEVELOP NEW SOLUTIONS IN PYTHON WHEN NECESSARY

  16. Tools Packages Testing Bene ts of Python

  17. Black Flake8 Pipenv Pylint Pytest Pytest Plugins (e.g., Codecov) Tools

    for Development
  18. DESIGN PRINCIPLES THAT GUIDED DEVELOPMENT Inspired by John Ousterhout's A

    Philosophy of Software Design
  19. ‣ Working code is not suf cient: aim for simplicity

    ‣ Code that hasn't been executed does not work ‣ Simple interfaces over simple implementations ‣ Great documentation encourages contributions Design Principles
  20. Local Travis See GatorGrader and GatorGradle in the GatorEducator organization

    on GitHub Flexible Checking
  21. CREATE TWO REPOSITORIES FOR EACH ASSIGNMENT

  22. Solution Starter Check Using Travis CI

  23. THE STARTER REPOSITORY SHOULD NOT PASS THE TESTS

  24. Python Gradle Supporting different programming languages, the Gradle plugin runs

    GatorGrader checks in parallel Ef cient Project Grading
  25. Let's Con gure Travis CI! 1. # use Java and

    non-root 2. dist: trusty 3. sudo: false 4. language: Java 5. jdk: oraclejdk8 6. 7. # ignore the virtualenv that Travis creates 8. env: 9 global: Travis CI runs private builds for every student
  26. Let's Con gure GatorGrader! 1. --- 2. name: cmpsc-100-fall-2018-lab3 3.

    break: true 4. indent: 4 5. --- 6. # --> check the source code for various characteristics 7. # note that without an "--exact" the check is an "at least" Configure GatorGrader for use through Gradle
  27. ✘ Repository has at least 14 commit(s) ➔ Found 9

    commit(s) in the Git repository ✘ The writing has at least 100 word(s) ➔ Found 12 word(s) in a paragraph ✘ The output has one of the '28.75' ➔ Found 0 fragment(s) in the output Passed 6/13 (46%) of checks for f2018-lab3 GatorGrader's Output
  28. Computational Expression Data Abstraction Software Engineering Web Development Arti cial

    Intelligence Courses and Topics Different topics, goals, languages, and levels Used during laboratory, practical, and class
  29. GatorGrader is like having a constant coach! I liked receiving

    feedback on the quality of my source code and writing before turning in the nal version of my lab. - ANNA YEAGER
  30. Deliverables Insights Ideas for Experiments

  31. WHAT CODE AND CONCEPTS CAUSE STUDENT FRUSTRATION?

  32. New Checks Bug Reports See GatorGrader and GatorGradle in the

    GatorEducator organization on GitHub Let's Collaborate