[Dispense, appunti ed esercizi in Rete]

Messaggioda Steven » 29/10/2010, 21:10

In questo topic vorremmo raccogliere un po' di link a varie dispense e appunti liberi presenti in rete riguardo vari argomenti di Informatica: chiunque è a conoscenza di materiale condivisibile online può postarlo, magari con qualche parola di recensione.

Ideale poi sarebbe riportare, oltre al commento personale, anche ad esempio
- autore
- corso di laurea, sede
- sito web "madre", se esiste.

Cerchiamo inoltre di tenere questo topic libero da commenti, discussioni, saluti e complimenti. Postare solo per mettere materiale, o in caso aprire un altro topic.

Grazie per ogni contributo!
Steven
Cannot live without
Cannot live without
 
Messaggio: 4997 di 5708
Iscritto il: 12/11/2006, 14:47

Messaggioda Steven » 29/10/2010, 21:23

Click.
E' la pagina del corso di programmazione (C++) e An.Numerica del cdl in Matematica, Roma1.
Vari link a esami passati e dispense.

In particolare, sul C++
Dispensa1 **
Dispensa2
Sono dispense davvero base per chi parte analfabeta di programmazione.

Un ringraziamento ai professori Marco Marfurt e Stefano Finzi Vita.

** A queste dispense è riferita una parte del commento successivo dell'utente "apatriarca", in cui segnala alcuni punti non esatti o contestabili.
Ultima modifica di Steven il 30/10/2010, 15:24, modificato 1 volta in totale.
Steven
Cannot live without
Cannot live without
 
Messaggio: 4998 di 5708
Iscritto il: 12/11/2006, 14:47

Messaggioda apatriarca » 29/10/2010, 22:12

:roll: Ho sfogliato solo le prime 10 pagine della dispensa del corso di programmazione a Roma1 e ho trovato un sacco di errori o inesattezze. Personalmente la sconsiglio vivamente. Il migliore manuale gratuito sul C++ presente in rete è secondo me Thinking C++ di Bruce Eckel (al momento non riesco ad aprire la pagina personale di Eckel ma si trovano diverse versioni in rete cercando su Google). Consiglio poi la lettura delle seguenti pagine sul forum di IoProgrammo (una rivista di informatica italiana):
* Come imparare il C++
* Link utili - risorse per tutti! (C++)

EDIT: Come richiesto inserisco i commenti alla prima delle due dispense postate precedentemente. Non ho niente contro il professor Marfurt che l'ha scritta, anche perché non so assolutamente niente di lui, ma è l'occasione di criticare molti dei difetti che ho avuto modo di vedere in molti corsi universitari sul C++ (principalmente aiutando i loro studenti in diversi forum).

