Events News Research CBS CBS Publications Bioinformatics
Staff Contact About Internal CBS CBS Other

Python and Unix for Bioinformaticians - #27610

10 points course, Spring 2016
IMPORTANT - do preparation for the course.

DTU's Studies Handbook about #27610

Time: Course starts January 30, 2016 and runs Mondays 13.00 - 17.00 and Thursdays 9.00-12.00
Module: F2-A and F2-B
Place: Aud. 142/148 in building 210, both days
Language: English
Evaluation form: Exercises during the course 25%. Project during the course 25%. 4 hour written examination 50%, no books or notes allowed, but some pages of abbreviated python will be available.
Exam date: 9.00 - 13.00, May 16, 2017
Exam location: Building 308, room 127, 117, 109, and 101
Teacher: Peter Wad Sackett, pws@cbs.dtu.dk
Signing up: "Normal" DTU students sign up the normal way. other students check here, and/or ask the study administration. Signing up for a course has nothing to do with the teacher and everything to do with the DTU study administration.
Tools: See top link: Preparation for the course. A more general guide is Optional software for the course for your own computer. MobaXterm or VirtualBox with a linux installation is strongly recommended, if you dont have a Mac or Linux already.
Textbooks: There are no text books for the course. I will make do with powerpoints and references to online resources. You can find the material under the individual lessons.

  • Clean Code by Lukasz Dynowski. An amazing read that is mandatory. Read it once around lesson 4 and once more around lesson 8.

  • Coursera course: Programming for Everybody is a beginner course in Python. Everyone who wants to prepare for course 27610 can start here. Just get far enough so you understand what programming is and how it works. That will benefit you a lot as a newbie. Coursera textbook.
  • Learning Python, 5th ed. by Mark Lutz (O'Reilly) ISBN: 978-1-449-35573-9
    This is the best Python book I have read. It covers all the basics and then some. All from the perspective of being a novice programmer. However, it is a brick; big, heavy and unwieldy. If you only want one Python book, then this should be the one. The course will not be taught from this book, but it could be good to have if you really want to do something with Python. Again, you can always find info on the net.
Some online Unix/Python resources:
Online tutorial on unix
Python for Non-Programmers
Official Python 3 tutorial
Python 3 reference manual
Python 3 standard library

A fun read: Top 12 reasons you know you are a Big Data biologist
Lesson for the beginner: How programming and your life is similar
What most schools don't teach: But you are taught in this course

Go to China for Msc: powerpoint and document

Grading
How the exam is conducted

Exercises
Exercises has to uploaded to "DTU inside - Assignments" Saturday before the next lesson on Monday or before. Word or pdf documents are NOT accepted - use only simple .txt or .py As stated the exercises count as a part of the final evaluation. Exercises which are given in after the solutions are published on CampusNet, are voided and will not count in the evaulation, no matter the reason for being late. The difficulty of the exam is such that in order to be able to pass you probably have to get a average score of 70% or better in the exercises. The course is a hands-on course in programming with a focus on "Learning by doing". So if you are not doing (exercises) you are not learning anything and can not pass the exam.
Purple exercises has to be done in pseudo code before you start implementing them in Python. The pseudo code is part of the hand-in for these exercises. So - make first pseudocode AND then real python programs for purple exercises.
Red exercises are part of the peer evaluation. They must be uploaded here, BUT they are also to be handed in together with the other exercises.
Exercise Delivery Status for Course Participants

Solutions to exercises
Solutions to each week's exercises are published before the next lesson on DTU inside (file sharing for this course).

Peer evaluation
Every week you should upload your solution to one of the weeks exercises. The exercise is the red one - there can be no mistake. No red excercise - no upload. In the following week the class will vote for the best solution. Both the upload and the voting are anonymous but tracked.
Doing this is actually one of the learning objectives of the course; Learning to read other peoples code, and write good understandable code yourself.
See the peer evaluation page.

Reading ahead and using not yet covered techniques
Sometimes people read ahead in the text book or the net and discover some techniques, that makes solving the exercises much easier. While you should learn whatever you can, then there is a reason for why the exercises are as they are, and the learning material (powerpoint) is a it is. A very important part of the course is to learn how program, how to think "programming", how to analyse a problem, how to formulate a strategy/workflow/algorithm that will solve the problem. If you just pull a magic rabbit out of the hat, then you are not learning that, and you will be doing yourself an enormous disservice.
By not thinking - structuring the code more logically - gaining insight in the natural flow of problem solving, you will lack those skills - that mindset - when you really need it to solve more difficult exercises and/or problems.
Python is full of rabbits, so it is rather tempting, but damaging to use them during the course. You will have plenty of opportunity later in the project to show techniques and skills.

Projects
Everybody has to do an individual project during the course. See the list here.

Lessons
and who should make cake.

  1. 30/01 UNIX Teachers
  2. 02/02 Python Basics
    03/02 Voluntary extra time for exercises and questions, 10.30 - 14.30, aud 062, build 208
  3. 06/02 Python Simple file reading Sule, Alexander Kruh??ffer, Line Andresen
    09/02 Pseudocode and comments - Powerpoint here
  4. 13/02 Python I/O Sanne, Annie, Anna Henius
    16/02 Continuing lesson
  5. 20/02 Exceptions and Bug Handling Alexander Pil, Taner, Leo
    23/02 Stateful parsing
  6. 27/02 Lists/Sequences Katrine, Joachim, Niels
    02/03 Midterm evaluation, part 1
  7. 06/03 Pattern Matching and Regular Expressions Natasha, Ole, Ida
    09/03 Midterm evaluation, part 2
  8. 13/03 Sets and Dictionaries Alvaro, Aimilla, Annette
    16/03 How to python and Project Intro
  9. 20/03 Python Functions and start of Project Hans-Christian, Nicoline, Alejandro
    23/03 Continuing lesson
  10. 27/03 Python and Advanced Data Structures Caroline, Xiaochen, Rasa
    30/03 Random numbers
  11. 03/04 Comprehension and Generators Eirini, Xenia, Anna Pors
    06/04 Continuing lesson
    20/04 Runtime evaluation of algorithms (Thursday)
  12. 24/04 Useful Functions and Methods Kirstine, Veronika, Maria
    27/04 Continuing lesson
  13. 01/05 Q/A Session
    04/05 Repetition and Project work.
  14. 08/05 The project is given in at 15.00 on Campusnet