Skip to content

Latest commit

 

History

History
391 lines (245 loc) · 15.5 KB

schedule.markdown

File metadata and controls

391 lines (245 loc) · 15.5 KB
layout title
default
Schedule

{% comment %}

{{ site.course.number }} Initial Schedule: Subject to Change

Scehdule Outline

Note to potential students: the five part outline below is the best indicator of what the Spring 2016 class will cover Part I: Collaboration with Github and the Basics of Python with Trinket

For this part we will use the free Python for Informatics book by Charles Severance (Dr. Chuck). We'll be using the in-progress Python 3 version, which I'm lending a hand with. Yay open source! For this part we'll also use a variety of free web-based resources such as this Github guide.

  • Posting to our Jekyll Website via Github.com
  • Using Github issues and milestones to track progress
  • Submitting Pull Requests
  • Passing Tests
  • Merging Pull Requests
  • Writing Python Programs with Trinket
    • Variables & objects
    • Flow of control: Loops & Logic
    • Functions
    • Opening files
    • Importing modules
    • Instantiating objects
    • Regex
  • Projects
    • Hangman program
    • Text search tool
    • Data parser

Part II: Interactive Python Programs

For this part we will use Python Game Development for Beginners by yours truly.

  • Interactive Programs with Turtle
  • Custom Classes & Class Extension
    • Methods are functions
    • Attributes are Variables
  • Screen state in Turtle
  • Decorators
    • Functions are objects
    • Decorators are Functions that modify functions
  • Projects
    • Drawing App
    • Basic TurtleChase game

Part III: Git & the Command line

For this part we will use custom tutorials I have written.

  • Hello Cloud9
  • Command line basics
  • Command line Git
    • Adding & Committing
    • Branching
    • Pushing & Pulling
  • Editing our class website via Cloud9

Part IV: Python & the Web

For this part we will use the free Python for Informatics book by Charles Severance (Dr. Chuck) again.

  • Chapter 12: Reading webpages from Python
  • Chapter 13: Using & parsing web data (XML & JSON)
  • A Command-line Twitter Bot
    • API access
    • HTTP GET & POST

Part V: Final Project - Turtle Game or Twitter Bot

Your final project should be a demonstration of mastery over the various tools, processes, and concepts we've covered. You may be able to build directly upon the exercies we've completed or code you've already written. You may find examples, walkthroughs, or tutorials online to help you.

  • Creating new github repos

  • Public projects with Cloud9

  • Common project features:

    • Public, well-commented/documented source code
    • Publicly deployed
    • Write-up detailing project goals, scoping and next steps
    • Proper attribution to all sources, code, and collaborators
    • (Bonus) Collaboratively authored, with well-formed pull requests, issues, etc.
  • An interactive Turtle game, using trinket

    • Custom Classes
    • User Interface
    • Help Text
    • Levels
    • Game State Readout
    • Uses images
  • A Python Twitter bot, deployed on the Internet

    • Use of local files for customization or storage
    • State change/evolution over time
    • Read data to Twitter
    • Write data to twitter
    • Autonomous and user-driven modes
    • Bonus: with Web interface

Other final projects are possible, with approval from me. For instance, fully functioning web app as described in Chapters 14 and 15 of Severance's book with customizations of your own design would be entirely acceptable.

{% endcomment %}

Class Schedule

Here's a rough schedule so you get a sense of where we're going. The official due date of each exercise and reading will be available on the [assignments page]({{ site.baseurl}}/assignments.html) by the time you'll need to start on it. So that's the page you should check during the class. This is more of a roadmap to keep us on track.

Date Topic Readings (completed before class) Exercise Assigned
Tues, Jan 12 Diving into Python Welcome to the course! :) Turtle Drawing
Thurs, Jan 14 Github basics Github's Hello World Guide A Pull Request with your Turtle Drawing
Tues, Jan 19 Variables
Operators
Dr. Chuck Chapter 2 Fill out your profile
Merge your classmates' changes
Chapter 2 Exercises
Thurs, Jan 21 Variables
Logic
Dr. Chuck Chapter 3 Chapter 3 Exercises
Tues, Jan 26 Logic
Expressions
Turtle Exercises
Thurs, Jan 28 Functions Dr. Chuck Chapter 4 Chapter 4 Exercises
Tues, Feb 2 Functions
Events
Thurs, Feb 4 Loops Dr. Chuck Chapter 5 Chapter 5 Exercises
Tues, Feb 9 Loops
Lists
Strings
Dr. Chuck Chapters 6 & 8 Chapters 6 & 8 Exercises
Thurs, Feb 11 Modules
Turtle
Poetry Slam Tina
Meet ups check-in
Tues, Feb 16 User Interfaces Tetris Refactor
Mid-semester Reflection
Drawing App Project (Due Feb 23)
Thurs, Feb 18 Turtle Screen (Remote Class) Hauser 2
Optional: Hauser Chapter 1
Milestones & Update
Tues, Feb 23 Debugging (Remote Class) Video as needed Drawing App due
Thurs, Feb 25 No Class
Begin Peer Review
Tues, Mar 1 Drawing Project Code Talks Peer Review Due
Thurs, Mar 3 Class Extension Hauser Chapter 3 Game Project (Due March 10)
Take-home Midterm (Due March 8; ungraded)
Tues, Mar 8 Game Project Peer Clinic
Midterm Review
Hauser Chapter 3
Thurs, Mar 10 Game Project Code Talks Set up Cloud 9 (by March 22)
Extra Credit: Spring Break Hack
Tues, Mar 15 Spring Break
Thurs, Mar 17 Spring Break
Tues, Mar 22 Projects
Cloud 9
Files
Dr. Chuck Chapter 7 Files Exercises
Thurs, Mar 24 Git
Guest Speakers
Silent Technical Privelege Set up git
Tues, Mar 29 Strings
Regex
Review Dr. Chuck Chapter 6
Dr. Chuck Chapter 11
Regex Exercises
Post cleanup
Thurs, Mar 31 Dictionaries
Reading websites with Python
Dr. Chuck Chapter 9
Dr. Chuck Chapter 12
Dictionaries Exercises
Tues, Apr 5 Dictionaries
Parsing Data
Dr. Chuck Chapter 13 Dictionaries Exercises
Thurs, Apr 7 Project statement due
git
TBD
Meet ups check-in
Tues, Apr 12 Project work day TBD
Thurs, Apr 14 Progress reports TBD
Tues, Apr 19 Peer Clinic (Remote class) TBD
Thurs, Apr 21 Final progress reports TBD
Tues, Apr 26 Final progress reports TBD
Fri, Apr 29 No Class; Final Projects Due

