1. What are the main learning objectives of the assignment?
    • Upon completion of this assignment students should have an understanding on Strings, Integers, Lists, Loops, and If/Else Statements, Classes, and Sorting. This assignment also introduces topics surrounding the technical representation of the many facets of ICE’s interactions.
  1. What are the main points from the reading that should be discussed for students to understand the assignment?
    • The main thing students should take away from the readings are a decent understanding of the purpose, structure, and impacts of ICE. These readings are not designed or intended to have a partisan political bias, and instead should function to provide background and context for students that may be unfamiliar with ICE.
  2. How should I instruct students to start the assignment?
    • After reading the assignment instructions and the accompanying readings, many students started at a conceptual level by outlining and deciding what information they would need to store in their classes. They then tended to begin by writing the code to read in and parse the data files. From there, they tended to begin by implementing and testing the storage aspects of their desired classes. From there, they then created the various algorithms they needed. This process allows students to test their code in segments, first by testing if the data is being read into the class correctly, and then if it is being stored and recalled correctly. Then they could test their algorithms. This method is recommended as it allows them to easily isolate bugs in their code.
  3. What computer science principles should students be familiar with to understand this assignment?
    • Students should understand Python lists, tuples, strings, functions, integers, for loops, while loops, classes, sets, and very basic search and sorting algorithms.
  4. How should I approach grading this assignment?
    • I recommend that you grade by testing each student’s assignment against predetermined and standardized inputs before going through and reading the comments and analyzing the coding quality and structure. That said, you know your resources and priorities, so you will probably know how best to grade this assignment in light of your own priorities and capabilities.
  5. How long does the grading process take?
    • It should take two TAs about two to two and a half hours each to grade 30 assignments. We recommend having two TAs grade each assignment to ensure that fewer errors in grading occur. This is not necessarily required for the assignment to function, but we have found that it helps to reduce grading errors.
  6. Why is there a ReadMe?
    • The ReadMe enables students to engage with the social content and readings regarding ICE more, while also giving students a space to note any difficulties they encountered with the assignment. It also helps TAs have more context for the student’s implementation of the assignment when they are grading.
  7. What are the major discussion points for this assignment?
    • You will likely want to discuss the idea of a nonpartisan political entity, as well as how the data, algorithms, and computational structures we use in computer science interact with these entities. It is important to remind your students that they are NOT being asked to take a specific “side”, in terms of political parties.