Content
The test covers materials up to the second part of the dynamic memory topic (realloc), inclusive. The test emphasizes the correct use of the topics covered. Increased focus is placed on reading data from a file, pointers, structures, code structuring, and the use of dynamic memory.
The data file used in the coding task will be provided by the instructor along with a description of its structure. The application must work correctly with data files that have the same structure but varying lengths.
The algorithmic part of the test includes typical tasks such as finding extremes, counting, filtering, sorting, unit conversions (time, speed, length, …), string processing, calculating statistical indicators (sum, arithmetic mean, percentage, standard deviation, …), using formulas, etc. The list is indicative and not exhaustive!
Your solution will be compiled on a Linux environment equivalent or newer to the lab computers, using gcc as the compiler (version 13 or newer) and the GNU99 ( -std=gnu99) standard . If a Makefile is provided, the student’s Makefile will be used to compile the application using the make all command.
Organization
The test can only be written on a lab computer. The test is individual.
During the test, you are allowed
- To use materials (slides, notes, code samples, your homework, lab solutions)
- To use static content found on the internet (e.g. websites containing code samples, including StackOverflow, GeeksForGeeks, etc.)
- To use materials that you have previously downloaded and saved to your P drive or desktop. Download all files before the test. You are not allowed to use file sharing applications during the test!
During the test, you are not allowed
- To log in to various online services with your account (except Moodle)
- To use collaboration platforms (file sharing, communication, email, etc.)
- To use code generation (GPT, Gemini, …, and other language models)
- To use search engines that automatically display answers generated by language models (e.g. Bing)
- To use personal devices (laptop, phone)
- To use online code editors and compilers
Submission
The solution created during the test must be submitted in full on Moodle. All code files must be submitted, including the Makefile if necessary.
The theory part of the test can be submitted either handwritten, on paper, or digitally as a text file. When submitting digitally, the answers to the theory questions must be uploaded to Moodle alongside the rest of the solution.
Test time and duration
The test will take place during the regular lab session according to the weekly schedule.
Up to two retake attempts are allowed
- During the consultation session in week 13 or 14 (notification will be given via Mattermost).
- During the lab session in week 16.
The test duration is approximately 2 hours and 30 minutes.
Test grading
The test gives a total of 40 points, which is divided between different tasks (theory and practical coding assignments). The test result is a part of the exam prerequisite.
The theoretical part of the test is 10 points.
The coding task is 30 points, which is distributed across three subcategories:
Code quality, which evaluates
- The use, structure and contents of header files
- Appropriate use of structures and enumerations
- Splitting code into reusable functions
- Code readability
- Code compilation, including compliance with standards.
Code functionality, which evaluates
- Whether the application contains errors
- Whether and to what extent the application fulfills the given task
- Whether the application’s behavior and output are understandable
Memory usage, which evaluates
- Use of dynamic memory, including freeing of the memory
- Reading of data files with undefined length
- Data integrity
The cumulative score for each category will be presented in the Moodle test feedback.
Test result and feedback
The test results are published on Moodle. The Moodle grade sheet also includes test feedback, which contains the cumulative scores for each evaluated subcategory.
To receive more detailed feedback, you must contact the instructor and arrange a time to review the work.