Introduction to Computing for Biophysicists

Fall 2023 Syllabus

Course Days/Hours: Sept 11, 12, 13, 15, 18, 19, 20 from 9-11AM (*8-9:30AM on 9/12 and 9/13)

Location: GH 227 - Teaching Lab

Instructors: James Fraser, Stephanie Wankowicz

Course Description:

Computing is as essential as pipetting for success in graduate school. This practical course is intended to ensure that students without any background in scientific computing can become conversant in the fundamentals they need to succeed in our program, including:

We aim to introduce students to computational concepts by leverging their algorithmic understanding of molecular biology. Students are already familiar with data structures (the genetic code is a dictionary) and for loops (5’-3’ transcription) - the challenge is how to formally code what we already understand in a syntax that makes sense to a computer.

Finally, with the development of new AI tools (ChatGPT, Github Co-pilot, etc), “no code” coding is now possible and gaining power. In fact, a study has demonstrated that large language models can solve about 80% of introductory bioinformatic tasks, but the rest need additional prompting. We hypothesize that students will be better able to leverage such tools with the fundamental algorithmic thinking we aim to introduce in this course.

Accommodations for students with disabilities: The Graduate Division embraces all students, including students with documented disabilities. UCSF is committed to providing all students equal access to all of its programs, services, and activities. Student Disability Services (SDS) is the campus office that works with students who have disabilities to determine and coordinate reasonable accommodations. Students who have, or think they may have, a disability are invited to contact SDS (StudentDisability@ucsf.edu); or 415-476-6595) for a confidential discussion and to review the process for requesting accommodations in classroom and clinical settings. More information is available online at http://sds.ucsf.edu. Accommodations are never retroactive; therefore students are encouraged to register with Student Disability Services (http://sds.ucsf.edu/) as soon as they begin their programs. UCSF encourages students to engage in support seeking behavior via all of the resources available through Student Life, for consistent support and access to their programs.

Commitment to Diversity, Equity and Inclusion: The course instructors and teaching assistants value the contributions, ideas and perspective of all students. It is our intent that students from diverse backgrounds be well-served by this course, that students’ learning needs be addressed both in and out of class, and that the diversity that the students bring to this class be viewed as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity: gender identity, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, religion, and culture. However, we also acknowledge that computing systems were designed by people with biases and therefore likley have those biases built in. Additionally, the field is phasing out offensive terminology for some processes - but such terminology may be present in linked material from the class page. The instructors are committed to continuous improvement of our practices and our learning environment. We value input from students and your suggestions are encouraged and appreciated. Please let the course director or program leadership know ways to improve the effectiveness of the course for you personally, or for other students or student groups. (modeled after CCB and Brown University’s Diversity & Inclusion Syllabus Statements)

Course structure

This is a hands-on practical course - we will be moving at the pace of the student who completes the task last! This is our first time teaching this course and we expect that the level of prior knowledge will be quite heterogeneous. Students should keep in mind that the goal is to understand each aspect of what we are doing, not to finish first. There are no grades - this is about setting up a foundation for success in the Biophysics graduate program.

We will begin with understanding the relationship between the terminal, filesystem, and the GUI. We will then move to basic python scripting, grounding ourselves in creating python versions of the ribosome and restriction enzymes. Next, we will move to working on remote computers, which can help us answer our reserach questions faster by parallelizing our work. Finally, if there is time, we will explore ways to visualize our results using plotting libraries and molecular graphics tools.

Sept 11 - 9AM - JF

Sept 12 - 8AM - JF

Sept 13 - 8AM - JF

Sept 15 - 9AM - SW

genetic_code = {
    'AUG': 'M', 
    'UUU': 'F', 'UUC': 'F',
    'UUA': 'L', 'UUG': 'L', 'CUU': 'L', 'CUC': 'L', 'CUA': 'L', 'CUG': 'L',
    'AUU': 'I', 'AUC': 'I', 'AUA': 'I',
    'GUU': 'V', 'GUC': 'V', 'GUA': 'V', 'GUG': 'V',
    'UCU': 'S', 'UCC': 'S', 'UCA': 'S', 'UCG': 'S', 'AGU': 'S', 'AGC': 'S',
    'CCU': 'P', 'CCC': 'P', 'CCA': 'P', 'CCG': 'P',
    'ACU': 'T', 'ACC': 'T', 'ACA': 'T', 'ACG': 'T',
    'GCU': 'A', 'GCC': 'A', 'GCA': 'A', 'GCG': 'A',
    'UAU': 'Y', 'UAC': 'Y',
    'CAU': 'H', 'CAC': 'H',
    'CAA': 'Q', 'CAG': 'Q',
    'AAU': 'N', 'AAC': 'N',
    'AAA': 'K', 'AAG': 'K',
    'GAU': 'D', 'GAC': 'D',
    'GAA': 'E', 'GAG': 'E',
    'UGU': 'C', 'UGC': 'C',
    'UGG': 'W',
    'CGU': 'R', 'CGC': 'R', 'CGA': 'R', 'CGG': 'R', 'AGA': 'R', 'AGG': 'R',
    'GGU': 'G', 'GGC': 'G', 'GGA': 'G', 'GGG': 'G',
    'UAA': 'Stop', 'UAG': 'Stop', 'UGA': 'Stop'
}

WEEKEND TASK

- Use the pseudocode we generated for all three scripts (DNA_sequence.py, transcribe.py, translate.py) and feed it into ChatGPT
   - Did you get the same output?
   - Did you get an error? 
   - Did you have to change your prompt at all?

Sept 18 - 9AM - SW

Sept 19 - 9AM - SW

Sept 20 - 9AM - SW