Course Policies

There are four policies for this course: one for attendance, one for deadlines, one for collaboration (which is encouraged for the programming assignments) and one for the use of online resources and generative AI. These will all be discussed in class; any modifications to these policies will be updated on the syllabus.

Attendance Policy

Why Attend? Attending the lectures and completing work during labs will put you in the best position to succeed in the course. Lectures will provide valuable information about the assignments, and labs will include some group work. Labs also offer time for me to provide guidance - they could be framed as small-group office hours working through problems together. Your attendance and engagement is expected in all lectures and labs, but there is no formal penalty for missing them.

What’s the Policy? You must email me if you cannot attend lecture or lab. You are expected to review the missed material from lecture and meet with me if anything is unclear. You can catch up with lab assignments asynchronously after a discussion with me and/or your group members.

There are some religious holidays and other events in the fall that might affect student attendance - please note these in your calendars and let me know if your attendance will be affected.

  • September 7: Labor Day (no classes)
  • September 11-13: Rosh Hashanah
  • September 20-21: Yom Kippur
  • November 3: Election Day
  • November 8: Diwali begins
  • November 11: Veterans Day
  • November 26: Thanksgiving Day (no classes)

If you miss multiple classes, I may reach out to make sure you are OK. Communication is key. Please see “Illness and Exceptional Circumstances” on the support page for more information about extended absences.

The Main Takeaway: Attending and participating is expected and will set you up for success. You must communicate any absences and make up missed work.

Deadline Policy

The programming assignments, exams, and the research project milestones all have deadlines. The purpose of these deadlines is for you to complete the assignments at a steady pace throughout the semester.

Why Submit Work on Time? The programming assignments are designed so that you are working on them after you have learned the relevant material in lecture and lab. If you are working on older assignments when another assignment is out, you might lose ground with the current coursework.

The exams assess the previous weeks’ worth of material and they are assigned at specific times to give you a break from the programming components of the course. If you submit exams late, you will likely be working on programming and exams concurrently, which is not the intention of the workload.

Finally, if you do not submit work on time, I cannot guarantee that you will receive timely feedback; this may affect your ability to resubmit work to improve your grade.

What’s the Policy? You must submit whatever work you have by the deadline, and I will mark it as M/P/C/E. Work may be resubmitted after receiving feedback from me; resubmitted work that includes a careful reflection on the changes made are eligible for an E. There are two non-negotiable deadlines in this course related to resubmitting work:

  • The deadline to resubmit programming assignments is Mon 11/9 (3 weeks after the last programming assignment is due)
  • The deadline to resubmit exam questions is the last day of Finals (Thurs 12/17)

The Main Takeaway: Assignment deadlines are intentional, and you should submit your work by the deadline. You will be able to resubmit work after receiving feedback from me.

Collaboration Policy

Why Collaborate? Collaboration on all assignments and activities (except for the exams) is highly encouraged. It is often easier to work through problems with a thought partner, working with someone else brings a different perspective to the challenges, you might help each other out in complementary ways, and working together can be fun!

What’s the Policy? When you collaborate, properly document the collaboration (who you worked with, and on what). You must write all of your own code for the programming assignments, even if that means sitting next to a collaborator and typing the same thing. New this year, each assignment and the research project will include a “Collaborations & Resources Used” section or file, where you should acknowledge any collaborators you worked with.

Citing Previous Code from Class. If you copy your own code from previous assignments or labs, cite in the comments where you copied the code from (e.g., # read_graph() function from Lab1.). Anna will post solutions to the labs on Fridays; you are free to copy pieces of these solutions for future assignments, clearly state that it is from a posted solution (e.g., # read_graph() function from posted Lab1 solution.).

The Main Takeaway: Collaboration in class and on programming assignments is expected and encouraged! Be sure to acknowledge collaborations in your assignments or labs.

Online Resources & Generative AI Policy

There are many online resources for python, including python modules that have pre-packaged functions, the python standard library reference, and user help threads like StackOverflow. Generative AI is technology that is trained to generate text, images, or code from natural language prompts. Two examples of generative AI that you might have seen before are ChatGPT (which returns text based on prompts) and GitHub Copilot (which returns code based on prompts).

You may always use the resources linked from Moodle. This policy lays out the scope of what is allowed beyond the Moodle resources. New this year, each assignment and the research project will include a “Collaborations & Resources Used” section or file, where you should explain what resources you used and how you used them.

Programming Assignments

The fact is, online resources and generative AI might do a good job with some of the programming assignments. But the assignments are designed for you to learn about graph algorithms, which can only happen if you write the code. The course goals of this class include implementing graph algorithms and applying them to biological networks - if you use online resources or generative AI, you are not demonstrating what you have learned.

  1. Do not use python packages that provide code for working with graphs (e.g., networkx or igraph) or other math/stats packages (e.g., scipy or numpy) unless otherwise directed. You may use pandas to manage datasets, but check with me before using any of the built-in functions.

  2. You may look up basic Python syntax online (using either a search engine or generative AI). Some examples of basic syntax are “how do I structure a double FOR loop?” “How do I sort a list?” “How do I initialize a dictionary?”. You may use generative AI to help debug your code.

  3. You may not look up the code for entire functions that are part of an assignment or lab (e.g., calculating the degree distribution of a graph or the shortest paths algorithm). While it may take some time for you to write these functions yourself, they are important for the learning goals in the class.

Exams

The exams are intended to be done on your own with your notes and the resources available on Moodle. They are an assessment of your understanding of biological networks and graph algorithms, so online resources (beyond the ones linked from Moodle) and generative AI are not allowed for exams.

Research Project

The research project, on the other hand, might have opportunities for using new packages and getting help with generative AI. We will have a class discussion about how to use generative AI in your research project to set the class policy then.

The Main Takeaway: Online Resources and Generative AI should not be used for generating entire functions, but they may be used to help understand basic python syntax and debug issues (with proper citation). Online resources should not be used for exams (beyond what Moodle provides), and we will discuss the role of online resources for the research project as a class.