FAQs

This page collects my answers to a wide range of frequent questions about me and my profession. If you’re a Middlebury student wondering about advising, letters of recommendation, or research opportunities, you might want to skip down to my dedicated FAQs for students.

My Profession

What are you? Are you a computer scientist, a mathematician, or a data scientist?

Uh…yes? I am all those things!

My training was primarily mathematical. These days I use math, algorithms, simulations, and data analysis to learn about complex systems in theory, society, and nature. Almost all my work involves software implementation, and I’m working on growing my skills as a developer in order to help more people use and reproduce my findings.

What kinds of things do you like to study?

Networks and complex social systems! You can learn lots more about my interests on my research page.

What do you do all day?

This graphic by Marissa Kawehi Loving gives a high-level overview of the activities that go into a career as an academic mathematician. My activities as a computer scientist / mathematician / data scientist look relatively similar. Mentally, I’d divide them into the following broad categories:

  • Doing science”: developing models and algorithms, proving mathematical facts about them, performing computations, analyzing data, and reading papers.
  • Writing: creating notes, writing scholarly papers, writing reviews of the scholarly work of others.
  • Communication: largely emails and meetings. Lots of the “doing science” part happens in these meetings (i.e. collaboratively). An important category here is mentorship: working with junior collaborators and students; talking about ideas; giving feedback. Another important category here is speaking about my research, which used to happen at conferences but is now largely online.
  • Teaching: I spend a lot of time on teaching. The preparation includes formulating course philosophies, designing curricula, writing lectures and assignments, etc. Then there’s the best part – working with students – as well as managing instructional teams, handling grades, and troubleshooting concerns as they arise.
  • Professional development: there’s a lot of room for me to grow. One of my main goals is to further develop my courses as actively anti-sexist and anti-racist, and measure their effectiveness along these axes. I attend trainings, read, and learn from others.

Is it nice to be a professor? Should I become one?

Here’s my personal list of the pros and cons about being a professor. This list is quite personal to me, and reflects my identity and priorities. Note that the pros and cons for computer scientists and mathematicians working in industry look very different.

Pros:

  • Freedom to control my own schedule.
  • Freedom to set my priorities and spend much of my time thinking about things that interest me.
  • Freedom to decide whom to work with (very important to me).

Cons:

  • Low salary compared to many other careers for quantitative people (although still enough for me to have a comfortable life).
  • Uncertainty about long-term job prospects. I didn’t know where I would spend most of my career—or whether I would even make it in my chosen career—until I was 31.
  • Lack of control over location: I’m very happy here, and I’m exceptionally lucky to have been able to choose to come here over several other attractive options. In general, though, academics often won’t be able to choose where they will live. This is one factor that can contribute to challenges associated with being an academic and starting a family.

Is academic science an equitable space, a “meritocracy,” or a “neutral” discipline?

No. Academic science is not yet an equitable community, and many parts of it replicate systemic misogyny, racism, ableism, and classism. Certain people, departments, and institutions are not safe or nurturing spaces for members of certain groups. For example, a recent article in Scientific American highlighted the intersection of racism and misogyny in modern mathematics.

Due in part to my own privileged identity, I have had an overall pleasant experience in academic science which makes me want to stay here. If you do aspire to become an academic computer scientist, mathematician, data scientist, or scholar of any kind—and especially if you benefit from intersecting privilege—then part of your responsibility is to reflect on what work you will do to make our profession a more equitable and just place. The Mission page expresses how I think about this responsibility, and the Resources page contains some links that might help you get started.

Thoughts on Software

What software do you use?

