Fork me on GitHub

INLS 560 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):

Week 1: Digging into Source Code

Key Questions

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

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.

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.

Week 3: Digital Processing

Key Questions:

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

Week 4: Reading Code; Data in Programs

Key Questions:

 "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

Wednesday Sept 11th: Python primitive data structures

  1. Sparkfun: Intro to binary

  2. ThinkPython 2.1: Values and Types

  3. Software Carpentry: Python Basics

Week 5: Problem Solving 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

Wednesday Sept 18th: Read about conditionals

  1. Paul Graham: Hackers and Painters Finish.

  2. ThinkPython Ch. 5: Conditionals and Recursion

Week 6: Complex data; 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

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

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.

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.

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

Wednesday Oct 9th: Graphical Text Editors - IDLE, SublimeText, Eclipse, others?

Guest Speaker: Eric Martindale

Week 9: Problem Solving with Libraries and Frameworks

Problem solving with code, but better. Guests.

Monday Oct 14th:

Wednesday Oct 16th:

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

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.

Wednesday Oct 30th: Remote SSH

Week 12: Operating Systems

Key Questions:

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

Wednesday Nov 6th:

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

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

Week 15: Project Work

Tactical help from me or peers on final projects.

Monday Nov 25th:

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 Weds, December 11th, 11:59pm.