I nostri corsi di algoritmi e strutture dati partono dalla spiegazione della necessità di acquisire delle competenze approfondite di questi argomenti, e non solo di comprendere gli algoritmi e strutture dati più utilizzati/e ed elaborati/e nei principali testi di riferimento, ma di essere anche in grado di reimplementarli/e da zero.
Ci focalizziamo molto anche sull’efficacia degli algoritmi e sulla loro analisi comparativa e vengono contemplate anche delle situazioni e forniti dei casi d’uso che possono farci optare per un algoritmo invece di un altro. Se per esempio il nostro server ha sufficente memoria RAM, ma il suo collo di bottiglia è rappresentato dal processore, opteremo per l’uso di un algoritmo meno ghiotto delle risorse del processore, mentre il consumo della RAM in quel caso ci preoccupa meno. Ci possono essere anche situazioni opposte o situazioni in cui entrambe le risorse possono crearci dei colli di bottiglia.
L’azienda cliente ha la libertà di scelta del linguaggio di programmazione (tra quelli del nostro elenco dei linguaggi, oppure si può insegnarli usando l’approccio ibrido di pseudocodice più un linguaggio adatto alla descrizione degli algoritmi, per esempio Scheme, le cui regole sintattiche si possono apprendere letteralmente in dieci minuti e gli alunni, di conseguenza, si possono concentrare sulle problematiche trattate senza distrazioni che la sintassi di un linguaggio di programazione può comportare. In questo caso, senza le distrazioni sintattiche, i partecipanti ai nostri corsi si possono focalizzare direttamente sulle “grandi idee”, ovvero sul ragionamento astratto nella programmazione e sulla struttura e organizzazione dei programmi. Le competenze acquisite così saranno poi applicabili a un qualsiasi linguaggio di programmazione.
Le strutture dati partono da quelle più utilizzate e generiche fino a quelle altamente specializzate, in base all’ambito di applicazione. Quando abbiamo a che fare con le grandi quantità di dati, la scelta della struttura dati più appropriata può determinare il successo o il fallimento di un programma. Le strutture dati vengono gestite in modo strettamente correlato agli algoritmi. Per questo la maggior parte dei corsi tratta i due argomenti insieme.
Come corso correlato, possiamo raccomandare in nostro corso sugli automi, e anche quello sull’ingegneria del codice.
Oltre agli algoritmi generici, organizziamo anche corsi di algoritmi utilizzati negli specifici domini: elaborazione di stringhe, analisi di testi scritti in linguaggio umano, algoritmi usati nel campo di apprendimento automatico, intelligenza artificiale, ecc.