The Business, Science and Technology Desk of San Francisco Public Library and Bonfire School present Learn, Design and Build Software
Build software with Python
Software can be hard to understand. It’s harder still to make software. This class aims to make learning with an industry professional fun and engaging. Through a series of group exercises we will think about the needs of others and how we can solve their problems with software.
There are three main concepts in this series, each with it’s own class!
March 15th: Learn to find human needs for software
- Listen and spend time with others to know what people need
March 22nd: Design software based on human needs
- Draw pictures and tell a story of what to build to meet those needs
March 29th: Build software with Python using design
- Code software and change it until it meets the needs of others
Location:
San Francisco Public Library
Computer Training Center
5th Floor, Main Library
(415) 557-4388
Ice Breakers
If you arrive early with other students, ask your neighbor:
- What do you expect to learn today?
- Why did you come to this class?
- What programming have you done?
- How did you get here today?
About the Instructor
Louis Rawlins is a writer and technologist building community in design and health. For the past decade, he designed mobile apps and built websites in Silicon Valley. Louis founded Bonfire School for people of any background to create what they want – crafts, software, dance and more – in a place that supports personal health. He dreams that it can become a physical school one day. Louis is excited to teach a public class in San Francisco, a city that has inspired him since he arrived in 2004.
If you have feedback or questions after the class, please email [email protected]
Mindful Moment
Let's take a breath for clarity to see how we are doing and what we will do next.
Group Introductions
Your instructor has lived in San Francisco for twelve years.
Where are you from? What would you like to learn?
How Computers Work
Before we start, it's good to review how computers work. Programming can be difficult because the computer system is built upon the work of many different parts that aid to remove complexity when we use these computers.
As a result, when we are programming a computer to do something for us, we must know exactly what the system expects, the inputs and outputs to the system, as well as some knowledge about how the computer stores information.
Knowing how the computer works helps us build the right thing for the right person
Introduction to Python
Python Interpreter
We will be using the Python REPL, which stands for read-eval-print loop. You can think of it as a command prompt that allow your computer to read input, evaluate it and then show you the result on the screen. That is the basic concept.
What's an interpreted language?
Python is an interpreted language. As a gross over-generalization, we can think of programming language as having several layers:
Interpreted languages (like JavaScript, Python) are expressive because they use patterns that closely resemble English. Commands can generally be run immediately without being compiled.
Compiled languages (like Java, C++) are expressive and must be compiled to run on a computer.
Assembly language is an arcane, but expressive language for programming directly to a computer. It offers shortcuts to store data in memory registers and control how the program will run on a computer.
Machine code is the information that controls how the program will run on a computer.
Basic Concepts
Using repl.it, we will consider a few basic topics:
Reflect on what you did on your own and as a group. What was surprising? What was difficult?
Short Break
Get up and move around. Drink some water. We'll start again in 10 minutes.
Gopher
Our code example is inspired by Gopher which is a technology that came before the web. The aim of our program is to be simple and clear for people that want to find information. We will be using computers for what they are good at – storing and finding information.
Programming in Python
Pair up with another student.
For the first interview:
- Person A is driver
- Person B is navigator
Finding Books
Pair up with another student. One of you can 'drive' and write code while the other person 'navigates' by calling out things you're looking for or might have missed. Working together facilitates learning because computer programming is a complex subject. Don't worry, you'll have time to work on your own as well.
We will again use repl.it and load the program from Python Code for SFPL (2017-03). Look through the code and see what you can learn.
Change the program to learn to new things. See what removing and adding code does to the output on your screen.
More Concepts
Using repl.it, we will consider a few basic topics:
What is the purpose of conditionals?
Why are functions important? How are we using them now and how could we use them? Take some time to explore.
After we are done building and changing software in Python, reflect on what you did one your own and as a group. What was surprising? What was difficult?
Professional Context
Bringing these skills together, we can start to understand the role of a software engineer. These skills help us learn how to express human needs as software, but we still need feedback about how well our software is working.
What does it mean to build software for human needs? When can you use these skills? How can it be useful?
Class Reflection
What worked and what would you change? Let's improve together.
Recommended Reading
Learn to find human needs
- Interviewing Users by Steve Portigal (2013)
- Rocket Surgery Made Easy by Steve Krug (2010)
Design software
- Lean UX by Jeff Gothelf with Josh Seiden (2013)
- The User’s Journey by Donna Lichaw (2016)
- Design Is a Job by Mike Monteiro (2012)
Build software with Python
- Think Python 2e – Green Tea Press
- Think Python by Allen B Downey (2015) [Print Version]
- repl.it - Python3 Compiler
- The Python Tutorial — Python 3 documentation
Copyright 2017 Bonfire School
For use of curriculum, contact author [email protected] for permission.