Σε αυτό το site θα βρείτε πληροφορίες και διαλέξεις για το μάθημα εαρινού εξαμήνου: ΒΙΟΛ-494. Εισαγωγή στον Προγραμματισμό, του Τμήματος Βιολογίας του Πανεπιστημίου Κρήτης.
- Τετάρτη, 17:00-19:00
- Αμφ. Α
Το κύριο μέσο επικοινωνίας με τον διδάσκοντα αλλά και μεταξύ των φοιτητών είναι το περιβάλλον slack: biol-494.slack.com . Σας έχει σταλεί ένα link με το οποίο μπορείτε να μπείτε (invite). Μπορείτε να γραφτείτε με όποιο μέιλ θέλετε (ιδρυματικό ή μη). Μπορείτε επίσης (δεν είναι υποχρεωτικό!) να κατεβάσετε και την εφαρμογή του slack στο κινητό σας.
Το μάθημα αποτελεί μια εισαγωγή στις αρχές του προγραμματισμού Η/Υ με έμφαση στην εκμάθηση σε βασικό επίπεδο της γλώσσας προγραμματισμού Python. H διδασκόμενη ύλη ξεκινά με μια θεωρητική εισαγωγή στις έννοιες των αλγορίθμων και θεωρητικών τεχνικών όπως τα διαγράμματα ροής και ο σχεδιασμός προγραμμάτων με ψευδοκώδικα πριν περάσει σε επιμέρους στοιχεία της γλώσσας προγραμματισμού python. Η διδασκαλία γίνεται με τρόπο τέτοιο ώστε οι διδασκόμενες γνώσεις να εφαρμόζονται σε υπαρκτά προβλήματα ανάλυσης βιολογικών/γονιδιωματικών αλληλουχιών. Με την επιτυχή ολοκλήρωση του μαθήματος ο φοιτητής / τρια θα είναι σε θέση να:
- Σχεδιάσει και να υλοποιήσει απλούς αλγόριθμους ανάλυσης γονιδιωματικών αλληλουχιών αλλά και άλλων βιολογικών δεδομένων.
- Να χρησιμοποιήσει έτοιμα προγράμματα και βιβλιοθήκες ανάλυσης βιολογικών δεδομένων (biopython, pandas).
- Nα προσπελάσει βιολογικές βάσεις δεδομένων και να εφαρμόσει απλή στατιστική ανάλυση.
- Nα αναπαραστήσει γραφικά βιολογικά δεδομένα σε Matplotlib / bokeh / seaborn
- Διάλεξη 1η - 3 Φεβρουαρίου 2021 . Εγκατάσταση jupyter
- Διάλεξη 2η - 10 Φεβρουαρίου 2021 . Basics . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 3η - 17 Φεβρουαρίου 2021 . functions , if . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 4η - 24 Φεβρουαρίου 2021 . lists . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 5η - 3 Μαρτίου 2021 . for + list comprehension . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 6η - 10 Μαρτίου 2021 . while + dictionary + tuples + sets . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 7η - 17 Μαρτίου 2021 . Files + lambda + variable scoping + ternary operator + pass . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 8η - 24 Μαρτίου 2021 . Generators + Import + Command Line + Exceptions + random + collections . jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 9η - 31 Μαρτίου 2021 . Serialization + Itertools + Regular Expressions. jupyter notebook, markdown, pdf
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
- Διάλεξη 10η - 7 Απριλίου 2021 . pandas . jupyter notebook, markdown, pdf, html
- Οι πρόχειρες σημειώσεις της διάλεξης είναι διαθέσιμες ως jupyter notebook, markdown, html, pdf
Ο τελικός βαθμός του μαθήματος θα είναι το 33.3% των βαθμών από τις ασκήσεις, το 33.3% των βαθμών από το project και το υπόλοιπο 33.4% από το τελικό διαγώνισμα στο τέλος του τριμηνου.
Στο τέλος κάθε διάλεξης θα ανεβαίνουν εδώ 10 ασκήσεις σχετικά με την ύλη που παρουσιάστηκε στη διάλεξη.
Συνολικά θα ανέβουν 100 ασκήσεις. Οι ασκήσεις είναι υποχρεωτικές και μετράνε στο 33.3% του βαθμού. Όλες οι ασκήσεις είναι βαθμολογικά ισοδύναμες. Οι ημερομηνίες παράδοσης των ασκήσεων είναι:
- Ασκήσεις 1-20 : 3 Μαρτίου 2021
- Ασκήσεις 21-40 : 19 Μαρτίου 2021
- Ασκήσεις 41-60 : 4 Απριλίου 2021
- Ασκήσεις 61-80 : 18 Απριλίου 2021
- Ασκήσεις 81-90: 2 Μαΐου 2021
- Ασκήσεις 91-100: 31 Μαΐου 2021
Η ώρα που λήγει η διορία είναι η 23:59 της αντίστοιχης μέρας στο Time Zone Anywhere on Earth.
Πως παραδίνουμε τις ασκήσεις: Πριν το τέλος της διορίας παράδοσης στέλνουμε ένα μέιλ στο kantale@ics.forth.gr με τις λύσεις των ασκήσεων μας. Στέλνουμε από το ιδρυματικό μας (@edu.biology.uoc.gr) μέιλ, εκτός αν δεν έχετε (έχετε πάρει το μάθημα από άλλα ιδρύματα μετά από συνενόηση με μένα). Αν δεν έχετε ιδρυματικό μέιλ, καλό θα είναι να το αναφέρετε στο μέιλ σας. Κάτι σαν "Δεν έχω ιδρυματικό μέιλ και ΑΜ". Στο subject του μέιλ γράφουμε το ΑΜ, το όνομά μας και τον αριθμό των ασκήσεων που έχουμε λύσει. Για παράδειγμα: ΑΜ 1234, Κατερίνα Στανίση, Ασκήσεις 41-60
. Στο μέιλ βάζουμε τις λύσεις των ασκήσεων. Κάθε λύση πρέπει να έχει ένα σχόλιο σε python με τον αριθμό της άσκησης που λύνουμε σε αυτή τη μορφή: # Askhsh <Noumero>
. Για παράδειγμα:
# Askhsh 54
print ("Hello!")
# Askhsh 55
print ("This is the solution for ex. 55")
Αν και αυτός είναι ο ενδεδειγμένος τρόπος, μπορείτε αν θέλετε να στείλετε και attachments με .py αρχεία ή .ipynb αρχεία.
- Αν στείλετε .py αρχεία πρέπει να υπάρχει σε σχόλιο ο αριθμός της κάθε άσκησης (όπως και πριν)
- Αν στείλετε .ipynb αρχεία πρέπει να υπάρχει σε σχόλιο ο αριθμός της κάθε άσκησης μέσα στο κελί που έχει τη λύση και όχι σε κελί με markdown.
Για να αποθηκεύσετε μία σειρά ασκήσεων σε .ipynb ή σε .py φορμάτ, πηγαίντε στο Jupyter , File --> Download as -> Python (ή Notebook) και στείλτε μου το σαν συνημμένο:
Αυτά γίνονται γιατί υπάρχει σκριπτάκι που αναλύει αυτόματα τις ασκήσεις σας. Ο βαθμός σας θα σας αποσταλεί με μέιλ περίπου 2 εβδομάδες μετά που στείλετε τις ασκήσεις.
ΠΡΟΣΟΧΗ! Δεν στέλνουμε:
- Αρχεία σε pdf, doc (είναι για κείμενα, όχι για κώδικα)
- Συμπιεσμένα αρχεία
- Screenshots
Για κάθε άσκηση παίρνετε βαθμό: από 1 μέχρι 10. Όλες οι ερωτήσεις/ασκήσεις θεωρούνται ισοδύναμες.
- Η άσκηση βγάζει λάθος αποτέλεσμα και κάποια ψήγματα υλοποίησης έχουν γίνει.
- Η άσκηση βγάζει λάθος αποτέλεσμα αλλά έχει υλοποιηθεί ένα μικρό κομμάτι της λύσης.
- Η άσκηση βγάζει λάθος αποτέλεσμα αλλά έχει υλοποιηθεί ένα σημαντικό κομμάτι της λύσης.
- Η άσκηση βγάζει λάθος αποτελέσματα λόγω πολύ σημαντικών λαθών στη λογική.
- Η άσκηση βγάζει λάθος αποτέλεσμα λογω λαθών στη λογική
- Η άσκηση βγάζει λάθος αποτέλεσμα λόγω μικρών λαθών στη λογική.
- H άσκηση βγάζει σωστό αποτέλεσμα, αλλά όχι για όλα τα πιθανά σενάρια/inputs.
- Η άσκηση βγάζει σωστό αποτέλεσμα, αλλά η λογική σας έχει κάποιο λάθος (συμβαίνει πολλές φορές..).
- Η άσκηση βγάζει σωστό αποτέλεσμα, αλλά υπάρχει μία προφανής πιο γρήγορη/σύντομη λύση.
- Η άσκηση είναι αλάνθαστη. Μπράβο!
Πάλι σε αυτό το site μέχρι το τέλος του Απριλίου θα ανέβουν 10 projects. To projects θα περιέχουν υπαρκτά προβλήματα στη περιοχή της βιολογίας στα οποία καλείστε να απαντήσετε (ή να.. προσεγγίσετε) με python. Τα projects μπορείτε να τα πάρετε είτε σε ομάδες των 2 ατόμων είτε ατομικά. Δεν θα βαθμολογηθούν ηπιότερα οι υλοποιήσεις των projects που έχουν γίνει ατομικά. Δηλαδή όποιος πάρει ένα project ατομικά θα περιμένω να έχει δουλέψει για 2 άτομα! Σε καμία περίπτωση δεν θα δοθεί ένα project σε ομάδα των τριών (ή περισσότερων) ατόμων. Για τη διευκόλυνσή σας το κάθε project θα έχει χωριστεί σε 2 μέρη. Συνίσταται κάθε άτομο να κάνει από ένα μέρος (αν και δεν είναι υποχρεωτικό αυτό).
Η παράδοση του κάθε project θα πρέπει να περιέχει και μία αναφορά με 1000 - 1500 λέξεις με:
- Μία εισαγωγική παράγραφο με τη βιολογική πλευρά και σημασία του προβλήματος.
- Τη γενικότερη φιλοσοφία της λύσης / προσέγγισής σας. Πως δομήσατε τον κώδικα;
- Τα αποτελέσματά σας.
- Μία συζήτηση η οποία να περιέχει: Τι σας δυσκόλεψε; Πως κρίνετε τα αποτελέσματα; Τι θα μπορούσατε να κάνετε καλύτερα; Η βιβλιογραφία πως έχει αντιμετωπίσει αυτό το θέμα; Ποιες άλλες επεκτάσεις υπάρχουν για αυτό το πρόβλημα;
- Η αναφορά θα πρέπει επίσης να έχει 1-2 προτάσεις που να αναφέρουν ποιο μέρος του project ανέλαβε το κάθε μέλος.
Η υλοποίηση θα εξεταστεί με βάση:
- Καθαρός / ευανάγνωστος κώδικας (10%). Θα δοθούν σχετικές οδηγίες αργότερα.
- Λύνει το πρόβλημα, ή δίνει μια καλή προσέγγιση (80%)
- Ποιότητα γραφικών παραστάσεων (5%)
- Αναφορά (5%)
Τα projects θα δοθούν με τη λογική "first come first serve" έτσι ώστε να μην πάρουν όλες οι ομάδες τα ίδια projects! Δηλαδή:
- ΠΡΩΤΑ θα στείλετε ένα μέιλ με τη σύσταση της ομάδας σας (ή ότι θέλετε να πάρετε ένα project ατομικά)
- ΜΕΤΑ θα δημοσιεύσω τα projects μαζί με τον μέγιστο αριθμό από ομάδες που μπορούν να τα πάρουν.
- ΜΕΤΑ θα στείλετε ένα μέιλ που να δηλώνετε ποιο project επιθυμείτε. Σε περίπτωση που το project που επιθυμείτε έχει.. καλυφθεί θα πρέπει να δηλώσετε κάποιο άλλο.
Ημερομηνία παράδοσης των projects είναι 31 Μαΐου 2021. Δηλαδή θα έχετε ένα μήνα (Μάιο) για να το υλοποιήσετε.
Το τελικό διαγώνισμα μετράει στο 33.4% του βαθμού. Υπάρχει μία πολύ μικρή περίπτωση να επιτραπεί η δια ζώσης εξέταση για αυτό έχω φτιάξει το εξής.. διάγραμμα ροής για τη τελική εξέταση:
- Αν επιτραπεί η δια ζώσης εξέταση (πολύ μικρή πιθανότητα..). Θα έχετε δύο επιλογές (ο καθένας δηλαδή μπορεί να διαλέξει).
- Ή να έρθετε με τα laptop σας και να λύσετε δύσκολα θέματα με ανοικτές σημειώσεις + Internet. Αν έρθετε με τα laptop σας φροντίστε η μπαταρία να μπορεί να διαρκέσει 3 ώρες! Δεν θα δεχτώ δικαιολογία του στυλ: "μου τελείωσε η μπαταρία".
- Ή να λύσετε πιο εύκολα θέματα με κλειστές σημειώσεις σε μία κόλλα χαρτί.
- Αν δεν επιτραπεί η δια ζώσης εξέταση (πιο πιθανό), τότε η εξέταση θα γίνει από το.. σπίτι σας με τον εξής τρόπο: Μία μέρα πριν την εξέταση θα σας δοθεί μία συνάρτηση σε python στην οποία βάζετε τον αριθμό μητρώου σας και επιστρέφει 10 τυχαίους αριθμούς χωρίς επανάληψη από το 1 μέχρι το 100. Την ώρα της εξέτασης θα σας δοθούν.. 100 θέματα! Εσείς Θα πρέπει να λύσετε τα 10 τα οποία έβγαλε η συνάρτηση μέσα σε 3 ώρες. Δεν θα πρέπει να έχετε ανοικτές κάμερες ή κάτι τέτοιο, επιτρέπεται το Internet, ανοικτές σημειώσεις κτλ.. Φυσικά δεν επιτρέπεται η.. αντιγραφή.
- Python: Notes for professionals book
- Practical Python Programming from David Beazley
- Beginner's Python Cheat Sheets
- Non-beginner's python cheat sheet
- CS61A: Online Textbook . Ευχαριστώ τον Ιωάννη-Ραφαήλ Τζονευράκη για το link.
- NumPy
- The official Python Tutorial
- Automate the Boring Stuff with Python Practical programming for total beginners. Written by Al Sweigart. Free to read under a Creative Commons license.
- A beginner's python tutorial
- EbookFoundation free-programming-books on python
- Jupyter notebooks for teaching/learning Python 3
- A Python course that takes beginners seriously
- Python Computing for Data Science
- Γιατί jupyter; https://www.nature.com/articles/d41586-018-07196-1
- pythoncheatsheet . Πολύ καλό και "συμπαγές" σημείο αναφοράς. Χρήσιμο όταν έχεις ξεχάσει πως γίνεται κάτι.
- 28 Jupyter Notebook tips, tricks and shortcuts - Dataquest. Ευχαριστώ τον Thimo Kristani για το link.
- Scipy
- Paper στο Nature για το scipy published: 3 February 2020
- scipy lectures
- Challenges:
- Scientific Python Cheatsheet
- Matplotlib Cheatsheet
- Pandas:
- Python Programming And Numerical Methods: A Guide For Engineers And Scientists
- Python & APIs: A Winning Combo for Reading Public Data
- Regular Expressions