Increasingly complex computational systems are embedded in nearly every aspect of social, civic, and private life. Treating them as impartial but opaque obfuscates how their conception, design, or implementation may yield biased or detrimental outcomes. In this course, students are introduced to the core constraints and mechanisms that govern code: its design, organization, relationship to memory and runtime, and the tradeoffs and decisions necessary for its creation. Students analyze, modify, and generate code to engage with social, ethical, and political issues in information science. Prior programming experience is welcome, but not required.