GithubHelp home page GithubHelp logo

mustafaascha / ctib Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mailund/ctib

0.0 2.0 0.0 20.25 MB

Lecture notes and material for Computational Thinking in Bioinformatics

Jupyter Notebook 99.62% Python 0.38%

ctib's Introduction

Computational Thinking in Bioinformatics

Lecture notes and material for the class Computational Thinking in Bioinformatics at the Bioinformatics Research Centre, Aarhus University.

Week 1: Computational thinking

Lecture:

  • Problem domain / models / goals and problems / solutions / implementations

Exercises:

  • Introduction to Python programming and Jupyter notebooks.
  • Branching and looping (JVG 2 + 3)

Besides the lectures and exercises, we could recommend a basic online course in Python programming that could be followed and maybe have some of the exercises in relation to this.

Week 2: Algorithm analysis

Lectures:

  • Correctness and complexity
  • Pre- and post-conditions and invariants -- exemplified by e.g. different sorting algorithms
  • O-notation and reasoning about complexity

Exercises:

  • Functions (JVG 4)
  • Basic data structures (JVG 5)

Week 3: Implementing algorithms

Lectures:

  • Translating ideas into code by breaking them down to the right level of abstraction
  • Running time in practise

Exercises:

  • Testing and debugging (JVG 6)
  • Plotting (JVG 11.1)
  • Complexity (JVG 9)

Week 4: Algorithmic design

Lectures:

  • Pre- and post-conditions and invariants revisited
  • Recursion
  • Divide and conquer
  • Dynamic programming

Exercises:

  • Dynamic programming examples (JVG 13)

Week 5: Data structures and trees

Lectures:

  • Representing trees as lists
  • Traversing trees, e.g. DFS for outputting a tree

Exercises:

  • Implementing a tree representation
  • Potentially a Newick parser
  • DFS traversal and outputting a tree

Week 6: Data structures and graphs

Lectures:

  • Representing graphs as incidence lists or matrices

Exercises:

  • Classical graph algorithms (JVG 12.2)

Week 7: Complexity of problems

Lectures:

  • Problem complexity versus solution (algorithm) complexity
  • NP-hardness

Exercises:

???

Week 8: Guided project; building a bioinformatics tool;

Lectures:

  • gene finding,
  • sequence data,
  • FASTA format

Exercises:

  • Parsing a FASTA file

Week 9: Guided project; methodology and algorithms

Lectures:

  • HMMs, automata, languages

Exercises:

  • Representing an HMM
  • Computing the likelihood of a HMM

Week 10: Guided project; building a bioinformatics tool; implementation

Lectures:

  • machine architecture
  • representation of numbers

Exercises:

  • Log-space and scaling likelihood computations

Week 11: Guided project; building a bioinformatics tool; training (optimization)

Lectures:

  • Training by counting (maximum likelihood estimation for an HMM)

Exercises:

Training by counting

Week 12: Guided project; experimental validation

Lectures:

  • How to statistically validate correctness
  • How to (statistically) validate running time

Exercises:

  • Validation of implementation

Week 13: Other programming languages and systems

Lectures:

  • Direct translation of simple python code to C

Exercises:

  • Re-implement likelihood computations i C
  • Compare running time

Week 14: Other programming languages and systems II

Lectures:

  • HMMs as matrix-vector operations

Exercises:

  • Implement in numpy as matrix vector operations
  • Compare running time

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.