Modules | Area | Type | Hours | Teacher(s) | |
COMPETITIVE PROGRAMMING AND CONTESTS | INF/01 | LEZIONI | 48 |
|
L'obiettivo del corso è migliorare le capacità di programmazione e di problem solving degli studenti affrontando problemi algoritmici difficili e presentando tecniche che aiutino il loro ragionamento nell'implementazione di soluzioni corrette ed efficienti. L'importanza di queste competenze è stata riconosciuta dalle più importanti società di software in tutto il mondo, che utilizzano problemi algoritmici nelle loro interview per valutare i candidati all'assunzione.
The goal of the course is to improve programming and problem solving skills of the students by facing them with difficult problems and by presenting the techniques that help their reasoning in the implementation of correct and efficient solutions. The importance of these skills has been recognized by the most important software companies worldwide, which evaluate candidates in their job interviews mostly by the ability in addressing such difficult problems. A natural goal is to involve the students in the intellectual pleasure of programming and problem solving, also preparing them for the most important international online contests, such as TopCoder, HackerRank, CodeChef, Facebook Hacker Cup, Google Code Jam and so on, for internships in most important companies and their interviews. A desirable side-effect of the course could be to organize and prepare teams of students for the ACM International Collegiate Programming Contests.
Gli studenti dovranno risolvere problemi algoritmici simili a quelli visti a lezione.
Problems will be posed to students to asses their knowledges and test their pregresses.
Gli studenti miglioreranno le loro capacità di programmazione e di problem solving e saranno preparati per affrontare intervieww per interniship nelle più importanti società di software.
The students will
- improve their problem solving skill;
- improve their programming skils;
- be ready for interviews for internships in the most important companies.
Esame pratico e esame orale.
Practical exam and oral exam.
Conoscenza dei classici algoritmi e strutture di dati.
Knowledge of basic algorithms and data structures
- C++ e la STL
- Applicazioni dell'ordinamento
- Strutture dati di base: code di priorità, alberi binari di ricerca e tabelle hash
- Strutture dati avanzate: union-find, Fenwick tree, interval tree, range-minima query
- Algoritmi di base su stringhe
- Algoritmi di base su grafi
- Programmazione dinamica
- Geometria computazionale
- C++ and its standard template library
- Real-world applications of sorting
- Basic data structures: priority queues, search trees, and hash maps
- Advanced data structures: union-find, Fenwick tree, interval trees, range-minima query
- Basic string algorithms
- Basic graph algorithms
- Fast optimization with dynamic programming
- Computational geometry
Each topic of the above syllabus will be covered by
- offering a quick recap of the related concepts from an introductory class on algorithms;
- programming and engineering fast software solutions for real-life computational problems;
- learning how to recognize their applicability through contests and experimentation.