CS 61 | Sistemi di database | Primavera 2020

, Author

Gli exploit di una mamma (da XKCD)https://xkcd.com/327/

Descrizione del corso

ORC. Questo corso studia la gestione di grandi corpi di dati o informazioni. Questo include schemi per la rappresentazione, manipolazione e immagazzinamento di strutture informative complesse, così come algoritmi per elaborare queste strutture in modo efficiente e per recuperare le informazioni che contengono. Questo corso insegnerà allo studente tecniche per l’allocazione e la disallocazione della memoria, il recupero (formulazione di query) e la manipolazione di grandi quantità di dati eterogenei. Ci si aspetta che gli studenti programmino e siano coinvolti in un progetto in cui studiano aspetti importanti di un sistema di database: modi di organizzare un database distribuito condiviso da diversi computer; transazioni che sono processate localmente e globalmente; garanzie di robustezza dei dati immagazzinati contro i guasti; garanzie di sicurezza e integrità dei dati da accessi non autorizzati; privacy; schemi orientati agli oggetti per dati multimediali; indicizzazione, hashing, controllo della concorrenza, data mining, data warehousing, database mobili e strutture dei file di memorizzazione.

Obiettivi di apprendimento L’obiettivo finale di questo corso è quello di dotarvi di strumenti per utilizzare i dati per prendere decisioni guidate dai dati piuttosto che prendere decisioni basate sull’istinto o su congetture. Dopo aver completato questo corso dovreste essere in grado di:

  1. Interrogare i database esistenti per ottenere informazioni. Passeremo le prime settimane del corso ad imparare il linguaggio standard di interrogazione dei database chiamato Structured Query Language (aka SQL, aka ‘sequel’). Questo vi darà gli strumenti necessari per interrogare i database esistenti per ottenere informazioni sui dati che contengono.
  2. Progettate i vostri database efficienti. Passeremo le prossime settimane ad esaminare come strutturare le proprie basi di dati, disponendo le tabelle e considerando fattori come la ridondanza, l’affidabilità e la velocità.
  3. Capire cosa succede sotto il cofano. Poi esploreremo come funzionano i database, recuperando i dati velocemente e accuratamente, anche con più utenti che accedono e aggiornano i dati simultaneamente.
  4. Descrivere le tecnologie di database nuove e in via di sviluppo. Infine esamineremo le nuove tecnologie di database come i database NoSQL e le blockchain.

Per tutto il tempo avremo diversi docenti ospiti da esperti che lavorano nel campo. Vedi la pagina del programma per maggiori dettagli.

Prequisito CS 50. Presumo anche che abbiate familiarità con Python.

Chi, quando, dove

Istruttore Tim Pierson | 210 Sudikoff
Orari d’ufficio: la maggior parte delle settimane martedì 13:30-14:30, giovedì 13:30-14:30 (confermare tramite il calendario di Canvas), e su appuntamento. Vedere il link Zoom su Canvas per incontri virtuali. Graduate teaching assistant Almas Abdibayev
Orario d’ufficio: mantenuto su Canvas Lezioni di 2 ore | MWF 2:10 pm – 3:15 pm Eastern time zone | Le lezioni online saranno online e registrate questo trimestre usando Zoom – vedi Canvas per i dettagli di accesso. Quando ti unisci all’incontro online, per favore spegni la tua telecamera e il tuo microfono. Se hai una domanda, per favore premi il pulsante “Alza la mano” su Zoom. Se non ti chiamo in un breve periodo di tempo, per favore togli il microfono, accendi la tua videocamera e chiedi. Troveremo altre regole man mano che andremo avanti… Non ho intenzione di usare regolarmente le ore x, ma a volte potrei usarle per le lezioni perse, per recuperare il materiale, o per una sessione opzionale e informale per lavorare su esempi. Assicuratevi di tenere questa fascia oraria libera nel caso in cui abbiamo bisogno di usarla. Avremo spesso esercizi in classe per provare nuovi concetti su un database dal vivo. Google e StackOverflow saranno vostri amici, non esitate ad usarli (a meno che non vi venga detto altrimenti)! Aiuto: Orario d’ufficio L’orario d’ufficio sarà anche online tramite Zoom. Sarò disponibile online durante le ore d’ufficio pubblicate, anche se non ci sono domande. Se vuoi organizzare un incontro privato, mandami un’email e troveremo un momento per parlare. Aiuto: Slack Aspettatevi un invito a un canale Slack dopo il primo giorno di lezione. Ti incoraggio fortemente a fare domande e a rispondere lì. Annunci Monitora Canvas per annunci periodici su tutto il corso. Libro di testo Database System Concepts, 7a edizione, di Silberschatz, Korth e Sudarshan. Raccomando vivamente la versione ebook invece della versione cartacea (la versione cartacea non è nemmeno rilegata – è una raccolta di fogli sciolti!). Mentre il libro di Silberschatz sarà il nostro libro di testo principale, e tutte le letture assegnate saranno da quel libro, un’altra risorsa utile è Database Systems: Design, Implementation, & Management, 13th edition, di Coronel e Morris. Un’altra grande risorsa è https://www.mysqltutorial.org.

