Esercizio I

Una blockchain è una lista concatenata di blocchi. Ogni blocco è descritto da uno hash (che lo identifica), un timestamp e un miner. I blocchi contengono transazioni e ogni transazione è descritta da uno hash (che la identifica), da un mittente, un destinatario e un ammontare scambiato. Scrivere uno schema concettorale ER e uno schema logico di tipo relazionale per l’informazione descritta.

block(hashBlock, timestamp, miner)
transaction(hashTrans, from, to, value, hashBlock)
transaction(hashBlock) –> block(hashBlock)

Esercizio II

Rispetto allo schema dell’esercizio precedente scrivere in dplyr le seguenti interrogazioni:

  1. La top-10 dei miner per numero di blocchi creati
  2. I blocchi ordinati in senso decrescente per ammontare medio scambiato nelle transazioni del blocco
# La top-10 dei miner per numero di blocchi creati
block %>% 
  group_by(miner) %>% 
  summarize(nblocks = n()) %>% 
  arrange(desc(nblocks)) %>% 
  head(10)


# oppure
count(block, miner, sort = TRUE) %>% 
  head(10)

# I blocchi ordinati in senso decrescente per ammontare medio scambiato nelle transazioni del blocco
inner_join(block, transaction) %>% 
  group_by(hashBlock) %>% 
  summarise(traded = mean(value)) %>% 
  arrange(desc(traded))

Esercizio III

Scrivere in R una versione ottimizzata del seguente codice:

sumLogSlow = function(n) { 
  total <- 0
  x <- runif(n, 1, 100)
  for(i in 1:n) total <- total + log(x[i])
  total
}


sumLogFast = function(n) { 
  x <- runif(n, 1, 100)
  sum(log(x))
}

Esercizio IV

Dare una definizione e alcuni esempi di applicazione dei big data. [Si veda il syllabus del corso]

Eserizio V

Discutere le differenza tra data science e data humanism. [Si veda il syllabus del corso]