forked from drlippman/IMathAS
-
Notifications
You must be signed in to change notification settings - Fork 1
/
plannedchanges.html
343 lines (291 loc) · 11.6 KB
/
plannedchanges.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
Planned Changes
Soon
Add javascript answerformat checkers to:
calcinveral, calcntuple, calccomplex, calcmatrix
extend lockout to allow options: exclude from emails, etc.
textitems, etc. in calendar, click to popup item.
Update printlayout to use assessment includes - fix \frac issue
forum/thread subscriptions for students (currently forum, need indiv thread subscript)
past due on calendar
reply to several posts via by-name page? (can be done via AHAH if no text editor)
link to forum from gradebook (which post?)
turn off edit-in-place in quickview for accessing assessments/forums?
Add date shift to copy course items.
Partial credit (altanswers, altansweights - use with "or" arraying)
postby/replyby on mass change dates page?
Survey/polling
upload multiple ofline grades at once?
Expand all (blocks) (might be tricky with javascript; might be easiest to AJAX call block contents with
force expand all in php)
comments/feedback on assessment items
comments for all assessments in one place
automated emailing of grades?
export assessment data as CSV (do survey module instead)
top navigation bar at top of all pages (incorporate into header?)
*allow reattempts when no score per question; best vs last attempt option
*group numbers - make fixable, or at least have new groups show at end of list?
Will require adding a table for unique group ids to use as agroupid.
Will simplify breaking someone from group, but have to rewrite all that
upload multiple grades at once (need to write new page, have format for CSV, etc)
bug fix: New posts link on home page when not in group (group forums) (bypassed, not yet fixed)
points earned (div by part) in showtest attempts bar - how get last attempt scores?
Gradebook - replace low score with high score?
all string to int comparisons - use intval
image upload in editor (have editorcleanup include, takes old post, new post, compares for del images)
rework all deletes to use delitembyid
answertest - test on condition (how implement?)
log student logins
answerformats for Calculated Interval/N-tuple
regex on diag username (javascript)
Easy way to change private/not private
Option to list first last rather than last, first
Misc
Zip files a/o files and specs on course item export
all email links, mailto->masssend?
Student email list (need to add student privacy settings first)
photos of students
student file - attachments and assessments
Documentation
Assessment Options
*Force completion of question before moving on: oneattime and seq mode
add reattempt whole assessment option (keep best of all full attempts)
Must get all questions right to submit
Don’t list potential questions if already added (option?) (find room for the option)
Listing questions for assessment – have option to list the libraries of the questions that have already been added. (need to find room for it)
Have practice-first option on assessments. (option for toggling to review mode)
List questions once when in multiple libraries searched (have to work out list lib link)
*points per problem - decimal/fraction, or point total for whole assessment
(maybe scale assessment to __ pts, but would be weird from student perspective (pt values don't mean what they say)
*extra credit inside assessment (put on question itself - if set, calculate points possible without it, but give it points in i_a_s. That part's easy;
getting the display right in showtest will be tricky.)
Add default tolerance option to assessment settings
Gradebook
add link to modify code / report error in gradebook assessment edit
pagated gradebook?
GPA, edittable and from lookup (need separate way to store GPA, fill stored from lookup when switched)
customizable grade reports (select items to report)
Groups
Randomly assign students to groups of N
Forums
finish delete forum post option (error on remove first in thread?) (need to track if child exists, etc)
Message System
signature for emails/msgs (need field and page (chg user info?))
*Library/Question System
attach notes/comments to libraries, questions
Instructor specific library/question listing
Rework question import/export to handle questions with images
Assign libraries in preview
New behavior to assign to libraries (popup?)
Select from Assessment in question management (for assignment to libraries)
Copy/Template libraries with structure assessment questions into new location (just messy to implement)
Question Language
adapt "equation" to work with inequalities (check if left-right is pos/neg, check that lt/lte matches)
fix interpret: no mathphp inside quotes
check equation answerformat - fail on extraneous vars? (???)
if number answer is rounded, check if rounded correctly
add "false" to NaN check; surpress output of divide by zero on testpoints
new question testing -- add debugs
Student User Interface
allow students to control totals at top/bottom
Admin
fix old user delete to remove more than just userid (NEED to do - simple but messy)
Admin feature: identify duplicate questions (equivalent code blocks)
restores students/course
Possibilities
Javascript answer entry editor
User customization of colors, fonts
JavaScript question writing guider
way in future: AJAX searches / libtree / page reordering to reduce amount reloaded
JavaScript improvement: lib import/export checking system
Replace SVG use with Canvas?
Student generated review
New questions review process
Support IMS Common Course Cartridge, QTI, IMS Enterprise XML (student info system integration)
Definable rights, grant rights on single question library
Parent/tutor rights for single student?
Inline question (towards interactive ebooks). How to handle gradebook for these things?
Expand guided / conditional items. How to handle gradebook?
Rework backtrack method to track itself
Move unenroll/delete course to backup table for __ days
Student portal/home page
Course Calendar
Image upload in editor (hard to track files so deleted when removed from item)
Uniform user experience (major re-visioning of user interface needed)
Tooltips for help (how to do? David M going to help)
file attachements in posts (probably not needed)
Track views / post dates / etc.
Wait??
time graph of student grades
new item flag (hmmm)
Ignore case on equation variables (need $variable for it - has to be passed to clientside)
Test without saving: Test, Save, Save As.. (need temp table.. )
collapse gradebook by blocks (no easy way to do this)
Gradebook stats for students (no easy way to do this given current framework)
Default library for course? (add to courses table, pull if library not specified. Tricker to add to course settings page)
Multipart question; submit one part at a time (needs some majorish changes, will only make sense for one-by-one or skip-around)
Use serialize for lastanswers and bestlastanswers
{ q1 -> {
attempt 1 -> { (use array even if one part q?)
part 1
}
attempt 2 -> {
part 1
}
}
}
important things in new assessment storage design:
1) be able to keep whole assessment attempt data over multiple versions
2) allow the question ids to change (for question grouping)
3) be able to track full assessment attempt as well as question reattempts
Assessment options:
Reattempts (retrying same version) is done per assessment/question
with penalty of __ for missed attempts [for "per assessment": on all questions/missed questions]
max ___ attempts
New versions are done per assessment/question
with penalty of __ per regen [for "per assessment": on all questions / missed questions]
max ___ regens
keep best/last
Redesign assessment result storage
bestversion
assessment version1 {
q1 {
version1 {
question id
seed
attempts {
attempt1 {
submitted answer / lastanswer (for redisplay) (array if multipart)
stuanswer referenable value of submitted answer (if applicable)
rawscore [0-1]
timestamp?
}
[override] {
rawscore [0-1]
timestamp
}
}
}
//maybe add for convenience of access
//curquestions {
// question id
//}
bestscores { //array of scores from best scoring version
//based on assessment settings
}
}
Files to Update
/assessment
printtest
showtest
/course
addassessment
addquestions
courseshowitems
exception
gb-aidexport
gb-itemanalysis
gb-viewasid
gb-table2
gradeallq
isolateassessbygroup
isolateassessgrade
managestugrps
massexception
masssend
modquestion
/diag
index
/includes
calendardisp
filehandler
stugroups
Assessment Object
priv init(aid) { load assessment data
priv getQuestionInfo() { get question specific info (points, etc)
pub chooseQuestions() {
pub allowRegenAssessment()
pub allowRegenQ(qn)
pub showHints()
pub showScoresDuring()
pub showQScoresAtEnd()
pub showFinalScore()
pub getEndMessage(score)
pub getPassword()
Assessment Display Object
init (assessment object, score object)
pub basicShowQ(qn)
pub showQInfoBar(qn)
pub showSeqInfoBar(qn)
pub printScore(qn)
pub showStartOfTestMessage()
pub getStatus(userid) //returns 'normal', 'inexception', 'review', 'closed'
Score Object
priv init(assessment object,userid) {
load assessment attempt data (or create if blank)
}
priv createAssessmentData() {
$aData = array();
$aData['versions'] = array();
$aData['versions'][] = createAssessmentVersion();
$aData['bestscores'] = array_fill(0,count($aData['versions'][0]['versions'][0]),0);
$aData['bestversion'] = 0;
return $aData;
}
priv createAssessmentVersion() {
$aVersion = array();
$questions = $assessObject->chooseQuestions();
foreach ($questions as $question) {
$questionarr = array();
$questionarr['versions'] = array();
$questionarr['versions'][] = createQuestionVersion($question);
$questionarr['curqid'] = $questionarr['versions'][0]['id'];
$questionarr['bestversion'] = 0;
$aVersion[] = $questionarr;
}
return $aVersion;
}
priv createQuestionVersion($qid) {
$qVersion = array();
$qVersion['id'] = $qid;
$qVersion['seed'] = chooseSeed();
$qVersion['attempts'] = array();
return $qVersion;
}
priv chooseSeed() {
return rand(1,9999);
}
//all these are the score based on assessment settings
//need to update these to include attemptn
pub getPointsQ(question number)
pub getPointsAllQ(qn)
pub getPointsTotal()
pub getPointsPossibleTotal()
pub getPointsPossibleQ(qn)
pub getRemainingPossibleQ(qn)
pub getRemainingPossibleAllQ(qn)
pub isUnans(qn) { //if never attempted
pub isTodo(qn) { //if reattempted or never attempted
pub canImprove(qn)
//does canImproveBest mean anything anymore
pub canImproveAny()
pub canReattemptQ(qn) {
pub deleteAssessmentRecord()
pub deleteAssessmentAttempt(attemptn) //remove completely
pub deleteAssessmentScore(attemptn) //keep questions
pub clearQAttempt(attemptn,qn)
pub regenQ(qn) //assumes latest attempt
pub regenQCanImprove()
pub regenAssessment()
pub reattemptQ(qn) //assumes latest attempt
pub reattemptQCanImprove()
pub reattemptAssessment()
pub recordScoreQ(attemptn,qn)
pub overrideScoreQ(attemptn,qn)
priv updateBestScores()
priv recordData() {
So to get lastanswer, $data[last entry for last version][$qn][last entry for last version]['attempts'][last entry]['lastanswer']
to get score, have to know assessment settings, and go through and calculate best
based on raw scores and assessment settings.
Continue to use bestscores field; recalc after any assessment settings changes
how to handle review? Keep whole other set of attempt data? Run as a separate
version within the same structure?