Partirei prima di tutto da pagina 2 (l'enfasi è stata aggiunta da me)
3. Quale compilatore usare:
I programmi riportati in queste dispense sono stati scritti pensando di usare il compilatore Dev-C++ che è installato nel Laboratorio di Calcolo del nostro Dipartimento, ma che può essere prelevato liberamente in rete ed installato facilmente su qualsiasi PC anche a casa vostra (cosa che caldamente vi raccomando di fare). Nel caso vogliate usare un altro compilatore potrebbe essere necessario apportare ai programmi qualche piccola modifica.

Questo piccolo paragrafo pregiudica a mio avviso tutto il manuale (e non è ancora neanche iniziato!). Significa principalmente che chiunque non sia in grado di installare sul proprio PC Dev-C++ (chiunque abbia Windows Vista, Windows 7 o qualsiasi versione di Linux o Mac) è costretto a fare delle modifiche al codice presente nel libro. Codice del quale non capisce nulla e al quale non è ovviamente in grado di mettere mano in modo autonomo. Questo povero studente sarebbe quindi costretto o a chiedere su di un forum o a fare le esercitazioni sempre e solo nel laboratorio del dipartimento. Scrivere un codice portabile su tutti i sistemi non sarebbe stato complicato e la quantità del codice del tutto equivalente. Sembra quindi più che altro una decisione dettata da pigrizia o addirittura ignoranza che di certo non giova agli studenti.

A questo punto vediamo gli errori e le imprecisazioni. Per prima cosa in C++ (e in C a partire dallo standard del 1999) una funzione deve scrivere esplicitamente il valore di ritorno e non esiste più il valore di ritorno di default uguale a int. Si tratta in questo caso di ignoranza, perché il professore scrive in seguito:
E infatti la funzione main() è di tipo int, soltanto che il tipo può, in questo caso particolare, essere omesso; tuttavia, se provate a modificare tutti i programmi che abbiamo scritto fino ad adesso sostituendo main() con int main() vedrete che tutto funzionerà perfettamente allo stesso modo.

Sfortunatamente questa frase, seppur errata, che avrebbe permesso a coloro con compilatori meno permissivi di modificare correttamente il proprio programma, è a pagina 53.

Istruzione 5: system ("PAUSE"); Questa istruzione serve a fissare lo schermo nella situazione attuale in modo che noi possiamo leggervi il risultato.

Questa frase ha uno sfondo di verità, su Windows mette in pausa l'esecuzione del programma. Il problema del suo uso qui è però duplice. Prima di tutto sta usando questa funzione solo per ovviare ad un limite di Dev-C++ (altri IDE sono perfettamente in grado di mantenere aperta la finestra anche dopo l'esecuzione del programma e se si fa partire il programma direttamente da console il problema neanche si pone). Inoltre, la funzione system sospende l'esecuzione del programma corrente per far partire il comando che gli viene passato per argomento. È una funziona complicatissima e non portabile per fare qualcosa che si può semplicemente implementare con un printf e uno scanf (oppure con cout e cin)...

Il manuale si ostina poi ad insegnare sia printf/scanf che cout/cin. Considerando che fanno le stesse cose mi sembra una decisione molto discutibile. Soprattutto considerando che viene prima insegnata la coppia printf/scanf il cui comportamento è a volte a dir poco criptico. Sfortunatamente vengono spesso insegnate in modo incredibilmente superficiale nonostante l'incredibile numero di pagine dedicate. Perché passare 4-5 pagine a spiegare qualcosa per poi mostrare un'alternativa molto più facile e idiot proof? Non esiste alcun motivo per cui un programmatore C++ debba conoscere questa libreria del C.

Passiamo ora alla terza riga:
#include <stdio.h>
anche questa riga non fa parte propriamente del programma C++; essa è una direttiva che avverte il compilatore che una o più istruzioni che compariranno in seguito, si possono trovare nel file stdio.h, e i simboli < e > servono ad
indicare che questo particolare file si trova nella Libreria Standard.

Non è del tutto esatto. L'uso di <> o "" determina l'insieme delle cartelle nel quale cercare gli header. Cartelle che possono essere spesso modificate negli IDE o passando istruzioni al compilatore. <> si usa di solito per indicare librerie esterne al programma corrente, mentre "" vengono usate per librerie interne.

Istruzione 6: return 0; Questa istruzione serve a terminare il programma e a restituire il controllo al sistema operativo del computer.

È vero ma l'inserimento di tale istruzione in C++ è facoltativa alla fine del main.

Ci sono poi altre cose che ho visto in giro (ma che dovrei mettermi a cercare), ma sta già diventando lungo e quindi mi fermo.
Ultima modifica di apatriarca il 30/10/2010, 13:02, modificato 1 volta in totale.
apatriarca
Moderatore
Moderatore
 
Messaggio: 879 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Messaggioda maxsiviero » 30/10/2010, 11:06

Sai, per essere un matematico non aveva abbastanza immaginazione; ma ora è diventato un poeta e se la cava davvero bene.
D. Hilbert
Avatar utente
maxsiviero
Advanced Member
Advanced Member
 
Messaggio: 327 di 2493
Iscritto il: 10/03/2010, 19:09
Località: Rivoli (TO)

[ JAVA ]

Messaggioda Rggb » 30/10/2010, 11:43

