Domande Orale Gadducci

edited March 2017 in Programmazione II
Ciao a tutti!

Volevo sapere se qualcuno saprebbe dirmi quali sono le domande piu' frequenti che fa Gadducci all'orale per Programmazione 2?

Comments

  • Dipende dal voto con cui arrivi e dagli errorei fatti, comunque sia ti faccio un elenco di quelle che ho sentito personalmente e di quelle che mi ha fatto:

    - Principio di Sostituzione
    - Regola dei metodi: cosa succede se dall && dell' implicazione togliamo post_sub
    - Ha senso applicare il principio di sostituzione in OCaml? Motivare la risposta
    - Retention con codice d' esempio
    - Perchè non si può sempre scrivere l' IR?
    - Perchè non va tanto bene utilizzare la RepOK per dimostrare la correttezza di un implementazione?
    - Class loading e run-time stack
    - Semantica operazionale: cosa è e perchè la usiamo
    - Perchè è più semplice fare un interprete in OCaml che in Java ( e da qui torna sulla semantica)

    Per ora non mi viene in mente altro, quando è particolarmente ispirato chiede qualcosa sulle MdT e sulla complessità degli algoritmi
  • - Funzione di astrazione nel caso in cui vengano implementate piu' interfacce
    - Logica 1° ordine e altro su LPP
    - Post e Pre nella specifica
    - Regola dei metodi in java
    - Ambiente in OCaml tramite funzione
    - Valori denotabili, esprimibili, memorizzabili
    - Differenze tra imperativo e funzionale
    - Meglio OCaml o C come flessibilità
    - Esempio di una funzione non esprimibile né in C né in OCaml (Equazione di Pi.Greco)
    - Bytecode, retrocompatibilità con JAVA 5 e precedenti
    - Covarianza e Controvarianza
    - Principio di sostituzione
    - Cosa ci va nei record di attivazione
    - Record di attivazione con le funzioni ricorsive
    - Passaggio di parametri (nome, valore, riferimento). Che tipo di passaggio si ha in OCaml?
    - (progetto) è meglio distinguere tra momento della dichiarazione e momento dell'applicazione, separatamente e non contemporaneamente (Affermazione di Gadducci)
    - Compilazione vs Interpretazione, bytecode in java
    - Compilazione vs interpretazione in C
    - Domande sulle gerarchie in Java
    - Come si potrebbe implementare l'ambiente su OCaml senza usare funzioni? Un esempio piu' complesso del semplice utilizzo di liste
    - Varie domande su progetto ocaml/java, commenti su questo.
    - Cos'è il Parsing (Parser)
  • GaspareFerraroGaspareFerraro Posts: 44
    edited January 2017
    L'orale inizia con una breve analisi dei progetti, rilegge i suoi appunti e chiede dubbi sull'implementazione.
    Eventualmente commenti sul compito.

    Altre domande fatte oggi:

    - Come espressività è più potente C oppure OCaml? (nessuno, sono entrambi T-equivalenti).
    - Cosa posso fare con la logica di Hoare che non si può fare i ocaml o altri linguaggi?
    - Ereditarietà multipla in java, come si fa?
    - Come diventa la regola dei metodi nel caso di interfacce multiple (sia post che sub)?
    - Esempio di valore esprimibile ma non denotabile in C ma non in Ocaml.
    - Sottotipi con i generici. ( Pippo<A> e Pippo<B> con B<A / A<Pippo> e B<Pippo> con B<A )
    - Regola dei metodi con i generici, cosa comporta?

    Durata non più di 20-30minuti tra progetti/scritti e domande orali.
  • E è buono quanto raccontano (?)?
  • MindFlyerMindFlyer Posts: 436
    E è buono quanto raccontano (?)?

    Hmm... Se ti chiedo cos'è E, mi rispondi puppa?
  • MindFlyer wrote: »
    E è buono quanto raccontano (?)?

    Hmm... Se ti chiedo cos'è E, mi rispondi puppa?

    LOL

    Doveva essere "Ed è.."
  • Domande orale 20 febbraio 2017

    - tipi denotabili/ esprimibili/ memorizzabili
    - Relazione fra tipi memorizzabili/ denotabili e compilatore/interprete
    - Memoria
    - Varie domande su progetto / compiti

    Fondamentalmente non fa domande che non siano collegate allo scritto o ai progetti. Partivo da 22 e mi ha messo 24. L'orale è durato circa 20/30 minuti di cui una buona parte di "discussione" del progetto.
  • NokiNoki Posts: 7
    Domande 21/02/2017

    Domande derivate dal progetto:
    - Come definire un arco di grafo tramite coppie ordinate / tramite notazione sull'insieme delle parti
    - Implementando un grafo non orientato cosa cambia implementando l'arco in liste di adiacenza due volte (uno per nodo in cui è incidente) oppure una sola volta
    - Rappresentare un grafo con liste di adiacenza / Altri set
    - Cosa cambia nell'implementare una chiusura per Manytimes (vedi progetto ocaml) oppure ricondurla ad una pipe esplosa

    Domande di teoria:
    - Perchè la funzione di astrazione è fondamentale
    - Regola dei metodi e perchè è necessaria la prima parte nella implicazione sulla postcondizione (la parte in and sulla precondizione)
    - Nella regola dei metodi dove compare implicaamente la funzione di astrazione
    - Nella programmazione difensiva dove troviamo la precodizione
    - Nella programmazione difensiva a cosa si riduce la verifica della regola dei metodi
  • Mio orale 22/02/2017
    Per prima cosa abbiamo guardato il progetto e mi he chiesto alcune scelte implementative, poi abbiamo guardato il compito e poi è iniziato il vero e proprio orale sui contenuti:
    *domanda 1: parlami dei Java Generics. Gli ho risposto e sono finita sull'invarianza di Java per cose del tipo Grap<E> e Graph<subE> e della covarianza di super<E> sub<E>. Domanda inerente: come mai? Risposta data da lui: perchè nel bytecode di Java si perde l'informazione su quello che sta tra parentesi uncinate, quindi sarebbe un problema trovare i metodi
    *domanda 2: dimmi la regola dei metodi del principio di sostituzione
    *domanda 3: si può parlare di sottotipi e principi di sostituzione in Ocaml? Risposta data da lui: sì (ma io non mi ricordo come mai)
    *domanda 4: che cosa non può rappresentare repOK? Risposta: le classi che modellano insiemi non numerabili (con quelli numerabili ci si salva con una sorta di induzione) ed i numeri irrazionali
  • Orale del 27/02/16
    Oltre alla classica discussione dei progetti, Gadducci mi ha chiesto:
    - Retention
    - Descrizione dei record di attivazione
    - Funzione di astrazione e elemento tipico
    - Passaggio per nome, valore, riferimento

    Durata 20 minuti circa
  • Mio orale 27 febbraio 2017, durato 40 minuti:

    è partito col vedere i progetti, quindi alcune domande sulle scelte fatte e su come potevano essere migliorate.
    Ha chiesto che tipo di relazione c'è tra il generico E e il tipo Node, la risposta è che Node è sottotipo di E, non l'ho specificato in nessuna parte del codice, ma comunque il compilatore lo sa.
    Dopo aver discusso a fondo sui progetti, è passato a vedere entrambi gli scritti: su quello Java, avendo tralasciato tutta la seconda parte (FakeNews del secondo appello), mi viene chiesto di farla sul momento e quindi di dire se FakeNews fosse sottotipo (la risposta è no).
    Mi viene chiesto cos'è la funzione di astrazione, la regola dei metodi (in modo formale, quindi PreSuper => PreSub, etc), di parlare dei Generics, i sottotipi con i generici (ad esempio per array primitivi o array definiti con Vector), il Typical element.
  • Orale dei compitini del 12 gennaio 2018. Quasi tutte le domande sono venute fuori osservando i progetti. Mi ha chiesto:
    - Type Erasure e Java Generics
    - Come avrei implementato l'iteratore del primo progetto se ci fosse stata la remove
    - Vulnerabilità del progetto agli errori di tipo (es. nella Select non è garantito che la funzione applicata al nodo restituisca un booleano)
    - Parlare dei tipi parametrici di OCaml (io sono partito da un parallelismo coi Java Generics)
    - Fare un esempio di una funzione che senza i tipi parametrici non avrebbe un tipo definito (La più semplice è let f x = x)
    - Mi ha chiesto quali sono i costrutti OCaml che sono "semanticamente uguali ma sintatticamente diversi" (in pratica erano le funzioni che prendono una coppia vs. quelle "curryzzate")
  • Orale del 18/01/18
    - Regola dei metodi, e perché nella regola della post dev'essere vera anche la pre del super?
    - Si potrebbe creare un compilatore che verifica pre e post?
    - Inferire il tipo di due funzioni, perché ho sbagliato un'inferenza nel compito.
    - Tipi generici in OCaml e gerarchie di tipi, tralasciando la parte ad oggetti del linguaggio (i generici sono un sottotipo di qualsiasi tipo, una specie di tipo bottom).
    - Differenza tra funzioni totali con coppie, triple ecc. di parametri e currying (all'atto pratico non c'è nessuna differenza).

    Non è stata fatta nessuna domanda sui progetti, dato che a suo dire erano chiari e corretti.
    Partendo da una media di 27 con i compitini, il voto finale è 28.
Sign In or Register to comment.