Index: main/waeup.kofa/trunk/docs/source/userdocs/academics.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/academics.rst	(revision 12902)
+++ main/waeup.kofa/trunk/docs/source/userdocs/academics.rst	(revision 12906)
@@ -4,7 +4,57 @@
 ****************
 
-.. contents::
-   :local:
+Academic bodies of universities are hierarchically structured. A university contains faculties which again host departments. The latter offer course (course units) and study programmes (courses of study). A course is series of classes or lessons on a particular subject. This can be a lecture, tutorial, seminar, practical work offered by a lecturer of the department over a period of an academic term. A course can also be only an exam at the end of an academic term. A study programme is defined by a set of course units to be taken at various programme levels and by an academic degree certificate, which is issued at the end of the programme. Information about universities, their study programmes, lecturers and courses can be found in the university prospectus.
 
-Introduction
+Kofa's academic section takes on the task of the university prospectus. It is build to disseminate information about faculties, departments, courses, study programmes and the sets of courses to be taken. The academic section reflects exactly the universities' hierarchical structure as described above. Technically speaking, the academic section is a container of type `FacultiesContainer` with id ``academics`` which contains faculty sub-containers. They again contain department sub-objects, nothing else. This leads to a  :ref:`treelike storage of objects <object_database>`.
+
+Faculties
+=========
+
+Faculties are container objects of type `Faculty`. They have a `code`, a `title` and a `title_prefix` attribute.  Furthermore, faculties and departments have a `longtitle` property which :py:func:`composes <waeup.kofa.university.faculty.longtitle>` and returns the full title as it appears in tables, in breadcrumbs and in many other places:
+
+  `longtitle` = `title_prefix` + `title` (`code`)
+
+The following :ref:`local roles <local_roles>` can be assigned at faculty level:
+
+  .. autoattribute:: waeup.kofa.university.faculty.Faculty.local_roles
+
+Departments
+===========
+
+Additionally, each department object has the attributes `certificates` and `courses`. These attributes again are containers which hold certificate and course objects respectively. A :py:meth:`traverse <waeup.kofa.university.department.Department.traverse>` method leads the user to believe that `certificates` and `courses` are the ids of objects stored inside a department container. De facto they are not. However, it doesn't matter if we store a sub-object 'in' or 'at' a parent object. The result is exactly the same: :ref:`a hierarchical, treelike storage of objects <object_database>`.
+
+The following :ref:`local roles <local_roles>` can be assigned at department level:
+
+  .. autoattribute:: waeup.kofa.university.department.Department.local_roles
+
+Courses
+=======
+
+The `Course` class inherits from `grok.Model` which means it is designed as a pure model and not a container. Courses are tips of the database tree branches. Course objects contain information as they are offered by the department. In the base package these are: `code`, `title`, `credits`, `passmark`, `semester` and the boolean attribute `former_course`. They also have a `longtitle` property. A former course is an archived course which had been offered in the past.
+
+.. note::
+
+  Only the department, which offers the course, decides how many credits can be earned, which pass mark must be achieved and in which semester the course can be taken. The manager of the department cannot decide whether a course is mandatory or not, or at which study level the course has to be taken when studying a certain programme. This information is stored in `CertificateCourse` objects, see below. Therefore it does not make sense to speak e.g. of a 300 level course. Also course codes like ``AEE311``, which tell the student that the course is primarily intended for 300 level students, is somehow misleading. There might be other study programmes which recommend to take this course already at level 200.
+
+The following :ref:`local roles <local_roles>` can be assigned at course level:
+
+  .. autoattribute:: waeup.kofa.university.course.Course.local_roles
+   :noindex:
+
+Certificates
 ============
+
+In Kofa, the terms 'certificate' and 'study programme' are used synonymously. A certificate object holds information about the study programme. Important data for further processing in Kofa are: the various school fees to be paid at certain levels, programme start and programme end level, the mode of the study course and, last but not least, the application category to which the programme belongs.
+
+Certificates are also containers which contain `CertificateCourse` objects. That means a certificate defines the list of course units which have to or can be taken within the programme.
+
+The following :ref:`local roles <local_roles>` can be assigned at certificate level:
+
+  .. autoattribute:: waeup.kofa.university.certificate.Certificate.local_roles
+   :noindex:
+
+Certificate Courses
+===================
+
+
+
Index: main/waeup.kofa/trunk/docs/source/userdocs/datacenter/intro.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/datacenter/intro.rst	(revision 12902)
+++ main/waeup.kofa/trunk/docs/source/userdocs/datacenter/intro.rst	(revision 12906)
@@ -1,6 +1,8 @@
-.. _intro:
+.. _datacenter_intro:
 
 Introduction
 ************
+
+.. _object_database:
 
 The Object Database
@@ -80,7 +82,7 @@
 .. note::
 
-Although exporters are part of Kofa's batch processing module, we will
-not call them batch processors. Only importers are called batch
-processors. Exporters produce CSV files, importer process them.
+  Although exporters are part of Kofa's batch processing module, we will
+  not call them batch processors. Only importers are called batch
+  processors. Exporters produce CSV files, importer process them.
 
 
Index: main/waeup.kofa/trunk/docs/source/userdocs/security.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 12902)
+++ main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 12906)
@@ -234,4 +234,6 @@
    :noindex:
 
+.. _local_roles:
+
 Local Roles and Dynamic Role Assignment
 =======================================
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/department.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 12902)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/department.py	(revision 12906)
@@ -78,6 +78,6 @@
 
     def traverse(self, name):
-        """Deliver appropriate containers, if someone wants to go to courses
-        or departments.
+        """Deliver appropriate containers, if someone wants to go to courses,
+        certificates or exports.
         """
         if name == 'courses':