{% comment %} Class Notes {% endcomment %}

[cn1]: [cn2]: {{ site.baseurl }}/how-to/githubbasics.html

{% comment %} Readings {% endcomment %}

[ch1]: {{ site.baseurl }}/reading/ch1.html [ch2]: {{ site.baseurl }}/reading/ch2.html [ch3]: {{ site.baseurl }}/reading/ch3.html [ch4]: {{ site.baseurl }}/reading/ch4.html [ch5]: {{ site.baseurl }}/reading/ch5.html [ch6]: {{ site.baseurl }}/reading/ch6.html [ch7]: {{ site.baseurl }}/reading/ch7.html [ch8]: {{ site.baseurl }}/reading/ch8.html [ch9]: {{ site.baseurl }}/reading/ch9.html [ch10]: {{ site.baseurl }}/reading/ch10.html [ch11]: {{ site.baseurl }}/reading/ch11.html [ch12]: {{ site.baseurl }}/reading/ch12.html [ch13]: {{ site.baseurl }}/reading/ch13.html [ch14]: {{ site.baseurl }}/reading/ch14.html

{% comment %} Exercises {% endcomment %}

[ex1]: {{ site.baseurl }}/exercise/turtledrawing.html [ex2]: {{ site.baseurl }}/exercise/ghsetup.html [ex3]: {{ site.baseurl }}/exercise/ghmerging.html

{% comment %} Begin old schedule:

January 8th, Week 1: Digging into Source Code

Key Questions

  • What is Text?

  • What is a Computer?

  • How Can Text Control Computers?

  1. None (first day of class)

In-Class: Get set up on Github

In-Class Exercise: Modify the class blog

  • In-Class Exercise: Write an initial blog post

  • In-Class Exercise: Open your first issue

  • In-Class Exercise: Close your first issue

  • Note: As we’ll learn, git is an open source command line version control system. Github.com is the fastest growing git repository on the internet. This distinction isn’t always immediately apparent.

January 15th, Week 2: Hello Python

Key Questions

  • How do I control Python code?

Readings:

Read the text, do the exercises, and be prepared to explore what Turtles can do in class. The videos are optional- I find them less helpful than the text myself but you might find them helpful. Pay attention to the Flow of Control exercises

  • The basics of Trinket
  • In-Class Exercise: Write a simple post with an embedded turtle program.

January 22nd, Week 3: Stepping back a bit: What is code?

Readings:

January 29th, Week 4: Reading Code; Data in Programs

 "Programs must be written for people to read, and only incidentally for machines to execute."
 
 - Abelson & Sussman, SICP, preface to the first edition

Readings:

Hands on with Python Data.

Setting up Nitrous.io

February 5th, Week 5: Problem Solving with Pseudocode

  • What is pseudocode?

  • How can I solve problems with pseudocode?

Readings:

Nitrous.io exercise

February 12th, Week 6: Complex data; flow of control

Readings:

Nitrous Exercise

Extra Credit Exercise: ThinkPython: Using data structures An extra point on your final grade for a Github post with exercises 1-4 completed. This is especially relevant to those of you with an interest in data mining. Due Friday.

February 19th, Week 7: Input/Output (i/o) & (The other kind of) Libraries

Working with real developer tools

  • In class: Command line git posts

All posts from here on out should be via Nitrous!

February 26th, Week 8: Command line Git & Python

Self-contained, reusable bits of code.

  • Think Python: Functions

  • Think Python: Modules

  • Software Carpentry: Libraries

  • In-Class: Command line: pip. Review some common python libraries. Focus on documentation, initial testing, beginning use

Nitrous Flask introduction

March 5th, Week 9: Problem Solving with Libraries and Frameworks

Catch-up

  • Check-in: Meetups

March 12th, Week 10: No class

March 19th, Week 11: Flask; Git

Lightweight web framework.

March 26th, Week 12: Flask; Git

Lightweight web framework.

April 2nd, Week 13: Flask; Git; Project Ideas

Web framework continued

April 9th, Week 14: Beginning Projects; Contributing to Open Source

How to give back or start a project. Code Refactoring and Cleanup. Documentation. Guests.

April 16th, Week 15: Project Work

Tactical help from me or peers on final projects.

April 30th, Week 16: Project Presentations

Presentation and discussion of projects. A roadmap for where students want to go next.

Final projects due Sat, May 3rd, 8am.

  1. Software Carpentry: The Shell - Read the Introduction and come up to speed on Files and Directories, Creating and Deleting, Pipes and Filters, and Permissions.
  • In-Class Exercise: Bash scripting for simple data transformations

  • In-class: Brainstorm 3 project ideas & lightning talks

  • isis.unc.edu

  • scp & rsync

  • Check-in: Meetups

{% endcomment %}