In this course, you will learn computer programming in a biological context. This is not so much a science or data analysis course as an introductory programming course with a molecular biology theme. Along with programming, you will be introduced to some essential bioinformatics skills and standards.
In the real world, programming is generally done in teams. For this reason, participation is a large part of your grade. There are multiple ways to participate.
- Attendance in class during the scheduled time
- Attendance in online coderie sessions (see below)
- Activity in the class Discord channel
- Collaborative coding activities
- Organizing a group
- Joining a group
- Asking for help
- Providing help
- Solving problems together
This is foremost a course about how to program. When faced with a homework
problem, such as "compute the descriptive statistics for a set of numbers", you
could very easily import statistics
instead of writing the code yourself. In
a professional setting, you should do that. However, the goal here isn't to
solve a problem but to learn how to solve a problem. In many programming
courses, the instructors have automated grading. I would never do that, because
that would mean that the focus was on getting the correct answer. In this
course, the focus is on form as function. It's better to have beautiful code
that is broken than ugly code that solves the problem correctly. The beautiful
code is easier to fix and maintain in the long run.
In this course, you are encouraged to collaborate with other students. If you work closely with other students, it's entirely possible you will have the exact same code. In some classes that might be considered plagiarism, but not here. Each homework assignment has a section where you can list the names of the collaborators. Not only is this not plagiarism, it's actually encouraged, and counts towards your participation grade! Just fill out the names of the authors. It looks like this:
# Authors: Ian, Keith, Hannah
Working with people is very different from copy-pasting code from the Internet. If you copy-paste without attribution, it is considered plagiarism. In this course, you are not allowed to use any programming construct unless it has been introduced in a previous or current unit. Getting answers from the Internet, AI, or a more advanced programmer will frequently result in ILLEGAL code. If you turn in illegal code, you will be penalized. Depending on the severity of the infraction, you may be sent to Student Judicial Affairs. There are no warnings.
See the ILLEGAL.md
file in this course
directory for more information on
what is considered illegal.
In general, resist copy-paste. Typing words helps you remember what you did later. Copy-paste is one of the worst ways to learn how to program. Also, copy-paste is one of the greatest sources of silent programming errors and plagiarism.
One of the best ways to practice programming is to write the same program over and over. Repetition is just as important in programming as it is in something like music or sports. After spending 30 minutes writing a program, you might feel like throwing it away and re-writing it would be dumb. And yet, it's the smartest thing you can do.
The instructor and TA monitor the course Discord server, so asking questions in the #mcb185 channel will get you the fastest response. You may get answers from other students even sooner. Email will also work.
The instructor and TA also hold coderies, which are online, small group programming sessions. Not only is this a good way to meet your classmates and get personalized help in a cozy setting, it's also a required part of your participation grade. Sign-ups are managed via Calendly. See Canvas and Discord for the schedule and URL.
To begin the course, start reading course/unit0-setup.md
and follow the
directions. Once you finish that, move on to subsequent units. The course is
designed to be completed in linear order. Skipping around between or within
units is not advised.
People learn programming at highly variable rates. Some people can do this entire course in a couple weeks. Others may never finish. Unfortunately, the course has a 10-week schedule that ends in a letter grade. Not all students will finish the course. That's okay, you can still get a good grade even if you don't finish all of the material.