Phil Chodrow
Assistant Professor of Computer Science

- Office
- 75 Shannon 218
- pchodrow@middlebury.edu
- Office Hours
- Spring '25: Mondays 2pm-3pm, Wednesdays 3pm-4pm, Thursdays 1pm-2pm
I am a data scientist and applied mathematician interested in computational tools for understanding our social world. I am especially interested in network science, the study of interconnected systems in society and nature. Much of my work involves the development and analysis of algorithms for learning from network data. In pursuing this work, I draw freely on methods from applied mathematics, machine learning, statistics, and physics. I also work on developing, simulating, and analyzing models of behavior in human and animal societies. Several of my data science projects support sustainability, equity, and social justice.
I am a passionate educator. I believe deeply in the role of inclusive, evidence-based pedagogy, and in the central place of ethics in STEM education.
I received a BA in mathematics and philosophy from Swarthmore College. I did my PhD in operations research at MIT, and spent two years as visiting faculty in mathematics at UCLA before coming to Middlebury.
Courses Taught
CSCI 0145
Introduction to Computing
Course Description
Introduction to Computing
In this course we will provide a broad introductory overview of the discipline of computer science, with no prerequisites or assumed prior knowledge of computers or programming. A significant component of the course is an introduction to algorithmic concepts and to programming using Python; programming assignments will explore algorithmic strategies such as selection, iteration, divide-and-conquer, and recursion, as well as introducing the Python programming language. Additional topics will include: the structure and organization of computers, the Internet and World Wide Web, abstraction as a means of managing complexity, social and ethical computing issues, and the question "What is computation?" (Juniors and Seniors by waiver) (formerly CSCI 0101) 3 hr. lect./1 hr. lab
Terms Taught
Requirements
CSCI 0200
Upcoming
Math Foundations of Computing
Course Description
Mathematical Foundations of Computing
In this course we will provide an introduction to the mathematical foundations of computer science, with an emphasis on formal reasoning. Topics will include propositional and predicate logic, sets, functions, and relations; basic number theory; mathematical induction and other proof methods; combinatorics, probability, and recurrence relations; graph theory; and models of computation. (CSCI 0145 or CSCI 0146 or CSCI 0150) (Juniors and Seniors by waiver) 3 hrs. lect./lab
Terms Taught
Requirements
CSCI 0442
Current
Network Science
Course Description
Network Science
Many social, ecological, and technological systems are networked – their structure arises from connections between many individual components. Network science is the scientific study of connected systems using tools from mathematics, computer science, physics, and beyond. In this course, we will study measurements of centrality, hierarchy, and segregation in networks; random graph models; algorithms for network data mining; models of agents interacting on networks; and network data visualization. Students will write mathematical arguments; perform simulation experiments; implement analysis techniques; read contemporary research papers; navigate existing software packages for network analysis; and complete a substantial group project. (MATH 0200 and CSCI 0302 or instructor approval) 3 hrs. lect./lab.
Terms Taught
Requirements
CSCI 0451
Current
Machine Learning
Course Description
Machine Learning
Machine learning algorithms detect patterns in data and use these patterns to make decisions. This course introduces the theory and practice of machine learning. Tasks considered may include classification, regression, clustering, dimensionality reduction, text embedding, and reinforcement learning. Applications may include predictive analytics, data visualization, pattern recognition, and strategic game-playing. We will also discuss the social implications of automated decision systems. This course fulfills the Responsible Computing requirement for the Computer Science major. (CSCI 0200 and CSCI 0201 and MATH 0200) 3 hrs. lect./lab
Terms Taught
Requirements
CSCI 0500
Current
Upcoming
Advanced Study
Course Description
Advanced Study
Individual study for qualified students in more advanced topics in computer science theory, systems, or application areas. Particularly suited for students who enter with advanced standing. (Approval required) 3 hrs. lect.
Terms Taught
CSCI 0702
Upcoming
Senior Thesis
Course Description
Senior Thesis
The senior thesis is recommended for students interested in pursuing graduate study in Computer Science. Students will spend the semester researching and writing, and developing and experimenting as appropriate for their topic. All students will be expected to report on their work in the form of a written thesis, a poster, and an oral presentation at the end of the semester. In addition, throughout the semester, students will meet as a group to discuss research and writing, and will be expected to attend talks in the Computer Science lecture series. Before approval to join the class is granted, students are expected to have chosen a thesis adviser from the CSCI faculty, and determined a thesis topic with the guidance and approval of that adviser. (Approval required) 3 hrs. lect./disc.
Terms Taught
Areas of Interest
- Network science
- Computation on graphs
- Models of human and animal behavior
- Applied machine learning
- Data science and social justice
- Social responsibility in computing
- CS pedagogy
Publications
Please refer to my Google Scholar page for a complete record of publications, or to my research page for more information on my current work.