views:

21

answers:

1

Although I will be using Ruby on Rails, this is a general questions about the best way to model a database and design a custom access control system for a CMS. So it does not matter what language/db. I would be happy to hear input from all experts.

My problem: I am in the early process of developing an online tutorial system for a local university. The idea is that students will be able to obtain extra help online alongside their main class material.

Basics: - Planning to use an existing CMS to manage content (basically web pages).

  • Content is structured by course, topic, subtopic, etc.

  • A registered student can login and see relevant content (so only see course material that they signed up for).

  • As student follows content he/she is required to do some exercises.

  • There are tutors that check student progress and provide further assistance if needed. So exercise results are stored alongside student records for tutors to review.

  • Student responses to exercises are not graded, but answers are provided upon submission.

  • Major issue: some profs wish to coerce students to do the exercises before the rest of content becomes available. Other profs wish to set times when content chunks get released. Or it could be a combination of both.

The timed content release is easy to do. But I have no idea how to model and design the conditional content release. In this case conditions being the student progress (completed exercises).

To illustrate, I have this content:

    1. Calculus
    - 1.1 Limits
     - 1.1.1 Basic principles 
     - 1.1.2 More basics (with exercise)
     - 1.1.3 Answers to previous questions
    - 1.2 Derivatives
      - 1.2.1 Intro
      - 1.2.2 Sample problems(with exercises)
      - 1.2.3 Answers
      - 1.2.3 More content ....
    - 1.9 More calculus
       - 1.9.3 Some other content that is available when all previous exercises are completed
    2. Physics
    3. Chem 

Example: Content for Calculus should only be available once student is enrolled in Calculus class. Content for 1.1.3, 1.2, etc should only become available once exercises on 1.1.2 are completed. So it's kind of a chained reaction.

So as you can see there is some structure, but mostly a lot of dependencies. So I'm wondering what would be appropriate way to model this in the database, and how does one design access control for such a system.

Has any one encountered a similar problem? Any ideas, insight, references would be most welcome.

A huge thank you.

A: 

You could use an already made system that handles all of this. Moodle is a popular open-source alternative that you can install like you would a regular CMS, and it handles courses and students and even quizzes. Here is a list of these "learning management systems", some are free, some are not.

cambraca
Thank you for your response. Yes, I have considered moodle. In fact, we already use it to manager course content. Unfortunately, it is way too bulky for our needs. We need something lightweight, hence a new project.
Swartz