Skip to content
/ inst126 Public

Introduction to Computer Programming for Information Professionals

License

Notifications You must be signed in to change notification settings

edsu/inst126

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

geometry
left=1in,right=1in,top=1in,bottom=1in

Introduction to Programming for Information Studies

INST 126
Fall 2019
Section 101
Atlantic Building 1113
MWF 14:00-14:50

Instructor

Name: Ed Summers
Email: edsu@umd.edu
Office: 0301 Hornbake Library (MITH)
Office Hours: Friday 3-4pm and by appointment

Teaching Assistant

Name: Md Main Uddin Rony
Email: mrony@umd.edu
Office: 2118 Hornbake South
Office Hours: Monday, 4-5pm

Description

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.

Student Learning Outcomes

After successfully completing this course you will be able to:

  1. Understand fundamental programming principles, concepts and methods.
  2. Explain how computer programming embodies ethics and values that reflect and produce broader social and political structures.
  3. Develop computer programs by applying fundamental programming concepts such as variables, data types, assignments, arrays, conditionals, loops, functions, and input/output operations.
  4. Test and assess the quality of small-scale programs.
  5. Write clear and effective documentation.
  6. Apply computational thinking techniques to analyze problems and develop computational solutions.
  7. Gain competency with tools for managing code.

How We'll Work

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:

  1. Start early – don’t wait. That will give you time to work through the problems and get help as needed.
  2. When you run into a problem, spend 5-10 minutes trying to solve it on your own.
  3. 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.
  4. 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.
  5. I will respond as soon as I am able, usually within a day.
  6. 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.

Textbooks & Readings

This course will make extensive use of the following book/website, which was also used in INST126:

Other readings (generally available online for free, or through Library subscriptions) will be made available to you in ELMS.

Required Technology

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

Group Chat

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.

Grading

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!

Course Schedule

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.

Module 1: Introduction

08/26 - Introduction
08/28 - Installfest
08/30 - What is Code?

Module 2: Building Blocks 1

09/02 - No Class (Labor Day)
09/04 - The Command Line
09/06 - Lab

Module 3: Building Blocks 2

09/09 - Variables and Operators HW1
09/11 - Variables and Operators
09/13 - Lab

Module 4: Control Structures 1

09/16 - Conditionals
09/18 - Conditionals
09/20 - Lab

Module 5: Control Structures 2

09/23 - Functions HW2
09/25 - Functions
09/27 - No Class

Module 6: Control Structures 3

09/30 - Loops
10/02 - Loops
10/04 - Lab

Review

10/07 - Critical Reflection #1
10/09 - Catch up & Review
10/11 - Midterm #1

Module 7: Data Structures 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/

Module 8: Data Structures 2

10/21 - Lists HW3
10/23 - Lists
10/25 - Lab

Module 9: Data Structures 3

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/

Module 10: Data Structures 4

11/04 - Sets HW4
11/06 - Sets
11/08 - Lab

Review

11/11 - Critical Reflection #2
11/13 - Catch up and Review
11/15 - Midterm #2

Module 11: Data Analysis 1

11/18 - Pandas
11/20 - Pandas
11/22 - Lab

Module 12: Data Analysis 2

11/25 - Matplotlib HW5
11/27 - No Class (Thanksgiving) 11/29 - No Class (Thanksgiving)

Module 13: Data Analysis 3

12/02 - Jupyter
12/04 - Jupyter
12/06 - Lab

Final Presentations

12/09 - Poster Session 1
12/11 - Poster Session 2
12/13 - No Class

About

Introduction to Computer Programming for Information Professionals

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published