I spend a lot of time on my laptop, and I’ve given some thought to the tools that allow me to be most productive in that time. Here’s what I’m using these days:

  • Programming languages: Julia and R. I also know (and teach) Python, but Julia has largely replaced Python in my research workflows. I use R when I am primarily working with data frames or when I need to construct scientific graphics, and I use Julia for most other tasks. I still cheerfully work in Python when collaborating with folks who strongly prefer it.
  • Writing: LaTeX and Markdown. I use LaTeX for most technical writing, including scientific articles, reviews of other’s writings, working notes containing proofs and similar things, and any time I want to produce a PDF document. Lots of folks don’t like LaTeX, but perhaps through raw familiarity I am a very cheerful LaTeX writer. I use Markdown for most other writing, especially including writing for websites like this one.
  • Text editor: VSCode. I use this for writing code, as well as writing mathematical documents and research papers using LaTeX. I have extensions that make it easy to work with some of my main tools, including Python, Julia, R, LaTeX, Quarto, and Markdown. When coding in R, I sometimes use RStudio instead of VSCode.
  • Operating system: MacOS. I don’t have strong negative feelings about Windows, but as someone who writes code I strongly prefer an OS with a first class terminal. I have dabbled in Linux but don’t consider myself enough of a power user to justify the time investment. Because I have access to high-performance servers, I don’t need a very powerful laptop.
  • Website: Quarto and GitHub. This website, as well as my course websites, are generated by the Quarto publishing sytem using plaintext files. I edit these files in VSCode, run Quarto to preview them, and then push them to GitHub which hosts them online. Through working on my websites, I have picked up a minimal amount of HTML and CSS.
  • Email client: Spark – it’s free, simple, and cross-platform.
  • Launcher: Alfred. Pressing a simple keyboard shortcut spawns a search bar when I can open apps, search for files, etc.
  • Browser: Arc. A customizable browser compatible with Chrome plugins.

Is programming language A better than programming language B?

Probably not! Most programming languages have certain strengths in which they excel. You don’t need “the best” programming language – you need the one that’s right for your task. For example, R and Python have different strengths for data science, and most practicing data scientists know both. Here are my thoughts on the languages I know and use.

  • Python: extremely versatile, pretty good at almost everything. Often slower than compiled languages like C++ or just-in-time compiled languages like Julia. Widely used in industry, and an excellent first language to learn. Extremely vibrant ecosystem of free software modules.
  • R: specialized for data analysis and statistics. World-class handling of tabular data via the Tidyverse ecosystem. ggplot2 is the world’s best two-dimensional data visualization system, bar none. The RStudio IDE is excellent.
  • Julia: specialized for technical computing (science and engineering applications). Similar syntax to Python. Often compared to Matlab in its focus, but open-source and (in my view) easier to understand. Well-written Julia is extremely fast, and can reach speeds comparable to C++.

Other

Can I ask you to speak at my student organization?

Yes! I love doing this kind of thing. Send me a note.

Can I talk to you for a class project?

On occasion, students approach me with a class project that asks them to interview a scientist, faculty member, or professional. If hearing from someone like me meets the professional goals of your project, then feel free to ask me about this.

What kinds of books do you like to read?

Some of the kinds of books I like are scifi and fantasy novels; U.S. and modern world history; feminism and antiracism; and yes, the occasional book on math, algorithms, network science, or computation.

I love suggestions!

Perhaps like you, the growing presence of screens in my life has detracted from my reading. I’m trying to fix that! To keep myself on track, I’m keeping a list of the things I’ve been reading lately.

(In case you’re wondering, I do read a lot of computer science and math stuff, but most of it is in scholarly articles rather than books.)

Do you have a speaker bio?

Yes!

Phil Chodrow is an applied mathematician with interests in complex systems, network science, and data science. Some of his current topics of interest include mechanistic modeling of evolving networks, inference in latent-variable models, network measurement, information theory, dynamical systems on networks, and gender inequalities in academia. His research is supported by the National Science Foundation.

Phil is an assistant professor in the Department of Computer Science at Middlebury College in Middlebury, Vermont. His teaching specialties at Middlebury include machine learning, network science, and discrete mathematics. Before joining Middlebury, Phil spent two years as a visiting assistant professor in the Department of Mathematics at the University of California, Los Angeles. He received his PhD from the Massachusetts Institute of Technology and his BA from Swarthmore College.

Middlebury Student FAQs

How should I address you?

It’s fine to call me “Prof. Phil,” “Phil,” “Prof. Chodrow,” or “Dr. Chodrow.” Those are in rough order of preference (e.g. I like “Prof. Phil” more than “Dr. Chodrow”), but it’s fine for you to use any of these that make you comfortable.

