Using Python, Travis CI, and GitHub to Effectively Teach - - PowerPoint PPT Presentation

using python travis ci and github to effectively teach
SMART_READER_LITE
LIVE PREVIEW

Using Python, Travis CI, and GitHub to Effectively Teach - - PowerPoint PPT Presentation

Using Python, Travis CI, and GitHub to Effectively Teach Programming Gregory M. Kapfhammer October 5 at PyGotham 2018 Hi! My name is GREGORY M. KAPFHAMMER @GregKapfhammer www.gregorykapfhammer.com Roadmap for this Talk Introduce


slide-1
SLIDE 1

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

Gregory M. Kapfhammer

October 5 at PyGotham 2018

slide-2
SLIDE 2

@GregKapfhammer www.gregorykapfhammer.com

Hi! My name is

GREGORY M. KAPFHAMMER

slide-3
SLIDE 3

Introduce strategies and tools for effectively teaching programming

Roadmap for this Talk

slide-4
SLIDE 4

USE INDUSTRY STANDARD SOFTWARE IN ALL COURSES

slide-5
SLIDE 5

SUITABLE FOR INSTRUCTORS IN INDUSTRY OR ACADEMIA

slide-6
SLIDE 6

GitHub Travis Python

Discuss in greater detail!

Exploring Technologies

slide-7
SLIDE 7

GitHub

slide-8
SLIDE 8

Travis

slide-9
SLIDE 9

Python

slide-10
SLIDE 10

Clear Status Key Ideas Fast Grading

Important Goals

slide-11
SLIDE 11

HELP STUDENTS AND TEACHERS EFFECTIVELY COLLABORATE

slide-12
SLIDE 12

Source Code Technical Writing Commit Counts Commit Messages Program Output Data Files

Deliverables to Check

slide-13
SLIDE 13

LEVERAGE EXISTING TOOLS WHENEVER POSSIBLE

slide-14
SLIDE 14

Source code linting Markdown linting Prose checking JUnit test suite Pytest test suite Automated build tools

Tools to Support Checks

slide-15
SLIDE 15

DEVELOP NEW SOLUTIONS IN PYTHON WHEN NECESSARY

slide-16
SLIDE 16

Tools Packages Testing

Benets of Python

slide-17
SLIDE 17

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

Tools for Development

slide-18
SLIDE 18

DESIGN PRINCIPLES THAT GUIDED DEVELOPMENT

Inspired by John Ousterhout's A Philosophy of Software Design

slide-19
SLIDE 19
  • Working code is not sufcient: aim for simplicity
  • Code that hasn't been executed does not work
  • Simple interfaces over simple implementations
  • Great documentation encourages contributions

Design Principles

slide-20
SLIDE 20

Local Travis

See GatorGrader and GatorGradle in the GatorEducator organization on GitHub

Flexible Checking

slide-21
SLIDE 21

CREATE TWO REPOSITORIES FOR EACH ASSIGNMENT

slide-22
SLIDE 22

Solution Starter Check

Using Travis CI

slide-23
SLIDE 23

THE STARTER REPOSITORY SHOULD NOT PASS THE TESTS

slide-24
SLIDE 24

Python Gradle

Supporting different programming languages, the Gradle plugin runs GatorGrader checks in parallel

Efcient Project Grading

slide-25
SLIDE 25

Let's Congure 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
slide-26
SLIDE 26

Let's Congure 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
slide-27
SLIDE 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

slide-28
SLIDE 28

Computational Expression Data Abstraction Software Engineering Web Development Articial Intelligence

Courses and Topics

Different topics, goals, languages, and levels

Used during laboratory, practical, and class

slide-29
SLIDE 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
slide-30
SLIDE 30

Deliverables Insights

Ideas for Experiments

slide-31
SLIDE 31

WHAT CODE AND CONCEPTS CAUSE STUDENT FRUSTRATION?

slide-32
SLIDE 32

New Checks Bug Reports

See GatorGrader and GatorGradle in the GatorEducator organization on GitHub

Let's Collaborate