 ###
 TODO:
 
-- [x] (1:30?) (0:45) add student/assignment note fields
-    - let enter/edit it in the students page
-- [ ] (0:15?) uniformly sort assignments everywhere, efficiently.
-- [ ] (2:00?) way to send an email to every student in the class (require some sort of premium account)
 - [ ] (6:00?) make everything look pretty
         - triangles for show/hide assignment info like for students
         - error messages in assignment page -- make hidable and truncate-able
         - escape to clear search boxes
         - make textarea component that renders using markdown and submits using shift+enter...
         - date picker for assignment due date
-
 - [ ] (3:00?) bug searching / testing / debugging
         - [ ] bug/race: when changing all titles/descriptions, some don't get changed.  I think this is because
               set of many titles/descriptions on table doesn't work.  Fix should be to only do the messages to the

                        return false
                return true
            v = (x for x in v when matches(x))
        v.sort (a,b) ->
            return misc.cmp(a.path.toLowerCase(), b.path.toLowerCase())

        # Deleted assignments
        w = (x for x in v when x.deleted)

            @state.assignments.map (assignment, id) =>
                if not assignment.get('deleted')
                    v.push(assignment)
            f = (a) -> [a.get('due_date') ? 0, a.get('path')?.toLowerCase()]   # note: also used in compute_assignment_list
            v.sort (a,b) -> misc.cmp_array(f(a), f(b))
            return v

