Course Lecturer: Dr. Elad Aigner-Horev
Admission hours: By appointment
Mr. Sefi Erlich and Mr. Gill Levy
2018 Semester B
A mandatory course for 2nd year undergraduate students with the CS program at Ariel University.
Consult the course syllabus to learn about your obligations throughout the course and the composition of the final grade.
The course relies heavily on data structures, C programming, and Java programming. In addition, a certain level of mathematical maturity is expected as for the most part of the lectures we will be pursuing proofs asserting various properties for so called synchronisation algorithms. Please review all prerequisites for this course as listed in the syllabus prior to enrolling.
All assignments are non-mandatory and the decision whether to pursue them is left to the students.
The working assumption though is that all students are relentlessly pursuing all assignments; in particular the material covered by the assignments lies squarely within the scope of the final exams. For more details please consult the course syllabus.
1. Doing all assignments is the bare minimum expected from an enrolled student who is expecting to pass the course.
2. Doing all assignments does not bare with it any guarantees towards the final exams.
3. There are two types of assignments in the course: a major programming assignment and a collection of small assignments. One is not a substitute for the other.
We strongly advise against any type of memorisation of final exams in previous course instances.
These form no binding obligations on the finals of this course of any kind.
In particular, the exams appearing here below are utterly meaningless in terms of what these mean regarding the final exams of this course. For some exams appearing below solutions are appended at the end of the exam file. We will not publish solutions for the exams that appear here with no solutions.
Both these notes may be updated from time to time throughout the course; make sure to keep track of this
The course offers a non-mandatory programming assignment in which one has to implement a nearly fully functional search engine.
1. Answer all questions appearing here
2. Using fork()
4. Sending signals through a process tree
5. Understanding Peterson
6. Compare and swap
7. Apple and MS try to cross a river
8. Using barriers in the prefix sum problem
9. Searching a matrix with several processes
10. Using barriers in order to sort an array
11. Scheduling algorithms
12. Implement a thread pool manager in C (see search engine assignment)
13. Implement a thread pool manager in Java (see practical session slides)
14. In the search engine assignment implement the Trie part alone.
15. Make a list of all Java classes taught in the course and for each list their main methods: write out their signatures and explain each parameter.
16. State Dekker's algorithm. List its properties and prove each (without consulting any notes).
17. State Peterson's algorithm. List its properties and prove each (without consulting any notes).
18. State the filter algorithm. List its properties and prove each (without consulting any notes).
19. State the bakery algorithm. List its properties and prove each (without consulting any notes).
20. State Aravind's algorithm. List its properties and prove each (without consulting any notes).
21. The tournament scheduling algorithm and its properties