Sempre di Eckel, una delle bibbie disponibili su Java, edizione gratuita: Thinking in Java 3a ed. raggiungibile dalla pagina

http://www.mindview.net/Books/TIJ/
Ultima modifica di Rggb il 12/11/2010, 11:24, modificato 1 volta in totale.
Avatar utente
Rggb
Cannot live without
Cannot live without
 
Messaggio: 840 di 3226
Iscritto il: 30/07/2009, 17:27

[Semantica Operazionale]

Messaggioda hamming_burst » 30/10/2010, 18:23

Argomento: Dispense sulla semantica dei linguaggi di programmazione. Le dipense utilizzando la Semantica Operazionale.

Autore: Gordon Plotkin
Lingua: Inglese
Corso: Laboratory for Foundations of Computer Science
Università: University of Edinburgh

Versione Originale
Versione Latex

Giudizio: sono le dispense originali della discussione che Plotkin tenne all'università di Aarhus in Danimarca, dove vennero raccolti i modi di dimostrazione e le regole che si basano sull'approccio operazionale dello studio dei linguaggi di programmazione. Il mio giudizio è molto positivo. Le dispense sono spiegate abbastanza bene, ci sono molti pezzi definibili "mattoni" (tanti), ma studiando le dispense si capisce affondo non solo uno studio di una semantica, ma diversi modi di dimostrazione. Almeno io le trovo molto buone (alle volte è pure divertente).

PS: esiste una relazione di un docente italiano che ha derivato le cose dette nelle dispense di Plotkin in lingua italiana, che è più fattibile della versione originale, non trovo però più il link al documento.

EDIT:
aggiunto il link ad una versione rivista delle dispense originali, scritte in latex, così c'è la possibilità di copiare e ricercare parti di testo.
Preferisco questa versione, che è identica a quella originale, ma è più gestibile su un computer senza stamparla.

EDIT2:
non trovando più il link delle dispense italiane che citavo nel "Post Scriptum", posso consigliare un'alternativa, cioè il libro:

"Semantica Operazionale: strumenti e applicazioni. Linguaggi Imperativi e Funzionali" di I.Mastroeni e C.Priami
a detta degli autori nella prefazione, il libro è una derivazione diretta delle note di Plotkin.
Ultima modifica di hamming_burst il 24/12/2010, 18:05, modificato 3 volte in totale.
hamming_burst
Cannot live without
Cannot live without
 
Messaggio: 116 di 8058
Iscritto il: 04/07/2009, 10:53

Messaggioda Deckard » 31/10/2010, 10:07

Computational Complexity: A Modern Approach
Sono le bozze del nuovo libro di Arora sulla teoria della complessità che a detta di molti sostituirà l'ormai vecchiotto omonimo libro di Papadimitriou. L'ho appena iniziato a leggere ed è veramente ben scritto. È destinato perlopiù a graduate student, ma credo che anche un volenteroso laureando come me possa approcciarlo. Tratta dai concetti base della teoria dellla complessità (classi P e NP, NP-completezza, IP, ecc.) fino ad argomenti più avanzati e moderni (un assaggio di Quantum Computing, teoremi PCP, ...).
Deckard
Average Member
Average Member
 
Messaggio: 57 di 503
Iscritto il: 17/08/2010, 08:58

[ Informatica Teorica ]

Messaggioda Rggb » 02/11/2010, 13:15

Segnalo alcune risorse per informatica teorica, che ritengo degne di nota.

Dalla homepage del prof. Giorgio Ausiello - Università della Sapienza (qualcuno non sa chi è?!?), nella sezione dedicata alla didattica dei vari corsi, è disponibile il PDF del famoso lavoro di informatica teorica scritto assieme ai colleghi
Ausiello, d'Amore, Gambosi - Linguaggi, Modelli, Complessità (a parte è il nono capitolo).
E' un "must", non ha bisogno di commenti.

Di Pilu (Pierluigi) Crescenzi, Ordinario di Informatica a Firenze
Informatica Teorica - Linguaggi, Computabilita, Complessita
una approfondita introduzione all'IT, usata per un suo corso del III anno.

