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 serve the entire university. The limitation on staffing most of the time, results in the creation of bigsized classes. This in turn, will produce voluminous workload to the teaching staff, hence, rendering close monitoring of students' performance next to impossible. Relief might be possible by venturing into the realm of a Computer-Assisted Assessment (CAA). This paper describes our experience in designing and implementing a CAA System that is based on distributed and agent-oriented architectures. The system design caters for two primary objectives; to harness the power of distributed computing and to enable the integration of CAA into existing E-Learning System. We have analyzed and extracted important functionalities required for the system and describe agent's roles for each of the functionalities. 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 feasibility, scalability and accuracy of the assessment module's as well as its limitations.