Skip to content

Latest commit

 

History

History
432 lines (219 loc) · 14.5 KB

schedule.markdown

File metadata and controls

432 lines (219 loc) · 14.5 KB
layout title
default
Schedule

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

Office Hours

I will be available Wednesdays from 12-2pm and by appointment via our Google Plus community.

Guest Speakers

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

Week 1: Digging into Source Code

Key Questions

  • What is Text?

  • What is a Computer?

  • How Can Text Control Computers?

Wednesday Aug 21st Readings:

  1. 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

Week 2: Editing Text: Our 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:

  1. 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.

  2. 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).

  3. 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 growing git repository on the internet. This distinction isn’t always immediately apparent.

Wednesday Aug 28th Readings:

  1. 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.

  2. 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.

Week 3: Digital Processing

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:

  1. Chapter 1 ThinkPython: The Way of the Program

  2. Wikipedia: Assembly Language paragraph only

  3. 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.

Week 4: Reading Code; Data in Programs

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

  1. 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.

  2. 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

  1. Sparkfun: Intro to binary

  2. ThinkPython 2.1: Values and Types

  3. Software Carpentry: Python Basics

  • Homework: Vocab show & tell

  • In-Class Exercise: Data conversions in the interactive shell

  • Post: From data to binary and back

Week 5: Problem Solving with Pseudocode

  • What is pseudocode?

  • How can I solve problems with pseudocode?

Simple data: Strings, numbers, and conditionals

Monday Sept 16th: Read about strings and numbers

  1. 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.

  2. Review ThinkPython Ch. 2: Variables, expressions, and statements

  • In class: Pseudocode solutions to string problems from Codingbat.com

Wednesday Sept 18th: Read about conditionals

  1. Paul Graham: Hackers and Painters Finish.

  2. ThinkPython Ch. 5: Conditionals and Recursion

  • In Class: Pseudocode solutions to conditionals from Codingbat.com

Week 6: Complex data; flow of control

  • 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

  1. ThinkPython: Lists

  2. Software Carpentry: Lists

  3. ThinkPython: Dicts

  4. 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

  1. PythonTutor: Flow of Control Visualization - Visualize some simple programs to see how they work.

  2. Review ThinkPython Ch. 5: Conditionals and Recursion

  3. 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

Week 7: (The other kind of) Libraries

Self-contained, reusable bits of code.

Monday Sept 30th - I/O and intro to Libraries

  1. Software Carpentry - Input/Output

  2. Revisit Hitchhiker’s Guide to Python: Code Style

  3. 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

  1. Software Carpentry: Libraries

  2. 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

Week 8: Text Editors and Other developer tools

Monday Oct 7th: Terminal Text Editors - Nano, Vim, and Emacs

  1. Reading: Vim after 11 years

  2. 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

Week 9: Problem Solving with Libraries and Frameworks

Problem solving with code, but better. Guests.

Monday Oct 14th:

  • Pygame

  • Locally build Jekyll

  • Homework: Library show & tell

Wednesday Oct 16th:

  • Check-in: Meetups

Week 10: Open Source: Intro

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

Week 11: Networked Computing

Connecting computers and accessing remote computers. Guests.

Monday Oct 28th: Local SSH

  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

  • Extra Credit: Raspberry Pi

Wednesday Oct 30th: Remote SSH

  • isis.unc.edu

  • scp & rsync

  • Check-in: Meetups

Week 12: Operating Systems

Key Questions:

  • What is an operating system?

  • How do I make basic windowed interfaces?

Monday Nov 4th Readings:

  1. Operating system basics: TBD (still looking for open resource)

  2. Begin Reading: In the Beginning there was the Command Line through page 28 or so.

  3. 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

Week 13: Advanced Git and Github

Version control and social coding. Guests.

Monday Nov 11th: Game hacking revisited: 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

Week 14: Contributing to Open Source

How to give back or start a project. Guests.

Monday Nov 18th: Documentation. Project updates

Wednesday Nov 20th: Code Refactoring and Cleanup

  • Project agile standup

Week 15: Project Work

Tactical help from me or peers on final projects.

Monday Nov 25th:

  • Project standup

Wednesday Nov 27th: No Class

Week 16: Project Presentations

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.