MPCS 51215 Topics in Software: Making an Impact (Spring 2024)

Section 1
Instructor(s) Troy, Chelsea (ctroy)
Location Online
Meeting Times Wednesday 3pm - 6pm
Fulfills Specialization - Software Engineering (SE-2) Elective

Syllabus

Tech work has enormous impact; our decisions can bypass regulations, affect whole populations, and influence the environment. When we don’t recognize that leverage, we push things to production with massive unconsidered repercussions.

 

To find fulfilling roles for ourselves and have positively impactful careers, we need skills and techniques to invest in, understand, and manage the power at our fingertips. 

 

Learn how to:

  • Reinforce your personal leverage as a trusted teammate to achieve the roles, opportunities, and impact that you’d like to have with your career
  • Recognize and estimate the impact of engineering choices on people’s privacy, physical safety, data ownership, and the environment 
  • Use historical product outcomes to support an inclusive and impact-aware approach to choosing product goals, target customers, and production timelines
  • Address objections with fellow engineers, product managers, and executives to enable change in software products
  • Overcome logistical hurdles like brittle, convoluted code bases, bugs of unknown origin, and repositories that no one understands
  • Anticipate and mitigate the risks associated with implementing software solutions

 

The class is broken into the following key segments:

  • Tools for creating change: The specific skills that an individual engineer can use to deliver impactful results. Those include designing, socializing, and executing large technical changes, understanding complicated code bases, analyzing risks in a software system, debugging, and overcoming objections from collaborators outside the engineering team.
  • General Principles of Impact: Frameworks to help engineers understand what sorts of changes they can make. These include frameworks for understanding and setting product direction, considering the ethics of team and career choices, and understanding tech industry revenue and spending models.
  • Specific Examples of Impact: Case studies and discussions about the role that technical products play in the landscape of data privacy, data ownership, physical safety, and the climate crisis.

In this course, we will take a student-centered learning approach: we will follow the learning goals and broad structure described above, but the exact topics we will cover will be determined collaboratively between the instructor, course staff, and students. Once the topics have been selected, students will demonstrate their learning on these topics through writing assignments, discussion participation, and coding projects in Python.

Course Prerequisites

Core Programming

Other Prerequisites

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 53020-1 -- Foundations of Database Systems
  • MPCS 51400-1 -- Functional Programming
  • MPCS 52060-1 -- Parallel Programming
  • MPCS 53111-1 -- Machine Learning
  • MPCS 54001-1 -- Networks
  • MPCS 52553-2 -- Web Development

Eligible Programs

MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors) Masters Program in Computer Science