Il corso è suddiviso in due parti.
Parte 1: Elementi di programmazione imperativa
Lo studente acquisirà conoscenze di base sui costrutti di base dei linguaggi di programmazione imperativa per la codifica di algoritmi, attraverso l’utilizzo del linguaggio C
Parte 2: Progetto di algoritmi e analisi della loro complessità
Lo studente acquisirà conoscenze di base sulla teoria degli algoritmi e sui principi su cui si basa il loro progetto, con particolare riguardo ad algoritmi per la manipolazione di sequenze.
The course is divided into two parts.
Part 1: Imperative programming principles
The student will acquire basic knowledge about the basic constructs of imperative programming languages for algorithm encoding, through the use of the C language
Part 2: Design of algorithms and analysis of their complexity
The student will acquire basic knowledge about algorithm theory and the principles on which their project is based, with particular emphasis on algorithms for sequence manipulation.
Durante il corso verranno proposti esercizi di autovalutazione sui vari argomenti trattati e al termine del corso verrà proposta una simulazione della prova scritta da svolgere in autonomia e discussa poi con i docenti
During the course will be proposed self-assessment exercises on the various topics covered and at the end of the course will be proposed a simulation of the written test to be carried out independently and then discussed with the teachers.
Lo studente saprà codificare algoritmi di media difficoltà in linguaggio C, applicando i costrutti dei linguaggi di programmazione imperativa in modo corretto e coerente con i problemi da risolvere.
Lo studente sarà inoltre in grado di indicare le linee generali su cui basare la costruzione e valutare l’analisi di complessità di algoritmi.
The student will be able to encode medium difficulty algorithms in C language, applying the imperative programming language constructs correctly and consistently with the problems to be solved.
The student will also be able to indicate the general lines on which to base the construction and evaluate the analysis of complexity of algorithms.
Durante le esercitazioni del corso verranno proposti esercizi di autovalutazione mirati alla verifica delle capacità via via acquisite sui vari argomenti presentati a lezione.
During the course tutorials self-assessment exercises will be proposed, aimed at verifying the skills gradually acquired on the various topics presented in class.
Lo studente saprà analizzare problemi di media difficoltà e risolverli attraverso la codifica di algoritmi in linguaggio C, utilizzando i costrutti più adatti. Saprà inoltre simulare il comportamento di algoritmi studiati nel corso, in particolare per la manipolazione di sequenze.
The student will be able to analyze problems of medium difficulty and solve them through the encoding of algorithms in C language, using the most suitable constructs. He will also be able to simulate the behavior of algorithms studied in the course, in particular for the manipulation of sequences.
Sarà valutato il grado di accuratezza e precisione delle soluzioni proposte dallo studente degli esercizi di autovalutazione forniti durante le esercitazioni.
The degree of accuracy and precision of the solutions proposed by the student of the self-assessment exercises provided during the tutorials will be evaluated.
Nozioni di base di logica e di matematica elementare con particolare riferimento al calcolo combinatorio.
Basic notions of logic and elementary mathematics with particular reference to combinatorics.
Nessuno
None
Consigliato come prerequisito per eventuali corsi di informatica e di utilizzo di strumenti informatici in biologia molecolare, scelti nel prosieguo della carriera di studio.
Recommended as a prerequisite for any courses in computer science and for courses on the use of computer tools in molecular biology, chosen in the continuation of the study career.
Lezioni frontali ed esercitazioni saranno svolte a distanza attraverso la piattaforma Microsoft Teams. I docenti si avvarranno di slide e materiale di supporto (dispense, note, esercizi proposti) che metteranno a disposizione degli studenti sulla piattaforma Moodle (Parte 1) o sulla pagina web del docente (Parte 2). Oltre ai ricevimenti online previsti durante il periodo di lezione, gli studenti potranno interagire con i docenti del corso attraverso la posta elettronica.
Classes and tutorials will be carried out remotely through the Microsoft Teams platform. Teachers will use slides and support material (handouts, notes, proposed exercises) that will be available to students on the Moodle platform (Part 1) or on the teacher's web page (Part 2). In addition to the online meetings scheduled during the lesson period, students will be able to interact with the teachers through e-mail.
Parte 1: Linguaggio C, come esempio di linguaggio di programmazione imperativa per l’implementazione di algoritmi.
Parte 2: Progetto e analisi di algoritmi
Part 1: The C language, as an example of an imperative programming language for the implementation of algorithms.
Part 2: Design and analysis of algorithms
Parte 1:
Slides presentate a lezione (caricate sulla piattaforma Moodle del corso)
Testi di consultazione consigliati:
Parte 2:
Dispense fornite dal docente su Web
Le lezioni del corso saranno registrate e caricate sulla piattaforma Moodle del corso.
Part 1
Slides presented in class (uploaded on the Moodle Platform of the course)
Consultation texts recommended
Part 2
Handouts provided by the teacher on the Web
Nessuna
None
L’esame consta di una prova scritta per ciascuna delle due parti. L’esame si ritiene superato se lo studente riporta la votazione di almeno 8/15 in ciascuna prova e una valutazione complessiva di almeno 18/30. La votazione riportata in ciascuna prova rimane valida per tutta la durata dell’anno accademico, a meno che lo studente non si presenti ad un successivo appello consegnando di nuovo l’elaborato.
L’esame si svolgerà a distanza secondo le modalità sottoindicate (fino a nuove disposizioni).
Parte 1
Parte 2
La correzione dei singoli elaborati verrà discussa con ciascuno studente mediante colloquio orale.
The examination consists of a written test for each part. The maximun grade for each test is 15. The exam is considered passed if the student has a score of at least 8/15 in each test and an overall evaluation of at least 18/30. The grade reported in each test remains valid for the duration of the academic year, unless the student presents himself to a subsequent exam by handing in the paper again.
The examination will be carried out remotely in the following manner (until further notice)
Part 1
- Through an online form, a series of exercises (usually 5-6) are proposed, some with multiple-choice answers, others requiring the writing of C code.The time available for the solution of the exercises is usually 40 minutes. The delivery of the elaborated one happens through the submission of the Form or sending the text of the answers by e-mail. The test is considered passed with a minimum grade of 8/15.
Part 2
- Students are sent the text of 1 or 2 exercises to do, normally in 30 minutes.The answers consist of a written text to be returned to the teacher by e-mail. The test is considered passed with a minimum grade of 8/15.
The correction of the individual papers will be discussed with each student through an oral interview.
Nessuno
None
http://pages.di.unipi.it/luccio/
Su questa pagina saranno disponibili le dispense del prof. Luccio relative alla Parte 2 del corso
http://pages.di.unipi.it/luccio/
On this page the handouts of Prof. Luccio related to Part 2 will be available
Parte 1 - Docenti
Paolo Mancarella - paolo.mancarella@unipi.it
Veronica Guerrini - veronica.guerrini@di.unipi.it
Parte 2 - Docente
Fabrizio Luccio - luccio@di.unipi.it
Part 1 - Teachers
Paolo Mancarella - paolo.mancarella@unipi.it
Veronica Guerrini - veronica.guerrini@di.unipi.it
Part 2 - Teacher
Fabrizio Luccio - luccio@di.unipi.it