Hack the Planet¶
(Programming and Data Science for Biologists)¶
Welcome to the landing page for EEEB G4050, Programming and Data Science for Biologists. This site will serve as a resource for the class, with links to the syllabus, tutorials, videos, readings, and assignments. You can access most of these categories from the navbar at the top, including a link to Canvas, which we will use only for grades and zoom links.
Course design¶
As the course name suggests, this class is designed to focus on programming and data science skills. In this way it may be quite different from other classes you have taken that introduced programming languages for domain-specific applications, such as statistics or bioinformatics. Here we will focus more generally on learning skills that are useful for any type of data science. This includes an improved understanding of your operating system, of where software resides, of how it is designed, of how programmers write software, and of the community and resources that are available to you to learn programming and data science skills on your own. By learning best practices for designing software tools you will learn that a lot of scientific software is not actually very well written or designed. By learning a framework for writing good software you will find that you can contribute greatly to the community of biologists by developing simple and efficient software tools.
Inspiration¶
The alternative name and design of this site ("hack the planet") is inspired by the 1995 movie Hackers (YouTube trailer link). Although you will not learn to "hack" in this class, in the strict sense, we will follow a general ethos of this statement from the film, which is that "hacking" involves the use of creative solutions to solve complex problems; often involves computational methods; and should be applied for the greater good. Borrowing another fun phrase from the film, our goal is that the programs we develop will not "crash-and-burn".

Learning to Learn to Code¶
Although you can learn a lot of coding skills through tutorials, much of programming comes from learning efficient routines, practices, and even muscle memory, all of which comes through practice. When you get stuck, try, try, and try again to come up with solutions. This mental work of thinking about alternative ways to achieve a goal requires practice. In addition, you can learn by example. Use google. See how others have solved this type of problem. Use ChatGPT, see how AI solves different types of problems. Treat this course like a hackathon, chat with your colleagues, discuss and work on assignments together, and brainstorm project ideas. It should be fun. Drop in and say 'hello world' to the course chatroom, and ask any coding questions you might have.

Programming for Biology¶
Finally, our theme of "hack the planet", relates well to a focus of many students in this class, which is an interest in biology and the environment. We will learn about finding, parsing, and analyzing large biological data sets, such as those used in genomics or biodiversity research. And we will learn best practices for working with such data. Keep this theme in mind as you work through the course, thinking of the type of data you want to analyze, and how you could develop a useful new tool around this type of data.

Learning objectives¶
The learning objectives of this course are summarized in the following:
- You will learn to code on your computer (mac, windows, linux, etc.)
- You will learn to install, remove, and update scientific software.
- You will learn to use software development tools (text editors, linting, testing).
- You will learn to plan and design a software tool to achieve some goal.
- You will learn to develop, document, and publish a software program.