Scheda programma d'esame
COMPUTER SCIENCE FOR BIOTECHNOLOGIES
PAOLO MARIA MANCARELLA
Academic year2020/21
CourseBIOTECHNOLOGY
Code278AA
Credits6
PeriodSemester 1
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
INFORMATICA PER LE BIOTECNOLOGIEINF/01LEZIONI28
VERONICA GUERRINI unimap
PAOLO MARIA MANCARELLA unimap
INFORMATICA PER LE BIOTECNOLOGIE bINF/01LEZIONI28
FABRIZIO LUCCIO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

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.

Knowledge

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.

 

Modalità di verifica delle conoscenze

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

Assessment criteria of knowledge

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.

Capacità

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.

Skills

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.

Modalità di verifica delle capacità

Durante le esercitazioni del corso verranno proposti esercizi di autovalutazione mirati alla verifica delle capacità via via acquisite sui vari argomenti presentati a lezione.

Assessment criteria of skills

During the course tutorials  self-assessment exercises will be proposed, aimed at verifying the skills gradually acquired on the various topics presented in class.

Comportamenti

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.

Behaviors

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.

Modalità di verifica dei comportamenti

Sarà valutato il grado di accuratezza e precisione delle soluzioni proposte dallo studente degli esercizi di autovalutazione forniti durante le esercitazioni.

Assessment criteria of behaviors

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.

Prerequisiti (conoscenze iniziali)

Nozioni di base di logica e di matematica elementare con particolare riferimento al calcolo combinatorio.

Prerequisites

Basic notions of logic and elementary mathematics with particular reference to combinatorics.

Corequisiti

Nessuno

Co-requisites

None

Prerequisiti per studi successivi

Consigliato come prerequisito per eventuali corsi di informatica e di utilizzo di strumenti informatici in biologia molecolare, scelti nel prosieguo della carriera di studio.

Prerequisites for further study

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.

Indicazioni metodologiche

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.

Teaching methods

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.

Programma (contenuti dell'insegnamento)

Parte 1: Linguaggio C, come esempio di linguaggio di programmazione imperativa per l’implementazione di algoritmi.

  • Rappresentazione delle informazioni. Programma e algoritmo. Linguaggio C: variabili e tipi. Operatori aritmetici booleani e relazionali.
  • Controllo del flusso all’interno di un programma. Istruzioni di selezione e istruzioni iterative. Formattazione dell'input e dell'output in C.
  • Semantica dei blocchi e visibilità di variabili in C. Utilizzo di puntatori.
  • Funzioni e procedure in C. Passaggio dei parametri per valore e per riferimento.
  • Problem solving su array. Array di caratteri e funzioni su stringhe. Array multidimensionali.
  • Metodi di ordinamento di un array di interi, ricerca sequenziale e binaria, e loro implementazione in C.

Parte 2: Progetto e analisi di algoritmi

  • Alcune formule matematiche di base e ordini di grandezza.
  • Definizione di algoritmo e di complessità di calcolo. Limiti inferiori e superiori di complessità.
  • Problemi “facili” e “difficili”: esempi nel campo dei problemi combinatori, in particolare per la ricerca e ordinamento di dati.
  • Ricorsività e programmazione dinamica.
  • La famiglia di algoritmi per il confronto di sequenze.
Syllabus

Part 1: The C language, as an example of an imperative programming language for the implementation of algorithms.

  • Representation of information. Program and algorithm. Language C: variables and types. Arithmetic, Boolean and relational operators.
  • Flow control within a program. Selection and iterative instructions. Formatting of input and output in C.
  • Semantics of blocks and scope of variables in C. Use of pointers.
  • Functions and procedures in C. Parameter passing by value and by reference.
  • Problem solving on arrays. Array of characters and functions on strings.
  • Sorting methods for integers arrays, sequential and binary search, and their implementation in C.

Part 2: Design and analysis of algorithms

  • Some basic mathematical formulas and orders of magnitude.
  • Definition of algorithm and computational complexity. Lower and upper limits of complexity.
  • "Easy" and "difficult" problems: examples in the field of combinatorics problems, in particular for data search and sorting.
  • Recursiveness and dynamic programming.
  • The family of algorithms for sequence comparison.
Bibliografia e materiale didattico

Parte 1:

Slides presentate a lezione (caricate sulla piattaforma Moodle del corso)

Testi di consultazione consigliati:

  • Dennis M. Ritchie, Brian W. Kernighan - Il linguaggio C. Principi di programmazione e manuale di riferimento - Pearson Italia
  • Al Kelley, Ira Pohl - C. Didattica e programmazione - Pearson Italia

Parte 2:

Dispense fornite dal docente su Web

Le lezioni del corso saranno registrate e caricate sulla piattaforma Moodle del corso.

Bibliography

Part 1

Slides presented in class (uploaded on the Moodle Platform of the course)

Consultation texts recommended

  • Dennis M. Ritchie, Brian W. Kernighan - The C programming language - Pearson Education
  • Al Kelley, Ira Pohl - Book on C - Addison-Wesley

Part 2

Handouts provided by the teacher on the Web

Indicazioni per non frequentanti

Nessuna

Non-attending students info

None

Modalità d'esame

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

  • Attraverso una Form online, vengono proposti una serie di esercizi (di solito 5-6) alcuni con risposta a scelta multipla, altri che richiedono invece la scrittura di codice C. Il tempo per la soluzione degli esercizi è di norma 40 minuti. La consegna dell’elaborato avviene attraverso la sottomissione del Form oppure inviando il testo delle risposte per posta elettronica. La prova si ritiene superata con un voto minimo di 8/15.

Parte 2

  • Agli studenti viene inviato il testo di 1 o 2 esercizi da svolgere, di norma, in 30 minuti. Le risposte consistono di un testo scritto da restituire al docente per posta elettronica. La prova si ritiene superata con un voto minimo di 8/15.

La correzione dei singoli elaborati verrà discussa con ciascuno studente mediante colloquio orale.

Assessment methods

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.

Stage e tirocini

Nessuno

Work placement

None

Altri riferimenti web

http://pages.di.unipi.it/luccio/

Su questa pagina saranno disponibili le dispense del prof. Luccio relative alla Parte 2 del corso

 

Additional web pages

http://pages.di.unipi.it/luccio/

On this page  the handouts of Prof. Luccio related to Part 2  will be available

Note

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

Notes

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

Updated: 20/09/2020 18:18