layout | title |
---|---|
default |
Schedule |
{% comment %}
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 %}
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:
Key Questions
-
What is Text?
-
What is a Computer?
-
How Can Text Control Computers?
- 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 growinggit
repository on the internet. This distinction isn’t always immediately apparent.
Key Questions
- How do I control Python code?
Readings:
- Think Python Chapter on Turtle
- Software Carpentry: Computational Thinking - This is intended as a wrap-up essay but I often find it useful to ‘start at the end’. Use the essay to orient yourself to concepts that we’ll be learning.
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.
Readings:
-
Sparkfun: Intro to binary
-
Chapter 1 ThinkPython: The Way of the Program
-
ThinkPython Ch. 2: Variables, expressions, and statements
-
In-Class Exercise: Hands on with Code
"Programs must be written for people to read, and only incidentally for machines to execute."
- Abelson & Sussman, SICP, preface to the first edition
Readings:
-
Philip Guo: "Two Cultures of Programming"
-
Hitchhiker’s Guide to Python: Code Style - There will be lots in here that may not make sense to you. Practice your skimming/vocab learning skills.
-
Think Python: Strings
-
Think Python: Lists
Hands on with Python Data.
Setting up Nitrous.io
-
What is pseudocode?
-
How can I solve problems with pseudocode?
Readings:
-
Think Python: How to be a Successful Programmer
-
Think Python: Selection
-
In class/Homework: Codingbat.com
Nitrous.io exercise
Readings:
-
ThinkPython: More iteration
-
ThinkPython: Recursion
-
Software Carpentry: Data Storage: Sets and Dicts
-
In class/Homework: Codingbat.com
-
Check-in: Meetups
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.
Working with real developer tools
- In class: Command line git posts
All posts from here on out should be via Nitrous!
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
Catch-up
- Check-in: Meetups
Lightweight web framework.
Lightweight web framework.
Web framework continued
-
In-Class: Distributed teams & feature implementation
-
Reading: ProGit Ch. 3.1 What a Branch Is
-
Reading: ProGit Ch. 3.4 Git Branch Workflows
-
Reading: ProGit Ch. 5.1 Distributed Workflows
-
Optional Reading: ProGit Ch 6.4 Re-writing History (amend, rebase, split)
-
Optional Reading: ProGit Ch 7.3 Hooks
-
Revisit: Github Flow
How to give back or start a project. Code Refactoring and Cleanup. Documentation. Guests.
- Reading: ProGit Ch. 5.2 Contributing to a Project
Tactical help from me or peers on final projects.
Presentation and discussion of projects. A roadmap for where students want to go next.
Final projects due Sat, May 3rd, 8am.
- 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 %}