Introduction to Python Programming - BIOF309 - FAES
Time: Thursday 5:30PM - 7:30PM
This document is subject to revision!
Changes are tracked using the git version control system.
This course is designed for non-programmers, biologists, or those without specific knowledge of Python to learn how to program. Week by week, we will slowly build up your skills and understanding of computer programming and the Python programming language. There will be in-class demonstrations, using PyCharm and to a lesser extent JupyterLab, and activities to be completed outside of class, using DataCamp, for you to practice and learn at your own pace.
By the end of this course you should be able to:
Before contacting us, please check to see if your question has already been answered elsewhere, e.g. StackOverflow.
If you cannot find the answer, please make sure to ask your question thoughtfully (https://stackoverflow.com/help/how-to-ask) and provide everything needed to answer e.g. code, error message, dataset, etc.
In general, please use the course Slack workspace to communicate with classmates and instructors. If you have a course-relevant question or something to share, Slack is simply better than email. In case of personal/private question/concerns, please use Slack direct message (DM).
In case of an emergency, please send a DM on Slack and an email.
This is a one-semester course starting on the 13th of September 2018 and finishing on 13th of December 2018.
Class Location: Rathskeller (Room B1A199C), Building 60, NIH Bethesda campus
Attendance in class is strongly recommended; however, we realize other commitments may occasionally prevent attendance. If you miss a class, please review the materials available at the course GitHub repository and keep up with activities and homework.
NEW THIS SEMESTER! We will be piloting REMOTE ATTENDANCE and CLASS RECORDINGS via GoToMeeting and WebEx. These two options are largely the same, you can pick whichever platform you prefer. Please do NOT use this as excuse to skip class and just watch the recorded lectures! This course is NOT a Massive Online Open Course (MOOC), it will feature a great deal of group work. Additionally, forming groups to complete the final project is highly encouraged! Remote attendance will work best if you can meet with classmates to work through exercises together. We will do our best to answers questions in the GoToMeeting and WebEx chat windows during class. We will also try to answer all questions on Slack, but please try to ask your questions during class, if at all possible.
Important FAES Fall 2018 semester dates:
Each student is encouraged to bring their own laptop to each class.
Programing without a computer would be an exceptional feat.
Please install the following programs BEFORE the first class:
The Anaconda installer will automatically install most of the software we will use during the course, including Jupyter Notebooks.
The very nice folks at JetBrains have given us free licenses for the Professional Edition of PyCharm Integrated Development Environment (IDE), the best (in my humble opinion) Python Integrated Development Environment (IDE).
If not, a installation link will be distributed to you by email and made available on Slack.
During the first class, we will set up accounts on:
The very nice folks at DataCamp have given us free 6 month access to their awesome Data Visualization📊, Machine Learning🤖, and Data Science learning materials.
We will discuss the most interesting examples during class and point out others to be reviewed outside of class.
If you use Windows 10, please try to set up the Windows subsystem for Linux. If you use MacOS or Linux, you are all set.
GitHub is offering some free awesome resources to students, that might be of interest to you, depending on your background:
|1||2018-09-13||Integrated Development Environments||Martin|
|2||2018-09-20||Python Basics||All Instructors|
|3||2018-09-27||Functions, Modules and Packages||All Instructors|
|4||2018-10-04||Loops and Conditionals||Liuping|
|5||2018-10-11||Biopython and Sequences||Martin|
|6||2018-10-18||NumPy and Arrays||Liuping & Michael|
|7||2018-10-25||Pandas and DataFrames||Michael|
|9||2018-11-08||Data Visualization||All Instructors|
|11||2018-11-22||Comprehensions and Lambdas||All Instructors|
|12||2018-11-29||Iterators and Generators||All Instructors|
|13||2018-12-06||Requested Topics/Review/Final Project Clinic||All Instructors|
This semester we are continuing our free-form approach to homework assignments. The due dates below are guidelines. By the end of the semester, you must complete at least one career track or at least two skills tracks on DataCamp. The DataCamp career tracks include the Python Path on PluralSight. Pick DataCamp if you want to focus on Data Analysis and Machine Learning. Choose PluralSight if are interested in Object-Oriented Programming and Test-Driven Development.
This will take 28-67 hours total to complete, depending on which you choose to do.
DataCamp Career Tracks (complete at least 1):
DataCamp Skills Tracks (complete at least 2):
Please start on your chosen track(s) on DataCamp or PluralSight as soon as possible and work towards the certificate(s) throughout the semester. This will require substantial work! Do not wait until the end of the semester!
There is no required textbook for this course.
We do, however, highly recommend Python for Data Science and its companion text A Whirlwind Tour of Python by Jake Vanderplas. Both of these books are available free on GitHub in Jupyter Notebook form. The code for Python for Data Analysis by Wes McKinney is also on GitHub but the text is only available in the printed copy of the book. For maximum enjoyment, consider working through the relevant chapters before coming to class.
We will link to relevant online resources throughout the course.
If you would like additional material on the basics, the following resources may be useful:
For more information about Python, please see the official Python Software Foundation website.
The emphasis of the course is on learning and mastering the skills covered. We hope that everyone will be able to complete one of the Python tracks on DataCamp or PluralSight and submit a final project via GitHub. If some of the material appears unclear, please ask for clarification.
Grading the final project will be done using the following rubric:
Project description / Specification
Course materials are available in the course GitHub repository.