Valutazione

I voti in questa classe saranno una combinazione di un progetto a lungo termine, diversi compiti di laboratorio, un esame di metà trimestre e la partecipazione della classe. Un punteggio totale di almeno il 60% è richiesto per superare questo corso.

Progetto (40%)

Nell’arco del trimestre lavorerai su un progetto relativo a un database a tua scelta con altri tre studenti. I dettagli dei requisiti del progetto sono qui.

Labs (30%)

Ci saranno tre laboratori (a parte il laboratorio 0 che serve semplicemente a raccogliere informazioni) che insieme rappresentano il 30% del voto di questo corso. I punti per ogni laboratorio sono:

  • Lab 1: 5%
  • Lab 2: 10%
  • Lab 3: 15%: I laboratori sono progettati per essere completati fuori dalla classe e devono essere presentati elettronicamente tramite Canvas prima della scadenza indicata su Canvas. Anche quando un laboratorio ha alcuni esercizi scritti, ti è richiesto di digitare un file o scansionare il tuo lavoro scritto e inviarlo elettronicamente. Per presentare l’output del tuo programma, invia un file copia-incollato in formato pdf e/o uno screenshot, come appropriato. Per il testo semplice, puoi usare un programma come TextEdit, NotePad, o Emacs, o anche Word, ma assicurati di salvare come pdf. Per uno screenshot, puoi usare Anteprima su Mac (sotto il menu “File”) o il pulsante PrntScrn su Windows.

    Puoi lavorare con un partner su questi compiti di laboratorio (vedi Collaborazione sotto). Inoltre:

    • Se hai lavorato con un partner, includi il tuo nome e quello del tuo partner, o se hai lavorato da solo, dichiara “nessun partner” in un commento nella tua presentazione.
    • Se hai lavorato con un partner e hai finito con un’unica soluzione condivisa, indicalo in un commento nella soluzione e sulla presentazione. Ogni partner dovrebbe presentare la stessa soluzione. La soluzione sarà quindi valutata una volta sola con lo stesso voto assegnato a entrambi i partner.
    • Se hai lavorato con un partner ma hai scritto codice separato, indica la collaborazione ma che avete presentato soluzioni diverse. Indicalo sia nel codice che nella presentazione. Ognuno di voi dovrebbe caricare la propria soluzione, e ognuno di voi riceverà un voto separato.
    • Raccogliete tutti i vostri file di codice in un unico file zip e caricate quello zip, piuttosto che un mucchio di file separati.

    Politica dei ritardi Scadenza tramite Canvas alla data e all’ora indicata sul compito Canvas. Sanzioni: < 8 ore: 10%; < 24 ore: 20%; < 48 ore: 40%; più: nessun credito.
    Ti è permesso al massimo un invio in ritardo (fino a 48 ore) senza penalità; non sono richieste scuse. Indica nella tua presentazione che stai scegliendo di usare il tuo pass gratuito; non puoi annullare la scelta. Questo non può essere combinato con una penalità (ad esempio, non si può prendere una penalità di 8 ore in aggiunta al free pass di 48 ore). Se stai lavorando con un partner, questo conta come un free pass per entrambi. Classificazione Per ogni laboratorio verranno fornite specifiche rubriche di classificazione.

Esami (20%)

Ci sarà un esame intermedio che vale il 20% del voto finale (nessun finale – il vostro progetto conta come finale). E’ permesso usare una pagina di appunti di 8.5 x 11 pollici per l’esame, ma non si devono includere risposte o codici di precedenti esami CS61 a meno che non siano stati esplicitamente forniti dall’istruttore o facciano parte del materiale trattato in classe.

Se avete domande sul vostro punteggio d’esame, o volete una nuova valutazione di una domanda, consultate il vostro assistente entro una settimana dalla data in cui l’esame è stato restituito alla classe. Se richiedi una nuova valutazione di una particolare domanda, ci riserviamo il diritto di rivalutare l’intero esame.

Partecipazione alla lezione (10%)

La maggior parte delle lezioni avrà una parte pratica in cui lavoreremo su una serie di problemi su un database live. Alla fine di questa parte della lezione potresti essere scelto a caso (con sostituzione) per presentare la tua soluzione. La vostra presentazione sarà valutata come segue:

  • 0: Niente di sostanziale
  • 1: La tua soluzione ha bisogno di un lavoro significativo
  • 2: Corretta o principalmente corretta.

