Fabio Narducci | PROGRAMMING AND DATA STRUCTURES
Fabio Narducci PROGRAMMING AND DATA STRUCTURES
cod. NF12100006
PROGRAMMING AND DATA STRUCTURES
NF12100006 | |
COMPUTER SCIENCE | |
EQF6 | |
COMPUTER SCIENCE | |
2025/2026 |
OBBLIGATORIO | |
YEAR OF COURSE 1 | |
YEAR OF DIDACTIC SYSTEM 2025 | |
SPRING SEMESTER |
SSD | CFU | HOURS | ACTIVITY | |
---|---|---|---|---|
INF/01 | 6 | 48 | LESSONS | |
INF/01 | 3 | 24 | LAB |
Objectives | |
---|---|
THE MAIN OBJECTIVES OF THE COURSE ARE: 1. IN-DEPTH KNOWLEDGE OF FUNDAMENTAL CONCEPTS REGARDING DATA STRUCTURES: STUDENTS WILL BE ABLE TO UNDERSTAND AND ANALYZE DATA STRUCTURES IN TERMS OF BOTH SYNTACTIC AND SEMANTIC SPECIFICATION AND DESIGN AND IMPLEMENTATION, TO EVALUATE THEIR PERFORMANCE IN TERMS OF TIME AND SPACE, AS WELL AS TO UNDERSTAND THE DIFFERENCES AMONG THOSE STRUCTURES AND TO CHOOSE THE MOST SUITABLE ONE TO SOLVE A GIVEN PROBLEM. FUNDAMENTAL DATA STRUCTURES SUCH AS LISTS, STACKS, QUEUES, TREES AND GRAPHS WILL BE COVERED. 2. KNOWLEDGE OF FUNDAMENTAL ALGORITHMS: DURING THE COURSE, STUDENTS WILL BE EXPOSED TO A WIDE RANGE OF ALGORITHMS, INCLUDING SORTING ALGORITHMS, SEARCH ALGORITHMS AND ALGORITHMS FOR THE REALIZATION OF THE MAIN OPERATORS OF THE DATA STRUCTURES MENTIONED IN THE PREVIOUS POINT. STUDENTS WILL BE ABLE TO APPLY THIS KNOWLEDGE TO SOLVE A VARIETY OF COMPUTATIONAL PROBLEMS. 3. KNOWLEDGE OF ITERATIVE AND RECURSIVE PROGRAMMING TECHNIQUES: STUDENTS WILL LEARN ITERATIVE AND RECURSIVE PROGRAMMING TECHNIQUES AND WILL BE ABLE TO APPLY THEM TO SOLVE COMPLEX PROBLEMS. KNOWLEDGE AND UNDERSTANDING 1.STUDENTS WILL BE ABLE TO UNDERSTAND THE FUNDAMENTAL PRINCIPLES OF DATA STRUCTURES. 2.STUDENTS WILL BE ABLE TO IDENTIFY PRACTICAL APPLICATIONS OF DATA STRUCTURES IN DIFFERENT COMPUTING CONTEXTS. 3.STUDENTS WILL BE ABLE TO ANALYZE THE EFFICIENCY OF DATA STRUCTURES IN TERMS OF TEMPORAL AND SPATIAL COMPLEXITY. 4.STUDENTS WILL BE ABLE TO DISTINGUISH AMONG DIFFERENT TYPES OF DATA STRUCTURES AND THEIR SPECIFIC USES. APPLYING KNOWLEDGDE AND UNDERSTANDING 1.STUDENTS WILL BE ABLE TO IMPLEMENT FUNDAMENTAL DATA STRUCTURES USING THE C LANGUAGE. 2.STUDENTS WILL BE ABLE TO SOLVE COMPUTATIONAL PROBLEMS BY APPLYING ITERATIVE AND RECURSIVE PROGRAMMING TECHNIQUES. 3.STUDENTS WILL BE ABLE TO DEVELOP AND USE APPROPRIATE DATA STRUCTURES TO OPTIMIZE SOFTWARE SOLUTIONS. 4.STUDENTS WILL BE ABLE TO DESIGN CUSTOMIZED SOLUTIONS TO MEET SPECIFIC SOFTWARE PROJECT REQUIREMENTS. MAKING JUDGEMENTS 1.STUDENTS WILL BE ABLE TO CRITICALLY EVALUATE THE CHOICE OF DATA STRUCTURES FOR SPECIFIC PERFORMANCE NEEDS. 2.STUDENTS WILL BE ABLE TO CHOOSE BETWEEN STATIC AND DYNAMIC IMPLEMENTATIONS OF DATA STRUCTURES BASED ON THE CONTEXT OF USE. 3.STUDENTS WILL BE ABLE TO ANALYZE AND MODIFY EXISTING DATA STRUCTURES TO IMPROVE THEIR EFFICIENCY. COMMUNICATION SKILLS 1.STUDENTS WILL BE ABLE TO CLEARLY AND CONCISELY EXPLAIN THE FUNCTIONALITY AND IMPLEMENTATION CHOICES OF DATA STRUCTURES USED IN VARIOUS PROGRAMMING PROJECTS. 2.STUDENTS WILL BE ABLE TO ADEQUATELY DOCUMENT CODE AND PROGRAMMING SOLUTIONS. 3.STUDENTS WILL BE ABLE TO PRESENT THE RESULTS OF PROGRAMMING PROJECTS, ILLUSTRATING THE TECHNICAL DECISIONS MADE AND DISCUSSING THE IMPLICATIONS OF DATA STRUCTURE CHOICES. LEARNING SKILLS 1.STUDENTS WILL BE ABLE TO INDEPENDENTLY DEEPEN THEIR UNDERSTANDING OF DATA STRUCTURES AND PROGRAMMING TECHNIQUES THROUGH SELF-STUDY AND RESEARCH. 2.STUDENTS WILL BE ABLE TO ADAPT TO TECHNOLOGICAL EVOLUTIONS IN THE FIELD OF DATA STRUCTURES AND PROGRAMMING METHODOLOGIES. 3.STUDENTS WILL BE ABLE TO CRITICALLY ANALYZE AND REFLECT ON THE EFFECTIVENESS OF IMPLEMENTED PROGRAMMING SOLUTIONS, IDENTIFYING POTENTIAL IMPROVEMENTS. |
Prerequisites | |
---|---|
BASIC KNOWLEDGE ABOUT PROCEDURAL PROGRAMMING IN C PROVIDED BY PROGRAMMING I COURSE. |
Contents | |
---|---|
1.ADVANCED PROGRAMMING IN C: SELF-REFERENTIAL STRUCTURES; DYNAMIC STRUCTURES (LISTS, TREES) - (3 HOURS OF THEORY, 1 HOUR OF LABORATORY); 2.GENERAL INFORMATION ABOUT MEMORY MODELS, STATIC AND DYNAMIC MEMORY, STACK AND ACTIVATION RECORDS, NAMES AND ENVIRONMENT, STATIC AND DYNAMIC SCOPE RULES (3 HOURS OF THEORY); 3.POINTERS AND DYNAMIC MEMORY ALLOCATION (2 HOURS OF THEORY, 2 HOURS OF LABORATORY); 4.ABSTRACTIONS AND MODULES: ABSTRACTION TYPES, INTERFACE AND IMPLEMENTATION OF A MODULE, REALIZATION OF MODULES IN C (3 HOURS OF THEORY, 2 HOURS OF LABORATORY); 5.RECURSION: GENERAL ASPECTS AND DEFINITIONS, RECURSION AND ITERATION, MANAGEMENT OF THE EXECUTION OF RECURSIVE PROGRAMS (3 HOURS OF THEORY, 2 HOURS OF LABORATORY); 6.ITERATIVE AND RECURSIVE ALGORITHMS ON ARRAYS, SORTING ALGORITHMS (6 HOURS OF THEORY, 3 HOURS OF LABORATORY); 7.CONSIDERATIONS ON COMPUTATIONAL COMPLEXITY (2 HOURS OF THEORY, 1 HOUR OF LABORATORY); 8.ABSTRACT DATA TYPES (ADTS): SYNTACTIC AND SEMANTIC SPECIFICATION, PROJECT AND REALIZATION (2 HOURS OF THEORY, 2 HOURS OF LABORATORY); 9.LISTS: GENERAL ASPECTS, VARIANTS, AND ADT SPECIFICATION, DEFINITION OF THE DATA STRUCTURE AND ALTERNATIVE IMPLEMENTATIONS BASED ON ARRAYS AND POINTER STRUCTURES, SPECIFICATION AND IMPLEMENTATION OF OPERATORS (ITERATIVE AND RECURSIVE VERSIONS), ALGORITHMS ON LISTS AND APPLICATIONS (8 HOURS OF THEORY, 4 HOURS OF LABORATORY); 10.STACK AND QUEUE: SPECIFICATION OF THE ADTS, STACK AND QUEUE OPERATORS, ALTERNATIVE IMPLEMENTATIONS OF DATA STRUCTURES, STACK AND QUEUE APPLICATIONS (4 HOURS OF THEORY, 2 HOURS OF LABORATORY); 11.BINARY TREES AND TREES: GENERAL, SPECIFIC ASPECTS OF ADTS, DEFINITION OF DATA STRUCTURE AND BASE OPERATORS, VISITING ALGORITHMS AND OTHER TREE ALGORITHMS (ITERATIVE AND RECURSIVE VERSIONS), APPLICATIONS OF TREE AND BINARY TREES (4 HOURS OF THEORY, 2 HOURS OF LABORATORY); 12.SORTED SETS AND BINARY SEARCH TREE: SPECIFICATION AND IMPLEMENTATION OF THE ADT, CREATE, INSERT, DELETE, AND SEARCH OPERATORS, VISIT ALGORITHMS, BINARY SEARCH TREE BALANCING, BINARY SEARCH TREE APPLICATIONS (4 HOURS OF THEORY, 2 HOURS OF LABORATORY); 13.INTRODUCTION TO PRIORITY QUEUES AND HEAPS (2 HOURS OF THEORY); 14.HASH SETS AND HASH TABLES: GENERAL ASPECTS, SPECIFICATIONS AND ADT IMPLEMENTATION, HASH FUNCTIONS, CREATING, INSERTING, DELETING AND SEARCHING OPERATORS, COLLISION MANAGEMENT WITH LINKED LISTS AND OPEN ADDRESSING, HASH TABLE APPLICATIONS (2 HOURS OF THEORY, 1 HOUR OF LABORATORY). |
Teaching Methods | |
---|---|
TEACHING INCLUDES BOTH FRONTAL LESSONS (6 CFU / 48 HOURS) AND LABORATORY LESSONS (3 CFU / 24 HOURS). THE LAB LESSONS WILL BE ENRICHED BY CASE STUDIES WITH PROGRAMS DEVELOPED IN CLASS WITH THE HELP OF THE TEACHER. |
Verification of learning | |
---|---|
THE ACHIEVEMENT OF THE COURSE OBJECTIVES IS CERTIFIED THROUGH THE SUCCESSFUL COMPLETION OF AN EXAM GRADED ON A SCALE OF 30 POINTS. THE EXAM MAY INCLUDE A PRELIMINARY SCREENING TEST, A WRITTEN, PRACTICAL LAB, OR PROJECT-BASED TEST, AND AN ORAL EXAM. IF APPLICABLE, THE PRELIMINARY SCREENING TEST LASTS APPROXIMATELY 15 MINUTES AND IS USED TO ASSESS WHETHER THE STUDENT HAS THE MINIMUM REQUIRED KNOWLEDGE TO ATTEMPT THE WRITTEN, PRACTICAL, OR PROJECT-BASED TEST. THE WRITTEN, LAB-BASED PRACTICAL, OR PROJECT-BASED TEST IS A PREREQUISITE FOR THE ORAL EXAM. THE WRITTEN OR LAB-BASED TEST GENERALLY LASTS NO LESS THAN 90 MINUTES. IN THE CASE OF A PROJECT DEVELOPMENT TEST, THE INSTRUCTOR DEFINES A SPECIFIC TIMEFRAME, PLACING THE STUDENT IN A SCENARIO WITH COMPARABLE CHALLENGES TO THOSE OF THE WRITTEN TEST, REQUIRING PROBLEM-SOLVING STRATEGIES. THIS TEST IS INTENDED TO ASSESS THE STUDENT’S ABILITY TO APPLY COURSE CONCEPTS THROUGH SOLVING SPECIFIC EXERCISES OR DEVELOPING A PROJECT, WHICH INVOLVES DESIGNING AND IMPLEMENTING PROGRAMS THAT USE ALGORITHMS AND DATA STRUCTURES (SUCH AS STACKS, QUEUES, LISTS, TREES, HASH TABLES). THE TEST IS CONSIDERED PASSED WITH A MINIMUM SCORE OF 18/30, WHICH DEMONSTRATES THE STUDENT’S ABILITY TO IDENTIFY THE APPROPRIATE DATA STRUCTURES FOR SOLVING THE PROBLEM, DESIGN THE PROPOSED SOLUTION, AND PROPERLY IMPLEMENT IT IN THE C PROGRAMMING LANGUAGE. A MAXIMUM SCORE OF 30/30 IS AWARDED FOR A CORRECT, COMPLETE, EFFICIENT, AND EFFECTIVE SOLUTION. IF PROVIDED, TWO MIDTERM TESTS MAY BE HELD—ONE HALFWAY THROUGH THE COURSE AND THE OTHER AT THE END OF THE TEACHING PERIOD—UNDER THE SAME CONDITIONS, OBJECTIVES, AND EVALUATION CRITERIA AS THE FINAL WRITTEN, PRACTICAL, OR PROJECT-BASED TEST. PASSING BOTH MIDTERMS GRANTS DIRECT ACCESS TO THE ORAL EXAM, WITH A SCORE OUT OF 30 CALCULATED AS THE WEIGHTED AVERAGE OF THE TWO MIDTERMS. IF THIS FINAL SCORE EXCEEDS 18/30, THE STUDENT IS CONSIDERED EXEMPT FROM THE FINAL WRITTEN, PRACTICAL, OR PROJECT-BASED TEST. THIS EXEMPTION IS VALID ONLY FOR THE FIRST EXAM SESSION FOLLOWING THE END OF THE COURSE. THE ORAL EXAM CONSISTS OF AN INTERVIEW WITH QUESTIONS AND DISCUSSION ON THE THEORETICAL AND METHODOLOGICAL CONTENT OUTLINED IN THE COURSE SYLLABUS. IT AIMS TO VERIFY THE STUDENT'S LEVEL OF KNOWLEDGE AND UNDERSTANDING, AS WELL AS THEIR ABILITY TO CLEARLY PRESENT CONTENT USING APPROPRIATE TERMINOLOGY AND TO AUTONOMOUSLY ORGANIZE THE PRESENTATION OF BOTH THEORETICAL AND PRACTICAL TOPICS. USUALLY, THE FINAL GRADE IS DETERMINED AS THE ARITHMETIC AVERAGE OF THE SCORES OBTAINED IN THE WRITTEN, PRACTICAL, OR PROJECT-BASED TEST AND THE ORAL EXAM. |
Texts | |
---|---|
LEARNING MATERIAL (HANDOUTS, SLIDES, EXERCISES) IS AVAILABLE ON-LINE TO THE STUDENTS. RECOMMENDED TEXTBOOK: ROBERT SEDGEWICK, “ALGORITHM IN C” 4/ED, ADDISON - WESLEY |
More Information | |
---|---|
REGULARLY WORKING ON THE EXERCISES SUGGESTED BY THE TEACHER IS THE MOST EFFECTIVE WAY FOR THE STUDENT TO PREPARE FOR THE EXAM. E-LEARNING PLATFORM: HTTP://ELEARNING.INFORMATICA.UNISA.IT/EL-PLATFORM/ CONTACTS: MAURIZIO TUCCI AND FABIO NARDUCCI mtucci@unisa.it, fnarducci@unisa.it |
BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2025-10-08]