Anche Renzo Sprugnoli è ordinario a UNIFI, e dalla sua homepage mette a disposizione cose interessanti, fra le quali gli
Appunti di Informatica Teorica

Andrea Asperti, Ordinario di Informatica Teorica a Bologna, tiene un corso di IT nel quale usa delle proprie note di
Teoria della Calcolabilità
molto dettagliate; c'è l'avviso di "work in progress" (ma credo si riferisca solo a eventuali revisioni e/o correzioni, poiché sono datate 2006).

Sebastiano Vigna, associato all'Università di Milano, mette a disposizione delle
Dispense di informatica teorica
che si soffermano in particolare sulle macchine RAM.
Ultima modifica di Rggb il 12/05/2012, 18:43, modificato 1 volta in totale.
Avatar utente
Rggb
Cannot live without
Cannot live without
 
Messaggio: 842 di 3226
Iscritto il: 30/07/2009, 17:27

Messaggioda hamming_burst » 09/11/2010, 21:43

Appunti Vari e schematici di interi corsi

Autore: Nicola Asuni

Su questo sito sono annotati moltissimi argomenti trattati nei corsi univesitari.
Lo stile del sito è molto comodo, è da tenere come memorandum, come schema-riassunto degli argomenti. Non tratta quasi mai un argomento completamente.
Ma con frasi brevi e concise riassume molte cose.
Io lo ho preso molte volte in considerazione come punto di riferimento per ripassare o tenere a mente alcuni concetti.

https://appunti.asuni.xyz/

Argomenti trattati:

* Analisi Numerica
* APSI (Architettura dei Processori e Sistemi Integrati)
* Basi di Dati II
* Data Mining
* Economia
* El. Immagini
* Geometria Comp.
* Informatica Generale
* Informatica Teorica
* Inglese
* Lab OO - Java
* Logica Matematica
* Meccanica Razionale
* Metodi Formali
* Optoelettronica
* Ottimizzazione
* Reti di Calcolatori
* Sistemi Operativi
* Statistica
* Formulari e Tabelle

Giudizio: Ottimo e molto comodo lo stile schematico.
hamming_burst
Cannot live without
Cannot live without
 
Messaggio: 130 di 8058
Iscritto il: 04/07/2009, 10:53

[ Matematica discreta, Logica, Algebra ]

Messaggioda Rggb » 12/11/2010, 11:21

Appunti e dispense per vari corsi del primo triennio di informatica, validi ovviamente anche per altri CDL.

Gianfranco Niesi del DIMA, Università di Genova, ha tenuto un corso di matematica discreta dove usava i propri
Appunti di Matematica Discreta (a parte l'errata corrige)
secondo me fatti bene.

Alberto Albano e Michele Rossi, dell'Università di Torino, tengono un corso di Matematica Discreta per informatica dove usano la dispensa
Matematica Discreta per Informatica
redatta dallo stesso Albano e dal collega Marco Burzio, completa e chiara. Manca solo la teoria dei grafi, alla quale supperisce sempre Burzio il quale tiene un corrispondente corso nel CDL di matematica dove usa la propria dispensa di
Teoria dei grafi

Sempre di Teoria dei Grafi segnalo questa dispensa (raggiungibile dalla pagina "didattica") del prof. Carlo Casolo, ordinario di Algebra a Firenze, del
Corso di Teoria dei Grafi
discorsiva e chiara, pur rispettando la formalità. C'è qualche refuso qua e là, si vede non l'hanno letta in molti (sarò stato il solo? :-D)

Per lo studio della Logica, segnalo le dispense e gli appunti del prof. Giangiacomo Gerla dell'Università di Salerno, raggiungibili dalla pagina della didattica.
Ultima modifica di Rggb il 16/02/2016, 13:33, modificato 2 volte in totale.
Avatar utente
Rggb
Cannot live without
Cannot live without
 
Messaggio: 879 di 3226
Iscritto il: 30/07/2009, 17:27

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: utente__medio e 1 ospite