Skip to content

marskar/biof309_spring2018

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Syllabus

Introduction to Python Programming - BIOF309 - FAES

Spring 2018

Time: Tuesday 5:30PM - 7:30PM

This document is subject to revision!

Changes are tracked using the git version control system.

To interact with the materials in the repo using Binder, please click the button below.

Binder

Instructors:

  • Martin Skarzynski - marskar at gmail dot com
  • Benjamin Cohen - benjapaulcohen at gmail dot com
  • Michael Chambers - michael.chambers2 at nih dot gov

Course Description

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 Jupyter Notebooks, and activities to be completed outside of class, using DataCamp, for you to practice and learn at your own pace.

Learning Objectives

By the end of this course you should be able to:

  1. Look at a task and determine if you can or should automate it
  2. Create working Python programs
  3. Understand the difference between Python object types (i.e. lists, dicts)
  4. Perform data analysis and visualization with Python
  5. Use git for version control and collaboration
  6. Demonstrate your Python skills with a project

Communication

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.

Logistics

This is a one-semester course starting on the 30th of January 2018 and finishing on 8th of May 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.

Important dates:

  • November 13 – January 26 : Online Registration
  • January 11 : Open House
  • January 30 : Class starts
  • January 29 – February 16 : Late Registration ($10.00 late registration fee per course applies)
  • February 23 : Last day to drop
  • March 30 : Last day to change status (credit or audit)
  • May 8 : Class ends

Required Materials

Each student is encouraged to bring their own laptop to each class.

Programing without a computer would be an exceptional feat.

For the course, we will use the

  1. Anaconda Scientific Python Distribution

The Anaconda installer will automatically install most of the software we will use during the course, including Jupyter Notebooks.

  1. PyCharm Integrated Development Environment (IDE)

The very nice folks at JetBrains have given us free licenses for the Professional version of PyCharm, the best (in my humble opinion) Python Integrated Development Environment (IDE).

If you have a .edu email address, please install PyCharm Professional using this link

If not, a installation link will be distributed to you by email and made available on Slack.

  1. DataCamp

The very nice folks at DataCamp have given us 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.

  1. PluralSight

Thanks to the DataCamp-PluralSight partnership, we can get 6 month access to WebDevelopment, Object-Oriented Programming, and Test-Driven Development learning materials on PluralSight.

  1. GitHub

All of the course materials are available on GitHub. Before accessing the course materials repo, you should know that

  • it is likely to be under constant development throughout the semester and
  • you are not expected to work through everything contained therein!

Schedule

# Date Title Lead
1 2017-01-30 Integrated Development Environments Martin
2 2017-02-06 Python Basics Ben & Michael
3 2017-02-13 Functions, Modules and Packages Ben & Michael
4 2017-02-20 Loops and Conditionals Ben & Michael
5 2017-02-27 Biopython and Sequences Martin
6 2017-03-06 NumPy and Arrays Ben
7 2017-03-13 Pandas and DataFrames Michael
8 2017-03-20 Machine Learning Martin
9 2017-03-27 Data Visualization All Instructors
10 2017-04-03 Web Development Martin
11 2017-04-10 Comprehensions and Lambdas All Instructors
12 2017-04-17 Iterators and Generators All Instructors
13 2017-04-24 Requested Topics/Review/Final Project Clinic All Instructors
14 2017-05-01 Student Presentations
15 2017-05-08 Student Presentations

Homework

This semester we are taking a new 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):

  • PluralSight Python Path, 30 hours, 8 courses
  • DataCamp Python Programmer, 36 hours, 10 courses
  • DataCamp Data Analyst with Python, 47 hours, 13 Courses
  • DataCamp Data Scientist with Python, 67 hours, 20 Courses

DataCamp Skills Tracks (complete at least 2):

  • Python Programming, 15 hours, 4 courses
  • Importing & Cleaning Data with Python, 13 hours, 4 courses
  • Data Manipulation with Python, 16 hours, 4 courses
  • Machine Learning, 16 hours, 4 courses

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!

Please use the schedule below as a guide to which DataCamp and PluralSight chapters/lessons correspond to what is covered in class.

  1. DUE January 30, 2018 (BEFORE Class)

  2. DUE February 6, 2018 (BEFORE Class)

  3. DUE February 13, 2018 (BEFORE Class)

  4. DUE February 20, 2018 (BEFORE Class)

  5. DUE February 27, 2018 (BEFORE Class)

  6. DUE March 6, 2018 (BEFORE Class)

  7. DUE March 13, 2018 (BEFORE Class)

  8. DUE March 20, 2018 (BEFORE Class)

  9. WORK ON FINAL PROJECTS Depending on your final project, you might find the following topics useful:

Optional Materials

GitHub is offering some free awesome resources to students, that might be of interest to you, depending on your background: GitHub student pack.

Recommended Books

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.

Grading

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 the final project. If some of the material appears unclear, please ask for clarification.

Completion of the Python tracks on DataCamp or PluralSight will be graded in a binary manner (completed/incomplete).

Grading the final project will be done using the following rubric:

  • Project description / Specification

    • Goals unclear, difficulty demonstrating functionality (1-3)
    • Goals for the project and functionality are discussed but difficult to follow (4-6)
    • Goals for the project and functionality are discussed (7-9)
    • Goals for the project and functionality are logically presented and clearly communicated (10-12)
  • Documentation

    • Only comments embedded in the code (1-3)
    • Objects and methods have docstrings (4-6)
    • Objects and methods have docstrings, additional standalone documentation (7-9)
    • Objects and methods have docstrings, extensive standalone documentation with example usage (10-12)
  • Readability

    • The code is poorly organized and very difficult to read (1-3)
    • The code is readable, but challenging to understand (4-6)
    • The code is fairly easy to read (7-9)
    • The code is well organized and very easy to read (10-12)
  • Reusability

    • The code is not organized for reusability (1-3)
    • Some parts of the code could be reused (4-6)
    • Most of the code could be reused (7-9)
    • Each part of the code, and the whole, could be reused (10-12)
  • Performance

    • Program does not run (1-6)
    • Program runs, but does not produce correct output (7-12)
    • Program runs, produces correct output under most conditions (13-18)
    • Program runs, produces correct output with robust error checking (19-24)

Course Materials

Course materials are available in the course GitHub repository.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published