Graded Homework 3

**Grade: 4.5/5**

Impressive work, Charlie! I really enjoyed looking through your code.

I have a few comments:
- No need to document every line. Some lines that are very obvious (ie. i = i + 1) don't need explaining. 
- I would advise against initializing a list with [0]*len(). The concept makes sense for languages like C where you have to allocate specific amount of memory for an array (or list) of length n. However with Python, it actually becomes rather inefficient to do it that way because you're using memory that you don't need to use until much later (in a relative sense) in the process. In your find_all_ORFs_oneframe, you remove all 0s from the list, which you normally wouldn't need had you initailized the list as an empty list.
- Great work with using Python's built-in list functions! Super awesome that you used filter and lambda functions :-)
- I would advise against using while loops. There are several reasons, but the most basic reason is that using while loops tends to make your code harder to read and follow your logic. I'm perfectly fine with you continuing to use it if you want to, but just my two cents.

Once you've read the comments, make a comment to the pull request or send me/Diana an email, letting us know that you've checked them out. Afterwards, close the PR (and optionally delete the graded branch)

#### REMEMBER NOT TO MERGE THESE PRs!