#!/usr/bin/python 
# The strings defined here are used in tt.py and in cmpTT-TD.py.
# Some documentation for strings.py appears in tt_doc.html, a file
# that is produced every time tt.py is executed. In the unlikely
# event that it is necessary to rewrite get_key() (see below)
# the documentation in tt.py should be modified accordingly. 

last_name_clash=['miller'] # get_key() below

name={
'anderson':"Anderson,David F",
'andrews':"Andrews,Uri",
'angenent':"Angenent,Sigurd B.",
'assadi':"Assadi,Amir H.",
'bauman':"Bauman,Steve",
'benkart':"Benkart,Georgia",
'bertrand':"Bertrand,Florian",
'bolotin':"Bolotin,Sergey",
'borisov':"Borisov,Lev",
'boston':"Boston,Nigel",
'brown':"Brown,David",
'cais':"Cais,Brendon",
'caldararu':"Caldararu,Andrei H",
'camacho':"Camacho,David H",
'chen':"Chen,Xiuxiong",
'craciun':"Craciun,Gheorghe",
'denissov':"Denissov,Serguei",
'ellenberg':"Ellenberg,Jordan S",
'feldman':"Feldman,Mikhail",
'fish':"Fish,Alexander",
'gong':"Gong,Xianghong",
'griffeath':"Griffeath,David S.",
'gurevich':"Gurevich,Shamgar",
'hirsch':"Hirsch,Moe",
'ionescu':"Ionescu,Alexandru",
'isaacs':"Isaacs,I Martin",
'jin':"Jin,Shi",
'kent':"Kent,Richard",
'kiselev':"Kiselev,Alexander",
'lavictoire':"LaVictorie,Patrick",
'lempp':"Lempp,Steffen",
'maxim':"Maxim,Laurentiu",
'malekpour':"Malekpour,Shirin M",
'mari-beffa':"Mari-Beffa,Gloria",
'masri':"Masri,Riad",
'mehrotra':"Mehrotra,Sukhendu",
'meyer':"Meyer,Gabriele E.",
'milewski':"Milewski,Paul A.",
'millar':"Millar,Terrence S.",
'miller_a':"Miller,Arnold",
'miller_j':"Miller,Joe",
'mitchell':"Mitchell,Julie C",
'moreno':"Moreno-Flores,Gregorio",
'nagel':"Nagel,Alexander J.",
'navarro':"Navarro,Gabriel",
'nazarov':"Nazarov,Fedor L",
'ng':"Ng,Selwyn",
'oh':"Oh,Yong-Geun",
'ono':"Ono,Ken",
'paul':"Paul,Sean",
'passman':"Passman,Donald S.",
'terwilliger':"Terwilliger,Paul M.",
'peterson':"Peterson,Jonathon Robert",
'qiu':"Qiu,Yannan",
'rivard':"Rivard,Diane",
'rossmanith':"Rossmanith,James A",
'scheels':"Scheels,Ann",
'seeger':"Seeger,Andreas",
'seppalainen':"Seppalainen,Timo",
'stechmann':"Stechmann,Sam",
'street':"Street,Brian",
'smith':"Smith,Leslie M.",
'statistics':"Statistics Department", 
'terwilliger':"Terwilliger,Paul M.",
'thiffeault':"Thiffeault,Jean-Luc",
'tudorascu':"Tudorascu,Adrian",
'tseng':"Tseng,Hsian-Hua",
'valko':"Valko,Benedek",
'viaclovsky':"Viaclovsky,Jeff A",
'wainger':"Wainger,Stephen",
'waleffe':"Waleffe,Fabian",
'wei':"Wei,Dongming",
'wilson':"Wilson,Robert",
'yang':"Yang,Tonghai",
'zlatos':"Zlatos,Andrej"
}

# Following assumes that name clash can be resolved by adjoining "_"+ch
# where ch is first character of first name. At this writing this morks
# fine as the only name clash is and "Miller,Arnold" and  "Miller,Joseph".
# Of course this could change in which case get_key() ould have to be fixed.
# Be aware that there is a David Anderson in the math department and there
# is also another David Anderson on the faculty in another department.
#
def get_key(nm):
   nm = nm.strip().lower()
   if nm.find(",")>=0:
      nms=nm.split(",")
      last=nms[0].strip()
      first=nms[1].strip()[0]
      if last in last_name_clash:
        nm=last+"_"+first
      else:
        nm=last
   if nm in name.keys():
      return nm
   else:
      return '???'

