class Config: course_name = 'cs535' """ Exam data: a dictonary keyed by exam names. The values are also dictionaries. They can be three kinds: list, target or source (possibly both target and source). These kinds are implicit, are shown only in the comments. A target has a property 'sources', itself a dictionary Source properties: 'max': the maximum score, 'weight': if it is missing it is 1. 'cuts': whether the exam has letter grades. 'denom': denominator if different from the cut of the B grade. homework_data will be merged into exam_data since homeworks are also exams. """ default_list = 'rst' homework_data = { '01': {'max': 40}, '02': {'max': 50}, '04': {'max': 50}, '05': {'max': 55}, '06': {'max': 45}, '07': {'max': 55}, '09': {'max': 55}, '10': {'max': 55}, '11': {'max': 50} } course_nonphd_sources = { 'homework': {'weight': 25}, 'midterm-1': {'weight': 20}, 'midterm-2': {'weight': 20}, 'final': {'weight': 25}, 'class-partic': {'weight': 10} } course_phd_sources = { 'homework': {'weight': 25}, 'midterm-1': {'weight': 10}, 'midterm-2': {'weight': 10}, 'final': {'weight': 25}, 'phd-extras': {'weight': 20}, 'class-partic': {'weight': 10} } phd_extras_sources = {'grading': {'max': 10}, 'reports': {'max': 10}} exam_data = { # lists: 'rst': {}, 'rst-phd': {'list': 'rst-phd'}, 'rst-nonphd': {'list': 'rst-nonphd'}, 'homework': {'cuts': True, 'sources': homework_data}, 'midterm-1': {'cuts': True, 'max': 60}, 'midterm-2': {'cuts': True, 'max': 50}, 'final': {'cuts': True, 'max': 55}, 'class-partic': {'max': 10, 'cuts':True}, 'grading': {'list': 'rst-phd', 'max': 10, 'cuts': True, 'denom': 1}, 'reports': {'list': 'rst-phd', 'max': 10, 'cuts': True, 'denom': 1}, 'phd-extras': {'list': 'rst-phd', 'cuts': True, 'sources': phd_extras_sources}, 'course-phd': {'list': 'rst-phd', 'cuts': True, 'sources': course_phd_sources}, 'course-nonphd': {'list': 'rst-nonphd', 'cuts': True, 'sources': course_nonphd_sources} } exam_data.update(homework_data)