Contents (hide)


The course

The purpose of the course is to explain and to exercise the basic concepts in Computer Science, object-oriented programming, and programming principles, using the Java programming language.

  1. Introduction to data structures and algorithms.
  2. Principles of procedural and object-oriented programming, polymorphism, abstract classes and interfaces.
  3. Recursive definitions and programs.
  4. Algorithmic efficiency: upper bounds and computation of running time for basic sorting and searching algorithms.
  5. Java as a regular programming language, with examples from various areas in Computer Science, such as abstract data structures.


  1. Java Software Solutions, John Lewis, William Loftus. Addison Wesley.
  2. Java Precisely, Peter Sestoft. MIT Press. (Old edition PDF.)
  3. מההתחלה Java, נועם גילעדי, גדי הולצמן ואיתן הרטמן.
  4. פרקי מבוא במדעי המחשב, אורי אברהם.

Grading policy

Submission system

All assignments should be submitted, in time, via the Submission System. Note that no special extensions will be provided if you fail to submit at the last minute, unless there is a communication failure confirmed by the Computation Center. The deadline in the submission system is one hour after the deadline published in Assignments, and you are expected to abide by the latter. Submissions by email will not be accepted. If you are in a special circumstance, you need to secure an extension before the deadline, and the submission group needs to be created before the deadline as well.

Submission instructions:

  1. You should submit a single archive file in ZIP format containing only the files requested in the assignment. Any newer submission for a given assignment overrides the previous one (if any). The file names should be exactly as specified in the assignment. All directory names and any additional file names must be in English.
  2. The code should compile together with a simple sanity testing function which will call each of the required methods with simple parameters.

If the above does not hold, the submission will be rejected, with an explanatory message (including the testing code).

In order to submit an assignment late (after deadline), you need to write a request in the late submission box at the bottom of the submission group details, after which you should be able to make a late submission. See the late submission policy in the previous section. Note that if you secured an assignment extension (e.g., due to reserve duty), this does not apply to you – your personal deadline should be extended instead.

Academic integrity

Cheating in university courses is regarded as a serious offense. To avoid any possible misunderstanding, please read the following carefully.

Academic dishonesty includes any act of obtaining, soliciting or making available to others, material related to homework assignments. If you commit any of the above, then you are guilty of academic dishonesty. If your partner commits any of the above and you submit the assignment jointly, then you are just as guilty of academic dishonesty. If you choose to work with a partner, then you are both personally responsible for what you submit together. Claiming that you were not aware of the fact that your partner copied the assignment from somebody else will not absolve you of any responsibility.

To eliminate any doubts, we make no distinction between the two (or more) sides of the cheating. If we suspect that Bob and Alice have copied an exercise one from the other, we see no way they could have done this without cooperation. It is your own responsibility to make sure that nobody can copy your files. Be discreet.

We will not tolerate academic dishonesty in this course. If you are suspected of academic dishonesty, then a complaint will be filed with the university disciplinary board (ועדת משמעת) and a detailed report placed in your academic records. The minimal penalty for this type of offense is a grade of zero in the course. You might also be expelled from the university.

We keep records of submitted homework assignments, and reserve the right to check for academic dishonesty anytime after you have submitted an assignment.

To remove any doubt: you cannot share any amount of source code with other students. If you copied just a bit, it cannot be considered as a mitigating (special) circumstance in the disciplinary hearing, since in programming, details are crucial. Neither the difficulty of an assignment can be considered such a circumstance. Similar programs submitted by more than one group will be considered as cheating.