Introduction to programming with a focus on applications in informatics. Covers the
fundamental elements of a modern programming language and how to access data on the
Internet. Explores how humans and technology complement one another, including
techniques used to coordinate groups of people working together on software development.
This course is the first in a two-course sequence introducing students to programming and
the culture of programming, with a focus on applications for people, by people, and about
people. For people means applications for end-users or analysts, as opposed to back-end
or infrastructure software. By and about people refers to processing data traces of people’s
actions and interactions.
Detailed Learning Objectives.
At the end of this course, students should be able to:
- Discuss the ways that people and computers are the same and ways that they are
different as information processors
- Describe how open source software projects are typically organized and some of the
advantages and disadvantages of that organizational form
- Describe the relationship between redundancy and compression
- Understand the following programming concepts:
- Data types
- Variables
- Functions
- Conditional statements
- Iteration
- List and dictionary data structures
- List comprehensions
- Regular expressions
- APIs
- Write programs in python that demonstrate understanding of all of the above
concepts and that use the following features:
- File operations
- String processing operations
- External modules and APIs
- Manipulate data to:
- Extract and summarize desired elements
- Output the processed data in .csv formats
- Create a test suite for a simple program
Textbooks and Notes.
We will be using a custom version of the interactive, online textbook below. I will be
editing and reorganizing it to fit our curriculum. But you can get a sense for it now.
How to Think like a Computer Scientist: Interactive Edition
Brad Miller and David Ranum
interactivepython.org/courselib/static/thinkcspy/index.html
The content for that book has a long history. Another “fork” of it, closer to the version we’ll
be using, can be found online at www.pythonlearn.com/book.php
You can also download a PDF of it from there.
Other Required Readings
- Christian, B., The Most Human Human, 2011, London, England: Viking.
- Weber, S. The Success of Open Source, 2005, Cambridge, MA: Harvard University Press
Course Requirements:
Assignments
There will be assignments throughout the course (pretty much every week and sometimes
mini exercises during a lecture). Regular assignments allow you to learn the material in
small "chunks" and to keep a close eye on how well you understand the material. In some
cases, we will do part or all of the assignments during a lecture, though you will submit it
later.
Exams
There will be a midterm and a final exam. The midterm exam is administered during the
regular lecture session and the final during the final exam period. The exam dates are
announced well in advance (see the dates at the end of this document). If you have a
conflict, please let me know at least 2 weeks in advance so that I can arrange a different
time for you.
Class Participation (Bonus Points)
Class participation, helping others, interacting on the Q&A site and answering questions,
asking good questions that lead to interesting discussions, and pointing out corrections to
my lectures or code will contribute to bonus points, which you can use to help boost your
grade.
Python Challenge
There are optional challenge problems at www.pythonchallenge.com. I encourage
you to try to solve the problems there when you have time and discuss approaches or even
code on the email list — that all contributes to class participation points. If you are not able to
solve them initially, don’t worry. Treat them as optional and a fun part of the course. The
good thing about the Python challenges is that once you submit a solution to a challenge,
you can see several solutions to the previous challenge. It is a learning experience to see
how other people approached the same problem.
Grading
The graded work in the course will be weighted roughly as follows to determine a final
percentage grade. (Note that bonus points could allow you to get above 100%):
- Weekly Assignments 30%
- Class prep (online exercises) 10%
- Discussion section prep and participation 5%
- Exams: 40% (Midterm: 15% and
Final: 25%)
- Capstone project: 15%
- Helping other students: (helpful questions or answers in lecture
or on Facebook group)
Up to 2% bonus points
Intended Audience:
The course is designed for students with no programming experience. If you stick with the
course and invest the necessary time, you will be amazed at how much you will learn in 14
weeks. Don’t be intimidated by the few students who already know how to program.
They’re welcome in the course, but the course is not designed for them.
If you do not have any programming experience, some concepts will take some time to sink
in.
Class Format:
We will be using a partially “flipped” classroom. It is expected that you will read and attempt
exercises before class. To do this well, you will generally need to allocate about 2 hours of
prep time before each lecture session.
During the official lecture time, we will review tricky points and difficult exercises, solve
some more additional problems together, have supervised time working individually on the
graded homework, and get a preview of the next session’s material.
During the section meetings, you will discuss the non-programming readings (Most Human
Human; Success of Open Source) and occasionally have more supervised time working
individually on the graded homework. You will need to allocate about 1 hour of reading time
each week.
If you are doing the 4 hours of prep time weekly, you will often be able to complete the
graded homeworks in class, or with 1-2 additional hours outside of class. If you don’t do the
prep before class, you will lose much of the benefit of the class time, and will end up
spending more total time trying to catch up in order to do the homework. You will also lose
the points for prep, so it will hurt your grade directly.