Computer programming is considered a fundamental subject in most of engineering and computer related programs in many universities. Usually, the teaching responsibility is given to a single department, which will service the entire university. The limit on staffing will most certainly result in the creation of big-sized classes. This in turn, will produce voluminous workload to the teaching staff hence rendering close monitoring of students' performance next to impossible. This paper proposes a distributed and agent oriented architecture for a Student Assessment System. In the realm of Computer Assisted Assessment (CAA) a lot of systems in used currently are both centralized and standalone. Our design concentrates on two primary goals; to harness the power of distributed computing and to make CAA an integrated part of any existing E-Learning System. We have analyzed and extracted important functionalities required for the system, describe agent's roles for concerning each of the functions. We also describe the communication and accessibility aspect of the agents. We have developed an independent assessment module and performed some tests in a computer laboratory environment. We present in the last section of the paper, our findings regarding the assessment module's performance.