Code Monkey home page Code Monkey logo

biof509's Introduction

Syllabus

BIOF509 - Machine Learning and Object-Oriented Programming with Python

Spring 2016

Instructors:

First class: 4th February 2016

Final class: 12th May 2016

This document is subject to revision. Last revised 2nd Feb 2016.

Course Description

Learning Objectives

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

  1. Create working python programs using the basic features of the python language together with numpy, pandas, and biopython (A brief refresh)
  2. Demonstrate the tools commonly used in professional settings to aid development
  3. Compare different programming paradigms including procedural, functional and object oriented.
  4. Define what an object is in the context of programming
  5. Identify the features of an object definition
  6. Contrast attributes, properties and methods
  7. Review special methods
  8. Design a public interface for a class
  9. Utilize inheritance and abstraction
  10. Choose when and how to raise and handle exceptions appropriately
  11. Describe the common types of machine learning tasks
  12. Implement a simple linear regression model utilizing numpy
  13. List the advantages and disadvantages of different machine learning algorithms
  14. Apply machine learning algorithms for both regression and classification
  15. Convert a data set into a form suitable for use by machine learning algorithms
  16. Apply dimensionality reduction to a data set for visualization and further processing
  17. Identify subpopulations using clustering algorithms
  18. Choose appropriate model parameters
  19. Evaluate the results of a machine learning model
  20. Integrate a machine learning model in a workflow

Logistics

This is a 15 week course starting on the 4th February 2016, and finishing on 12th May 2016. Classes will take place between 5:30pm and 7:30pm each Thursday in building 10, room B1C207 within the FAES Academic Center.

Attendance in class is strongly recommended; however, we realize other commitments will occasionally prevent attendance. Class materials will generally be sent to all learners via email.

Most classes will have hands-on tutorials and assignments. Both practice and graded assignments will generally be provided. Graded assignments should be submitted prior to the following class. So that you can follow along during class bringing a laptop to each class is strongly encouraged.

Important dates:

  • 04 Mar 2016 - Last day to drop/withdraw
  • 08 Apr 2016 - Last day to change status (credit or audit)

Required Materials

Each student is encouraged to bring their own laptop to each class. For the course, we will use Python 3. Any python installation should work, but you must be able to install packages. The Anaconda Scientific Python Distribution from Continuum Analytics will likely be the easiest approach to configuring python if you do not already have python installed. The Anaconda installer will automatically install many of the packages we will use during the course.

Recommended Books

There is no required textbook for this course.

We will link to relevant online resources throughout the course.

If you would like a refresher on the basics, the following resources may be useful:

  • Learn python the hard way (ebook freely available from the author) <http://learnpythonthehardway.org/book/>_ by Zed A. Shaw. A video course is also available <http://learnpythonthehardway.org/>_.
  • Think python (ebook freely available from the author) <http://www.greenteapress.com/thinkpython/thinkpython.html>_ by Allen B. Downey.

The following books cover some of the same material we will cover during the course. These books are not required, and presented solely as an alternative starting point covering the course objectives.

  • The Elements of statistical learning (ebook freely available from the authors) <http://statweb.stanford.edu/~tibs/ElemStatLearn/>_ by Trevor Hastie, Robert Tibshirani, and Jerome Firedman.
  • Python Machine Learning <http://sebastianraschka.com/books.html>_ by Sebastian Rashka.
  • Python 3 Object Oriented Programming <https://www.packtpub.com/application-development/python-3-object-oriented-programming>_ by Dusty Phillips

Assignments and Grading

The emphasis of the course is on learning and mastering the skills covered. It is our hope that everyone will be able to complete the assignments and project. If some of the material appears unclear please ask for clarification.

Grading assignments will follow the following rubric:

  • Program runs, produces correct result, contains useful comments, meaningful variable names, follows coding conventions: A+
  • Program runs, produces correct result: A
  • Program runs, produces something close to the correct result: B
  • Program runs, does not produce correct result: C
  • Program does not run: Incomplete (I)

Grading the final project will follow 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 from the github repository <https://github.com/streety/biof509>_.

Schedule

Week 1 (04 Feb 2016): Course overview, troubleshooting software installation, and a refresher on the basics of python

Week 2 (11 Feb 2016): The tools used to aid developemt. Recording experiments performed. Our first machine learning model.

Week 3 (18 Feb 2016): Different programming paradigms, including object-oriented programming. The class definition - Attributes, properties, methods, and special methods.

Week 4 (25 Feb 2016): Inheritance and abstraction. Graphical User Interfaces (GUIs)

Week 5 (03 Mar 2016): Crafting the public interface. Choosing when and how to raise and handle exceptions.

Week 6 (10 Mar 2016): WSGI as an example interface. Creating web applications.

Week 7 (17 Mar 2016): Common machine learning tasks.

Week 8 (24 Mar 2016): Linear regression with numpy. Overview of scikit-learn.

Week 9 (31 Mar 2016): Dataset preprocessing.

Week 10 (07 Apr 2016): Dimensionality reduction and clustering

Week 11 (14 Apr 2016): Regression and classification.

Week 12 (21 Apr 2016): The machine learning workflow.

Week 13 (28 Apr 2016): Advanced ML tasks.

Week 14 (05 May 2016): Project presentations.

Week 15 (12 May 2016): Project presentations.

biof509's People

Contributors

brienna avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.