Computer Architecture and Systems Programming Lab

Semester B 2008-2009 (Spring 2009)


BGU Computer Science Department

Description of the course

It is extremely important for a student of computing to understand some of the machine-dependent aspects of computers, and how they might impinge on embedded software, and on systems software. This course covers the ground from a subsystem-level description of computers (also known as "computer organization"), through programmer-visible aspects of the machines ("computer architecture"), to assembly language issues. As such, the course is a bridge between the hardware and assembly language courses on our curriculum (Digital Systems and Introduction to Computers), and the pure programming courses, such as Systems Programming and Operating Systems.

As one of the goals of the course is to enable the student to quickly learn to use any newly encountered architecture, we focus mostly on principles, rather than on a particular machine. Nevertheless, as a case studies (and in order to provide hands-on experience), the course will discuss one CISC machine (Intel series 80X86). Machine-specific assembly language, and advanced issues in low-level programming will be the main topic of the exercise sessions. In particular, a special new feature of this course examines malicious programming and how understanding machine code helps us prevent it or detect it. We will examine basic worm-holes, and executable virus operation techniques, and how to help prevent their attacks.

As this course centers on low level, and in order to avoid overlap, this course is now merged with the Systems Programming Lab. The Lab is based on a LINUX platform, and uses the C programming language. As in the architecture part of the course, the emphasis is on low-level programming. Goals of this lab are to introduce issues in low level programming, as well as techniques on how to learn needed information on demand, via hands-on experience.

Administrative Details and Online Material

  1. Course Reference: (201-12091) - Semester B 2008-2009 (Spring 2009).
  2. Credits: 4 (for 2.5 lecture hours, 1 exercise session, and 3 weekly lab hours)
    (for people taking only the lab part (course number 201-12091), this is 3 lab hours and 0.5 lecture sessions not evenly split)
  3. Class Hours:
  4. Class and lab hour arrangement:
    We have allocated 3 lecture hours per week, to cover both the architecture lectures and the lab lectures. In most weeks we will have 2 hours, but in some weeks, especially weeks 1 and 2 of the semester, will be 3 hours for all students in these courses.
    Labs: 3 hours each week, but only 9 labs total, so some weeks there will be no labs.
  5. Instructors:
    Prof. Eyal S. Shimony. (Course coordinator)
    Dr. Jihad El-Sana.
  6. Teaching assistant: Gilad Bauman (e-mail: ).
  7. Lab assistants:
    Ami Berler
    Dror Fried
  8. Online course material.
    1. Syllabus and requirements
    2. Lecture sessions
    3. Exercise and lab sessions
    4. Practical session web site and bulletin board (also contains homework exercises).

    Back to BGU - CS HomePage