Social Content:

This assignment asks students to use data collected by Torn Apart to create three Python classes to track information regarding companies contracting with ICE, facilities ICE uses, and Congressional Districts with monetary ties to ICE. Using this information, students are then instructed to create functions that will find the nearest ICE facility to any given location, whether any given company that contract with ICE, and whether any given congressional district has a monetary tie to ICE. There are several accompanying readings listed in the description that are free to access online. The goal of this assignment is not to pass judgment on the companies, congressional districts, and facilities ICE interacts with, but to allow students to see how wide-reaching the monetary impacts of one federal agency can be.

Technical Content:

  • Classes
  • Sorting Algorithms
  • Functions
  • If/Elif/Else Statements
  • Loops
  • Strings


//Assignment Credit: Naya Murdock, Jesse Ellin, Chris Reed, Xavier Marshall, Ohad Nir, Eryn Buhat, Damiel Faxon, James W. Malazita

//You may copy or adapt this assignment with credit given to the original authors

CSCI 1100: Lab 13

Check 1:

For lab 13, you will be working with classes and data parsing. To begin, go to This will bring you to a site titled “Torn Apart”. 

Torn Apart is authored by an interdisciplinary team of humanists and programmers who are interested in showing how coding can be used to create positive interventions in society. Rather than thinking in terms of making “better software,” this project tries to use code in order to “unpack” complex systems of governmental and social control.

Torn Apart does this by tracking statistics regarding ICE facilities and detention centers. ICE, or “Immigration Customs and Enforcement,” is a US law enforcement agency formed in 2003 under the Department of Homeland Security. While the agency is designed to enforce border control and visa status changes, it has been involved in a number of controversial actions over the past several years, including working with Border Patrol in maintaining child imprisonment and parent-child separation policies, setting up a fake university to find and deport students trying to extend their US Student Visa Status, and generally lacking forms of transparency and accountability in their operations. 

Agencies like ICE, however, are not just people in uniforms. They are a part of a broader flow of money, state and federal government agencies, public and private companies and corporations, universities, and local municipal government. The politicians and federal workers who maintain ICE are both Republicans and Democrats. ICE is funded by both governmental agencies and by private companies. ICE facilities and detention centers are spread across the United States, not just along the southern border.

Torn Apart tracks monetary spending, funding, and corporate contracts regarding these facilities. In this lab, we will be working with the data collected by the Torn Apart team to investigate the large system that is ICE, including by finding the nearest ICE facility to RPI. This lab will also require us to think about what our role as computer scientists who are responsible for building the systems that will create, manage, maintain and access the data that political and social decisions are informed by.

If you’re interested in more information and context about ICE, Border Patrol, and the broader social and political issues they are entangled in, you can start with the following links:

On the Torn Apart “Bibliography” page, click on the link to the github page (  storing all of the data used. Download the files entitled distric_dollars.csv, iceFacs.csv, and freezer.csv. 

  • iceFACS: contains the locations of each ICE facility
  • Freezer: contains the number and types of ICE contracts
  • districtsDollars: contains the amount of funding each US congressional district has been given over time for ICE-related projects

For an explanation of the data on the Torn Apart Site, you can read:

Once you have downloaded the files, you must read in the information from the files and store that information in classes. You will create three classes for this checkpoint. One class will hold information about the facilities, another class will hold information about the companies, and a third class will hold information about the districts.

The “company” class should keep track of the name of a company, the types of goods and services provided by the company, and the amount of money that company is paid each year by government organizations.  The “facilities” class must include the name of the facility, the location of the facility, the number of people held in the facility, the number of ICE detainees in the facility, and the status of the facility(whether or not it is currently operating). The “district” class should hold all of the data categories in the district_dollar.csv. 

To get checked off for this checkpoint, you must show your TA or mentors the completed code. If you have any questions, please ask your TAs and mentors for guidance.

Check 2:

In checkpoint 2, you will be writing four functions to create statistics about the information in the files, and then writing them to a text file. As you write to a text file, you must be careful not to overwrite anything that has been written before. 

The first function will ask for two locations, and provide the names of the closest ICE detention facility to each one. You must show that it works with RPI, and with at least one other location. The address of RPI is 110 8th Street, Troy, New York(Latitude: 42.73126 and Longitude: -73.683985). The second function will return a list of all companies, as well as the types of goods and services they provided and the amount they are paid annually. Next, create a function that returns the information sorted by types of goods and services, and provides the names of the companies that provide it. The final function you must create is one that returns the amount of funding given to an inputted Congressional district. 

These functions must all use the classes you designed in their implementation in non-trivial ways. To get checked off for this checkpoint, you must show your code and that all of the statistics have been successfully written to a text file. The output can be formatted however you would like, provided that it is well organized and easy to read.

Use this to find the longitude and latitude for a location:

An example of possible output for the first function would be:

What is the Latitude of the first location?:  Latitude: 42.73126

What is the Longitude of the first location?:  Longitude: -73.683985

What is the Latitude of the second location?:  Latitude: 42.358969

What is the Longitude of the second location?: Longitude: -71.093527

The closest ICE facility to the first location is: Albany County Jail

The closest ICE facility to the second location is: Suffolk County House of Corrections

Check 3:

We will now begin using our functions, datasets, and readings to begin learning about ICE. In particular we will be seeing how:

  1. How we parse data creates different kinds of stories from the same set of “facts”
  2. Despite our current divisive rhetoric, members of both parties financially benefit from maintaining ICE facilities in their home districts
  3. The maintenance and operations of things like ICE are surprisingly mundane, and are connected with aspects of everyday life like trash removal, Amazon Web Services, and gym memberships

First, read the essay “Representation Matters” by Moacir P. de Sá Pereira on the Torn Apart site:

Then, begin using your classes written in Checkpoint 1 and your functions created in Checkpoint 2 to find the total amount of money related to ICE given to the Congressional District Rensselaer Polytechnic Institute is in. Then find the amount of ICE money in at least three other Congressional Districts of your choice. As a suggestion, one of these could be where your parents/guardians/family/hosts live in in the United States.  Make sure you note all of your findings down.

If you need help identifying Congressional districts, you can use this resource:

Then, using the classes you have already constructed, write a function that can search for various kinds of funding sources found in the Freezer dataset. We will use this function to search for different companies that profit from ICE existing, as well as the kinds of services and organizations that support the everyday activities of ICE.

After you have written your function, search for the following terms:


  • IBM
  • Amazon
  • Microsoft
  • Hyatt Hotels
  • Two (2) more of your choice (it’s okay if they’re not found)


  • Gym memberships
  • Trash Pick-up
  • Bags
  • Toiletry
  • Hotels
  • Food
  • University
  • Three (3) more of your choice

In a LAB13_README.txt file, please answer the following questions in 150 words each:

  1. Did anything surprise you about your interactions with the dataset when searching for companies, services, and district dollars? What kinds of additional information did you search for, and what did you find or not find?
  1. How does the shape the dataset takes influence how you built your classes? What are other ways the data could be arranged or organized, or what are other ways that you could have built your classes, that would allow us to ask different kinds of questions from the dataset, or find different kinds of answers? If you need help thinking through this question, re-read the “Representation Matters” piece. How does that essay talk about different kinds of arguments you can make with the same data?
  1. “Torn Apart” was developed by both computer scientists and humanists. What about this Lab feels like it belongs in “Computer Science?” What parts feel different than what you expect from a Computer Science class? Where do you think your ideas about what belongs “inside” and “outside” a Computer Science class come from?

Please upload your LAB13_README.txt file.