Please remember to address all your professors respectfully and according to their preferences. As argued in a recent study, many of us have harmful, gendered biases about when we use earned titles like “Dr.” or “Professor.” A small, simple thing you can do to make academia a more equitable place is to check your own potential biases. If you’re not sure, “Professor X” or “Dr. X” is always a safe choice — but even better is to just ask what your instructor prefers! My own personal preference is related to this short poem by Susan Harlan.

Advising

Will you be my advisor?

Maybe! At this time, I have a full load of advisees and am only accepting new advisees who have interests (at the intersection of math, CS, and data science) that align closely with my expertise. Once some of my advisees graduate, I’ll start taking many more.

If you won’t be me advisor, whom should I ask?

You can ask any CS faculty member to be your advisor! Usually the role of the advisor is limited to helping you plan your classes, and any of us can do this effectively! Ultimately, it doesn’t matter too much who your advisor is. You’re always welcome to come chat with me about your interests in courses, careers, and research.

Letters of Recommendation

Will you write me a letter of recommendation?

You may need a letter of recommendation from a faculty member for applications to graduate school, jobs, or internships.

If you have completed a course with me or are currently enrolled, you are welcome to request a letter from me. I will only refuse if you are requesting support for an application for jobs or internships involving surveillance, policing, or military applications. If I feel that I am not able to write you a strong letter, I will tell you – but if you still want a letter from me, I will still write it.

Please keep in mind that I can write stronger letters for students whom I see more frequently, such as in lecture or office hours. If you’d like a letter, talking to me in these contexts, or scheduling another meeting time, is highly recommended.

To request a letter, fill out this request form! Please give me at least one month of advance notice when possible.

CSCI 0451: Machine Learning

When can I take this class?

This course is usually offered at least once each academic year. Recently, I’ve been teaching it in the spring semester. The department is not able to guarantee that the course will be offered every year, but this has been the recent trend.

In some years, only one section of CSCI 0451 is offered. In such years, there are typically only enough spots for seniors. In other years, two sections of CSCI 0451 are taught. In these years, there are usually enough spots for everyone who wants to enroll.

Do I have to be a CSCI major or minor to take this class?

If you have considerable mathematics background (up to the level of MATH 0223: Multivariable Calculus) and if you have taken several courses involving data analysis and programming, you may be able to be successful in this course even if you are not a CSCI major. You can contact me about the possibility of a waiver to allow you to take the course. I treat such requests on a case-by-case basis.

Do I need to have experience in Python programming to take this class?

Comfort programming in Python is strongly recommended in order to succeed in this class. In some cases I’ll waive in a student who has extensive? experience programming in another language (e.g. R or Matlab) and who demonstrates ability to self-teach Python at a rapid pace.

Do I really need to take MATH 0200: Linear Algebra before I take this class?

Yes.

Does this course overlap with CSCI 0311: Artificial Intelligence or CSCI 0457: Natural Language Processing?

There is some overlap, although I have tried to minimize this to the extent reasonably possible.

Will this course teach me the latest, cutting-edge tools in machine learning and generative AI?

No, the focus of this course is on theoretical fundamentals and their implementation in efficient code. The aim is to give you a foundation from which to explore more complex techniques ify ou choose.

CSCI 0442: Network Science

What is this class about?

This is a course in my research area! Lots of the systems around us are composed of small, interconnected pieces. Your social network; ecological food webs; the financial system; and the physical infrastructure of the internet are all examples of real-world networked systems.

In this class, we’ll use math and computation to study the structure and dynamics of networked systems. Some of the questions we’ll ask include:

  • How should we measure the structure of networked systems?
  • How do the networked systems we see in the world around us evolve to be the way they are? How can we model this with mathematics?
  • How can we use algorithms to extract insights from large network data?
  • How does the structure of a network constrain or enable interactions on that network, like information exchange or disease spread?

Will this class help me get a job in software development?

No. 

Will I like this class?

