Elaborato scritto; che argomento?
Ciao a tutti,
ho appena scoperto che nella mia universita' (matematica, triennale) esiste la possibilta' di fare un elaborato scritto sotto la guida di un docente (che dovrei scegliermi io e il quale deve essere d'accordo suppongo) per ottenere dei crediti obbligatori particolari (ottenibili altrimenti in modi che preferirei meno, tipo tirocini).
Il problema e' che non ho molto in testa cosa fare (o meglio cosa provare a proporre), inizialmente pensavo qualcosa di geometria/topologia (l'anno scorso ho seguito un corso quasi interamente sulle varieta differenziabili e mi e' piaciuto molto).
Poi mi sono reso conto che la mia situazione accademica non e' stupenda, ho un po' di esami indietro e direi che se per una volta scelgo la via piu' semplice per i crediti non muore nessuno. Ultimamente continuo a scegliermi gli esami piu' infami tra quelli opzionali.
Dunque, io sono abbastanza bravo per cio' che concerne l'informatica (non sto parlando di informatica teorica da un punto di vista matematico), mi piace molto la programmazione (conosco molti linguaggi) e gradirei creare un progetto da consegnare assieme all'elaborato (sempre ammesso che al docente vada bene).
Il punto e' che io sto seguendo un percorso di studi piu' sul teorico (da noi ci sono due curriculm, uno applicativo e uno generale) dove appunto non ci sono corsi di calcolo numerico o robe del genere. Quindi sarebbe interessante trovare qualcosa di natura mista tra informatica e algebra/geometria, peccato che non mi viene in mente nulla...
Che dite? Esiste qualcosa che potrei proporre alla portata di uno studente della triennale?
P.S. Mi ha sempre intrippato logica, linguaggi formali, teoria delle dimostrazioni e robe del genere, ma non avendo mai fatto nulla del genere (alla triennale non c'e' quasi nulla) non credo di poter proporre roba cosi'
ho appena scoperto che nella mia universita' (matematica, triennale) esiste la possibilta' di fare un elaborato scritto sotto la guida di un docente (che dovrei scegliermi io e il quale deve essere d'accordo suppongo) per ottenere dei crediti obbligatori particolari (ottenibili altrimenti in modi che preferirei meno, tipo tirocini).
Il problema e' che non ho molto in testa cosa fare (o meglio cosa provare a proporre), inizialmente pensavo qualcosa di geometria/topologia (l'anno scorso ho seguito un corso quasi interamente sulle varieta differenziabili e mi e' piaciuto molto).
Poi mi sono reso conto che la mia situazione accademica non e' stupenda, ho un po' di esami indietro e direi che se per una volta scelgo la via piu' semplice per i crediti non muore nessuno. Ultimamente continuo a scegliermi gli esami piu' infami tra quelli opzionali.
Dunque, io sono abbastanza bravo per cio' che concerne l'informatica (non sto parlando di informatica teorica da un punto di vista matematico), mi piace molto la programmazione (conosco molti linguaggi) e gradirei creare un progetto da consegnare assieme all'elaborato (sempre ammesso che al docente vada bene).
Il punto e' che io sto seguendo un percorso di studi piu' sul teorico (da noi ci sono due curriculm, uno applicativo e uno generale) dove appunto non ci sono corsi di calcolo numerico o robe del genere. Quindi sarebbe interessante trovare qualcosa di natura mista tra informatica e algebra/geometria, peccato che non mi viene in mente nulla...
Che dite? Esiste qualcosa che potrei proporre alla portata di uno studente della triennale?
P.S. Mi ha sempre intrippato logica, linguaggi formali, teoria delle dimostrazioni e robe del genere, ma non avendo mai fatto nulla del genere (alla triennale non c'e' quasi nulla) non credo di poter proporre roba cosi'
Risposte
"killing_buddha":
Che linguaggi conosci?
C (e qualcosa di C++), Java, Python, Scheme (mio preferito


Inoltre ho abbastanza esperienza coi sistemi Unix, insomma non credo avro' problemi riguardo la parte tecnica-informatica.
In effetti sono idee molto buone le tue, mi piace. Qualcosa che permetta di "fare conti" su strutture algebriche che ho studiato mi sembra una buona idea. L'anno scorso ho anche seguito un corso di algebra e nelle dispense c'erano esempi con PARI/GP, potrei ricreare qualcosa di simile.
Ero anche rimasto abbastanza affascinato da questo.
A questo punto pero' mi viene il dubbio se sia meglio parlare col prof con cui ho fatto programmazione o con quello di algebra, anche se un po' ho paura che quello di algebra possa chiedere di piu' di quello di programmazione, boh.
L'anno scorso nel corso di algebra ho fatto un po' di teoria dei numeri (poco eh), cosa potrebbe esserci di interessante (e semplice) da attingere?
Che linguaggi conosci?
Un esercizio piuttosto istruttivo è questo: scrivi una libreria il cui scopo è fare conti nell'anello dei polinomi a coefficienti in un anello. Tra le cose che puoi fare ci sono
- anzitutto, scegliere come si rappresenta un polinomio (un polinomio è... molte cose, a seconda di come presenti gli elementi di $K[X]$).
- scegliere come rappresentare le operazioni che rendono $K[X]$ un anello.
- mettiamo che $K = ZZ$; posso ad esempio estendere gli scalari pensando il polinomio a coefficienti in $QQ[X]$; questo si fa ogni volta che del polinomio si vogliono trovare delle radici. Come si definisce l'estensione degli scalari di un polinomio? E come si definisce la riduzione modulo $p$ di un polinomio? Bonus se lo fai usando l'operator overloading.
- scegliere come si rappresenta $f(X)\in K[X]$ in una forma che sia human-readable: qualcosa del tipo
- (come si scrive un parser che faccia la cosa opposta, che cioè da una scrittura come $\sum a_i X^i$ estrapoli una istanza della classe Poly?)[nota]E' naturale che ci sia una classe "polinomio"; la vera sfida è farlo in un paradigma diverso...[/nota]
- Come si fanno conti anche complicati con questa libreria? Che cos'è la derivata di un polinomio, il suo risultante, il suo discriminante? Date le radici di un polinomio, puoi trovare i suoi coefficienti (il viceversa è difficile
)?
Un esercizio piuttosto istruttivo è questo: scrivi una libreria il cui scopo è fare conti nell'anello dei polinomi a coefficienti in un anello. Tra le cose che puoi fare ci sono
- anzitutto, scegliere come si rappresenta un polinomio (un polinomio è... molte cose, a seconda di come presenti gli elementi di $K[X]$).
- scegliere come rappresentare le operazioni che rendono $K[X]$ un anello.
- mettiamo che $K = ZZ$; posso ad esempio estendere gli scalari pensando il polinomio a coefficienti in $QQ[X]$; questo si fa ogni volta che del polinomio si vogliono trovare delle radici. Come si definisce l'estensione degli scalari di un polinomio? E come si definisce la riduzione modulo $p$ di un polinomio? Bonus se lo fai usando l'operator overloading.
- scegliere come si rappresenta $f(X)\in K[X]$ in una forma che sia human-readable: qualcosa del tipo
f.show() -> a0 + a_1X + ... + a_n X^n
- (come si scrive un parser che faccia la cosa opposta, che cioè da una scrittura come $\sum a_i X^i$ estrapoli una istanza della classe Poly?)[nota]E' naturale che ci sia una classe "polinomio"; la vera sfida è farlo in un paradigma diverso...[/nota]
- Come si fanno conti anche complicati con questa libreria? Che cos'è la derivata di un polinomio, il suo risultante, il suo discriminante? Date le radici di un polinomio, puoi trovare i suoi coefficienti (il viceversa è difficile
