def comp_missing_3315(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) unready = ('MATH 3315' not in ccodes and 'MATH 3316' not in ccodes and 'CSE 3365' not in ccodes and 'CS 3365' not in ccodes) # return appropriate warning if uterms <= 1 and unready: return dpr.DPRWarning( 4, "missing MATH 3315: Computational specializaion no longer possible." ) if uterms <= 2 and unready: return dpr.DPRWarning( 3, "missing MATH 3315: Computational specializaion becoming unlikely." ) if uterms <= 3 and unready: return dpr.DPRWarning( 2, "please change your schedule to be enrolled in MATH 3315.") if uterms <= 4 and unready: return dpr.DPRWarning( 1, "make sure to take MATH 3315 as early as possible.") return None
def incomplete_foundation(student, coursehistory, degree): # get necessary information uterms = dpr.unplanned_terms(student, coursehistory) fcomp = degree.grplist[0].satisfied # return appropriate warning if uterms <= 1 and not fcomp: return dpr.DPRWarning(4, "Foundation incomplete with <= 2 semesters remaining.") if uterms <= 2 and not fcomp: return dpr.DPRWarning(3, "Foundation incomplete with <= 3 semesters remaining.") if uterms <= 3 and not fcomp: return dpr.DPRWarning(2, "Foundation incomplete with <= 4 semesters remaining.") if uterms <= 4 and not fcomp: return dpr.DPRWarning(1, "Aim to complete foundation by the end of sophomore year.") return None
def anum_missing_1341(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) ready = any([ (a in ccodes) for a in CS ]) # return appropriate warning if uterms <= 1 and not ready: return dpr.DPRWarning(4, "missing CS 1340/1341: on-time graduation impossible.") if uterms <= 2 and not ready: return dpr.DPRWarning(3, "missing CS 1340/1341: on-time graduation becoming unlikely.") if uterms <= 3 and not ready: return dpr.DPRWarning(2, "you should change your schedule to be enrolled in CS 1340/1341.") if uterms <= 4 and not ready: return dpr.DPRWarning(1, "it is best to take CS 1340/1341 by the end of Sophomore year.") return None
def pure_missing_3311(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) unready = ('MATH 3311' not in ccodes and 'MATH 3308' not in ccodes) # return appropriate warning if uterms <= 1 and unready: return dpr.DPRWarning(4, "missing MATH 3311: Pure specializaion impossible.") if uterms <= 2 and unready: return dpr.DPRWarning(3, "missing MATH 3311: Pure specializaion very unlikely.") if uterms <= 3 and unready: return dpr.DPRWarning(2, "you must change your schedule to be enrolled in MATH 3311.") if uterms <= 4 and unready: return dpr.DPRWarning(1, "make sure to take MATH 3311 as early as possible.") return None
def incomplete_foundation(student, coursehistory, degree): # get necessary information now = dpr.current_term() grad = int(student.gterm) termsleft = (grad - now) / 5 fcomp = degree.grplist[0].satisfied # return appropriate warning if termsleft < 2 and not fcomp: return dpr.DPRWarning( 3, "Foundation incomplete with <= 2 semesters remaining.") if termsleft < 4 and not fcomp: return dpr.DPRWarning( 2, "Foundation incomplete with <= 4 semesters remaining.") if termsleft < 6 and not fcomp: return dpr.DPRWarning( 1, "Aim to complete foundation by the end of sophomore year.") return None
def comp_missing_3315(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) unready = ('MATH 3315' not in ccodes and 'MATH 3316' not in ccodes and 'CSE 3365' not in ccodes) # return appropriate warning if unready and uterms < 2: return dpr.DPRWarning( 3, "missing MATH 3315: CSE/EMIS specializaion no longer possible.") if unready and uterms < 3: return dpr.DPRWarning( 2, "you need to change your schedule to be enrolled in MATH 3315.") if unready and uterms < 4: return dpr.DPRWarning( 1, "make sure to take MATH 3315 by Junior year at the latest.") return None
def comp_missing_1341(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) unready = ('CSE 1341' not in ccodes and 'ASIM 1310' not in ccodes and 'CRCP' not in ccodes) # return appropriate warning if unready and uterms < 3: return dpr.DPRWarning( 3, "missing CSE 1341: CSE/EMIS specializaion no longer possible.") if unready and uterms < 4: return dpr.DPRWarning( 2, "you need to change your schedule to be enrolled in CSE 1341.") if unready and uterms < 5: return dpr.DPRWarning( 1, "it is best to take CSE 1341 by the end of Sophomore year.") return None
def credits_per_semester(student, coursehistory, degree, threshhold=6.0): # assess remaining credits and semesters rem_semesters = (int(student.gterm) - dpr.current_term()) * 2 / 10 rem_credits = degree.hours_rem if rem_semesters < 1: cps = np.inf if rem_credits > 0 else 0 else: cps = float(rem_credits) / float(rem_semesters) # return the appropriate response warning = None if cps == np.inf: return dpr.DPRWarning(4, "graduation not possible by intended date") if cps > 11.9: return dpr.DPRWarning(3, "courses per semester >= 4") if cps > 8.9: return dpr.DPRWarning(2, "courses per semester >= 3") if cps > 5.9: return dpr.DPRWarning(1, "courses per semester >= 2") return None
def anum_missing_1341(student, coursehistory, degree): # get necessary information ccodes = [c.code for c in coursehistory] uterms = dpr.unplanned_terms(student, coursehistory) unready = ('CSE 1341' not in ccodes and 'ASIM 1310' not in ccodes and 'CRCP' not in ccodes) # return appropriate warning if unready and uterms < 2: return dpr.DPRWarning( 4, "missing CSE 1341: will not be able to graduate on time.") if unready and uterms < 3: return dpr.DPRWarning( 3, "you won't graduate unless you add CSE 1341 to your schedule.") if unready and uterms < 4: return dpr.DPRWarning( 2, "CSE 1341 not taken by the end of Junior year: inadvisable.") if unready and uterms < 5: return dpr.DPRWarning( 1, "make sure to take CSE 1341 by the end of Junior year.") return None