title={
'095':"Fundamental Mathematical Skills",
'101':"Intermediate Algebra",
'112':"Algebra",
'113':"Trigonometry",
'114':"Algebra and Trigonometry",
'130':"Mathematics for Teaching: Numbers and Operations",
'131':"Mathematics for Teaching: Geometry and Measurement",
'132':"Problem Solving in Algebra, Probability and Statistics",
'135':"Algebraic Reasoning For Teaching Mathematics",
'136':"Pre-calculus and Calculus for Middle School Teachers",
'141':"Quantitative Reasoning",
'171':"Calculus with Algebra and Trigonometry I",
'210':"Topics in Finite Mathematics",
'211':"Business Calculus",
'213':"Calculus and Introduction to Differential Equations",
'217':"Calculus with Algebra and Trigonometry II",
'221':"Calculus and Analytic Geometry I",
'222':"Calculus and Analytic Geometry II",
'231':"Introduction to Probability for Biologists",
'232':"Introduction to Dynamical Systems for Biologists",
'234':"Calculus -- Functions of Several Variables",
'240':"Introduction to Discrete Mathematics",
'275':"Topics in Calculus I",
'276':"Topics in Calculus II",
'298':"Directed Study in Mathematics",
'319':"Techniques in Ordinary Differential Equations",
'320':"Linear Algebra and Differential Equations",
'321':"Applied Mathematical Analysis",
'322':"Introduction to Partial Differential Equations",
'331':"Introduction to Probability and Markov Chain modeling",
'340':"Elementary Matrix and Linear Algebra",
'341':"Linear Algebra",
'371':"Basic Concepts of Mathematics",
'375':"Topics in Multi-Variable Calculus and Linear Algebra",
'376':"Topics in Multi-Variable Calculus and Differential Equations",
'415':"Applied Dynamical Systems, Chaos and Modeling",
'421':"The Theory of Single Variable Calculus",
'425':"Introduction to Combinatorial Optimization",
'431':"Introduction to the Theory of Probability",
'435':"Introduction to Cryptography",
'441':"Introduction to Modern Algebra",
'443':"Applied Linear Algebra",
'461':"College Geometry I",
'473':"History of Mathematics",
'475':"Introduction to Combinatorics",
'490':"Undergraduate Seminar",
'513':"Numerical Linear Algebra",
'514':"Numerical Analysis",
'515':"Introduction to Splines and Wavelets",
'519':"Ordinary Differential Equations",
'521':"Real Analysis I",
'522':"Real Analysis II",
'525':"Linear Programming Methods",
'541':"Modern Algebra",
'542':"Modern Algebra",
'551':"Elementary Topology",
'552':"Elementary Geometric and Algebraic Topology",
'561':"Differential Geometry",
'567':"Elementary Number Theory",
'571':"Mathematical Logic",
'605':"Stochastic Models in Biology",
'606':"Mathematical Methods for Structural Biology",
'608':"Mathematical Methods for Continuum Modelling Biology",
'609':"Mathematical Methods for Systems Biology",
'615':"Introduction to Applied Mathematics and Numerical Analysis",
'621':"Real Analysis III",
'623':"Complex Analysis",
'627':"Introduction to Fourier Analysis",
'629':"Introduction to Measure and Integration",
'632':"Introduction to Stochastic Processes",
'633':"Queueing Theory and Stochastic Modeling",
'635':"An Introduction to Brownian Motion and Stochastic Calculus",
'641':"Introduction to Error-Correcting Codes",
'642':"Linear Algebra",
'701':"Mathematical Methods in Physics and Engineering",
'702':"Mathematical Methods in Physics and Engineering",
'703':"Methods of Applied Mathematics 1",
'704':"Methods of Applied Mathematics-2",
'705':"Mathematical Fluid Dynamics",
'707':"Theory of Elasticity",
'709':"Mathematical Statistics",
'710':"Mathematical Statistics",
'714':"Methods of Computational Mathematics I",
'715':"Methods of Computational Mathematics II",
'716':"Ordinary Differential Equations",
'717':"Numerical Functional Analysis",
'721':"A First Course in Real Analysis",
'722':"Complex Analysis",
'723':"Advanced Topics in the Theory of One Complex Variable",
'725':"A Second Course in Real Analysis",
'726':"Nonlinear Optimization I",
'727':"Calculus of Variations and Related Topics",
'733':"Computational Methods for Large Sparse Systems",
'735':"Stochastic Analysis",
'737':"Introduction to Stochastic Control",
'740':"Enumerative Combinatorics/Symmetric Functions",
'741':"Abstract Algebra",
'742':"Abstract Algebra",
'743':"Linear Algebra and Matrix Theory",
'744':"Algebraic Graph Theory",
'745':"Theory of Groups",
'746':"Topics in Ring Theory",
'747':"Lie Algebras",
'748':"Algebraic Number Theory",
'749':"Analytic Number Theory",
'750':"Homological Algebra",
'751':"Introductory Topology I",
'752':"Introductory Topology II",
'753':"Algebraic Topology I",
'754':"Algebraic Topology II",
'755':"Topology and its Applications",
'757':"Geometric Topology",
'761':"Differentiable Manifolds",
'762':"Differential Topology",
'763':"Introduction to Algebraic Geometry",
'764':"Introduction to Algebraic Geometry",
'765':"Differential Geometry",
'770':"Foundations of Mathematics",
'771':"Set Theory",
'773':"Computability Theory",
'776':"Model Theory",
'777':"Nonlinear Dynamics, Bifurcations and Chaos",
'801':"Topics in Applied Mathematics",
'803':"Experimental Design I",
'805':"Special Functions",
'806':"Integral transforms and Their Applications",
'807':"Dynamical Systems",
'812':"Advanced Methods of Applied Mathematics",
'819':"Partial Differential Equations",
'820':"Partial Differential Equations",
'821':"Advanced Topics in Real Analysis",
'823':"Advanced Topics in Complex Analysis",
'825':"Selected Topics in Functional Analysis",
'826':"Advanced Topics in Functional Analysis and Differential Equations",
'827':"Fourier Analysis",
'828':"Advanced Topics in Harmonic Analysis",
'831':"Theory of Probability",
'832':"Theory of Probability",
'833':"Topics in the Theory of Probability",
'835':"Topics in Mathematical Systems Theory",
'837':"Topics in Numerical Analysis",
'840':"Topics in Reflection Groups and Symmetric Groups",
'841':"Character Theory",
'842':"Topics in Applied Algebra",
'843':"Representation Theory",
'844':"Elliptic Curves and Modular Forms",
'845':"Class Field Theory",
'846':"Topics in Combinatorics",
'847':"Topics in Algebra",
'851':"Topics in Geometric Topology",
'853':"Topics in Algebraic Topology",
'856':"Topics in Differential Topology",
'863':"Advanced Topics in Algebraic Geometry",
'865':"Advanced Topics in Geometry",
'873':"Advanced Topics in Foundations",
'883':"Numerical Methods for Partial Differential Equations",
'887':"Approximation Theory",
'903':"Seminar in Mathematics Education",
'911':"Seminar in College Mathematics Teaching", 
'921':"Seminar in Analysis",
'941':"Seminar in Algebra",
'951':"Seminar in Topology",
'975':"Seminar in The Foundations of Mathematics",
'991':"Seminar in Applied Math and PDE",
}

time={
'50_07':['07:45','08:35'],
'50_08':['08:50','09:40'],
'50_09':['09:55','10:45'],
'50_11':['11:00','11:50'],
'50_12':['12:05','12:55'],
'50_13':['13:20','14:10'],
'50_14':['14:25','15:15'],
'50_15':['15:30','16:20'],
'75_08':['08:00','09:15'],
'75_09':['09:30','10:45'],
'75_11':['11:00','12:15'],
'75_13':['13:00','14:15'],
'75_14':['14:30','15:45'],
}