Se non sei in grado di partecipare alla lezione via Zoom live, ma vieni selezionato a caso, pubblica la tua soluzione su Canvas prima della prossima lezione.

Può succedere che tu non venga mai selezionato a caso per presentare la tua soluzione durante il trimestre. In questo caso riceverai pieno credito per questa parte del voto.

Collaborazione

Molto dell’apprendimento in questo corso viene dal fare gli esercizi di programmazione. A volte l’apprendimento può avvenire in modo più efficace quando si possono discutere le cose con qualcun altro, quindi lavorare con un partner sarà permesso nei compiti di laboratorio. Puoi lavorare insieme ad un’altra persona su un dato laboratorio. Se scegli di lavorare con qualcun altro, tu e il tuo partner dovete presentare lo stesso compito congiunto con entrambi i nomi, e dovete lavorare con la stessa persona per l’intero compito (non potete lavorare con una persona per alcune parti di un compito e una persona diversa per altre parti).

Se lavori con un partner sei ancora responsabile della comprensione dell’intero compito. Questo significa che dividere il codice in pezzi, fare la tua parte e non guardare mai le parti del tuo partner non è una buona idea. Puoi imparare molto leggendo il codice del tuo compagno e capire come funziona, se è corretto e come potrebbe essere migliorato. Puoi anche cogliere cose come commenti poveri o mancanti che potrebbero costarti punti di stile quando il compito viene valutato.

Quando lavori con un partner, ti suggerisco di prendere in prestito una pratica dalla Programmazione Estrema, un metodo di scrivere codice che molte aziende trovano abbastanza efficace. Una persona (l’autista) si siede alla tastiera. L’altra persona (il navigatore) guarda lo schermo (virtuale) mentre il guidatore scrive, facendo domande, facendo suggerimenti e catturando errori. Entrambi capirete meglio il codice se ne discutete mentre è scritto piuttosto che se lo scrivete (o lo leggete) da soli. Scambiatevi regolarmente chi è il pilota e chi il navigatore.

La reazione abituale a questa idea è, “ci vorrà il doppio del tempo!”In pratica è di solito più veloce che ogni persona che programma da sola. La ragione è che gli errori vengono presi prima, e la quantità di tempo risparmiata durante il debug più che compensa la mancanza di parallelismo nella scrittura del codice. Inoltre, il codice tende ad essere scritto meglio. Queste sono le ragioni per cui questa idea è stata adottata nell’industria.

Registrazione online

Registrerò le sessioni di classe tenute durante le 2 ore su Zoom e posterò questi video.Il mio piano sarà di non registrare nessuna ora d’ufficio, certamente non uno a uno, ma nemmeno piccoli gruppi. Se penso che una domanda o una risposta dell’ora d’ufficio sarebbe buona da far vedere a tutta la classe, preparerò una nota o un video a parte, o la includerò nella prossima lezione. Questo è quello che faccio normalmente nelle mie lezioni. Se tengo una sessione di problemi o un’ora X in cui l’intera classe è invitata a venire preparata con domande, la registro perché è essenzialmente una sessione di classe. Ma probabilmente lo modificherò prima di pubblicarlo in modo che sia più veloce per voi da rivedere

Dal decano della facoltà agli studenti per quanto riguarda la registrazione delle sessioni di classe:

(1) Consenso alla registrazione del corso e delle ore di ricevimento di gruppo

  • a) Dichiaro di aver compreso che questo corso e qualsiasi incontro di gruppo associato che coinvolge gli studenti e l’istruttore, incluso ma non limitato alle ore di ricevimento programmate e ad hoc e altre consultazioni, può essere registrato in qualsiasi piattaforma digitale utilizzata per offrire istruzione a distanza per questo corso;
  • b) Affermo inoltre che l’istruttore possiede il copyright del suo materiale didattico, di cui queste registrazioni costituiscono una parte, e la distribuzione di qualsiasi di queste registrazioni in tutto o in parte senza il previo consenso scritto dell’istruttore può essere soggetto a disciplina da Dartmouth fino all’espulsione;
  • c) Autorizzo Dartmouth e chiunque agisca per conto di Dartmouth per registrare la mia partecipazione e l’aspetto in qualsiasi mezzo, e di utilizzare il mio nome, immagine e voce in relazione a tale registrazione, e
  • d) Autorizzo Dartmouth e chiunque agisca per conto di Dartmouth di utilizzare, riprodurre o distribuire tale registrazione senza restrizioni o limitazioni per qualsiasi scopo educativo ritenuto opportuno da Dartmouth e chiunque agisca per conto di Dartmouth.

