diff --git a/document_root/schema/courses.xsd b/document_root/schema/courses.xsd
index ce5084855ddbd6b7a3034ef553761f2c01703f46..8a1fc1b701161186e4b701eb7f78d3903a79071b 100644
--- a/document_root/schema/courses.xsd
+++ b/document_root/schema/courses.xsd
@@ -12,7 +12,10 @@
                schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd" />
 
 
-    <xs:element name="courses" type="courses"></xs:element>
+    <xs:element name="courses" type="courses">
+        <xs:annotation>
+            <xs:documentation>This is the root node for a list of course descriptions.</xs:documentation>
+        </xs:annotation></xs:element>
 
     <xs:complexType name="courses">
         <xs:sequence>
@@ -21,25 +24,77 @@
     </xs:complexType>
     
     <xs:complexType name="course">
+        <xs:annotation>
+            <xs:documentation>This is a description of a single course, containing data that one would find in the undergraduate bulletin.</xs:documentation>
+        </xs:annotation>
         <xs:sequence>
-            <xs:element name="title" type="xs:string" />
-            <xs:element name="courseCodes" type="courseCodes" />
-            <xs:element name="gradingType" type="gradingType" />
-            <xs:element name="dfRemoval" type="xs:boolean" />
-            <xs:element name="effectiveSemester" type="xs:positiveInteger" />
-            <xs:element name="prerequisite" type="x:Block" minOccurs="0" />
-            <xs:element name="notes" type="x:Block" minOccurs="0" />
-            <xs:element name="description" type="x:Block" minOccurs="0" />
-            <xs:element name="campuses" type="campuses" />
-            <xs:element name="deliveryMethods" type="deliveryMethods" />
-            <xs:element name="termsOffered" type="termsOffered" minOccurs="0" />
-            <xs:element name="activities" type="activities" />
-            <xs:element name="credits" type="credits" minOccurs="0"/>
-            <xs:element name="aceOutcomes" type="aceOutcomes" minOccurs="0" />
-            <xs:element name="gradCredits" type="xs:string" minOccurs="0" />
-            <xs:element name="gradNotes" type="x:Block" minOccurs="0" />
-            <xs:element name="gradPrerequisite" type="x:Block" minOccurs="0" />
-            
+            <xs:element name="title" type="xs:string" >
+                <xs:annotation>
+                    <xs:documentation>The title of the course</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="courseCodes" type="courseCodes" >
+                <xs:annotation>
+                    <xs:documentation>A list of course codes for the course, broken up into the subject code, course number and possibly a course letter.  Each course must have at least one course code of type "home listing."</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="gradingType" type="gradingType" >
+                <xs:annotation>
+                    <xs:documentation>This specifies if the course is allowed to be taken pass/no pass, for a letter grade, or both. </xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="dfRemoval" type="xs:boolean" >
+                <xs:annotation>
+                    <xs:documentation>If set to true, this course will remove a grade of D or F from previous versions of the course.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="effectiveSemester" type="xs:positiveInteger" >
+                <xs:annotation>
+                    <xs:documentation>The semester that this version of the course became active.  Format is a four digit year followed by a single digit for the term (1 = Fall, 2 = Spring, 3 = Summer).</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="prerequisite" type="x:Block" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>An HTML block describing the prerequisites for this course.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="notes" type="x:Block" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>An HTML block containing notes a student should know before registering for the course.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="description" type="x:Block" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>An HTML block describing the course.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="campuses" type="campuses" >
+                <xs:annotation>
+                    <xs:documentation>A list of campuses at which this course is offered.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="deliveryMethods" type="deliveryMethods" >
+                <xs:annotation>
+                    <xs:documentation>A list of ways in which this course is delivered.  (ie: Classroom, Web and/or Correspondence)</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="termsOffered" type="termsOffered" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>A list of terms during which this course may be offered (ie: Fall, Spring, or Summer)</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="activities" type="activities" >
+                <xs:annotation>
+                    <xs:documentation>A list of activities the student will participate in while taking this course, usually with an assosiated number of hours per week.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="credits" type="credits" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>A list of the credit hours a course is offered for.  Usally just a single "Single Value" type.  Other possibilites are a range of values (with a min and max value) or a maximum per semester or per career.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="aceOutcomes" type="aceOutcomes" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>A list of ACE Outcomes.  Each child element is a Stratigic Learning Objective (SLO) number.  See http://ace.unl.edu/ for more information.</xs:documentation></xs:annotation></xs:element>
+            <xs:element name="gradCredits" type="xs:string" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>If the number of credits offered by the grad version of the course is different, they will be listen as text here.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="gradNotes" type="x:Block" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>Notes for the grad version of the course, if different.</xs:documentation>
+                </xs:annotation></xs:element>
+            <xs:element name="gradPrerequisite" type="x:Block" minOccurs="0" >
+                <xs:annotation>
+                    <xs:documentation>Prerequisites for the grad version of the course, if different.</xs:documentation>
+                </xs:annotation></xs:element>
         </xs:sequence>
     </xs:complexType>