| geometry |
|---|
left=1in,right=1in,top=1in,bottom=1in |
INST 126
Fall 2019
Section 101
Atlantic Building 1113
MWF 14:00-14:50
Name: Ed Summers
Email: edsu@umd.edu
Office: 0301 Hornbake Library (MITH)
Office Hours: Friday 3-4pm and by appointment
Name: Md Main Uddin Rony
Email: mrony@umd.edu
Office: 2118 Hornbake South
Office Hours: Monday, 4-5pm
INST 126 is an introduction to programming for information studies majors. This course provides a path for students with diverse backgrounds to successfully learn programming. You are not expected to have any computer programming experience.
You will learn how programmers analyze problems and design solutions for those problems using computational thinking, and practice using computational thinking to solve problems. You will learn how implement computational solutions using the particularly well suited for many problems that information professionals seek to solve, such as data collection, analysis and management, and developing Web applications such as search engines. This is a hands-on course - both in and out of class you will be writing, analyzing, testing and debugging code, culminating in a project that tackles a challenging real-world problem.
Throughout the course, we will examine issues like algorithmic bias, ethical/unethical uses of algorithms and disparities in opportunities in tech jobs, which you need to understand to be an ethical professional and to be successful in your work. These issues reflect the broader social and cultural context in which we produce software. The social and cultural impacts of information and technology are central concepts in our discipline. Through readings, discussion and writing, we will critically examine how programming is situated in and reflects broader social and organizational structures, the ethical and equity issues this entails, and ways that we might address these issues as information professionals.
After successfully completing this course you will be able to:
- Understand fundamental programming principles, concepts and methods.
- Explain how computer programming embodies ethics and values that reflect and produce broader social and political structures.
- Develop computer programs by applying fundamental programming concepts such as variables, data types, assignments, arrays, conditionals, loops, functions, and input/output operations.
- Test and assess the quality of small-scale programs.
- Write clear and effective documentation.
- Apply computational thinking techniques to analyze problems and develop computational solutions.
- Gain competency with tools for managing code.
All course materials will be found ELMS where they are divided into weekly modules, and will typically follow this pattern, with some exceptions:
Before class (preparation):
- Do assigned readings.
- Complete weekly exercises.
- Submit homework assignments or quizzes that are due.
In class:
- We will use a mix of lecture, discussion and lots of hands-on activities to help you learn programming concepts.
- We will make use of paired and group work in class.
- We will have exercises in ELMS that you need to submit.
- Each midterm exam will be in class with a take-home section.
After class:
- There will be five homework assignments to help you apply, reflect and extend your understanding of computer programming by working on a practical task.
- There will be three critical reflection writing assignments were we examine the social and political dimensions of software development, design and computation.
Here is my suggested general strategy for working on assignments:
- Start early – don’t wait. That will give you time to work through the problems and get help as needed.
- When you run into a problem, spend 5-10 minutes trying to solve it on your own.
- Then take a break. Sometimes this will allow you to come back and see something you missed. Letting your subconscious work on it for a while (unsupervised, so to speak) will often lead to useful ideas.
- If you’ve spent 20-30 minutes and still are stuck, post your question on Slack. We are here to help each other, so don’t beat your head against a brick wall—ask for help! When you post, provide as much information as you can. Often it helps to post a screenshot with the problem.
- I will respond as soon as I am able, usually within a day.
- If you see a question on the discussion board that you can answer, or if you have an idea, please respond. Don’t wait for me. You will be helping your colleagues.
This course will make extensive use of the following book/website, which was also used in INST126:
- Charles R. Severance, Python for Everybody: Exploring Data Using Python 3. (Available at https://www.py4e.com/ and in ELMS)
- McKinney, W. (2018). Python for Data Analysis, 2nd Edition. O'Reilly. (Available in ELMS)
- Python Documentation, v3.7.4, Python Software Foundation. https://docs.python.org/3
Other readings (generally available online for free, or through Library subscriptions) will be made available to you in ELMS.
- Laptop - We will do programming in class, so bring your laptop. Any current OS can be used. If you do not have access to a laptop, please contact me immediately.
- Python - Python3 is freely available from https://www.python.org/downloads.
- Code - Visual Studio Code (or Code) is an open source editor created by Microsoft with very nice Python and Git support. If you are already comfortable using an advanced text editor like Atom, Vim or Emacs feel free to use it. But I will be using Code in class. It's actually pretty fun, and supports multiple languages.
- Git - We'll be using Git to distribute code related to the course materials. Code will also be on Canvas in case you'd rather not use it. https://git-scm.com/downloads
- Slack - Slack is a widely used team collaboration platform. The iSchool has its own Slack workspace, and there is an inst326-105 channel that we will be using for discussion. In addition to using Slack in your browser there are apps for your desktop and smartphone.
Please note that we will install all necessary environments together in class during the first couple of weeks.
We will be using the iSchool's Slack as a discussion forum for the class. You should receive an invitation to your UMD email address on how to join the Slack. Once you are in you need to join the #inst126 channel. You can join any other channels that look interesting to you. The table below contains information about what's appropriate to discuss in the Slack channel.
| Acceptable in Group Chats | Unacceptable in Group Chats |
|---|---|
| To use in cases when electronic devices are allowed in the course. | To use during exams or at other times when electronic devices are not allowed. |
| To discuss the concepts and ideas in the course, on homework assignments, and in other course assignments. | To give out an answer to a homework question, clicker question, or other assignment. |
| To discuss how programming languages work in the course. | To give out answers and exact programs on a homework assignment or other course assignment. |
| To report to the instructor any conduct or remarks on the group chat that go against the university’s Code of Academic Integrity or Non-Discrimination Policy. | To use to complete an in-class assignment when you are not in class. |
| To ask about the mechanics of the course, such as when a due date is or where the class is being held. | To facilitate (help) others cheat, such as by passing on answers to assignments or quizzes, or telling others when in-class activities are occurring (i.e., clicker questions or pop quizzes). |
| To coordinate with other course members on a group work assignment. | To actively exclude or be abusive to another student in the course. |
Your final grade for the course is computed as the sum of your scores on the individual elements below (100 possible points total), converted to a letter grade:
| A+ | 97-100 | B+ | 87-89 | C+ | 77-79 | D+ | 67-69 | ||
| A | 93-96 | B | 83-86 | C | 73-76 | D | 63-67 | F | 0-59 |
| A- | 90-92 | B- | 80-82 | C- | 70-73 | D- | 60-63 |
Final grades will be computed based on the following components:
| Exercises/Quizzes (10) | 20 points |
| Homework (5) | 25 points |
| Midterms (2) | 20 points |
| Reflections (2) | 10 points |
| Final Project | 15 points |
| Participation | 10 points |
| TOTAL | 100 points |
Important: Late work will be graded 10% off for every day that it is late. So please submit your work on time!
The following table shows the planned schedule, but please see the modules in ELMS for the latest information. The due dates for homework assignments are marked with HW. The schedule is broken up into weekly modules which you will also find in ELMS.
08/26 - Introduction
08/28 - Installfest
08/30 - What is Code?
- Severance, Chapter 1.
- Peters, T. (2004). The Zen of Python. https://www.python.org/dev/peps/pep-0020/
09/02 - No Class (Labor Day)
09/04 - The Command Line
09/06 - Lab
- Introduction to the Command Line. (2019). Launch School. https://launchschool.com/books/command_line Please read these sections: Introduction; The Command Line Interface; and Files, Directories and Executables.
09/09 - Variables and Operators HW1
09/11 - Variables and Operators
09/13 - Lab
- Severance, Chapter 2.
- Bellowvin, S. (2019). Yes "algorithms" can be biased. Here’s why. Ars Technica. Retrieved January 24, 2019. https://arstechnica.com/tech-policy/2019/01/yes-algorithms-can-be-biased-heres-why/
09/16 - Conditionals
09/18 - Conditionals
09/20 - Lab
- Severance, Chapter 3.
- Hernandez, S. (2019). One Of The Biggest At-Home DNA Testing Companies Is Working With The FBI. BuzzFeed News. Retrieved February 4, 2019. https://www.buzzfeednews.com/article/salvadorhernandez/family-tree-dna-fbi-investigative-genealogy-privacy
09/23 - Functions HW2
09/25 - Functions
09/27 - No Class
- Severance, Chapter 4.
- Donovan, Joan. (2019). How Hate Groups’ Secret Sound System Works. The Atlantic. Retrieved August 20, 2019. https://www.theatlantic.com/ideas/archive/2019/03/extremists-understand-what-tech-platforms-have-built/585136/
09/30 - Loops
10/02 - Loops
10/04 - Lab
- Severance, Chapter 5.
- Gillespie, Tarleton. (2016). Algorithm. In Digital Keywords, edited by Ben Peters. Retrieved August 20, 2019. http://culturedigitally.org/wp-content/uploads/2016/07/Gillespie-2016-Algorithm-Digital-Keywords-Peters-ed.pdf
10/07 - Critical Reflection #1
10/09 - Catch up & Review
10/11 - Midterm #1
10/14 - Strings
10/16 - Strings
10/18 - Lab
- Severance, Chapters 6 and 7
- Eubanks, V. (2018). Automating Bias: How Algorithms Designed to Alleviate Poverty Can Perpetuate it Instead. Scientific American. November, pp 68-71.
- [Optional] Punishing the Poor. A podcast interview with Virginia Eubanks from Against the Grain (KPFA). Retrieved August 22, 2019. https://kpfa.org/episode/against-the-grain-july-18-2018/
10/21 - Lists HW3
10/23 - Lists
10/25 - Lab
- Severance, Chapter 8.
- Glanz, J., Kaplan, T., and Nicas, J. (2018). In Ethiopia Crash, Faulty Sensor on Boeing 737 Max Is Suspected. New York Times. March 29, 2019. Retrieved August 20, 2019. https://www.nytimes.com/2019/03/29/business/boeing-737-max-crash.html
10/28 - Dictionaries
10/30 - Dictionaries
11/01 - Lab
- Severance, Chapter 9.
- Crawford, K. and Joler, Vladan. (2018). Anatomy of an AI System. Retrieved August 20, 2019. https://anatomyof.ai/
11/04 - Sets HW4
11/06 - Sets
11/08 - Lab
- Sridhar, J. An Introduction to Python Sets. DZone. Retrieved August 20, 2019. https://dzone.com/articles/an-introduction-to-python-sets
- Noble, S. U. (2012). Missed Connections. Bitch Media. Retrieved August 23, 2019. https://safiyaunoble.files.wordpress.com/2012/03/54_search_engines.pdf
11/11 - Critical Reflection #2
11/13 - Catch up and Review
11/15 - Midterm #2
11/18 - Pandas
11/20 - Pandas
11/22 - Lab
- McKinney, W. (2018). Python for Data Analysis. pp. 123-136.
- Nakamura, L. (2014). Indigenous Circuits. Computer History Museum. Retrieved August 20, 2019. https://www.computerhistory.org/atchm/indigenous-circuits/
11/25 - Matplotlib HW5
11/27 - No Class (Thanksgiving)
11/29 - No Class (Thanksgiving)
- McKinney, W. (2018). Plotting With Pandas and Seaborn. In Python for Data Analysis. pp. 268-286.
- Fisher, M. and Taub, A. (2019). How YouTube Radicalized Brazil. New York Times. Retrieved August 20, 2019. https://www.nytimes.com/2019/08/11/world/americas/youtube-brazil.html
12/02 - Jupyter
12/04 - Jupyter
12/06 - Lab
- Driscoll, M. (2019). Jupyter Notebook: An Introduction. Real Python. Retrieved August 20, 2019. https://realpython.com/jupyter-notebook-introduction/#installation
- The Crime Machine, Part 1. A podcast episode from Reply All. Retrieved August 22, 2019. https://gimletmedia.com/shows/reply-all/o2hx34
12/09 - Poster Session 1
12/11 - Poster Session 2
12/13 - No Class