Compare View

switch
from
...
to
 
Commits (2)

Diff

Showing 1 changed file Side-by-side Diff

DesignUseCases.tex View file @ 6c83601
... ... @@ -47,11 +47,9 @@ Kevin Mach & User Interface Specialist\\
47 47 \section{Accounts}
48 48 \subsection{[A1] User Registration}
49 49 \begin{description}[style=multiline,leftmargin=3cm]
50   -\item[Description]{To create and save decks, the system requires the user
51   -to create an account prior. The user will be able to create an account
52   -through registering.}
  50 +\item[Description]{To create flashcards and save them into decks, the system requires the user to create an account prior. The user will be able to create an account by registering.}
53 51 \item[Desired Outcome]{An account will be created for the user from the
54   -specified username, password, email. The user will be able to log into
  52 +specified username, password, and email. The user will be able to log into
55 53 the aforementioned account.}
56 54 \\
57 55 \item[User Goals]{The user shall have an account to participate in the
... ... @@ -65,7 +63,7 @@ application's activities.}
65 63  
66 64 \item[Status]{Implemented}
67 65  
68   -\item[Pre-conditions]: None.
  66 +\item[Pre-conditions]{None}
69 67  
70 68 \item[Post-conditions]
71 69  
... ... @@ -84,37 +82,33 @@ application's activities.}
84 82 \item
85 83 {The frontend renders the login form described in login.html.}
86 84 \item
87   - {The User shall click the sign up toggle.}
  85 + {The user shall click the sign up tab.}
88 86 \item
89   - {The frontend shall render a registration form and display it to the User.}
  87 + {The frontend shall render a registration form and display it to the user.}
90 88 \item
91   - {The User shal fill in the form.}
  89 + {The user shall fill in the form.}
92 90 \item
93 91 {The frontend checks that the provided email is not invalid, and that
94   - the password is not valid. If anything is not valid, it displays an
  92 + the password is not invalid. If anything is not valid, it displays an
95 93 error and returns this to the user. }
96 94 \item
97   - {If the form is valid, the frontent POSTs the form in JSON format to the
98   - server API at /api/verify\_email/.}
  95 + {If the form is valid, the frontend POSTs the form in JSON format to the
  96 + backend API at /api/verify\_email/.}
99 97 \item
100   - {The backend deserializes and validates the data in /api/register. If it's not valid, it
101   - returns an error to the frontend.}
  98 + {The backend deserializes and validates the data in /api/register. If it's not valid, it returns an error to the frontend.}
102 99 \item
103   - {The backend creates a new User object from the provided data, filling
  100 + {The backend creates a new user object from the provided data, filling
104 101 in the email and password fields in models.py in model method create\_user.}
105 102 \item
106   - {The backend saves the User object in models.py.}
  103 + {The backend saves the user object in models.py.}
107 104 \item
108   - {The backend marks the User's email as unverified.}
  105 + {The backend marks the user's email as unverified.}
109 106 \item
110   - {The backend sends an email to the User's address with a link to
111   - validate the user's email address from models.py in function send\_confirmation\_email.}
  107 + {The backend sends an email to the user's address with a link to validate the user's email address from models.py in function send\_confirmation\_email.}
112 108 \item
113   - {The backend responds with success and logs the User in on a new
114   - session for the User. }
  109 + {The backend responds with success and logs the user in on a new session for the User.}
115 110 \item
116   - {The frontend reports success to the User and stores the sessionid for
117   - future requests.}
  111 + {The frontend reports success to the user and stores the sessionid for future requests.}
118 112 \end{enumerate}
119 113  
120 114 {Verification Workflow:}
... ... @@ -122,18 +116,16 @@ application's activities.}
122 116 \begin{enumerate}
123 117 \itemsep1pt\parskip0pt\parsep0pt
124 118 \item
125   - {The User receives an email with a link to verify their email. The
126   - User clicks the link}
  119 + {The user receives an email with a link to verify their email. The user clicks the link}
127 120 \item
128 121 {The frontend in VerifyEmailController submits a POST request to the backend.}
129 122 \item
130   - {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns
131   - an error to the frontend.}
  123 + {The backend validates the code in views.py in function veryify\_email. If the code is not valid, it returns an error to the frontend.}
132 124 \item
133   - {The backend marks the user's email as confirmed and saves the User object
  125 + {The backend marks the user's email as confirmed and saves the user object
134 126 again in models.py in function confirm\_email. The user's account is now active.}
135 127 \item
136   - {The frontend's VerifyEmailController.js reports success and logs the User in to the application. }
  128 + {The frontend's VerifyEmailController.js reports success and logs the user in to the application.}
137 129 \end{enumerate}
138 130  
139 131 \end{description}
... ... @@ -142,7 +134,7 @@ application's activities.}
142 134 \subsection{[A2] User Login}
143 135  
144 136 \begin{description}
145   -\item[Description]{User is able to login to personal account.}
  137 +\item[Description]{The user is able to login to personal account.}
146 138  
147 139 \item[Desired Outcome]{The user shall be able to provide their username and
148 140 password to access their courses and flash cards. The user shall gain
... ... @@ -165,8 +157,8 @@ device, or use the site after logging out.}
165 157 \begin{itemize}
166 158 \itemsep1pt\parskip0pt\parsep0pt
167 159 \item
168   - {The User has registered an account.}
169   - {The User knows their email and password.}
  160 + {The user has registered an account.}
  161 + {The user knows their email and password.}
170 162 \end{itemize}
171 163  
172 164 \item[Post-conditions]
... ... @@ -174,10 +166,10 @@ device, or use the site after logging out.}
174 166 \begin{itemize}
175 167 \itemsep1pt\parskip0pt\parsep0pt
176 168 \item
177   - {The User can navigate the site and see their data.}
  169 + {The user can navigate the site and see their data.}
178 170 \end{itemize}
179 171  
180   -\item[Trigger]{The User wants to use the application and its core features.}
  172 +\item[Trigger]{The user wants to use the application and its core features.}
181 173  
182 174 \item[Workflow]
183 175  
... ... @@ -186,29 +178,29 @@ device, or use the site after logging out.}
186 178 \item
187 179 {The frontend shall render the login form described in login.html and implemented in LoginController.js}
188 180 \item
189   -{The User shall type in their email and password.}
  181 +{The user shall type in their email and password.}
190 182 \item
191   - {The backend shall verify that the User has submitted their email and password in views.py in function login.}
  183 + {The backend shall verify that the user has submitted their email and password in views.py in function login.}
192 184 \item
193   - {The backend shall check that the User is active in views.py in function login.}
  185 + {The backend shall check that the user is active in views.py in function login.}
194 186 \item
195   - {The backend shall log the User in using the Django login feature.}
  187 + {The backend shall log the user in using the Django login feature.}
196 188 \item
197   - {The frontend shall displays the home page for the User.}
  189 + {The frontend shall displays the home page for the user.}
198 190 \end{enumerate}
199 191 \end{description}
200 192 \newpage
201 193  
202 194 \subsection{[A3] Add a Class}
203 195 \begin{description}
204   -\item[Description]{The User shall be able to add a class and access the
  196 +\item[Description]{The user shall be able to add a class and access the
205 197 flashcards associated with that class.}
206 198  
207 199 \item[Desired Outcome]{The class shall be connected to the student's account
208   -and the User shall have the ability to read and publish flashcards
  200 +and the user shall have the ability to read and publish flashcards
209 201 for this class.}
210 202 \\
211   -\item[User Goals]{The User wants to publish flashcards for this class, and
  203 +\item[User Goals]{The user wants to publish flashcards for this class, and
212 204 read the flashcards for this class that are published by other users.}
213 205  
214 206 \item[Primary Actor]{User (student)}
... ... @@ -225,9 +217,9 @@ Login}
225 217 \begin{itemize}
226 218 \itemsep1pt\parskip0pt\parsep0pt
227 219 \item
228   - {The User has registered an account.}
  220 + {The user has registered an account.}
229 221 \item
230   - {The User has successfully logged in to the application.}
  222 + {The user has successfully logged in to the application.}
231 223 \end{itemize}
232 224  
233 225 \item[Post-conditions]
... ... @@ -235,25 +227,25 @@ Login}
235 227 \begin{itemize}
236 228 \itemsep1pt\parskip0pt\parsep0pt
237 229 \item
238   - {The User can view the flashcards being published for the class and
  230 + {The user can view the flashcards being published for the class and
239 231 add them to their deck.}
240 232 \item
241   - {The User can publish flashcards to be viewed and added by other users
  233 + {The user can publish flashcards to be viewed and added by other users
242 234 in the same class.}
243 235 \end{itemize}
244 236  
245   -\item[Trigger]{The User wants to make flashcards and view flashcards for a class.}
  237 +\item[Trigger]{The user wants to make flashcards and view flashcards for a class.}
246 238  
247 239 \item[Workflow]
248 240  
249 241 \begin{enumerate}
250 242 \itemsep1pt\parskip0pt\parsep0pt
251 243 \item
252   - {The User shall click "Add a Class" from the drop down menu in the upper left hand corner.}
  244 + {The user shall click "Add a Class" from the "Classes" drop down menu in the upper left hand corner.}
253 245 \item
254 246 {The frontend shall navigate to the new page described by addclass.html.}
255 247 \item
256   - {The User shall begin to type the class department code, course title, course number, or instructor in the text box.}
  248 + {The user shall begin to type the class department code, course title, course number, or instructor in the text box.}
257 249 \item
258 250 {The frontend in ClassAddController.js shall send a get request to the backend at api/sections/search/.}
259 251 \item
... ... @@ -261,11 +253,11 @@ Login}
261 253 \item
262 254 {The frontend shall show the classes that the backend has found.}
263 255 \item
264   - {The User shall select from the classes the one that they want to add.}
  256 + {The user shall select from the classes the one that they want to add.}
265 257 \item
266 258 {The frontend shall enable the 'Add Class' button.}
267 259 \item
268   - {The User shall click 'Add Class' button to the right of the text box.}
  260 + {The user shall click 'Add Class' button to the right of the text box.}
269 261 \item
270 262 {The frontend shall send a post request to api/sections/.}
271 263 \item
... ... @@ -273,7 +265,7 @@ Login}
273 265 \item
274 266 {The backend in models.py in function enroll shall add the class to the User's sections.}
275 267 \item
276   - {The frontend shall redirect the User to the class's Live Feed using the ClassAddController.js.}
  268 + {The frontend shall redirect the user to the class's Live Feed using the ClassAddController.js.}
277 269 \item
278 270 {The frontend shall present the live feed for the class by using feed.html and FeedController.js.}
279 271  
... ... @@ -285,20 +277,20 @@ Login}
285 277 \itemsep1pt\parskip0pt\parsep0pt
286 278 \item []{ Precondition: The class has a whitelist, a whitelist is a list of email addresses that can add themselves to the class.\\}
287 279 \item
288   - {The User shall select their desired class, which has a whitelist, by clicking on ``Add Class''.}
  280 + {The user shall select their desired class, which has a whitelist, by clicking on ``Add Class''.}
289 281 \item
290 282 {The frontend shall submit a POST request to /api/me/sections with
291 283 the course ID that the User typed. }
292 284 \item
293 285 {The backend shall check if there is a whitelist for the class that the
294   - User has selected in models.py at function is\_whitelisted.}
  286 + user has selected in models.py at function is\_whitelisted.}
295 287 \item
296 288 {The backend shall check if the user is on the whitelist in models.py
297 289 in function is\_user\_on\_whitelist.}
298 290 \item
299   - {The backend shall add the User to the class following steps above.}
  291 + {The backend shall add the user to the class following steps above.}
300 292 \item
301   - {The frontend shall redirect the User to the class's live feed followed the last step in the Workflow above.}
  293 + {The frontend shall redirect the user to the class's live feed followed the last step in the Workflow above.}
302 294 \end{enumerate}
303 295  
304 296 \item[Alternate Workflow: User is not whitelisted.]
... ... @@ -322,14 +314,14 @@ Login}
322 314 \subsection{[A4] Drop a Class}
323 315  
324 316 \begin{description}
325   -\item[Description]{The User can remove themselves from a course he/she is
  317 +\item[Description]{The user can remove themselves from a course he/she is
326 318 registered to}
327 319  
328   -\item[Desired Outcome]{The User has dropped the class and no longer need
  320 +\item[Desired Outcome]{The user has dropped the class and no longer need
329 321 access to the flashcards for said class. This means they can no longer
330 322 see the flashcards associated to the class that they dropped }
331 323 \\
332   -\item[User Goals]{The User shall not have access to a class and the
  324 +\item[User Goals]{The user shall not have access to a class and the
333 325 flashcards associated with that class. They will no longer see the class
334 326 listed in their drop down menu.}
335 327  
... ... @@ -347,13 +339,13 @@ Login, {[}A3{]} Add a Class}
347 339 \begin{itemize}
348 340 \itemsep1pt\parskip0pt\parsep0pt
349 341 \item
350   - {The User has a valid account.}
  342 + {The user has a valid account.}
351 343 \item
352   - {The User is logged in.}
  344 + {The user is logged in.}
353 345 \item
354   - {The User has enrolled in at least one class.}
  346 + {The user has enrolled in at least one class.}
355 347 \item
356   - {The User has navigated to the Settings page.}
  348 + {The user has navigated to the Settings page.}
357 349 \end{itemize}
358 350  
359 351 \item[Post-conditions]{}
... ... @@ -361,25 +353,25 @@ Login, {[}A3{]} Add a Class}
361 353 \begin{itemize}
362 354 \itemsep1pt\parskip0pt\parsep0pt
363 355 \item
364   - {User shall no longer have access to dropped class, or associated
  356 + {The user shall no longer have access to dropped class, or associated
365 357 flashcards}
366 358 \end{itemize}
367 359  
368   -\item[Trigger]{User no longer wants to see flashcards from that class.}
  360 +\item[Trigger]{The user no longer wants to see flashcards from that class.}
369 361  
370 362 \item[Workflow]
371 363  
372 364 \begin{enumerate}
373 365 \itemsep1pt\parskip0pt\parsep0pt
374 366 \item
375   - {The User shall click `Drop' button to the right of the class they wish to drop.}
  367 + {The user shall click `Drop' button to the right of the class they wish to drop.}
376 368 \item
377 369 {The frontend shall submit a DELETE request to
378 370 /api/me/sections/\textless{}section ID number\textgreater{}.}
379 371 \item
380   - {The backend shall check that the User is enrolled in the section in models.py in function drop.}
  372 + {The backend shall check that the user is enrolled in the section in models.py in function drop.}
381 373 \item
382   - {The server shall remove the selected class from a user's list of section in models.py in function drop. }
  374 + {The server shall remove the selected class from a user's list of section in models.py in function drop.}
383 375 \item
384 376 {The frontend shall remove the class from the list in setting and show toast reading 'Dropped'.}
385 377 \end{enumerate}
... ... @@ -391,10 +383,10 @@ Login, {[}A3{]} Add a Class}
391 383 \subsection{[A5] Password change}
392 384  
393 385 \begin{description}
394   -\item[Description]{The User shall be able to change the password for their
  386 +\item[Description]{The user shall be able to change the password for their
395 387 account in the account settings. }
396 388  
397   -\item[Desired Outcome]{The User's password shall be changed and the User
  389 +\item[Desired Outcome]{The user's password shall be changed and the User
398 390 shall be able to log in with the new password in the future}
399 391 \\\\
400 392 \item[User Goals]{The User wants to use a different password in the future}
... ... @@ -404,7 +396,7 @@ shall be able to log in with the new password in the future}
404 396 \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User
405 397 Login}
406 398 \\
407   -\item[Details]{The User provides their current password and a new password
  399 +\item[Details]{The user provides their current password and a new password
408 400 in a form. If the current password is correct, the system updates their
409 401 password to the requested new password.}
410 402  
... ... @@ -417,13 +409,13 @@ password to the requested new password.}
417 409 \begin{itemize}
418 410 \itemsep1pt\parskip0pt\parsep0pt
419 411 \item
420   - {The User has registered an account.}
  412 + {The user has registered an account.}
421 413 \item
422   - {The User has logged in.}
  414 + {The user has logged in.}
423 415 \item
424   - {The User knows their current password.}
  416 + {The user knows their current password.}
425 417 \item
426   - {The User has navigated to the Settings page.}
  418 + {The user has navigated to the Settings page.}
427 419 \end{itemize}
428 420  
429 421 \item[Post-conditions]
... ... @@ -431,24 +423,24 @@ password to the requested new password.}
431 423 \begin{itemize}
432 424 \itemsep1pt\parskip0pt\parsep0pt
433 425 \item
434   - {The User's password is changed}
  426 + {The user's password is changed}
435 427 \item
436   - {The User can log in with the new password}
  428 + {The user can log in with the new password}
437 429 \end{itemize}
438 430  
439   -\item[Trigger]{The User wants to change their password.}
  431 +\item[Trigger]{The user wants to change their password.}
440 432  
441 433 \item[Error Handling]
442 434 \begin{description}
443 435 \item[\small Missing Fields] \begin{itemize}
444   -\item The client shall enforce required fields
445   -\item The server will return an HTTP Bad Request error to the client.
  436 +\item The frontend shall enforce required fields
  437 +\item The backend will return an HTTP Bad Request error to the frontend.
446 438 \end{itemize}
447 439 \item[\small Incorrect Old Password] \begin{itemize}
448   -\item The server will return an HTTP Forbidden error to the client.
  440 +\item The backend will return an HTTP Forbidden error to the frontend.
449 441 \end{itemize}
450 442 \item[\small Blank New Password] \begin{itemize}
451   -\item The server will return an HTTP Bad Request error to the client.
  443 +\item The backend will return an HTTP Bad Request error to the frontend.
452 444 \end{itemize}
453 445 \end{description}
454 446 \item[Workflow]
... ... @@ -459,7 +451,7 @@ password to the requested new password.}
459 451 {The frontend shall render a form that requires the user to enter their
460 452 old password and new password from settings.html}
461 453 \item
462   - {The User shall type in their current password, the desired new
  454 + {The user shall type in their current password, the desired new
463 455 password, and retype the desired new password to confirm.}
464 456 \item
465 457 {The frontend shall submit the data to the server by sending a PATCH
... ... @@ -470,7 +462,7 @@ password to the requested new password.}
470 462 {The backend shall check the user's current password in views.py in function patch under UserDetail.}
471 463 \item The backend shall update the user's current password in views.py in function patch under UserDetail.
472 464 \item
473   - {The frontend shall present a toast reading "Password successfully changed" and redirect the User to the Add a Class page.}
  465 + {The frontend shall present a toast reading "Password successfully changed" and redirect the user to the Add a Class page.}
474 466 \end{enumerate}
475 467 \end{description}
476 468 {}
... ... @@ -482,13 +474,13 @@ password to the requested new password.}
482 474 \subsection{[A6] Password reset}
483 475  
484 476 \begin{description}
485   -\item[Description]{The User shall be able to reset their password without
  477 +\item[Description]{The user shall be able to reset their password without
486 478 being logged in.}
487 479  
488   -\item[Desired Outcome]{The User's password shall be changed to one that
  480 +\item[Desired Outcome]{The user's password shall be changed to one that
489 481 they remember.}
490 482 \\
491   -\item[User Goals]{The User will be able to log into the site with a new password.}
  483 +\item[User Goals]{The user will be able to log into the site with a new password.}
492 484  
493 485 \item[Primary Actor]{User (student)}
494 486  
... ... @@ -497,7 +489,7 @@ they remember.}
497 489 \item[Details]{The user provides their email in a password reset form. If
498 490 the address is valid, the site sends a password reset link with a random
499 491 token to that address. If the address is invalid, the site does not send
500   -a link. For security reasons, we do not reveal to the user whether the
  492 +a link. For security reasons, we do not reveal to the User whether the
501 493 email address was valid, and we expire the link after 24 hours. When a
502 494 user visits the link emailed to them, they are able to specify a new
503 495 password in a form. When they submit the form, their password is updated
... ... @@ -512,11 +504,11 @@ if the token is correct. }
512 504 \begin{itemize}
513 505 \itemsep1pt\parskip0pt\parsep0pt
514 506 \item
515   - {The User has created an account before.}
  507 + {The user has created an account before.}
516 508 \item
517   - {The User knows the email address attached to their account for our application.}
  509 + {The user knows the email address attached to their account for our application.}
518 510 \item
519   - {The User can log into their email account.}
  511 + {The user can log into their email account.}
520 512 \end{itemize}
521 513  
522 514 \item[Post-conditions]
... ... @@ -524,12 +516,12 @@ if the token is correct. }
524 516 \begin{itemize}
525 517 \itemsep1pt\parskip0pt\parsep0pt
526 518 \item
527   - {The User's password is changed.}
  519 + {The user's password is changed.}
528 520 \item
529   - {The User can log in with the new password.}
  521 + {The user can log in with the new password.}
530 522 \end{itemize}
531 523  
532   -\item[Trigger]{The User wants to log into the site but does not know their password.}
  524 +\item[Trigger]{The user wants to log into the site but does not know their password.}
533 525 \item[Workflow]
534 526  
535 527 \begin{enumerate}
... ... @@ -539,7 +531,7 @@ if the token is correct. }
539 531 \item
540 532 {The frontend shall render the password reset page from the template requestpasswordreset.html.}
541 533 \item
542   - {The User shall type in their email address for their account and click the "Reset" button.}
  534 + {The user shall type in their email address for their account and click the "Reset" button.}
543 535 \item
544 536 {The frontend shall send a POST request to /api/request\_password\_reset/ from RequestResetController.js.}
545 537 \item
... ... @@ -549,14 +541,13 @@ if the token is correct. }
549 541 {The backend shal send an email to the User with a link to the password reset page in models.py in function
550 542 request\_password\_reset.}
551 543 \item
552   - {The User will navigate to their email account, open the email, and click the link.}
  544 + {The user will navigate to their email account, open the email, and click the link.}
553 545 \item
554 546 {The frontend shall render the password reset page from the template resetpassword.html.}
555 547 \item
556   - {The User shall type in their new password and re-type it to confirm it.}
  548 + {The user shall type in their new password and re-type it to confirm it.}
557 549 \item
558   - {The frontend shall check if the new password is long enough and if the confirmed password is the same as
559   - the new password in ResetPasswordController.js.}
  550 + {The frontend shall check if the new password is long enough and if the confirmed password is the same as the new password in ResetPasswordController.js.}
560 551 \item
561 552 {The frontend shall send a POST request to /api/reset\_password from ResetPasswordController.js.}
562 553 \item
... ... @@ -564,7 +555,7 @@ if the token is correct. }
564 555 \item
565 556 {The frontend shall redirect the User to the login page. }
566 557 \item
567   - {The User shall use their new password to login to the application.}
  558 + {The user shall use their new password to login to the application.}
568 559 \end{enumerate}
569 560 \end{description}
570 561 \newpage
... ... @@ -574,16 +565,12 @@ if the token is correct. }
574 565 \subsection{[A7] Limit Student Access to Courses}
575 566  
576 567 \begin{description}
577   -\item[Description]{The instructor shall be able to limit access to the
578   -courses that he is in charge of by whitelisting only those students that
579   -are actually in the class.}
  568 +\item[Description]{The instructor shall be able to limit access to the courses that they are in charge of by whitelisting only those students that are actually in the class.}
580 569  
581   -\item[Desired Outcome]{The class will have limited access and only those
582   -users who are whitelisted may enroll in the class.}
  570 +\item[Desired Outcome]{The class will have limited access and only those Users who are whitelisted may enroll in the class.}
583 571 \\
584   -\item[User Goals]{The instructor wants to limit access to his class so only
585   -the students who are actually in his class participate, and nobody
586   -else.}
  572 +\item[User Goals]{The instructor wants to limit access to their class so only
  573 +the students who are actually in their class participate, and nobody else.}
587 574  
588 575 \item[Primary Actor]{Instructor}
589 576  
... ... @@ -599,7 +586,7 @@ Login}
599 586 \begin{itemize}
600 587 \itemsep1pt\parskip0pt\parsep0pt
601 588 \item
602   - {User has valid instructor's account}
  589 + {The user has valid instructor's account}
603 590 \end{itemize}
604 591  
605 592 \item[Post-conditions]
... ... @@ -611,15 +598,15 @@ Login}
611 598 \end{itemize}
612 599  
613 600 \item[Trigger]{The course instructor wants to limit the students who
614   -can add his class on our application.}
  601 +can add their class on our application.}
615 602  
616 603 \item[Workflow]
617 604  
618 605 \begin{enumerate}
619 606 \itemsep1pt\parskip0pt\parsep0pt
620 607 \item
621   - {The instructor emails the administrators from his UCSD email address
622   - and requests to limit access to his course. He provides a list of
  608 + {The instructor emails the administrators from their UCSD email address
  609 + and requests to limit access to their course. They provides a list of
623 610 emails of the students that are to be whitelisted.}
624 611 \item
625 612 {The administrators visit a custom admin page, select the course, and
... ... @@ -630,7 +617,7 @@ can add his class on our application.}
630 617 attaching it to the section taught by the instructor.}
631 618 \item
632 619 {The backend shall add any existing users whose email addresses appear
633   - in the whitelist to the class. }
  620 + in the whitelist to the class.}
634 621 \end{enumerate}
635 622 \end{description}
636 623 \newpage
... ... @@ -638,14 +625,14 @@ can add his class on our application.}
638 625 \subsection{[A8] User Logout}
639 626  
640 627 \begin{description}
641   -\item[Description]{The User shall be able to log out of his/her account on
  628 +\item[Description]{The user shall be able to log out of their account on
642 629 the site.}
643 630  
644   -\item[Desired Outcome]{The User's information and data will no longer be
  631 +\item[Desired Outcome]{The user's information and data will no longer be
645 632 accessible after logging out. }
646 633 \\
647   -\item[User Goals]{The User is done with his/her session of using the
648   -website, and wants to make sure others cannot access the data in his/her
  634 +\item[User Goals]{The user is done with his/her session of using the
  635 +website, and wants to make sure others cannot access the data in their
649 636 account.}
650 637  
651 638 \item[Primary Actor]{User (student)}
... ... @@ -660,16 +647,16 @@ account.}
660 647  
661 648 \item[Post-conditions]{}{The user's data can no longer be accessed.}
662 649  
663   -\item[Trigger]{The User no longer wants to be logged into the application.}
  650 +\item[Trigger]{The user no longer wants to be logged into the application.}
664 651  
665 652 \item[Workflow]
666 653  
667 654 \begin{enumerate}
668 655 \itemsep1pt\parskip0pt\parsep0pt
669 656 \item
670   - {The User clicks the 'Logout' button in the upper right hand corner.}
  657 + {The user clicks the 'Logout' button in the upper right hand corner.}
671 658 \item
672   - {The backend shall log the User out using the Django logout feature.}
  659 + {The backend shall log the user out using the Django logout feature.}
673 660 \item
674 661 {The frontend renders the application login page using login.html.}
675 662 \end{enumerate}
... ... @@ -683,12 +670,12 @@ account.}
683 670 \subsection{[A9] Contact Admin}
684 671  
685 672 \begin{description}
686   -\item[Description]{The User shall be able to contact the admin.}
  673 +\item[Description]{The user shall be able to contact the admin.}
687 674  
688   -\item[Desired Outcome]{The User shall send a message to the admin; the
  675 +\item[Desired Outcome]{The user shall send a message to the admin; the
689 676 admin shall receive the message.}
690 677  
691   -{User Goals:}{The User sends a message to the admin.}
  678 +{User Goals:}{The user sends a message to the admin.}
692 679  
693 680 \item[Primary Actor]{User}
694 681  
... ... @@ -702,7 +689,7 @@ admin shall receive the message.}
702 689  
703 690 \item[Post-conditions]{The admin receives the user's message.}
704 691  
705   -\item[Trigger]{The User wants to contact the adiminstators of the site with
  692 +\item[Trigger]{The user wants to contact the adiminstators of the site with
706 693 bug reports, questions, or praise. }
707 694  
708 695 \item[Workflow]
... ... @@ -710,17 +697,17 @@ bug reports, questions, or praise. }
710 697 \begin{enumerate}
711 698 \itemsep1pt\parskip0pt\parsep0pt
712 699 \item
713   - {The User shall click the '?' button in the right corner of the navigation bar.}
  700 + {The user shall click the '?' button in the right corner of the navigation bar.}
714 701 \item
715 702 {The frontend shall render the page using the help.html template.}
716 703 \item
717   - {The User shall scroll to the bottom of the page.}
  704 + {The user shall scroll to the bottom of the page.}
718 705 \item
719   - {The User shall click the text reading "Send Us an Email!"}
  706 + {The user shall click the text reading "Send Us an Email!"}
720 707 \item
721 708 {The frontend shall open Microsoft Outlook or a similar application using the HelpController.js.}
722 709 \item
723   - {The User shall see our email address in the recipients text box.}
  710 + {The user shall see our email address in the recipients text box.}
724 711 \end{enumerate}
725 712 \end{description}
726 713 \newpage
... ... @@ -730,13 +717,13 @@ bug reports, questions, or praise. }
730 717 \subsection{[F1] Push Flashcard}
731 718  
732 719 \begin{description}
733   -\item[Description]{The User shall be able to create a flashcard with their
  720 +\item[Description]{The user shall be able to create a flashcard with their
734 721 input. }
735 722  
736   -\item[Desired Outcome]{The User shall have the flashcard added to their own
  723 +\item[Desired Outcome]{The user shall have the flashcard added to their own
737 724 deck and the Live Feed. }
738 725 \\
739   -\item[User Goals]{The User will see their flashcard in their deck and the
  726 +\item[User Goals]{The user will see their flashcard in their deck and the
740 727 flashcard will be shared with others. }
741 728  
742 729 \item[Dependency Use Cases]{{[}A1{]} User Registration, {[}A2{]} User
... ... @@ -747,11 +734,11 @@ Login, {[}A3{]} Add a Class}
747 734 \begin{itemize}
748 735 \itemsep1pt\parskip0pt\parsep0pt
749 736 \item
750   - {The User has an account.}
  737 + {The user has an account.}
751 738 \item
752   - {The User has added at least one class.}
  739 + {The user has added at least one class.}
753 740 \item
754   - {The User has navigated to the live feed for a class.}
  741 + {The user has navigated to the live feed for a class.}
755 742 \end{itemize}
756 743  
757 744 \item[Post-conditions]
... ... @@ -759,31 +746,31 @@ Login, {[}A3{]} Add a Class}
759 746 \begin{itemize}
760 747 \itemsep1pt\parskip0pt\parsep0pt
761 748 \item
762   - {The User has flashcard added to their deck.}
  749 + {The user has flashcard added to their deck.}
763 750 \item
764 751 {The Flashcard is shown in the Live Feed.}
765 752 \item
766 753 {Other users can add this flashcard to their decks.}
767 754 \end{itemize}
768 755  
769   -\item[Trigger]{The User wants to make a flashcard to study.}
  756 +\item[Trigger]{The user wants to make a flashcard to study.}
770 757  
771 758 \item[Workflow]
772 759  
773 760 \begin{enumerate}
774 761 \itemsep1pt\parskip0pt\parsep0pt
775 762 \item
776   - {The User is at the live feed for the class from feed.html.}
  763 + {The user is at the live feed for the class from feed.html.}
777 764 \item
778   - {The User shall click on the '+' button at the bottom right of the screen.}
  765 + {The user shall click on the '+' button at the bottom right of the screen.}
779 766 \item
780 767 {The frontend shall present a modal for inputting the flashcard text to the User.}
781 768 \item
782   - {The User shall type in the content of their flashcard.}
  769 + {The user shall type in the content of their flashcard.}
783 770 \item
784   - {The User shall highlight keywords in the flashcard text.}
  771 + {The user shall highlight keywords in the flashcard text.}
785 772 \item
786   - {The User shall click on the `Contribute' button.}
  773 + {The user shall click on the `Contribute' button.}
787 774 \item {The frontend shall generate a POST request consisting of the flashcard text,
788 775 blanks, and material date, in JSON form in FeedController.js and send it to /api/flashcards/.}
789 776 \item