The course presents fundamental concepts in programming, data structures and algorithms, providing useful background knowledge for many courses of the Master Degree in Computer Science.
Learning the fundamental concepts in programming, data structures and algorithms using the Python language and introducing to the use of the numpy library.
The student should acquire the skills to create simple applications using the Python language, the ability to empirically evaluate their performance and to choose the best data structures, among those available in the language, to carry out certain tasks. In particular, at the end of the course students will be able to
use the online documentation on Python and some of its libraries
analyze pieces of programs (written in Python) and understand how they work
modify, run and test small programs
starting from an informal specification of a problem, design and write (parts of) programs that solve the problem
None.
Teaching consists of classroom lectures and some home assignments related to the topics covered so far in the course.
It is assumed that students have a laptop with anaconda3 installed. Assistance to install anaconda3 and to use Jupyter Notebook will be provided at the start of the course.
Lectures may be recorded on MS Teams (for the benefit of students abroad).
Home assignments can be done in group (of at most 3 students) and must be uploaded on aulaweb at specified deadlines.
Computational models: Turing machines, cellular automata, Moore machines
Python language constructs: expressions, assignments, conditionals, iteration, functions, recursion, exceptions, list comprehension.
Data structures: lists/sequences, dictionaries, sets
Algorithmic techniques: divide-and-conquer, list processing, memoization, staging
Numpy library: arrays,linear algebra operations
https://docs.python.org/3/ online documentation
https://greenteapress.com/wp/think-python-2e/ free book (pdf/html)
Further material (including video recordings) will be made available on aulaweb.
Ricevimento: See the aulaweb module and as second alternative the web page https://person.dibris.unige.it/moggi-eugenio/
EUGENIO MOGGI (President)
According to the calendar approved by the Degree Program Board: https://corsi.unige.it/en/corsi/11964/studenti-orario
The timetable for this course is available here: EasyAcademy
The exam (of at most 3 hours) consists of programming exercises done individually in DIBRIS SW labs and submitted on aulaweb. After submission a possible solution will be made available, and students have a limited time (at most 18 hours) to confirm the submission. Only confirmed submissions are evaluated, and if they are rated less than 10/30, the student accumulates a penalty of 1 point on a future final mark.
The final mark is given by the weighted average (rounded up) of the scores obtained in the two parts
minus the accumulated penalty points. The exam is passed if the final mark is at least 18/30.
Guidelines for students with certified Specific Learning Disorders, disabilities, or other special educational needs are available at https://corsi.unige.it/en/corsi/11964/studenti-disabilita-dsa
The two parts assess the programming skills acquired by the students in different context:
For further information, please refer to the course’s AulaWeb module (or contact the instructor).