The emphasis of the course is on learning and mastering the skills covered. The grade for the course will be divided into 3 components:
- Online course work, AKA homework. Completion of the suggested courses on Datacamp (described below) will provide up to 15% of the grade
- A "mini project" during the course, submitted using github will provide up to 10% of the grade
- The remaining 75% of the grade is based on the final project submitted via github
If some of the material appears unclear, please ask for clarification.
By April 23rd, you must complete 41 hours of a career track on Datacamp. The [python programmer] track is recommended as it covers the content taught during the course, provides exercises to practice the newly learned skills, and covers additional material that we do not have time to cover in class.
Note that to complete this career track for your own benefit there are a further 11 hours of courses that you are not required to complete for this class.
Please use the schedule below as a guide for what you should have covered in this career track and by when:
-
2020-02-13
- Introduction to shell (prioritize sections 1-4)
-
2020-02-20
- Conda essentials (prioritize sections 1 and 3)
-
2020-02-27
- Introduction to python
-
2020-03-05
- Intermediate python
-
2020-03-12
- Python data science toolbox (1)
-
2020-03-19
- Python data science toolbox (2)
-
2020-03-26
- Cleaning data in python
-
2020-04-02
- Pandas foundations
-
2020-04-09
- Manipulating dataframes with pandas
-
2020-04-16
- Merging dataframes with pandas
-
2020-04-23
- Hard deadline for datacamp material. All material by this time will count towards that component of the class grade.
Some details regarding the final project:
- Pick a project that is interesting to you. You’ll find it easier to work on if you think it is fun or solves a problem that you have encountered in your daily work. Regarding content the sky is the limit.
- The project should be setup as a fork of (and pull request to) the project template
- Record your plans on github as you go
- Pay attention to what your minimally viable product is so that if you only achieve that you will at least have something to show for your efforts.
- Pay attention to the rubric listed below
- Not creating a formal python package is acceptable but must be justified.
- Joint projects are looked upon favorably.
- Breadth of python skills will be noted.
- Having commits from instructors is fine (though you don't get points for such beautiful code).
- Try to show weekly improvement (on github) during the final weeks
Grading the final project will be done using the following rubric:
- Goals for the project are discussed and placed in the context of pre-existing work. This could take the form of other python projects or indeed software in any language. Not reinventing the wheel is an important result of good planning (0-5)
- Comments are embedded in the code or Objects/functions have docstrings (0-5)
- Comments and docstrings are used (6-10)
- Documentation is thorough both in the readme and in the code itself aiding interpretation of the project (11-15)
- The code is poorly organized and difficult to interpret (1-10)
- Basic organization and modularity of the code is present (11-20)
- Careful organization of the code (commented, well-named variables in well-named functions in well-named modules, in a package if appropriate), coupled with attention to style guides for python. (21-30)
Marks will not necessarily be lost for failing tests.
- Tests should cover a significant fraction of the python code used. (0-10)
- Tests have aided development and have helped discover bugs in the code (11-20)
- The code technically works but does not show evidence of engagement (1-5)
- The project checks the boxes in the rubric effectively and is nicely implemented (6-10)
- The code attempts to solve a real-life problem, shows great progress both inside and outside class over the weeks of the project (11-20)
- The project is a roaring success. It's amazing to see what you can now do with python! You have earned the title of pythonista (21-30)