PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



Algorithms and Programming

02OGDLM, 05OGDLP

A.A. 2020/21

Course Language

Inglese

Degree programme(s)

1st degree and Bachelor-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino
1st degree and Bachelor-level of the Bologna process in Electronic And Communications Engineering (Ingegneria Elettronica E Delle Comunicazioni) - Torino

Borrow

01DHILP 02DHILP

Course structure
Teaching Hours
Lezioni 60
Esercitazioni in aula 40
Esercitazioni in laboratorio 20
Tutoraggio 10
Lecturers
Teacher Status SSD h.Les h.Ex h.Lab h.Tut Years teaching
Quer Stefano Professore Associato IINF-05/A 50 0 0 20 10
Co-lectures
Espandi

Context
SSD CFU Activities Area context
ING-INF/05 12 B - Caratterizzanti Ingegneria informatica
2020/21
The course is held at the first semester of the third year. The course deepens the knowledge and skills in advanced programming, considered as a problem solving tool. The main goal is to guide the student to gradually evolve from more analytic to more design-oriented skills. The student will acquire adequate knowledge and skills in algorithms, data structures and their implementation in C to solve complex problems. Algorithmic solutions to “classical” problems are introduced, together with their theoretical foundations, and the implementations in C language. Advanced aspects of C are considered, like pointers, dynamic memory allocation, modularity and Abstract Data Type implementation. The student has the opportunity to analyze practical examples, describing solutions to complex problems, and the related algorithmic paradigms. Most of the knowledge and programming skills are experienced through practical exercises and laboratories.
The course is held at the first semester of the second year. The course deepens the knowledge and skills in advanced programming, considered as a problem solving tool. The main goal is to guide the student to gradually evolve from more analytic to more design-oriented skills. The student will acquire adequate knowledge and skills in algorithms, data structures and their implementation in C to solve complex problems. Algorithmic solutions to “classical” problems are introduced, together with their theoretical foundations, and the implementations in C language. Advanced aspects of C are considered, like pointers, dynamic memory allocation, modularity and Abstract Data Type implementation. The student has the opportunity to analyze practical examples, describing solutions to complex problems, and the related algorithmic paradigms. Most of the knowledge and programming skills are experienced through practical exercises and laboratories.
At the end of the course the student will be able to: - Dynamically allocate memory, using pointers and dynamic data structures in C language - Evaluate algorithm complexity and improve efficiency in terms of execution time and/or memory allocation - Write standard algorithms to solve basic problems such as sorting, searching, etc. - Manipulate complex data structures, such as linked lists, stacks, queues, heaps, trees, hash tables and graphs - Write modular programs in C language adopting several programming paradigms such as recursive programming, greedy approaches, dynamic programming and memorization - Exploit tools for program development and problem solving, based on design of data structures and algorithms.
At the end of the course the student will be able to: - Dynamically allocate memory, using pointers and dynamic data structures in C language - Evaluate algorithm complexity and improve efficiency in terms of execution time and/or memory allocation - Write standard algorithms to solve basic problems such as sorting, searching, etc. - Manipulate complex data structures, such as linked lists, stacks, queues, heaps, trees, hash tables and graphs - Write modular programs in C language adopting several programming paradigms such as recursive programming, greedy approaches, dynamic programming and memorization - Exploit tools for program development and problem solving, based on design of data structures and algorithms.
Due to the incremental nature of the course with respect to the first year class “Computer Science”, there are several strict prerequisites in terms of programming skills and programming language knowledge, with particular emphasis on the following topics: • Elementary computer systems architecture (Von Neumann model). • Syntax of C, basic data types and constructs. • Basic programming skills in C language, using conditional and iterative constructs, scalar and aggregate data, standard input/output, text files and functions. • Skills in elementary (algorithmic) problem solving.
Due to the incremental nature of the course with respect to the first year class “Computer Science”, there are several strict prerequisites in terms of programming skills and programming language knowledge, with particular emphasis on the following topics: • Elementary computer systems architecture (Von Neumann model). • Syntax of C, basic data types and constructs. • Basic programming skills in C language, using conditional and iterative constructs, scalar and aggregate data, standard input/output, text files and functions. • Skills in elementary (algorithmic) problem solving.
• Review of basic language construct and basic problem solving (12h) • Algorithm analysis (3h) o Asymptotic worst-case complexity analysis o O, theta, omega notations o Recurrence equations • Sorting algorithms (6h) o Iterative sorting (bubble sort, selection sort, insertion sort, shell sort, counting sort) o Recursive sorting (mergesort, quicksort, heapsort) • Static and dynamic data structures and their implementation in C (13h) o Data representation in memory and runtime memory management o Pointers (or references to objects) o Static, on stack and dynamic memory allocation o Linked structures o Strategies for data structure selection • Modularity and modular implementation of algorithms and data structures (10h) o The implementation-interface-client model o Implementation in C of programs with multiple source and header files o Basic use of development and debug tools, like make, gdb, cvs • Recursion and recursive programs (10h) o The notion of recursion o Mathematical recursive functions o Simple recursive procedures o Backtrack and implementation of recursion • Abstract objects, collections of objects and ADTs (8h) o Modular examples of composed structures, like arrays of lists and multilists o Linked lists, stacks, FIFO queues, generalized queues, priority queues, heaps • Algorithmic paradigms (8h) o Divide and conquer • Problem solving (14h) o Analysis and definition of strategies for data structures and algorithms o Search and optimization problems o Techniques to explore the state space based on combinatorics • Data structures for symbol tables (4h) o Binary search trees o Hash tables • Graph theory (12h) o Graph representation o Depth-first and breadth-first search o Shortest paths o Minimum spanning trees.
• Review of basic language construct and basic problem solving (12h) • Algorithm analysis (3h) o Asymptotic worst-case complexity analysis o O, theta, omega notations o Recurrence equations • Sorting algorithms (6h) o Iterative sorting (bubble sort, selection sort, insertion sort, shell sort, counting sort) o Recursive sorting (mergesort, quicksort, heapsort) • Static and dynamic data structures and their implementation in C (13h) o Data representation in memory and runtime memory management o Pointers (or references to objects) o Static, on stack and dynamic memory allocation o Linked structures o Strategies for data structure selection • Modularity and modular implementation of algorithms and data structures (10h) o The implementation-interface-client model o Implementation in C of programs with multiple source and header files o Basic use of development and debug tools, like make, gdb, cvs • Recursion and recursive programs (10h) o The notion of recursion o Mathematical recursive functions o Simple recursive procedures o Backtrack and implementation of recursion • Abstract objects, collections of objects and ADTs (8h) o Modular examples of composed structures, like arrays of lists and multilists o Linked lists, stacks, FIFO queues, generalized queues, priority queues, heaps • Algorithmic paradigms (8h) o Divide and conquer • Problem solving (14h) o Analysis and definition of strategies for data structures and algorithms o Search and optimization problems o Techniques to explore the state space based on combinatorics • Data structures for symbol tables (4h) o Binary search trees o Hash tables • Graph theory (12h) o Graph representation o Depth-first and breadth-first search o Shortest paths o Minimum spanning trees.
The class can be divided into theory lectures, practice lessons and laboratories. There is no formal distinction between theory and practice as almost all course topics involve theory and practice aspects developed during the classroom lessons by the teacher. Lectures (80 hours overall) include practice lessons. Lectures and practice are extended with 20 additional hours in laboratory to consolidate what the student has learned. Laboratories allow students to solve problems (writing, compiling and debugging C language programs on a personal computer) and applying all theory and practice aspects analyzed during the classroom lessons.
The class can be divided into theory lectures, practice lessons and laboratories. There is no formal distinction between theory and practice as almost all course topics involve theory and practice aspects developed during the classroom lessons by the teacher. Lectures (80 hours overall) include practice lessons. Lectures and practice are extended with 20 additional hours in laboratory to consolidate what the student has learned. Laboratories allow students to solve problems (writing, compiling and debugging C language programs on a personal computer) and applying all theory and practice aspects analyzed during the classroom lessons.
Handouts and slides used during the classroom lessons are available on the teacher or course WEB site. The World Wide Web is also an excellent source of material for almost all topics introduced in the class (see Wikipedia, for example). Among the printed material, during the class, we make explicit usage of the following books: • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, “Introduction to Algorithms”, McGraw-Hill. • S. Quer, "Advanced Programming and Problem-Solving Strategies in C. Part II: Algorithms and Data Structures", 2nd Edition, 2018, CLUT • S. Quer, "Advanced Programming and Problem-Solving Strategies in C. Part IV: Exam-Based Problems", 2nd eEdition, 2018, CLUT Other sources are the followings: • R. Sedgewick, “Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching” Addison-Wesley Professional. • R. Sedgewick, “Algorithms in C, Part 5: Graph Algorithms”, Addison-Wesley Professional. • P. Prinz, T. Crawford, "C in a Nutchell (The Definitive Reference)", O'Reilly.
Handouts and slides used during the classroom lessons are available on the teacher or course WEB site. The World Wide Web is also an excellent source of material for almost all topics introduced in the class (see Wikipedia, for example). Among the printed material, during the class, we make explicit usage of the following books: • T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, “Introduction to Algorithms”, McGraw-Hill. • S. Quer, "Advanced Programming and Problem-Solving Strategies in C. Part II: Algorithms and Data Structures", 2nd Edition, 2018, CLUT • S. Quer, "Advanced Programming and Problem-Solving Strategies in C. Part IV: Exam-Based Problems", 2nd eEdition, 2018, CLUT Other sources are the followings: • R. Sedgewick, “Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching” Addison-Wesley Professional. • R. Sedgewick, “Algorithms in C, Part 5: Graph Algorithms”, Addison-Wesley Professional. • P. Prinz, T. Crawford, "C in a Nutchell (The Definitive Reference)", O'Reilly.
Modalità di esame: Prova scritta tramite PC con l'utilizzo della piattaforma di ateneo; Prova scritta tramite l'utilizzo di vLAIB e piattaforma di ateneo;
The exam will consist of a single written test carried out by means of a computer, using the university platform "Exam". Depending on the sanitary situation, the exam will be taken either onsite, in one of the laboratories, or online, remotely. In the first case the instructors will provide the require assistance and control activity, direcltly in the laboratories. In the second one, the exam will be taken integrating the "Exam" platform using with the proctoring tools.. All students interested to take part to the test in the next exam session have to read the University regulations related to the exams and to obtain the necessary tools needed for the exam. --- To *compensate* for the above anomalies with respect to the standard exams, the test will include a fairly large number of questions (e.g., 12-24) and the final maximum mark will be larger than 30/30 (e.g., 34/30). Each question will be close (with a multiple or a numerical choice) or open (with textual answer, including C code). The number of questions and their evaluation will depend on their difficulty. Probably each question (included the ones on programming topics) will be evaluated from 0.5 to 4 points. The time available for each exam will have to be extablished depending on the test of the exam. As for traditional tests, it will not be possible to use notes and/or books but a single book on the C language. --- The written test comprehends two parts: • Exercises/questions on theoretical aspects to check the acquired knowledge. • A programming part to check the acquired abilities and programming skills. The theory section: • Consists of 6 open questions or exercises on theory topics. • Amounts up to 12 points on the final mark. • Has a minimum threshold of 6 points out of 12. • Has to be delivered after 60 minutes from the beginning of the written test. The programming section (lasting 120 minutes) is available in two different formats: • A complete design and development of a program in C to solve a problem, the emphasis being on problem-solving and design skills. This standard programming part has a maximum value of 18 points and a minimum threshold of 9 points. It implies the design of a unique "standard and complex" C program to check the candidate knowledge of the C language syntax, data structures, algorithms, and program designing (problem-solving) ability. • A guided development of the solution to a problem, with less emphasis on design and problem-solving skills and more on the ability to use advanced C features (pointers, dynamic allocation, recursion) and on the knowledge of basic data structures and algorithms. This simplified programming part has a maximum value of 12 points and a minimum threshold of 6 points. It is usually made-up by three "shorter and partial" C programs or C functions. Those exercises are aimed to check the knowledge of the candidate in terms of C language syntax, data structures, and algorithms but they are less demanding from the designing. i.e., problem-solving, point of view than the "standard" part. The two parts can be selected by the candidate in alternative (mixing is not allowed). Both modes require the same approach to the subject. The theory and programming written tests have to be taken during the same session. No books or notes are allowed during the examination. Laptop, cellular phones, etc. are forbidden. After the written test, all students have 3 working days to correct their program (programs) and check-it (them) out to carry out an auto-evaluation. If the student finally decides to take the exam, he/she has to deliver the final working (complete and debugged version of the) program (programs) to the teacher, following the written rules specified during the class. More specifically, each student must: • Make a copy of the program at the end of the written part (using carbon copy paper or a camera). • Verify the correctness of the program. • Upload on the course web page within 3 working days: a report (max 3 pages) describing the solution (data structures, algorithm, etc.) and a copy of the working program, showing the changes with respect to the version handed in for ranking. Detailed notes on how to prepare the required material and on how to upload it on the portal web page are posted on the theacher's web page. In case the above material is not uploaded, the written exam will not be ranked. Notice that, to take the exam, it is mandatory to deliver a working program (more working programs if the simplified version of the programming part has been selected), even if the evaluation is made on the written text delivered during the test and not on the program written at home. To be able to implement at home the program developed during the written test, students are invited to take with them a photo camera (or a cell-phone with camera) or some copy-paper. The oral examination is the final part of the exam. Students who failed the written test, i.e., have a mark smaller than 15/30, are invited not to take the oral examination and to re-take the entire exam during the next examination session. Students with a written test mark larger than 15/30 and smaller than 18/30 must take the oral examination to pass the exam. For all other students the oral examination is optional. This means that, from the one hand, these students have the discretion to ask for the oral examination to improve their final mark but, on the other one, that the teacher has the right to demand an oral examination to any student he may have evaluation doubts on. Notice, however, that the oral examination (in all cases) can adjust the written mark in both the positive and the negative direction, such that the final mark will range from fail to 30 with honor. The oral examination checks the capacity of the student to explain his/her design choices, to use correct technical terms, and to describe algorithms. It consists in: • Questions on all the topics of the course, the goal being to rank the grade of theoretical knowledge. • Programs in C to evaluate skills related to the implementation and manipulation of data structures by means of advanced C programming constructs and to the implementation of variants of standard algorithms. • Questions on uploaded laboratory exercises.
Exam: Computer-based written test using the PoliTo platform; Written test via vLAIB using the PoliTo platform;
The exam consists of a written test including two separate sessions. Both written sessions are carried out by means of a computer, using the university platform "Exam". Depending on the sanitary situation, the exam is taken either onsite, i.e., in one of the laboratories, or online, i.e., remotely. In the first case, the instructors provide the required assistance and control activity, directly in the laboratories. In the second one, the exam is taken integrating the "Exam" platform with the proctoring tools available on the University site. All students have to read the University regulations related to the exams and to obtain the necessary hardware and software tools needed for it. In the case of problems of infrastructural nature, students must promptly communicate the problem via email no later than one hour after the end of the test. All students are required to respect the ethical code defined by the University. If irregularities are found, the professors reserve the right to perform an oral verification on all topics of the course. The two written sessions embrace: • A theory part, including exercises and questions on the theoretical aspects of the course to check the acquired knowledge. • A programming part, including programs and software design, to check the acquired abilities and programming skills. The theory section The written exam on the theory part is unique for all students, and it is organized as follow: • It includes from 6 to 12 open or close questions or exercises on theory topics. • It lasts from 60 to 90 minutes. • It amounts up to 14 points of the final mark. • It has a minimum passing threshold of 7 points out of 14. The programming section The written exam on the problem solving part is available in three different formats: • An on/off version. This requires more limited programming skills, and it is specifically oriented to students with limited attitude to programming and problem solving and possibly unable to pass the exam in previous examination sessions. The on/off versions: o Includes from 3 to 6 open or closed questions on programming topics. o Lasts from 60 to 90 minutes. o Amounts up to 8 points on the final mark. o Has a minimum passing threshold of 4 points out of 8. When the on-off version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 8/30 on the programming part, is limited to 18/30. • A simplified version. This includes the guided development of the solution to a problem, with more emphasis on the ability to use advanced C features (pointers, dynamic allocation, and recursion, for example) and on the knowledge of basic data structures and algorithms. The simplified version: o Includes from 3 to 6 open or closed questions on programming topics. These are usually "short” or “partial" C functions. o Lasts from 90 to 120 minutes. o Amounts up to 14 points on the final mark. o Has a minimum passing threshold of 7 points out of 14. When the simplified version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 14/30 on the programming part, is limited to 24/30. • A standard version. This includes the complete design and development of a program in C to solve a problem, the emphasis being on problem-solving and design skills. The standard version: o Includes from 1 to 3 open puzzles on programming topics. These are usually complex programs or functions with asymptotic complexity requirements and quite demanding on the design side. o Lasts from 120 to 150 minutes. o Amounts up to 20 points on the final mark. o Has a minimum passing threshold of 10 points out of 20. When the standard version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 20/30 on the programming part, is 34/30. All marks larger or equal to 32 or 33 (depending on the written text) will be automatically converted in 30 with honor. The three programming parts can be selected by the candidate in alternative (mixing them is not allowed). Moreover, the theory and the programming written tests have to be taken during the same session. Books, overheads, and notes are not allowed. Laptops, cellular phones, etc. are forbidden. The final report will be sent to all students after the written test to check the correctness of the hardware and software infrastructure and to give to all students a copy of the programming part. After the written test, all students who take the simplified or the standard version have 3 working days to check their paperwork, correct their program (or programs), and decide whether to take the exam or not. More specifically, each student who took the simplified or standard part must: • Verify the correctness of the program (programs/functions). • If the programs (programs/functions) satisfies the original expectations, he/she must upload on the course web page, within 3 working days, a report (of maximum 3 pages) describing the solution (data structures, algorithm, etc.) and a copy of the working program, showing the changes with respect to the version handed in for ranking. Detailed notes on how to prepare the required material, and on how to upload it on the portal web page, are posted on the teacher’s web page. Notice that, students who solved the on/off part do not have to deliver the final program and they automatically take the exam once it has been delivered on the “Exam” platform. On the contrary, students who solved the simplified or the standard part must deliver the working program (programs/functions) to take the exam. In the latter case, in case the above material is not uploaded, the written exam will not be ranked. In any case, the evaluation of the exam is made on the written text delivered during the test and not on the program written at home.
Modalità di esame: Test informatizzato in laboratorio; Prova scritta tramite PC con l'utilizzo della piattaforma di ateneo; Prova scritta tramite l'utilizzo di vLAIB e piattaforma di ateneo;
The exam consists of two written tests. The written tests are carried out by means of a computer, using the university platform "Exam". Depending on the sanitary situation, the exam is taken either onsite, i.e., in one of the laboratories, or online, i.e., remotely. In the first case, the instructors provide the required assistance and control activity, directly in the laboratories. In the second one, the exam is taken integrating the "Exam" platform with the proctoring tools available on the University site. All students have to read the University regulations related to the exams and to obtain the necessary hardware and software tools needed for it. In the case of problems of infrastructural nature, students must promptly communicate the problem via email no later than one hour after the end of the test. All students are required to respect the ethical code defined by the University. If irregularities are found, the professors reserve the right to perform an oral verification on all topics of the course. The written test comprehends two parts: • A theory part, including exercises and questions on the theoretical aspects of the course to check the acquired knowledge. • A programming part, including programs and software designs, to check the acquired abilities and programming skills. The theory section The written exam on the theory part is organized as follow: • It includes from 6 to 12 open or close questions or exercises on theory topics. • It lasts from 60 to 90 minutes. • It amounts up to 14 points on the final mark. • It has a minimum passing threshold of 7 points out of 14. The programming section The written exam on the programming and design part is available in three different formats: • An on/off version. This requires more limited programming skills, and it is specifically oriented to students with greater designing problems and possibly unable to pass the exam in the past. This on/off version has the following characteristics: o It includes 3 to 6 open or closed questions on programming topics. o It lasts from 60 to 90 minutes. o It amounts up to 8 points on the final mark. o It has a minimum passing threshold of 4 points out of 8. When the on-off version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 8/30 on the programming part, is limited to 18/30. • A simplified version. This includes the guided development of the solution to a problem, with more emphasis on the ability to use advanced C features (pointers, dynamic allocation, and recursion, for example) and on the knowledge of basic data structures and algorithms. This simplified version has the following characteristics: o It includes 3 to 6 open or closed questions on programming topics. These are usually "short” or “partial" C functions. o It lasts from 90 to 120 minutes. o It amounts up to 14 points on the final mark. o It has a minimum passing threshold of 7 points out of 14. When the simplified version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 14/30 on the programming part, is limited to 24/30. • A standard version. This includes the complete design and development of a program in C to solve a problem, the emphasis being on problem-solving and design skills. This standard version has the following characteristics: o It includes from 1 to 3 open puzzles on programming topics. These are usually complex programs or functions with asymptotic complexity requirements and quite demanding on the design side. o It lasts from 120 to 150 minutes. o It amounts up to 20 points on the final mark. o It has a minimum passing threshold of 10 points out of 20. When the standard version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 20/30 on the programming part, is 34/30. All marks larger or equal to 32 or 33 (depending on the written text) will be automatically converted in 30 with honor. The three programming parts can be selected by the candidate in alternative (mixing is not allowed). Moreover, the theory and the programming written tests have to be taken during the same session. Books, overheads, and notes are not allowed. Laptops, cellular phones, etc. are forbidden. The final report will be sent to all students after the written test to check the correctness of the hardware and software infrastructure and giving to all students a copy of the programming part. After the written test, all students who take the simplified or the standard version have 3 working days to correct their program (programs), check their paperwork, and to carry out an auto-evaluation. If the student finally decides to take the exam, he/she has to deliver the final working (complete and debugged version of the) program (programs/functions) to the teacher, following the written rules specified during the class. More specifically, each student must: • Verify the correctness of the program (programs/functions). • Upload on the course web page within 3 working days: A report (max 3 pages) describing the solution (data structures, algorithm, etc.) and a copy of the working program, showing the changes with respect to the version handed in for ranking. Detailed notes on how to prepare the required material, and on how to upload it on the portal web page, are posted on the teacher’s web page. Notice that, students who solved the on/off part do not have to deliver the final program and they automatically take the exam once it has been delivered on the “Exam” platform. On the contrary, students who solved the simplified or the standard part must deliver the working program (programs/functions) to take the exam. In the latter case, in case the above material is not uploaded, the written exam will not be ranked. In any case, the evaluation of the exam is made on the written text delivered during the test and not on the program written at home.
Exam: Computer lab-based test; Computer-based written test using the PoliTo platform; Written test via vLAIB using the PoliTo platform;
The exam consists of a written test including two separate sessions. Both written sessions are carried out by means of a computer, using the university platform "Exam". Depending on the sanitary situation, the exam is taken either onsite, i.e., in one of the laboratories, or online, i.e., remotely. In the first case, the instructors provide the required assistance and control activity, directly in the laboratories. In the second one, the exam is taken integrating the "Exam" platform with the proctoring tools available on the University site. All students have to read the University regulations related to the exams and to obtain the necessary hardware and software tools needed for it. In the case of problems of infrastructural nature, students must promptly communicate the problem via email no later than one hour after the end of the test. All students are required to respect the ethical code defined by the University. If irregularities are found, the professors reserve the right to perform an oral verification on all topics of the course. The two written sessions embrace: • A theory part, including exercises and questions on the theoretical aspects of the course to check the acquired knowledge. • A programming part, including programs and software design, to check the acquired abilities and programming skills. The theory section The written exam on the theory part is unique for all students, and it is organized as follow: • It includes from 6 to 12 open or close questions or exercises on theory topics. • It lasts from 60 to 90 minutes. • It amounts up to 14 points of the final mark. • It has a minimum passing threshold of 7 points out of 14. The programming section The written exam on the problem solving part is available in three different formats: • An on/off version. This requires more limited programming skills, and it is specifically oriented to students with limited attitude to programming and problem solving and possibly unable to pass the exam in previous examination sessions. The on/off versions: o Includes from 3 to 6 open or closed questions on programming topics. o Lasts from 60 to 90 minutes. o Amounts up to 8 points on the final mark. o Has a minimum passing threshold of 4 points out of 8. When the on-off version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 8/30 on the programming part, is limited to 18/30. • A simplified version. This includes the guided development of the solution to a problem, with more emphasis on the ability to use advanced C features (pointers, dynamic allocation, and recursion, for example) and on the knowledge of basic data structures and algorithms. The simplified version: o Includes from 3 to 6 open or closed questions on programming topics. These are usually "short” or “partial" C functions. o Lasts from 90 to 120 minutes. o Amounts up to 14 points on the final mark. o Has a minimum passing threshold of 7 points out of 14. When the simplified version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 14/30 on the programming part, is limited to 24/30. • A standard version. This includes the complete design and development of a program in C to solve a problem, the emphasis being on problem-solving and design skills. The standard version: o Includes from 1 to 3 open puzzles on programming topics. These are usually complex programs or functions with asymptotic complexity requirements and quite demanding on the design side. o Lasts from 120 to 150 minutes. o Amounts up to 20 points on the final mark. o Has a minimum passing threshold of 10 points out of 20. When the standard version is selected, the final maximum mark, i.e., 14/30 on the theory part plus 20/30 on the programming part, is 34/30. All marks larger or equal to 32 or 33 (depending on the written text) will be automatically converted in 30 with honor. The three programming parts can be selected by the candidate in alternative (mixing them is not allowed). Moreover, the theory and the programming written tests have to be taken during the same session. Books, overheads, and notes are not allowed. Laptops, cellular phones, etc. are forbidden. The final report will be sent to all students after the written test to check the correctness of the hardware and software infrastructure and to give to all students a copy of the programming part. After the written test, all students who take the simplified or the standard version have 3 working days to check their paperwork, correct their program (or programs), and decide whether to take the exam or not. More specifically, each student who took the simplified or standard part must: • Verify the correctness of the program (programs/functions). • If the programs (programs/functions) satisfies the original expectations, he/she must upload on the course web page, within 3 working days, a report (of maximum 3 pages) describing the solution (data structures, algorithm, etc.) and a copy of the working program, showing the changes with respect to the version handed in for ranking. Detailed notes on how to prepare the required material, and on how to upload it on the portal web page, are posted on the teacher’s web page. Notice that, students who solved the on/off part do not have to deliver the final program and they automatically take the exam once it has been delivered on the “Exam” platform. On the contrary, students who solved the simplified or the standard part must deliver the working program (programs/functions) to take the exam. In the latter case, in case the above material is not uploaded, the written exam will not be ranked. In any case, the evaluation of the exam is made on the written text delivered during the test and not on the program written at home.
Esporta Word