Course Management Software System: Requirements

 

This document outlines some high-level requirements for a generic course management software system that could be deployed for use within the Computer Science department at Cornell University. The requirements outlined in this document have been collected from a variety of sources, including:

 

 

Please note that this document is only a first draft, and that the requirements could change once we get feedback from additional sources.

 

The rest of this document is organized as follows. In Section 1, we outline the high-level architectural requirements, and in Section 2, we describe other functionality requirements. Finally, in Section 3, we present some thoughts on the development and maintenance of the system.

1.   High-level Architectural Requirements

We outline three architectural requirements, namely security, reliability, and scalability. We now discuss each in more detail.

1.1           Security

1.2           Reliability

1.3           Scalability

One simple way to meet the above requirements is to dedicate a separate machine and an application server for every large course. All the courses could share the same database backend so that management overhead for the system maintenance staff is minimized.

2.   Functional Requirements

We now describe some functional requirements for the course management software system.

2.1           Grade Management

The system should be capable of managing student grades. Specifically, it should support the following features:

2.2           Homework Submissions

The system should be capable of automatically accepting homework submissions. Specifically, it should support the following features:

2.3           Group Management

The system should support group management features. Such features are especially important for courses with group projects.

2.4           Miscellaneous

The system should support the following miscellaneous requirements.

3.   Concluding thoughts

Since we are not aware of any existing software system that supports all of the above features, it seems inevitable that we develop and maintain our own “home-grown” system. While developing such a system has many advantages, it also comes with the following additional responsibilities.