This schedule may be wrong!
See Google Classroom for weekly material and assignments.

Do the assignments as posted on Google Classroom.


Schedule

Preparation

Please do this before the course starts. Otherwise, do it in Week 1.

Week 1

Week 1 Lab

  • Git concepts, Git commits as a graph, managing files and using Git history.
  • Exercise: Git practice (submit on Github)
  • Exercise: use the Git Visualizer to see a git graph
  • Exercise: use gitk tool that is included with git
  • Exercise: complete parts 1-2 of Learn Git Interactive. Section on Moving Work Around is recommended.
  • Using Github & Github Classroom.
  • Exercise: practice using Github Classroom (not done in 2022)
  • Quiz: Programming Skill Assessment

Week 1 Assignment

Week 2

Week 2 Lab

  • Feedback on Week 1 assignments
  • Github Flow and Pull Requests - Github’s Intro
  • Exercise: Github Flow questions (Google form)
  • Exercise: KU Cafe

Week 2 Assignment

Week 3

Week 3 Lab

Week 3 Assignment

Week 4

Week 4 Lab

  • Intro to Django
  • KU Polls Project Inception
    • Create a Vision, Requirements, and a Roadmap for the project (Project Plan)
    • Initialize a Github repository, add essential docs to a Wiki, and start a Project
  • Description of KU Polls first iteration (Django Polls tutorial)
    • Domain Model for Polls app - Question and Choice classes
    • You will be implementing features according to the tutorial, so goods tasks are “Implement Tutorial part 1”, “Implement Tutorial part 2”, etc.
    • As you do each part of the tutorial add a long description to each task, using Markdown.
    • Development work on a git branch named iteration1. Push this branch to Github. Merge to master/main when done.

Week 4 Assignment

  • KU Polls Iteration 1 (Django Tutorial)
    • submit work in your own ku-polls repo on Github.
    • use correct repo structure! No extra layer of directories.

Week 5

Week 5 Lab

Week 5 Assignment

Week 6

Assignment

Team Project

Submit a project proposal using the Project Spreadsheet

Week 7

  • Review some previous material and assignments
  • Why spend so much time on KU Polls?
  • UML Class & Sequence Diagrams (added in 2022)
  • Class Diagram exercise
  • Sequence Diagram exercise
  • Lab: Smoke Testing of another student’s KU Polls (post issues)
  • Virtual Environments for Python

Assignment

Not covered in 2022:

Midterm

Week 8

Assignment

  • Add Logging to KU Polls
  • Write User Stories for your project. Add them to the project wiki.
  • Add a domain class diagram to your project docs
  • Use the User Stories to identify domain classes and help you create a domain model

Week 9

  • Automation and Continuous Integration
  • Exercise using CI - add Travis-CI and Codecov to demo-pyci project
  • Code Coverage & Coverage Tool for Python
  • Exercise: add code coverage to demo-pyci project, use Codecov.io to display the report, and add badges to the project README
  • Lab: Adding badges to your Github repo, to indicate status. Badges provide a quick visual indicator of project health.

Assignment

Week 10

IDEs have refactoring actions that perform refactoring faster and reduce errors. But, in Python the refactoring tools work poorly unless the code has accurate type hints. Type Hints also improve static analysis so that tools can find more problems and potential errors. Please pay special attention to the type hints for Collections, return types, and optional values.

Assignment

  • Homework: Learn the Refactorings on Refactoring.Guru. Details on Google Classroom.
  • Homework: Movie Rental refactoring, Part 1.

Week 11

  • Review common refactorings - submit your answers on Google Classroom (Google Form)
  • More Refactoring - refactor structure of classes, creating objects (Not done in 2022)
  • Refactoring Patterns
  • Intro to Design Patterns
  • Singleton & Factory Method Patterns - other patterns are covered in Prog2 and SS&D
  • Type Hints Practice (see link in Week 10)
  • Lab: Organizing Django code. Replace “models.py”, “tests.py”, and “views.py” with directories (packages) containing multiple files.
  • Lab: CookieCutter Django and documentation have examples and good advice for structuring Django projects. Discover and describe some of them.

Assignment

Week 12

  • Agile - Agile values, principles, and practices.
  • Exercise: Agile Practice Review Questions
  • Introduction to OAuth
  • Exercise: OAuth Playground and questions on Google Classroom (form)
  • Code Reviews

  • Lab: perform a short code review and then start on your team’s code refview script and checklist.

Assignment

Week 13

  • Refactoring Review (again)
  • Review Movie Rental refactoring
  • Testing Pyramid and End-to-End Testing in Web Testing
  • Selenium for testing web applications. Some slides in Web Testing
  • Selenium Exercise scrape search results from DuckDuckGo
  • Lab: Project Demos

Assignment

  • Reading on Agile Practices (tba)
  • Link Scanner write an app to scan and test all links on a web page using Selenium, and reports bad links.

Week 14

  • Remaining project demos.
  • Review Agile Practices (week 10 assignment), including comments in code.
  • The 12-Factor App - 7 factors that apply to your projects
  • Robot Framework - a great tool for automation and E2E testing.

Assignment

  • Team assignment:
    1. create installation instructions for your project
    2. use a virtualenv for local installation
  • Team Assignment: deploy your application to a cloud service

Week 15

  • Review
  • Bug Hunting - find problems in other teams’ software

Assignment

  • Individual assignment: install and run another team’s project
    • Post issues for any problems in their installation instructions.
    • Goal is to find problems with installation and setup, not in the application itself (that is next week’s Bug Bounty assignment).
  • Bug Bounty - try to find bugs in deployed projects of other teams
    • URLs of deployed projects are shown in Google Sheet for Project Testing
    • Top bug hunters will earn extra assignment points