Theoretical homework

Instructions for all assignments:

  • The theoretical homework are personal and intended for self work. It is not allowed to solve these assignments together or to share solutions.
  • Solutions should be submitted to wooden box #4 (next to room 005, ground floor, Schreiber Building). They will be returned to room 114.
  • Explain each of your answers, unless instructed otherwise.
  • Write your answers clearly, in print or with a clear pen.
  • Do not forget to write your name and ID on top of the exercise.
  • Keep a copy of every assignment you submitted.


Assignment Due date Solutions
Assignment no.1 there was a minor fix in question 2 Nov 5, 13:00 solution
Assignment no.2 there was a minor fix in question 2a Nov 19, 13:00 solution
Assignment no.3 Nov 26, 15:00 solution
Assignment no.4 there was a minor fix in question 4b Dec 10, 15:00 solution
Assignment no.5 Dec 17, 15:00 solution
Assignment no.6 Dec 24, 15:00 solution
Assignment no.7 Dec 31, 15:00 solution
Assignment no.8 Jan 14, 15:00 solution
Assignment no.9 Jan 28, 15:00 solution

Programming projects

Assignment Due date Tester Results
RB Tree - Specifications Skeleton Code Dec 24, 23:55 RBTree Tester Runtime tester submission errors Grades
Binomial Heap - Specifications Skeleton Code Jan 21, 23:55 Heap Tester Runtime tester (milli changed to micro) The actual tester Grades
  • There will be two programming assignments during the semester.
  • Each student must submit all assignments in order to be eligible for a final grade.
  • The programming projects should be submitted in pairs.
  • The projects should be submitted on time.

What to submit?

  1. The Java file with your code.
    • Built-in data-structures: You may not use in your implementation any of the built-in java.util data-structure classes (or similar packages)
    • Inline comments : The java file should have inline documentation, mainly composed of a reasonable amount of comments (when needed).
    • Code readability : Pay attention to things like variable names (call a variable start, not s ), line length (no lines spilling over to the next line!)
  2. A documentation file. The file name should be ex1.doc for the first exercise, and ex2.doc for the 2nd exercise.The documentation file should contain :
    • Course and exercise number
    • Full name, ID and login of both students. Also include an email addresses if you are not using the address.
    • A description of the class and how you implemented it. What is the purpose of each member of the class.
    • For every method in your program:
      • A short description of what it does and how it works.
      • The method's complexity analysis. This should be rigorous. (Like you did in class or in the lectures. Note that if a method calls other methods, you must include this in your calculations.)

How to sumbit?

  1. Submit a printout of the documentation file, and of the .java file you created, printed from both sides, maximum font size 10, and stapled together or in a folder, to box #296 (Shai Vardi) on the first floor in Schreiber. Submit one hardcopy per pair.
  2. Submit a softcopy in your account.
    1. You should have a ds09a directory in your account.
    2. Exercise 1 should reside in the directory ~/ds09a/ex1. Exercise 2 should reside in ~/ds09a/ex2.
    3. This directory should contain 2 files: the .java file for the exercise and the appropriate documentation file (ex1/2.doc)
    4. You must not touch or change the files you submit after the deadline. All files carry a timestamp indicating the time of last modification. Files that are changed after the deadline will be considered as not submitted on time!
    5. The exercises should be in both students' accounts.

File permissions

The permissions of the entire path from your home directory down to the exercise files themselves should be 755, to enable reading by the checkers. You may use the following commands, which should be used from a linux terminal window, either in the lab or remotely from home (using Putty, for example):

chmod 711 ~
chmod -R 755 ~/ds09a

It is very important to submit the project with correct file permissions. A project without the right access permission cannot be check and would not be graded.

To make sure that you have the right permissions, do the following:
A. Run:

ls -lR ~/ds09a

The result should be something like that:
total 4
drwxr-xr-x 2 student student 4096 2009-10-29 20:14 ex1

total 0
-rwxr-xr-x 1 student student 0 2009-10-29 20:14

Where the line of each directory should start with drwxr-xr-x, and the line of each file should start with -rwxr-xr-x

In case of problems with file, you can contact the helpdesk.


  • The grades will be composed of the following parts:
    1. Correctness of the program.
    2. Implementation efficiency. Your programs should have the smallest asymptotic time complexity you can achieve.
    3. Documentation and code clarity. Your documentation and code should be easy to understand.
  • You can appeal a grade within 2 weeks of a grade's publication.


Question regarding the submission of the projects, and their grades should be directed to the grader - shaivar1 at post tau ac il

Working on school servers

FAQ can be found here.
It is explained there how to log-in to "nova" using Putty and how to upload files using WinSCP.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License