ONA 2017 – Zajęcia 1 – Arytmetyka

Slajdy do wykładu można znaleźć tu:  Slajdy

Uwaga nt. liczb całkowitych. Obecnie python3 ukrywa zupełnie przed nami fakt istnienia ograniczeń wielkości rejestrów przy operacjach na liczbach całkowitych. Aby zobaczyć jak to działa, warto uruchomić interpreter python2.7 i wykonać operacje na dużych liczbach.

Pracujemy w narzędziu python3 (nie w octave) i wykonujemy zadania inspirowane zadaniami z labu 3 do metod numerycznych. Zachęcam do użycia interpretera ipython3. Nieco więcej technicznych szczegółów jest też dostępne w materiałach do wykładu z metod numerycznych.

W szczególności:

Policz epsilon maszynowy (zarówno jako wartość dziesiętną ale też liczbe bitów cechy binarnej przy pomocy sprawdzania dla jakich n 1.0+2.0**(-n) >1.0. Co by się stało, gdybyśmy wykonali tę próbę w okolicy 0.0 zamiast 1.0. Czy taki epsilon maszynowy zależy od liczby bitów cechy, czy mantysy?

Zastanów się nad zadaniem z szeregami zbieżnymi (lub rozbieżnymi) numerycznie. Zaimplementuj liczenie sum S(n) w pythonie, dla dowolnego n i dla kilku szeregów podanych w rozwiązaniu. Które z nich można dokładnie policzyć pry użyciu modułu Fractions?

Policz wartości e(x) wg rozwinięcia wzoru Taylora dla zadanego maksymalnego stopnia. Porównaj różnicę wyniku jaki otrzymujesz dla x=-90 i x=2.

Policz sumy częściowe szeregu harmonicznego przy użyciu liczb zmiennoprzecinkowych i przy użyciu modułu Fractions. Porównaj wyniki.

Napisz funkcję znajdującą miejsca zerowe dla dowolnej funkcji w przedziale [a,b] ( def zero(f,a,b):) metodą bisekcji.  Sprawdź jak ona działa dla różnych równań typu 1/x-c.

APB – kryteria i procedura zaliczenia

Zbliża się koniec semestru, więc czas na ostateczne szczegóły zaliczenia. Zgodnie z zapowiedziami, do elementów zaliczenia należą:

  1.  Wykonanie referatu
  2. Małe zadanie lab. (pull request)
  3. Prezentacja projektu zespołowego
  4. Duże zadanie lab. (osobisty wkład w rozwój projektu zespołowego)

Aby zaliczyć przedmiot, trzeba zaliczyć wszystkie 4 elementy, przy czym punkt 2 nie wpływa na ocenę (jest tylko na “zal”), a ostateczna ocena będzie średnią ważoną punktów 1, 3 i 4, przy czym wkład prezentacji (punkty 1 i 3) jest mniejszy (po 25%) a samego projektu (pkt. 4) większy (50%). Oceny za punkty 1 i 4 są indywidualne (mogą być osoby o różnym wkładzie w ten sam projekt) o tyle prezentacja całego projektu jest oceniana zespołowo (niezależnie od tego, czy wszyscy brali udział w prezentacji, czy np. tylko wybrane osoby z zespołu).

Prezentacje odbędą się na ostatnich zajęciach laboratoryjnych (23. stycznia o 12:15 w labie), każdy zespół ma 30 minut na opowiedzenie o swoim projekcie. Powinna to być prezentacja adresowana do pozostałych uczestników jako potencjalnych użytkowników stworzonego pakietu. Można inspirować się dobrymi i złymi przykłądami tego typu prezentacji z konferencji BOSC (np. tu ). Prezentacja jest warunkiem koniecznym zaliczenia, nawet jeśli zespół ma problemy z ukończeniem projektu. Chciałbym, aby podczas prezentacji poruszone zostały następujące kwestie:

  1. Po co ten projekt?
  2. Co się udało?
  3. Jak to zrobiliśmy?
  4. Jak to przetestowaliśmy?
  5. Jak  to udokumentowaliśmy?
  6. Przykład zastosowania w działaniu (live demo, albo case study)
  7. Credits, czyli kto co zrobił

Na podstawie ocen z zajęć, każdy będzie miał zaproponowaną ocenę “wyjściową”, którą będzie mógł/mogła poprawić (lub w przypadkach skrajnej ignorancji – pogorszyć) na egzaminie ustnym, którego termin proponuje 30. I 2017, ale można też ustalać indywidualnie w sesji. Aby uzyskać ocenę powyżej 4, konieczny jest udział w egzaminie ustnym.

Zagadnienia na egzamin w kolejności malejącej ważności:

  1. Technologie zarządzania wersjami kodu i dzielenia się nimi (RCS, CSV, SVN, GIT, GITHUB, itp.
  2. Instytucje wspomagające rozwój oprogramowania open-source i  licencje oprogramowania (OBF, SPI, GNU, GPL, BSD, itp)
  3. Reproducible research: idee i technologie wspierające (m. in. pakiety literate programming typu sweave)
  4. Rola oprogramowania typu LIMS i Workflow management w reproducible research
  5. Oprogramowanie open source dla potrzeb bioinformatyki (projekty BioX)
  6. Pakiety do obliczeń naukowych i wizualizacji
  7. Przeglądarki genomowe

Idea egzaminu jest taka, że student na zapytanie o dowolny z tych tematów, powinien być w stanie streścić co było na danym wykładzie w kilku sensownych zdaniach i odpowiedzieć na podstwowe pytania w zakresie tego co było na wykładzie (np. różnice między licencjami, zalety i wady narzędzi do wersjonowania kodu, itp).

Termin egzaminu: 10. lutego 2017.

APB wykład 3

Dzisiaj Na wykładzie mówliśmy o przeglądarkach genomowych. Slajdy dostępne są tu: wyk3-browsers . Zaległe slajdy z poprzedniego tygodnia są tu: wyk2-bioX

Na ćwiczeniach będziemy przygotowywać się do zrobienia zadania 1. Zachęcam w związku z tym do założenia sobie konta w serwisie github. Następnie do wybrania sobie projektu (np. biopython, albo któryś z projektów mojej grupy dostępny na github.com/regulomics). Następnie stworzenia “rozwidlenia” (ang fork) tego projektu, ściągnięcia go do siebie, wykonania poprawki i wrzucenia poprawionej wersji na swoje konto w serwisie github, a następnie do wykonania pull requestu.

APB – linki dla uczących się programowania

Osoby,  które nie miały dotąd szansy nauczenia się programowania, zachęcam do pracy we własnym zakresie.

Można skorzystać z samouczków pythona:

  • https://www.codecademy.com
  • www.learnpython.org
  • http://codingbat.com/python

i wielu innych

Polecam robienie zadań z serwisów:

  • davinci.mimuw.edu.pl
  • rosalind.info
  • http://projecteuler.net/

i podobnych

Materiały do nauki programowania znajdą Państwo również tu:

  • http://wazniak.mimuw.edu.pl/index.php?title=Wst%C4%99p_do_programowania
  • http://davinci.mimuw.edu.pl/samouczek-python/python

Kilka zadań jest też dostępnych na stronie zajęć z poprzedniego roku (u dołu strony).

http://www.mimuw.edu.pl/~pawel.bednarz/apb.html