You might like this class if several (but not necessarily all) of the following items describe you:

  • You like mathematics and statistics enough to enjoy doing calculations by hand and writing mathematical proofs.
    • Although the only official mathematical prerequisite is linear algebra, students who have taken a course in probability (e.g. MATH/STAT 0310) or theoretical computer science (CSCI 0301 and 0302) are likely to find this course more engaging.
  • You like thinking about how mathematical or computational models relate to our complex social and technological worlds.
  • You have experience in physics, especially statistical physics.
  • You have several semesters of experience coding.
  • You have experience analyzing data in R or Python.

What programming experience is required for this class?

We’ll use Python for all our computational experiments and data analysis in this class. Prior experience coding with Python is strongly recommended. If you do not have experience with Python and also do not have coursework beyond the 200-level in either math or theoretical CS (e.g. CSCI 0301 and 0302), you are likely in for a bad time.

Does this course count towards the mathematics or statistics majors?

Majors in mathematics and statistics are warmly welcome to enroll in this course. However, the course does not towards these majors. It does count as college credit, a DED requirement, and an elective torwards the computer science major.

How often is this course offered?

Roughly once every two years.

If I take this course, can I do research with Phil over the summer or as a thesis?

Doing well in CSCI 0442 does not guarantee that I will accept you as a summer research student or thesis student. It definitely helps though!

Will there be exams?

There will be one midterm exam and a final project, as well as regular problem sets. Problem sets will include both math problems and computational experiments.

Research with Students

What kinds of things are you working on?

These days (mid-2024), I am thinking about models of how networked systems (like social or biological networks) evolve over time. This involves creating mathematical descriptions of new models, mathematical analysis, and the development of statistical inference algorithms for fitting these models to real-world data.

I also work on mathematical models of collective social behavior, network data analysis, and selected projects in data science and applied statistics. Here’s a description of my areas of recent research.

Would I like working with you on some of those things?

Maybe! You are most likely to enjoy this kind of work if you are interested in the intersection between math, data science, computation, and the science of complex systems.

Can I talk to you about my research interests and how they might fit into my time at Middlebury?

Yes, absolutely! Send me an email and we’ll set up a time to meet.

How can I pursue research with you?

The most common ways are to write a CS senior thesis (CSCI 0702) or to work with me over the summer. I also rarely accept students for independent study during the academic year.

CSCI 0702: Senior Thesis

Will you be my thesis advisor?

Maybe! To write a thesis with me, you usually need to either:

  1. Have advanced mathematical background sufficient to work on some of my existing research activities or
  2. Have an idea of your own that I find very exciting.

Can I do a machine learning thesis with you?

Usually no. Machine learning is not my research area and applied projects in machine learning usually don’t have enough scholarly depth to be appropriate for senior theses. If you have a specific idea related to machine learning that goes over and above “I am going to assess the performance of some existing method on an existing data set,” then I’m happy to consider your pitch.

What courses should I take in order to be ready to do research with you?

In general, the minimal requirements for working with me on research topics are:

  • MATH 0200 (Linear Algebra)
  • At least one advanced elective in CS or math that significantly uses mathematical content, especially those which have MATH 0200 as a prerequisite.
  • Comfort reading and writing mathematical descriptions of models and programs.

The following items are very helpful and increase the likelihood that I will accept you as a research student:

  • Additional advanced coursework in mathematics and statistics, especially MATH/STAT 310 (Probability).
  • Any elective course taken with me, especially CSCI 0442 (Network Science).

Am I guaranteed to be able to do a thesis with you if I have a lot of relevant coursework?

No. I reserve the right to limit the number of students I advise on theses.

Summer Research

Do you supervise research students over the summer?

Sometimes! It depends on my other commitments and priorities for the summer, as well as my ability to secure funding.

Am I guaranteed a spot in your research group?

No, there are far more students who want to do research than I am able to accommodate. I don’t expect to accept more than 2-3 students in most summers.

What courses should I take in order to be ready to do summer research with you?

This list applies for students who are interested in both theses and summer research opportunities.

Can I do machine learning research with you?

Probably not.

Independent Study (CSCI 0500)

I very rarely accept students for independent study during the school year, and usually only as continuation of prior research work from summer or a senior thesis.

The reason I am so picky about independent studies is that it is extra work for which neither I nor any other faculty are paid.