= Programming in Python (for quantitative biologists) = == Learning objectives and expected learning outcomes == The course introduces students to imperative programming by referring to the Python language. The course is divided in two parts: 1. Python and its object-oriented features; 1. Python libraries that can be useful in scientific computation and data analysis, in particular [https://numpy.org/ NumPy] and [https://pandas.pydata.org/ pandas]. Students will acquire the ability to write and tune a program that automatizes simple computational tasks; they will be able to understand how a small piece of Python code works, to find the reasons of a malfunction and to correct it appropriately. Moreover, students will be able to use the [https://numpy.org/ NumPy] and [https://pandas.pydata.org/ pandas] library to analyze tabular data. == A.A. 2022/23 == The course will take place in the first semester. Currently, we expect to lecture on-premises, lectures will NOT be streamed. You can find some videos from last year course in the 2020/21 web page linked below. Since November 29, the lectures on both Tuesdays and Thursdays are in room G15. [https://easystaff.divsi.unimi.it/PortaleStudenti/index.php?view=easycourse&form-type=attivita&include=attivita&anno=2022&attivita%5B%5D=ECF5B-5_1&visualizzazione_orario=cal&periodo_didattico=&_lang=en&list=0&week_grid_type=-1&ar_codes_=&ar_select_=&col_cells=0&empty_box=0&only_grid=0&highlighted_date=0&all_events=0&faculty_group=0# Official Timetable] ||= Lessons Rooms Farina (Tu), G15 (Th) (40h) =||Th_6/10 Tu_11/10 Th_13/10||Tu_18/10 Th_20/10||Tu_25/10 Th_27/10||Th_3/11 Tu_8/11 Th_10/11 Tu_15/11||Tu_22/11 Th_24/11 ||Tu_29/11 Th_1/12||Tu_6/12 Tu_13/12 Th_15/12||Tu_20/12 Tu_10/1|| ||= Labs, Room Delta (16h) =|| Fr_14/10|| Fr_21/10|| Fr_4/11|| Fr_18/11|| Fr_25/11|| Fr_2/12|| Fr_16/12|| Fr_13/1|| ||= Setup =|| Scaffolded |||||| Plain Python interpreter |||||||| Notebooks || === Exams === * [https://docs.google.com/spreadsheets/d/e/2PACX-1vTn8UXjs5L5QaOXWhXAm1NUvTlmRS10iGHRw63hiq5JmEMNcHC_WqhoblFYfeLyGfNINz0_EYl0qkGf/pubhtml?gid=119669032&single=true September 6 Results] [https://github.com/pyqb2022/pyqb-20230906 Exam text] * [https://docs.google.com/spreadsheets/d/e/2PACX-1vTkAWdTrtRa19jyiLgNrJI3vRBUBNIs0fsur6QrsiFqyOxQ-T016fbOb4oSWFBb_kjfRWQLaptl9hp1/pubhtml?gid=119669032&single=true June 21 Results] [https://github.com/pyqb2022/pyqb-20230621 Exam text] * [https://docs.google.com/spreadsheets/d/e/2PACX-1vTDgawppMv9eOyJPAFBGFl6qYjDqpddmqLsNfZ0j36FupZFK1GVu5pe9SDTeoP-siggcnVMF4MzwEqi/pubhtml?gid=119669032&single=true February 22 Results] [https://github.com/pyqb2022/pyqb-20230222 Exam text] * [https://docs.google.com/spreadsheets/d/e/2PACX-1vTq0qHHyy7BwBtF54NUmyTv83GodBKN_PaHKlByFAOCxz0W25wXSB4t5FOAjNNsN8dQ3NUKYKkCXUy3/pubhtml?gid=119669032&single=true February 8 Results] [https://github.com/pyqb2022/pyqb-20230208 Exam text] * [https://docs.google.com/spreadsheets/d/e/2PACX-1vRFzTiMdgmUWrHvA47ZSSyXtguaz9P-OsBZ-M4apNA0LBG78kRxuMNIpmkQef6_y5_aGWyYDwYUvoub/pubhtml?gid=119669032&single=true January 25 Results] [https://github.com/pyqb2022/pyqb-20230125 Exam text] === Syllabus === * The Python programming language. * Native data types. * Functions, selections and iterations. * Basic data structures: lists, tuples, dictionaries. * Object-oriented encapsulation. * Iterators and generators. * Files. * Numpy multi-dimensional arrays and matrices. * Data manipulation and analysis with pandas. Any Python3 book can be used to support the learning of the general part, for example [https://link-springer-com.pros.lib.unimi.it/book/10.1007%2F978-3-030-20290-3 J. Hunt "A Beginners Guide to Python 3 Programming"] (The electronic version is free for Unimi students). [https://numpy.org/ NumPy] and [https://pandas.pydata.org/ pandas] have excellent online documentation. The examination is based on laboratory exercises. A final mark (on a 30 point scale) is given, by taking into account the knowledge of the subject and tools, and the clarity of the solutions. [[PageOutline]] == 2022/23 == === 1. October 6 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb01.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb01-handout.pdf Handouts for printing] * [https://python.di.unimi.it/ CS Circles @ Unimi] === 2. October 11 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb02.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb02-handout.pdf Handouts for printing] === 3. October 13 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb03.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb03-handout.pdf Handouts for printing] === 4. October 14 8:30 Lab Delta === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb04.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb04-handout.pdf Handouts for printing] * [https://classroom.github.com/a/I3pCS400 Homework triangle-one] === 5. October 18 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb05.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb05-handout.pdf Handouts for printing] * [https://classroom.github.com/a/w8eFXVbn Homework count-chars] === 6. October 20 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb06.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb06-handout.pdf Handouts for printing] === 7. October 21 8:30 Lab Delta === * [https://classroom.github.com/a/Y3WMYzWL Triangle kinds] * [https://classroom.github.com/a/yOLvBo0S DNA Hamming] * [https://classroom.github.com/a/njrfO_0d Newton square root] * If you want to understand a bit more of git and github you can also try [https://classroom.github.com/a/GFnJXjM2 this] === 8. October 25 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb07.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb07-handout.pdf Handouts for printing] * [https://classroom.github.com/a/mWx3UuAF Pythagorean triplets] * [https://classroom.github.com/a/MWFpT_Zk Flatten list] * [https://classroom.github.com/a/vDgCX-_B Eels] === 9. October 27 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb08.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb08-handout.pdf Handouts for printing] * [https://classroom.github.com/a/Dr_-Kddj DNA fasta files] === 10. November 3 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb09.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb09-handout.pdf Handouts for printing] * [wiki:GuessANumber Guess a number code] === 11. November 4 8:30 Lab Delta === * [https://classroom.github.com/a/7FmZ8d8u Sonar] * [https://classroom.github.com/a/rwMRvEs5 DNA forensics] === 12. November 8 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb10.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb10-handout.pdf Handouts for printing] === 13. November 10 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb11.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb11-handout.pdf Handouts for printing] === 14. November 15 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb12.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb12-handout.pdf Handouts for printing] * [https://classroom.github.com/a/0Vc-7zYm Numpy basics] === 15. November 18 8:30 Lab Delta === * [https://classroom.github.com/a/f7CdhBWN Numpy 2] === 16. November 22 10:30 Room Farina === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb13.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb13-handout.pdf Handouts for printing] === 17. November 24 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb14.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb14-handout.pdf Handouts for printing] === 18. November 18 8:30 Lab Delta === * [https://classroom.github.com/a/PAXLqnNc Life] === 19. November 29 10:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb15.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb15-handout.pdf Handouts for printing] * [https://classroom.github.com/a/aSX8zZ_j Gray-Scott models] === 20. December 1 8:30 Room G15 === * [https://classroom.github.com/a/cVTsdZ66 Images and edge detection] === 21. December 2 8:30 Lab Delta === * [https://classroom.github.com/a/PFar61HR Numpy & images] === 22. December 6 10:30 Room G15 === * [https://classroom.github.com/a/p2BT93lC Lotka-Volterra models] === 23. December 13 10:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb16.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb16-handout.pdf Handouts for printing] === 24. December 15 8:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb17.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb17-handout.pdf Handouts for printing] === 25. December 16 8:30 Lab Delta === * [https://classroom.github.com/a/pXxNffDo Pandas Howell] === 26. December 20 10:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb18.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb18-handout.pdf Handouts for printing] === 27. January 10 10:30 Room G15 === * [https://homes.di.unimi.it/monga/lucidi2223/pyqb19.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2223/pyqb19-handout.pdf Handouts for printing] === 28. January 13 8:30 Lab Delta === * [https://classroom.github.com/a/-TWjfIov Pymc Howell] ([https://github.com/monga-didattica/solution-pymc-howell My solution]) == [=#old Previous years] == * [wiki:WikiStart@132 A.A. 2021/22] * [wiki:WikiStart@79 A.A. 2020/21]