(2) Requisito del consenso alle registrazioni one-on-one

    Con l’iscrizione a questo corso, affermo che non farò in nessun caso una registrazione in qualsiasi mezzo di qualsiasi incontro one-on-one con l’istruttore senza ottenere il previo consenso scritto di tutti coloro che partecipano, e sono consapevole che se violo questo divieto, sarò soggetto a disciplina da Dartmouth fino a e compresa l’espulsione, così come qualsiasi altra sanzione civile o penale ai sensi della legge applicabile.

Requisiti tecnologici

Data la natura online di questo corso, è richiesto che gli studenti abbiano la capacità di trasmettere 1 ora o meno di contenuti video ogni giorno. Faremo del nostro meglio per pianificare e accomodare qualsiasi limitazione al vostro accesso alla tecnologia richiesta. E’ impossibile per noi pianificare ogni possibile vincolo tecnologico. Pertanto, vi preghiamo di farci sapere quali barriere avete per completare il corso online il più presto possibile. Date le attuali interruzioni nella catena di fornitura, vorremmo pianificare il più avanti possibile.

Codice d’onore

Il codice d’onore di Dartmouth si applica a questo corso, e le politiche di cattiva condotta accademica saranno strettamente applicate. Riferirò i casi sospetti di imbroglio all’ufficiale giudiziario universitario. Mi riservo anche il diritto di assegnare un voto insufficiente per un compito o un esame se ritengo che il principio d’onore sia stato violato, indipendentemente dal giudizio della commissione per gli standard. Se hai domande, chiedi!

Necessità di accessibilità

Gli studenti che richiedono servizi e sistemazioni relative alla disabilità per questo corso sono incoraggiati a programmare un incontro telefonico/video con me il prima possibile. Questa conversazione aiuterà a stabilire quali supporti sono incorporati nel mio corso online. Per poter autorizzare le sistemazioni, gli studenti sono tenuti a consultare il Servizio Accessibilità Studenti (SAS); [email protected]; sito web SAS; 603-646-9900) e di inviarmi via e-mail il loro modulo di sistemazione SAS. Lavoreremo poi insieme al SAS se le sistemazioni devono essere modificate in base all’ambiente di apprendimento online. Se gli studenti hanno domande sull’idoneità agli alloggi, dovrebbero contattare l’ufficio SAS. Tutte le richieste e le discussioni rimarranno confidenziali.

Salute Mentale

L’ambiente accademico a Dartmouth è impegnativo, i nostri termini sono intensi, e le classi non sono l’unica parte impegnativa della tua vita. Ci sono diverse risorse disponibili nel campus per supportare il tuo benessere, incluso il tuo decano di laurea, il Counseling and Human Development, e lo Student Wellness Center.

Osservanze religiose

Alcuni studenti potrebbero voler prendere parte alle osservanze religiose che si svolgono durante questo periodo accademico. Se hai un’osservanza religiosa che è in conflitto con la tua partecipazione al corso, ti prego di incontrarmi prima della fine della seconda settimana del trimestre per discutere di sistemazioni appropriate.

Addendum al COVID-19

Mentre la pandemia del COVID-19 ha già drasticamente interrotto questo corso, ha il potenziale per provocare un ulteriore impatto personale che potrebbe impedirti di continuare ad impegnarti nella classe. Questo può essere dovuto alla contrazione della malattia da parte vostra o di una persona cara, all’aumento delle responsabilità familiari, alle difficoltà finanziarie o all’impatto sulla vostra salute mentale/emotiva.

Abbiamo strutturato il corso in modo che queste interruzioni non vi impediscano necessariamente di completarlo con successo. In primo luogo, registreremo e pubblicheremo ogni lezione. Questo permetterà una visione flessibile del contenuto del corso. In secondo luogo, programmeremo opportunità di interazione dal vivo con l’istruttore e l’assistente durante diversi momenti della settimana. In terzo luogo, i laboratori sono stati riprogettati in modo che possano essere completati a casa.

Nel caso in cui tu sia direttamente o indirettamente colpito da COVID-19 in modo tale da influenzare il tuo rendimento nel corso, è imperativo che tu ti rivolga all’istruttore il prima possibile. Potete anche rivolgervi al vostro decano di laurea, se questo vi fa sentire più a vostro agio. Non possiamo assistervi se non sappiamo che c’è un problema. La nostra priorità è la vostra salute e sicurezza. Lavoreremo per mettervi in contatto con le risorse appropriate per assistervi. Inoltre, saranno messe in atto sistemazioni appropriate (per esempio: estensioni delle scadenze e/o ore extra di ufficio).

Riconoscimento

Questo corso è strettamente basato su quello originariamente sviluppato dal Dr. Charles Palmer. Sono profondamente in debito con questo eccellente educatore per tutto il suo duro lavoro e la sua generosa assistenza nella creazione di questo corso.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.