Warning

## Exam registration

Exams are organized exclusively according to the linked overview, data in KOS are not decisive, do not register in KOS.

## Objectives

Individual implementation of variants of standard (basic and intermediate) problems from several selected IT domains with rich applicability. Algorithmic aspects and effectiveness of practical solutions is emphasized. The lectures provide a necessary theoretical background.

## Prerequisites - programming

The course requires programming skills in at least one of programming languages C/Cpp/Java. There are also homework programming tasks. Understanding to basic data structures such as arrays, lists, and files and their usage for data processing is assumed. Students who should have difficulties with elementary programming tasks will not be assigned PAL credit. We recommend to cancel the subject attendance to those students.

The semester includes homework programming problems that are required to be solved, implemented, and uploaded by the given deadlines into the Upload System. The homework problems represent examples of algorithmically slightly more involved problems. Typically, few different algorithms and/or data structures must be correctly interconnected to solve the task. The time for solution is about 20 days.

1. The correctness of the solution is checked automatically using test data sets (unknown to the students).
2. Running time is critical. The time in which the submitted solution processes each of the data files is monitored and it is compared to the running time of the reference code processing the same data file. Typically, the student solution is expected to run at most two times as long as the reference solution. Slower student solutions are regarded as unacceptable.

The timetable of the homeworks:

assignment -- deadline
1.  23.9.  -- 16.10.
2.   7.10. -- 30.10.
3.  21.10. -- 13.11.
4.  18.11. -- 19.12.
5.  25.11. -- 26.12.
6.   9.12. --  9.1.     

## Final Credit Conditions

In addition to the participation in the seminars it is necessary to deliver successful solutions in term of programming tasks. Each tasks is executed against 10 testing data sets of different size and complexity. The solution is considered as successful if the correct results are returned for at least 9 test data sets. Therefore, the assessment of tasks according to the number of correctly processed input files is the following:

Grading of the homework problems according to the number of correctly processed data sets:

.... 8 and less................ 0 pts ............... unsuccessful solution  :-(
.... 9 ........................ 3 pts ............... successful solution    :-)
... 10 ........................ 4 pts ............... successful solution    :-D

At least 13 points is necessary to obtain to the final credit. It does not matter how many of which homeworks one solves.

A penalty is added to the grading of a homework solution submitted after the deadline. It is -1 point immediately after the deadline and another -1 point in each next week after the deadline if the solution is submitted with such delay. The grading cannot become negative.

All tasks are required to be developed separately while avoiding plagiarism, see plagiarism rules.

A student who can not continually fulfill the requirements of the subject because of declared important reasons (illness, study trip, etc), needs to make an agreement with his/her seminar assistent of the lecture on an individual treatment conditions of completing the course.

## Examination

Register yourself in Exams timetable

Do not try to register via KOS, that would not work in Advanced Algorithms. The exams are organized solely according to the Exams timetable linked above.

Theoretical part of exam (0 - 12 points), acceptable minimum 6 points
In the theoretical part the student receives several questions and prepares a written outline of answers to them or a more detailed answer, if a specific question requires it. The answers will be discussed with the examiner, who determines the final rating. The student must obtain at least 6 of the possible 12 points. The time of answres preparation is limited to 1 hour at most.

Programming part of exam (0 - 12 points), acceptable minimum 6 points
It includes one programming task which must programmed and submitted by the student during the examination. The task solution is evaluated in the same way as any other tasks during the semester, the solution must function properly and fast enough for at least 6 out of 12 test files at the examination. Each test file represents one grade point. Time for programming is 4 or more hours. The first 30 minutes are devoted to problem analysis and preparation of the solution, any coding is not allowed in the first 30 minutes. Solutions can be provided in any language of Java/C/C++ or Python. Any use of Python has to be carefully considered, the speed of Python code, depending on the particular problem, might be easily insufficient for the exam purposes. During the practical part of the applicant can use any printed or electronic material on CD/DVD/flash drive, which he/she brings himself. Any access to public internet sites is forbidden with the exception of BRUTE system only. Working with BRUTE, i.e. entering and submitting jobs, is the same as it is in the semester.

Working with computer(s) and other devices during the exam

• Every participant works individually on his her own personal computer.
• Internet connection can be used only for communication with upload system BRUTE.
• Mobile phones and other electronic/computational devices must be switched off.
• Listening to reproduced music/speach/audio is not allowed.
• It is possible, with the examiner supervision, to browse internet using the examiner's computer in case of difficulties with compiler/interpreter, OS, machine hardware or another critical SW in your own machine.

Late minimum correction
When you find after the failed practical exam that the failure was caused by a trivial error in your code you may ask the examiner for repeated evaluation of the corrected code. If the corrected code works according to the exam demands you may still pass this part of the exam. The necessary conditions of a success in such case are 1. The correction must be conceptually simple and physically short (few lines of code, at most). 2. The original failled solution must be uploaded to Brute before the end of the exam. 3. The correction must be done in the day of the exam.

A student who does a retake and succeeded in the previous exam in either its practical or theoretical part, may not participate in this part again, the points are completely transferred to the retake. He/she may also try to improve his/her performance and to participate in this section again, the final score is then counted from the better performance trial. These rules apply to all of these exam retake trials.

Individual conditions
When a student has an important reason to take part in the exam under different conditions than those specified here he/she has to arrange for individual conditions with the examiner sufficiently ahead in time.

The classification scheme
The rating of the student is proposed after a successful completion of practical and theoretical part of the exam. The rating points are summed from points received from the solutions of programming tasks in the semester, points received from the programming part of the exam, and points received from the theoretical part. The sum of points corresponds to a grade according to the following table:

Points range:
---------------------------------
homework problems:   13 - 24 pts
programming exam:     6 - 12 pts
theoretical exam:     6 - 12 pts
---------------------------------
Total:               25 - 48 pts    
Total sum
=============  ======
0 -- 24.99        F, failed exam attempt
25 -- 29.99        E
30 -- 34.99        D
35 -- 39.99        C
40 -- 44.99        B
45 -- 48           A



## Teachers

We wish you good luck and determination.

Marko
Genyk-Berezovskyj
Daniel Průša