Syllabus
This is an advanced elective on network science, the study of connected in nature, society, and information, using tools from mathematics, computer science, physics and beyond. In this course, we will study:
- Network fundamentals, including mathematical representations of networks, types of networks, and network data visualization;
- Measurement of networks, including measurements of centrality, hierarchy and segregation in networks;
- Properties of real-world networks, including shortest paths, degree distributions, and assortativity;
- Models of networks, including random graph models and configuration models;
- Applications of networks, including clustering, community detection, and models of agents interacting on networks.
Throughout the course, you’ll write mathematical arguments, perform simulations, read contemporary research papers, and navigate existing software packages for network analysis. The course culminates in a group project where you will apply the tools of network science to an application of your choosing.
This course is taught by Prof. Phil Chodrow. I have collaborated on the lecture notes, assignments, and overall course design with Dr. Heather Zinn Brooks (Harvey Mudd College), who has taught this course in the past.
Logistics and Key Policies
Lecture |
Mondays and Wednesdays 75 Shannon Street, Room 206 Section A: 12:45pm-2:00pm |
||||||
Instructor |
Dr. Phil Chodrow
|
||||||
Required Textbook | Networks by Mark Newman | ||||||
Important Policies |
I encourage you to call me Phil or Prof. Phil. “Professor Chodrow” is fine if that’s what’s most comfortable for you. You need a laptop and an internet connection for this course, but you don’t need to buy books or other supplies. Generally speaking, you should only email me if you need to talk about something personal or sensitive. We’ll use Slack for all standard course communications. Student Hours are your time to come chat with me about course content. I want to see you in Student Hours. |
Rough Schedule Of Topics
See the complete schedule for more details! I am still working on populating this schedule, and will try to have it set up at least two weeks in advance at all times.
- Week 1: Welcome! Networks and representations. Degrees, walks, and paths.
- Week 2: Connected components. Graph Laplacian and applications. Centrality.
- Week 3: More centrality. Visualizing networks.
- Week 4: Assortativity and homophily. Structural measures.
- Week 5: Structure of empirical networks. Degree distributions.
- Spring Break!
- Week 6: Random graphs: Erdos-Renyi.
- Week 7: Random graphs: configuration model.
- Week 8: Random graphs: small world, preferential attachment.
- Week 9: Community detection: modularity. Spectral clustering.
- Week 10: Link prediction. Agent-based modeling (random walks)
- Week 11: More random walks. Opinion dynamics.
- Week 12: Spreading processes. Project presentations.
You Have To Like Math
Technically, this is not a math class. CSCI 0442, right? Not MATH 0442.
In reality, this class is really somewhere in between math and computer science. We’re going to do a lot of math in this class, and a lot of the interest and beauty of the subject of network science comes from its mathematical roots. With this in mind,
To be here, you have to like math.
Note: I’m not saying that you have to be good at math. I’m saying you have to like math. If you don’t like math, you’re probably going to find that this class is just not that exciting.
What Will Class Time Look Like?
Most class time will involve the following components:
- 10-20 minutes of a warmup activity that reviews key ideas in the readings or helps you to practice important parts of your mathematical toolbox.
- 40-50 minutes of lecture, which will often focus on math, theory, and programming examples. While some lectures will be “standard” and primarily involve me presenting material, many others will have hands-on components in which you solve problems or live-code something with me.
The Warmup Activity
On most days, we’ll have a warmup activity. The warmup activity will usually ask you to engage with the readings and complete some work ahead of class time. This could be a short piece of writing, a math problem, or a coding challenge. You will turn in the warmup each day on Canvas. Your warmup assignment is graded on effort and completeness. You’ll be expected to show effortful engagement with the prep material and a meaningful attempt to complete all parts of the posed problem(s), but you won’t be graded on whether your solutions are correct.
Each day, one of you will be randomly selected to present the warmup at the beginning of class. It’s ok (and even encouraged) to ask for help if you’re not feeling confident in parts of your solution while you’re presenting.
Grade Structure
Your grade in this course is determined by the total number of points that you accumulate in each of four categories:
- Warmup assignments: Up to 10 points.
- Homework problems: Up to 35 points.
- Midterm exam: up to 20 points.
- Final project: up to 40 points.
Grading for this class takes place on a straight scale:
- A: At least 94 points.
- A-: At least 90 points.
- B+: At least 88 points.
- B: At least 84 points.
- B-: At least 80 points.
- C+: At least 78 points.
- C: At least 74 points.
- C-: At least 70 points.
- D: At least 60 points.
- F: Fewer than 60 points.
You’ll notice that there is a total of 105 possible points. That gives you 5 points which you can drop without consequence. In practice, I expect most folks to use this flexibility by skipping some homework problems. However, how you approach this is ultimately up to you!
Here’s how to demonstrate your learning in each of the four categories.
Warmup Assignments: Up To 10 Points
As described above, warmup assignments are graded on effort and completeness. You start with all 10 warmup points. You can miss or fail to earn credit on a warmup assignment up to two times without any impact at all on your final grade. After that, failure to earn credit on a warmup assignment will subtract one point from your warmup point total, down to a minimum of 0.
Homework Problems: Up To 35 Points
Throughout the course, I’ll release homework problems. There will be at least 35 homework problems released, and I’ll aim to make more than 35 available. Rather than “problem sets,” each problem will be assigned and graded individually.
Homework problems are assigned on the day of lecture that prepares you to complete those problems and are due two weeks after they are assigned. You’ll submit your homework problems on Canvas.
No Partial Credit
I’m going to say something that’s going to sound scary:
There is no partial credit on homework problems in CSCI 0442.
A solution can either meet specifications, in which case it receives credit, or not yet meet specifications, in which case it does not receive credit (yet). Instead of partial credit, you have multiple attempts. If on your first try your solution does not meet specs, you’ll get it back with a comment on what’s in need of improvement. You can then revise and resubmit the solution. I will take another look: if you’ve met the specifications, you now get full credit. Nice job!
Revision Process
After you’ve received feedback on a problem from me on Canvas, you should carefully review the feedback to understand where you have an opportunity to improve. Then, you’ll submit the problem again under the same assignment. You can submit your revisions any time before the last day of classes, although I recommend starting them early so that they don’t pile up.
Specifications for Homework Problems
When completing homework problems, please consult the standard specifications that I will use to grade your work. If you review a problem and find that it satisfies all of the specifications, then you should be confident that your work will earn credit. The reason for this is simple: consulting the standard specifications is exactly what I’ll be doing when I’m grading your work.
A few problems may have special specifications which will be stated alongside the problem.
Late and Partial Attempts
You can only resubmit a problem for full credit if you have already submitted a good effort by the stated due date. If you did not submit a first draft by the due date, or if your first draft doesn’t show sufficient progress toward the problem, then your problem will be marked “Late/Partial Attempt.” A problem with this mark will receive 0.5 points (instead of 1 point) if all specifications are met in the second submission.
In this policy, the phrase “sufficient progress” means roughly that you are at least half-way toward a solution. The judgement of whether a first submission demonstrates sufficient progress is fully at my discretion.
This is what we’re trying to prevent. Image credit: Dr. Spencer Bagley
The purpose of this policy is to keep you moving at a good speed and to save me from large piles of submissions and resubmissions at the end of the semester.
How Many Resubmissions? What About Extenuating Circumstances?
If you require extensions or additional resubmissions for extenuating circumstances (e.g., prolonged illness or family emergency), you should contact me, your class dean, and the DRC if applicable. We’ll work together to support you in your success in the course.
Midterm Exam: Up To 20 Points
We’ll have a take-home midterm exam. The exam will be open-book, open-notes, and closed internet (in particular, no StackExchange or ChatGPT). You’ll have 72 hours in which to complete the exam. I will write the exam with the intention that 3 hours will be sufficient for most students to earn at least 18 points.
Final Project: Up To 40 Points
The capstone component of this course is a project that will allow you and a team (2-3 students) to engage with modern scholarly research and connect the course content to your interests. The project has four graded components:
- Four short essays (< 1000 words) in the early parts of the semester. These are guided writing prompts to help you prepare for the project (total 10 points).
- Two meetings with the instructor (1 points for attending each scheduled meetings; total 2)
- A written report in the format of a paper for a scholarly journal (maximum 6 pages of main text + any amount of Supplementary Materials). A LaTeX template will be provided for this submission. There will be small milestones throughout the semester to report your progress, culminating in the final submission which is due on at the end of Finals period. (25 points)
- A project presentation during finals week. (5 points)
Reviews/Diagnostics
- This resource from Stanford’s CS246 contains most of the linear algebra that you’ll need for the course. The only big topic that’s missing is treatment of the existence of solutions of the linear system \(\mathbf{A}\mathbf{x} = \mathbf{b}\) in terms of the rank of \(\mathbf{A}\). You don’t need to have memorized everything here, but most of it should look familiar.
- Probability is not a formal requirement for CSCI 0442, but some probability can certainly be useful. To brush up on some basics, I suggest Chapter 2 of Introduction to Probability for Data Science by Stanley Chan. This treatment may be a little more advanced than what you learned in CSCI 0200, but you should recognize many of the main ideas.
Academic Integrity and Collaboration
In general, collaboration with human beings is highly encouraged in this class. I’d love it if you studied together, worked together on warmups, and helped each other out on projects. Collaboration is especially encouraged for projects; I expect that most of you will work in teams of 2 or 3.
LLMs, Code-Sharing, and Online Sources
In this day and age, it is possible to receive a lot of assistance in both coding and writing. My guiding principle in this course is simple:
You are intellectually responsible for all work that you submit for assessment.
This means that you should be ready to explain the workings of every mathematical argument, every piece of code and every set of experimental results that you submit.
I enforce this principle by reserving the right to request that you meet with me to explain your work on any assignment you submit. If you are unable to demonstrate intellectual mastery over the work you submit, you may receive a 0 on that assignment with no opportunity to revise. This is especially likely to occur if:
- You use use theorems or make mathematical steps that have not been covered in this course or previous courses.
- You submit code which uses Python functions which we have not discussed in class or in the assignment prompt.
- Your writing draws on ideas or uses vocabulary that is not present in the readings or lecture notes. (You can reduce the likelihood of issues here by citing your sources).
Advice On Maintaining Academic Integrity on Homework Problems
Here is my advice on how to ensure that the work you submit demonstrates your personal intellectual mastery of the content:
- Getting help from your friends is highly encouraged. Sharing more than 2 lines of code at a time is not encouraged.
- Use of online help websites like StackExchange is ok, neither encouraged nor discouraged. Please ensure that you are prepared to explain each and every code component or mathematical concept that you submit.
- Use of “fancy autocomplete” tools like GitHub Copilot in VSCode is ok, neither encouraged or discouraged. Please ensure that you are prepared to explain each and every code component or mathematical concept that you submit.
- Use of large language models (LLMs) like ChatGPT is strongly discouraged and is likely to get you in trouble. If you do use LLMs, please ensure that you are prepared to explain each and every code component or mathematical concept that you submit. Over-reliance on LLMs is likely to leave you struggling on the midterm.
Other Course Policies
Laptops
Please bring a laptop, and make sure that it has at least 75 minutes of charge.
Course Environment
You deserve to be welcomed and celebrated by our community. We embrace diversity of age, background, beliefs, ethnicity, gender, gender identity, gender expression, national origin, religious affiliation, sexual orientation, and other visible and non-visible categories. Discrimination is not tolerated in my classroom.
You deserve a learning environment free from gender-based discrimination, sexual harassment, sexual assault, domestic violence, dating violence, and stalking. If you experience these behaviors or otherwise know of a Title IX violation, you have many options for support and/or reporting. Middlebury’s Civil Rights and Title IX Office (CRTIX) can help you navigate your options. Please be aware that I am a Responsible Employee, which means that I am required by the College to report incidents of sexual harassment or sexual violence to CRTIX. There are resources for emotional and mental health care, advocacy, and academic support listed here, some of which are confidential.
You deserve to fully and equitably participate in our learning environment. I am actively putting effort into ensuring that course materials are screen-reader accessible, and welcome feedback on where I can do better. Middlebury’s Disability Resource Center can help you remove barriers to learning in this and other courses.
You deserve to be addressed in the manner that reflects who you are. I welcome to tell me your pronouns and/or preferred name at any time, either in person or via email. Conversely, please address your classmates according to their expressed preferences.
Beyond This Course
General Advice
I am always happy to talk with you about your future plans, including internships, research opportunities, and graduate school applications. Because I am a creature of the academy, I am less knowledgeable about industry jobs, although you are welcome to ask about those too. You can drop in during Student Hours or email me to make an appointment.
Letters of Recommendation
Writing letters of recommendation for students is a fundamental part of my job and something that I am usually very happy to do. Here’s how to ask me for a letter.