Automatic Analysis of Algorithm Runtime Science Academic Year 2023 Rejected Computer Science Algorithm analysis is a crucial skill every Computer Scientist, Computer Engineer, or Software Developer must know how to perform. Traditionally, students in CS or ECE learn about algorithm analysis during core undergraduate courses on a theoretical basis. In such courses, students are asked to solve programming projects having runtime requirements as part of the problem description. Unfortunately, estimating the actual runtime of a solution using time units (i.e., the difference between the end time and the start time of the program) is sensitive to the parallel processes running on a system. So, runtime evaluation reduces to impose limits on the amount of time each program must take to return an answer. This project considers an automatic runtime analysis based on the traditional approach: counting the number of times an algorithm runs an operation or the number of iterations it must take to return an answer. The proposed solution considers a code parser that introduces new counting variables to a source code to count iterations or executions. Then, it runs the modified code using the defined testing cases. Finally, the script collects the counted values and runs curve-fitting with regression to find the best traditional runtime descriptor (i.e., terms used to describe orders of growth). We will evaluate the accuracy of the solution by running the code analyzer on multiple programming project solutions submitted by students. The scope of this solution has applications in Computer Science and Programming Education, Source Code Optimization, and good practices in Software Development. The results of this project will be of immediate application in the upcoming offerings of CS251 – Data Structures and Algorithms. Andres Mauricio M Bejarano Posada Andres Mauricio M Bejarano Posada The selected students are expected to conduct independent work every week. That includes consulting material (e.g., research papers, websites, textbooks, tutorials), proposing ideas, implementing solutions, and thorough testing. There will be instances for the selected students to present material to diverse audiences (e.g., fellow group members, teaching assistants, professors, and general audience). By the end of the project, the student should have contributed to the algorithm analysis tool/platform by developing one of its components. Having passed a course in Data Structures and Algorithms (CS251 or ECE 368). Knowledge of Java, C/C++, and Python is preferred. 3 6 (estimated)

This project is not currently accepting applications.