layout | title |
---|---|
default |
Schedule |
I will be available Wednesdays from 12-2pm and by appointment via our Google Plus community.
We’ll have a series of programming professionals come in and discuss their experiences and their personal relationships to the topics we’re covering. A selection of speakers who have confirmed (but not yet scheduled):
-
Eric Martindale, CTO of Coursefork
-
Karen Cranston, co-PI, Open Tree of Life Project
-
Julia Elman, Front-End Developer and Designer, Cactus
-
Alan Dipert, (Currently) Freelance Programmer
-
Jeff Heard, Senior Researcher, RENCI
Key Questions
-
What is Text?
-
What is a Computer?
-
How Can Text Control Computers?
Wednesday Aug 21st Readings:
- None (first day of class)
In-Class: Get set up on Google Plus
In-Class: Get set up on Github
In-Class Exercise: Modify the class blog
Key Questions
-
How do I use the command line?
-
How do I make a fork on Github?
-
How do I make a branch on git or Github?
-
How do I open a pull request?
Monday Aug 26th Readings:
-
Github Flow: This is an article about the basic workflow we’ll be using to write our blog together. You won’t understand everything in this article, which is fine because we’ll re-read it later in the class. This is perhaps the most important content of the course, so pay attention.
-
Github Flow in the Browser: Recently Github has released features to allow the entire Github flow to happen in the browser (i.e. without using your command line on your computer).
-
Jekyllrb.com: Read over the site’s documentation and see how much of it you can understand. Pay particular attention to the section on writing posts- this is what you’ll spend the most time doing.
-
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.
Wednesday Aug 28th Readings:
-
Comoyo: How we built our company blog - Evidence that what we’re doing isn’t totally out of left field. For bonus points, dig into some of the source code of their site.
-
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.
-
In-Class Exercise: Write a simple post with syntax highlighting
-
In-Class Exercise: Open your first pull request
-
In-Class Exercise: Close your first pull request
-
In-Class: Pair up with your merging partner.
-
In-Class: Set up VirtualBox Ubuntu. Extra credit for helping peers install outside of class.
Key Questions:
-
What do Processors do?
-
How do programming languages interact with processors?
-
How do I read a program?
Monday Sept 2: No Class
Wednesday Sept 4 Readings:
-
Chapter 1 ThinkPython: The Way of the Program
-
Wikipedia: Assembly Language paragraph only
-
Linux Info Project: Machine code definition
-
Homework: Vocab show & tell
-
In-Class Exercise: Hands on with Code
-
In-Class Exercise: Blog about the relationship between Assembly and Python
-
In-Class: VirtualBox check-in.
Key Questions:
-
How can I read code for understanding?
-
How is data treated in programs?
-
Why do data structures matter to programmers?
"Programs must be written for people to read, and only incidentally for machines to execute."
- Abelson & Sussman, SICP, preface to the first edition
Monday Sept 9th Readings: Reading Code
-
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.
-
ThinkPython Ch. 2: Variables, expressions, and statements
-
Homework: Vocab show & tell
-
Guest Observer: Jaime Arguello
-
In-Class Exercise: Explain a program with comments and documentation
-
In-Class Exercise: Complete a program that has only comments
Wednesday Sept 11th: Python primitive data structures
-
Sparkfun: Intro to binary
-
ThinkPython 2.1: Values and Types
-
Software Carpentry: Python Basics
-
Homework: Vocab show & tell
-
In-Class Exercise: Data conversions in the interactive shell
-
Post: From data to binary and back
-
What is pseudocode?
-
How can I solve problems with pseudocode?
Simple data: Strings, numbers, and conditionals
Monday Sept 16th: Read about strings and numbers
-
Paul Graham: Hackers and Painters A counterpoint to what we'll be doing in class. Instead of pseudocode, Graham advocates writing real code first. Read at least the first half.
-
Review ThinkPython Ch. 2: Variables, expressions, and statements
- In class: Pseudocode solutions to string problems from Codingbat.com
Wednesday Sept 18th: Read about conditionals
-
Paul Graham: Hackers and Painters Finish.
-
ThinkPython Ch. 5: Conditionals and Recursion
- In Class: Pseudocode solutions to conditionals from Codingbat.com
-
What more complex structures are available?
-
What is the flow of control?
Complex data: Lists, loops, and flow of control
Monday Sept 23rd: Read up on lists and dicts
-
ThinkPython: Lists
-
Software Carpentry: Lists
-
ThinkPython: Dicts
-
Software Carpentry: Data Storage: Sets and Dicts
-
In-Class: Slicing & dicing data. Codingbat.com
-
In-Class: Solve a problem in comments, then implement. Pair programming
-
Post: Why lists and Dicts?
Wednesday Sept 23rd: Read up on loops
-
PythonTutor: Flow of Control Visualization - Visualize some simple programs to see how they work.
-
Review ThinkPython Ch. 5: Conditionals and Recursion
-
Software Carpentry: Flow of Control
-
In class: Looping over lists. Codingbat.com
-
In-Class: solve a problem with comments, then implement. Pair programming.
-
Extra-Credit Exercises: ThinkPython: Using data structures An extra point on your final grade for a Github post with exercises 1-4 completed. Due Friday.
-
Check-in: Meetups
Self-contained, reusable bits of code.
Monday Sept 30th - I/O and intro to Libraries
-
Software Carpentry - Input/Output
-
Revisit Hitchhiker’s Guide to Python: Code Style
-
Skim over some intro docs for popular Python Web Frameworks: Pyramid, Flask, and Django. Django is the most in-depth of these, and the most robust.
-
In-Class: Input/Output exercise
-
In-Class: Command line: pip. Review some common python libraries. Focus on documentation, initial testing, beginning use
Wednesday Oct 2nd: Libraries, Catch up, Synthesis
-
Software Carpentry: Libraries
-
Looking for post ideas? Check out the Useful Modules list on the Python wiki. See if you can get a sense of how well used or maintained the modules are.
-
In-Class exercise: Contribution Guidelines for our class website.
-
In-Class exercise: Command line git commiting
-
Post: Exciting libraries or frameworks you might want to use
Monday Oct 7th: Terminal Text Editors - Nano, Vim, and Emacs
-
Reading: Vim after 11 years
-
Reading: My Emacs Workflow
-
In class: Use and customize Nano
-
In class: Use and customize Vim
-
In class: Use and customize Emacs
-
In class: More command line git
Wednesday Oct 9th: Graphical Text Editors - IDLE, SublimeText, Eclipse, others?
-
In-Class: Voluntary demos
-
In-Class: Picking your favorite text editor
-
In-class: More command line git
Guest Speaker: Eric Martindale
Problem solving with code, but better. Guests.
Monday Oct 14th:
-
Pygame
-
Locally build Jekyll
-
Homework: Library show & tell
Wednesday Oct 16th:
- Check-in: Meetups
A little history and a lot of hands on with the Open Source Community. Guests.
Monday Oct 21st: Your first open source contribution
-
Reading: Skim PyPI for how to package programs so others can install them
-
Reading: testpypi test server details
-
Guest speaker: Alan Dipert, talking about fearlessness in tech
-
In-class: Open an issue or fork and fix one. Aim small.
Wednesday Oct 23rd: Other languages and technology: Ruby, Java, HTML, CSS, Javascript
-
Reading: Paul Graham - Succintness is Power
-
Reading: Guido van Rossum - Python's Design Philosophy
-
Reading: Interview with Yukihiro Matsumoto - Ruby's Design Philosophy
-
Reading: Interview with Bjarne Stroustrup - Elegance and other Design Ideals. Stroustrup invented C++ in the 70s and 80s.
-
Guest Speaker: Jeff Heard, RENCI
-
In-class: Brainstorm 3 project ideas & lightning talks
Connecting computers and accessing remote computers. Guests.
Monday Oct 28th: Local SSH
- 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
-
Extra Credit: Raspberry Pi
Wednesday Oct 30th: Remote SSH
-
isis.unc.edu
-
scp & rsync
-
Check-in: Meetups
Key Questions:
-
What is an operating system?
-
How do I make basic windowed interfaces?
Monday Nov 4th Readings:
-
Operating system basics: TBD (still looking for open resource)
-
Begin Reading: In the Beginning there was the Command Line through page 28 or so.
-
Check out Levenez.com: The UNIX and Linux Timeline
-
In-Class Exercise: Tinkering with window managers
-
Assignment: Project Lightning talks
Wednesday Nov 6th:
-
Finish Reading: In the Beginning there was the Command Line Written in 1999, but still contains an amazingly good account of the major players. A key passage: "There is no reason why a sufficiently dedicated coder could not start from nothing with every project". The ways in which and reasons why they don’t are very important. The section starting on page 29 is a first-person account of how operating systems have changed computing.
-
Set up Arch Linux from scratch
-
Revisit project ideas. Lightning talks
-
Check-in: Meetups
Version control and social coding. Guests.
Monday Nov 11th: Game hacking revisited: Feature Branches
-
Reading: ProGit Ch. 3.1 What a Branch Is
-
Reading: ProGit Ch. 3.4 Git Branch Workflows
-
In-class: games and feature branches
Wednesday Nov 13th: Game hacking: upstream remotes. Intro to rebasing. Hooks
-
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
-
In-Class: Distributed teams & feature implementation
-
In-Class: Extra credit for explaining amend, rebase, split and hooks
-
Project proposal due
How to give back or start a project. Guests.
Monday Nov 18th: Documentation. Project updates
- Reading: ProGit Ch. 5.2 Contributing to a Project
Wednesday Nov 20th: Code Refactoring and Cleanup
- Project agile standup
Tactical help from me or peers on final projects.
Monday Nov 25th:
- Project standup
Wednesday Nov 27th: No Class
Presentation and discussion of projects. A roadmap for where students want to go next.
Monday Dec 2: Presentations
Wednesday Dec 4: Presentations; wrap-up
Final projects due December 6th, 8am.