= 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. 2023/24 == 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. [https://easystaff.divsi.unimi.it/PortaleStudenti/index.php?view=easycourse&form-type=attivita&include=attivita&anno=2023&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] The course will have a total of 40 hours of lessons (Tuesdays and Thursdays) and 16 hours of lab practice (Fridays). The exact schedule will be announced during the lessons (the first lesson is on October 3). === 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]] == 2023/24 == === 1. October 3, 10:30 Room Jommi === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb01.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb01-handout.pdf Handouts for printing] * [https://python.di.unimi.it/ CS Circles @ Unimi] === 2. October 5, 8:30 Room 109 === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb02.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb02-handout.pdf Handouts for printing] === 3. October 10, 10:30 Room Jommi === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb03.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb03-handout.pdf Handouts for printing] === 4. October 12, 8:30 Room 109 === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb04.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb04-handout.pdf Handouts for printing] === 5. October 17, 10:30 Room Jommi === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb05.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb05-handout.pdf Handouts for printing] === ~~October 19, 8:30 Room 109~~ === === 6. October 24, 10:30 Room Jommi === * [https://homes.di.unimi.it/monga/lucidi2324/pyqb06.pdf Slides] [https://homes.di.unimi.it/monga/lucidi2324/pyqb06-handout.pdf Handouts for printing] === 7. October 26, 8:30 Room 109 === === 8. October 27, 8:30 Lab Lambda === == [=#old Previous years] == * [wiki:WikiStart@181 A.A. 2022/23] * [wiki:WikiStart@132 A.A. 2021/22] * [wiki:WikiStart@79 A.A. 2020/21]