Permalink
Browse files

scraping cleanup; added support for multiple years

  • Loading branch information...
Leo Martel
Leo Martel committed Sep 24, 2014
1 parent aedf45e commit b30adcd8615a72552a823d0aed99cae6a68e3cc1
Showing with 286 additions and 241 deletions.
  1. +1 −0 Rakefile
  2. +1 −1 app/models/seeds/courses.rb
  3. +11 −11 app/models/seeds/requirements.rb
  4. +12 −12 app/models/seeds/tracks.rb
  5. +2 −1 migrations/003_create_tracks.rb
  6. +2 −2 scripts/out/parse.acct.out
  7. +1 −1 scripts/out/parse.africast.out
  8. +10 −2 scripts/out/parse.amelang.out
  9. +2 −0 scripts/out/parse.amstud.out
  10. +36 −32 scripts/out/parse.anthro.out
  11. +3 −3 scripts/out/parse.archlgy.out
  12. +2 −2 scripts/out/parse.arthist.out
  13. +1 −1 scripts/out/parse.artstudi.out
  14. +1 −1 scripts/out/parse.asnamst.out
  15. +2 −2 scripts/out/parse.bio.out
  16. +1 −1 scripts/out/parse.bioc.out
  17. +3 −3 scripts/out/parse.bioe.out
  18. +1 −1 scripts/out/parse.bios.out
  19. +1 −1 scripts/out/parse.cbio.out
  20. +9 −9 scripts/out/parse.cee.out
  21. +3 −0 scripts/out/parse.chilatst.out
  22. +0 −1 scripts/out/parse.classart.out
  23. +0 −4 scripts/out/parse.classgen.out
  24. 0 scripts/out/parse.classgrk.out
  25. 0 scripts/out/parse.classhis.out
  26. +3 −2 scripts/out/parse.classics.out
  27. +0 −1 scripts/out/parse.classlat.out
  28. +2 −1 scripts/out/parse.cme.out
  29. +2 −2 scripts/out/parse.comm.out
  30. +4 −3 scripts/out/parse.complit.out
  31. +5 −4 scripts/out/parse.cs.out
  32. +4 −1 scripts/out/parse.csre.out
  33. +1 −1 scripts/out/parse.ctl.out
  34. +4 −4 scripts/out/parse.dance.out
  35. +2 −0 scripts/out/parse.dlcl.out
  36. +1 −1 scripts/out/parse.earthsci.out
  37. +2 −1 scripts/out/parse.earthsys.out
  38. +1 −1 scripts/out/parse.econ.out
  39. +6 −6 scripts/out/parse.educ.out
  40. +4 −3 scripts/out/parse.ee.out
  41. +4 −1 scripts/out/parse.eess.out
  42. +2 −2 scripts/out/parse.energy.out
  43. +1 −1 scripts/out/parse.engr.out
  44. +2 −1 scripts/out/parse.envres.out
  45. +4 −1 scripts/out/parse.femgen.out
  46. +2 −2 scripts/out/parse.filmstud.out
  47. +0 −1 scripts/out/parse.finance.out
  48. +3 −3 scripts/out/parse.french.out
  49. +2 −2 scripts/out/parse.german.out
  50. +5 −4 scripts/out/parse.ges.out
  51. +3 −4 scripts/out/parse.gsbgen.out
  52. +5 −2 scripts/out/parse.history.out
  53. +1 −0 scripts/out/parse.hrmgt.out
  54. +1 −1 scripts/out/parse.hrp.out
  55. +1 −1 scripts/out/parse.humbio.out
  56. +0 −1 scripts/out/parse.iberlang.out
  57. +2 −2 scripts/out/parse.ips.out
  58. +3 −1 scripts/out/parse.jewishst.out
  59. +8 −6 scripts/out/parse.law.out
  60. +1 −1 scripts/out/parse.math.out
  61. +1 −1 scripts/out/parse.me.out
  62. +3 −1 scripts/out/parse.med.out
  63. +1 −1 scripts/out/parse.mgtecon.out
  64. +2 −4 scripts/out/parse.mktg.out
  65. +1 −1 scripts/out/parse.ms&e.out
  66. +4 −0 scripts/out/parse.music.out
  67. +1 −1 scripts/out/parse.nbio.out
  68. +0 −2 scripts/out/parse.ob.out
  69. +1 −0 scripts/out/parse.ortho.out
  70. +0 −1 scripts/out/parse.ospcptwn.out
  71. +1 −1 scripts/out/parse.ospflor.out
  72. +3 −1 scripts/out/parse.ospistan.out
  73. 0 scripts/out/parse.ospmosc.out
  74. +1 −1 scripts/out/parse.path.out
  75. +1 −1 scripts/out/parse.pe.out
  76. +2 −3 scripts/out/parse.phil.out
  77. +0 −10 scripts/out/parse.photon.out
  78. +1 −1 scripts/out/parse.physics.out
  79. +4 −1 scripts/out/parse.polisci.out
  80. +1 −1 scripts/out/parse.psych.out
  81. +2 −1 scripts/out/parse.publpol.out
  82. +2 −0 scripts/out/parse.rees.out
  83. +4 −4 scripts/out/parse.religst.out
  84. +3 −1 scripts/out/parse.soc.out
  85. +1 −1 scripts/out/parse.somgen.out
  86. +16 −9 scripts/out/parse.speclang.out
  87. +1 −1 scripts/out/parse.stats.out
  88. +1 −1 scripts/out/parse.stramgt.out
  89. +2 −0 scripts/out/parse.surg.out
  90. +1 −0 scripts/out/parse.symsys.out
  91. +1 −1 scripts/out/parse.taps.out
  92. +3 −3 scripts/out/parse.urbanst.out
  93. +2 −2 scripts/out/parse.wellness.out
  94. +3 −3 scripts/parser.rb
  95. +14 −6 scripts/scrape_and_seed.rb
  96. +6 −17 scripts/seed_test_data.rb
View
@@ -19,6 +19,7 @@ namespace :db do
Term.seed unless Term.count > 0
exec_ruby('scripts/scrape_and_seed.rb', 'scripts/out')
[Department, Track, Course, Requirement].each { |klass| klass.seed }
exec_ruby('scripts/seed_test_data.rb')
end
desc "Clear and re-seed requirements and tracks, without re-scraping departments and courses."
@@ -16,4 +16,4 @@ def self.seed_course(dept, &block)
end
end
end
end
end
@@ -56,7 +56,7 @@ def self.seed_requirements
seed_cs_track :cs_undergrad_systems,
a: [140],
b: [143, EE['108B']],
b: [143, EE[180]],
c: [144, 145, 149, 155, 240, 242, 243, 244, 245, EE[271, 282]],
e: ['240E', '244C', '244E', ['315A', 316], '315B', 341, 343, 344, '344E', 345, 346,
347, 349, '448', EE['382C', '384A', '384C', '384S', '384X']
@@ -108,25 +108,25 @@ def self.seed_requirements
breadth: [[121, 221], 124, 140, 147, 148, 149, 154, 155,
157, 164, '205A', 222, '223A', '224M', '224N', '224S', '224U', '224W',
226, 227, '227B', 228, 229, '229A', '231A', 240, '240E', '244B', '244E',
246, '249A', 262, 270, [173, '273A'], 274, 276, 279, 'CME 108', 302, EE['108B', 282]
246, '249A', 262, 270, [173, '273A'], 274, 276, 279, 'CME 108', 302, EE[180, 282]
]
) do
a = [242, 243]
b = [244, 245, 295, 341, 343, 345]
c = [255, 261, 265, 267, 268, 355, '361A', '361B', 367]
c = [255, 261, 264, 265, 266, 267, 268, 355, '361A', '361B', 367]
make("Requirement A", 2).includes a
make("Requirement B").includes b
make("Requirement C").includes c
make("Requirement D", 5).includes (a+b+c+[241, 258, 259, 346, 362, 393, 395, 399])
make("Requirement D", 5).includes (a+b+c+[258, 259, 346, 362, 393, 395, 399])
end
seed_cs_masters(:cs_graduate_theoretical_computer_science,
breadth: [[121, 221], 124, 140, 143, [144, 'EE 284'], 145, 147,
148, 149, 154, 155, 157, 164, '205A', 222, '223A', '224M', '224N', '224S', '224U',
'224W', 226, 227, '227B', 229, '229A', '231A', 240, '240E', 242, 243, 244, '244B',
'244E', '249A', 270, [173, '273A'], 274, 276, 279, 'CME 108', 302, EE['108B', 282]
'244E', '249A', 270, [173, '273A'], 274, 276, 279, 'CME 108', 302, EE[180, 282]
]
) do
@@ -151,7 +151,7 @@ def self.seed_requirements
a1 = [140, 144]
a2 = [240, 242]
b = [243, 244, 245, 248, '348B', EE[271, 282]]
c = ['240E', '240H', '244B', '244C', '244E', 246, '249A', '249B', 255, 259, 262,
c = ['240E', '244B', '244C', '244E', 246, '249A', '249B', 255, 259, 262,
270, 271, 272, 276, 295, ['315A', 316], '315B', 340, 341, 343, 344,
345, 346, 347, '348A', 349, 374, 448, 393, 395, 399, 478,
EE[273, '382C', '384A', '384C', '384M', '384S', '384X']
@@ -176,11 +176,11 @@ def self.seed_requirements
make("Science Elective", 1, 3).includes [ BIO[41, 42, 43, '44X', '44Y'], CEE[63, 64, 70], ENGR[31, 90],
CHEM['31A', '31B', '31X', 33, 35, 36, 131, 135], EARTHSYS[10], GES['1A', '1B', '1C'], PHYSICS[45, 65]
]
make("Technology in Society").includes [ BIOE[131], CLASSART[113], COMM['120W'], CS[181, '181W'], ENGR[130, 131, 145],
HUMBIO[174], MSNE[181, 193, '193W', 197], POLISCI['114S'], PUBLPOL[122, 194]
make("Technology in Society").includes [ BIOE[131], COMM['120W'], CS[181, '181W'], ENGR[130, 131, 145],
HUMBIO[174], MSNE[181, 193, 197], POLISCI['114S'], PUBLPOL[122, 194]
]
make("Engineering Fundamentals Requirements", 2, 10).includes '106B', ENGR[40]
make("Engineering Fundamentals Elective", 1, 3).includes [ ENGR[10, 14, 15, 20, '25B', '25E', 30, 40, '40A', '40C', '40P',
make("Engineering Fundamentals Elective", 1, 3).includes [ ENGR[10, 14, 15, 20, '25B', '25E', 30, 40, '40A', '40P',
50, '50E', '50M', 60, 62, '70A', '70B', '70X', 80, 90], MSNE[111]
]
make("Computer Science Core", 3, 15).includes 107, 110, 161
@@ -217,9 +217,9 @@ def self.with_helpers
Seeds.const_set :CS_ELECTIVES, [
108, [121, 221], 124, 131, 142, 143, 144, 145, 147, 148, 149, 154, 155, 156,
[157, PHIL[151]], 164, 166, 167, '205A', '205B', '210A', 222, '223A', '224M', '224N', '224S', '224U',
'224W', '225A', '225B', 226, 227, '227B', 228, 229, '229A', '229T', '231A', 235, 240, '240H',
'224W', '225A', '225B', 226, 227, '227B', 228, 229, '229A', '229T', '231A', 235, 240,
241, 242, 243, 244, '244B', 245, 246, 247, 248, '249A', '249B', 254, 255, 258, 261, 262, 263, 265, 267,
270, 271, 272, [173, '273A'], 274, 276, 277, 295, CME[108], EE['108B'], 282
270, 271, 272, [173, '273A'], 274, 276, 277, 295, CME[108], EE[180, 282]
]
yield
View
@@ -2,27 +2,27 @@ module Seeds
def self.seed_tracks
make Track do
within :cs do
make :cs_undergrad_theory
make :cs_undergrad_systems
make :cs_undergrad_information
make :cs_undergrad_artificial_intelligence
make :cs_undergrad_theory, 'http://cs.stanford.edu/degrees/undergrad/ProgramSheets/CS_Theory_1415PS.pdf'
make :cs_undergrad_systems, 'http://cs.stanford.edu/degrees/undergrad/ProgramSheets/CS_Systems_1415PS.pdf'
make :cs_undergrad_information, 'http://cs.stanford.edu/degrees/undergrad/ProgramSheets/CS_Info_1415PS.pdf'
make :cs_undergrad_artificial_intelligence, 'http://cs.stanford.edu/degrees/undergrad/ProgramSheets/CS_AI_1415PS.pdf'
make :cs_graduate_software_theory_single, 45
make :cs_graduate_theoretical_computer_science_single, 45
make :cs_graduate_systems_single, 45
make :cs_graduate_software_theory_single, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Software-Single.pdf', 45
make :cs_graduate_theoretical_computer_science_single, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Theory-Single.pdf', 45
make :cs_graduate_systems_single, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Systems-Single.pdf', 45
# make :cs_graduate_artificial_intelligence_single
# make :cs_graduate_computer_security_single
make :cs_graduate_software_theory_primary, 30
make :cs_graduate_theoretical_computer_science_primary, 30
make :cs_graduate_systems_primary, 30
make :cs_graduate_software_theory_primary, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Software-Dual.pdf', 30
make :cs_graduate_theoretical_computer_science_primary, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Theory-Dual.pdf', 30
make :cs_graduate_systems_primary, 'http://cs.stanford.edu/degrees/mscs/programsheets/14-15/MSCS-1415-Systems-Dual.pdf', 30
make :cs_graduate_theoretical_computer_science_secondary, 15
make :cs_graduate_theoretical_computer_science_secondary, 'http://cs.stanford.edu/degrees/mscs/programsheets/SecondaryDepthReqs1415.pdf', 15
end
within :math do
make :math_undergrad_minor, 24
make :math_undergrad_minor, 'http://exploredegrees.stanford.edu/schoolofhumanitiesandsciences/mathematics/#minortext', 24
end
end
end
@@ -3,9 +3,10 @@
create_table :tracks do
primary_key :id
String :name, unique: true, null: false
String :url
Integer :units_min
foreign_key :department_id, :departments
end
end
end
end
@@ -1,12 +1,12 @@
make([%q(Financial Accounting), %q(210), %q(4), %q(4)]).includes []
make([%q(Managerial Accounting: Base), %q(212), %q(3), %q(3)]).includes []
make([%q(Managerial Accounting: Base), %q(212), %q(2), %q(2)]).includes []
make([%q(Financial Accounting - Accelerated), %q(213), %q(4), %q(4)]).includes []
make([%q(Managerial Accounting: Accelerated), %q(215), %q(3), %q(3)]).includes []
make([%q(MSx: Accounting), %q(219), %q(4), %q(4)]).includes []
make([%q(Global Financial Reporting), %q(311), %q(4), %q(4)]).includes []
make([%q(Evaluating Earnings Quality), %q(312), %q(4), %q(4)]).includes []
make([%q(Accounting-Based Valuation), %q(313), %q(4), %q(4)]).includes []
make([%q(Managerial Accounting: Performance Measurement, Compensation, and Governance), %q(317), %q(4), %q(4)]).includes []
make([%q(Managerial Accounting: Performance Measurement, Compensation, and Governance), %q(317), %q(3), %q(3)]).includes []
make([%q(Mergers and Acquisitions), %q(332), %q(3), %q(3)]).includes []
make([%q(Alphanomics: Informational Arbitrage in Equity Markets), %q(340), %q(4), %q(4)]).includes []
make([%q(Analysis and Valuation for Event-Driven Investing), %q(354), %q(3), %q(3)]).includes []
@@ -6,7 +6,7 @@ make([%q(South African Encounters (AFRICAAM 115)), %q(115), %q(1), %q(1)]).inclu
make([%q(African Art and Politics, c. 1900 - Present (ARTHIST 127A)), %q(127), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Designing Research-Based Interventions to Solve Global Health Problems (AFRICAST 235, EDUC 135X, EDUC 335X, HUMBIO 26, MED 235)), %q(135), %q(3), %q(4)]).includes ["SPR"]
make([%q(Conflict and Reconciliation in Africa: International Intervention (AFRICAST 238, ANTHRO 138A, ANTHRO 238A)), %q(138), %q(3), %q(5)]).includes ["SPR", "SUM"]
make([%q(Forgotten Africa: An Introduction to the Archaeology of Africa (ANTHRO 139A, ARCHLGY 139A)), %q(139A), %q(5), %q(5)]).includes ["SPR"]
make([%q(Forgotten Africa: An Introduction to the Archaeology of Africa (ANTHRO 139A, ARCHLGY 139A)), %q(139A), %q(5), %q(5)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Science, Technology, and Medicine in Africa (ANTHRO 141A)), %q(141A), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Challenging the Status Quo: Social Entrepreneurs Advancing Democracy, Development and Justice (INTNLREL 142)), %q(142), %q(3), %q(5)]).includes ["WIN"]
make([%q(AIDS in Africa), %q(151), %q(3), %q(3)]).includes ["NOT GIVEN THIS YEAR"]
@@ -8,6 +8,9 @@ make([%q(Undergraduate Directed Reading), %q(99), %q(1), %q(3)]).includes ["SPR"
make([%q(Beginning Amharic, First Quarter), %q(100A), %q(4), %q(4)]).includes ["AUT"]
make([%q(First-Year Amharic, Second Quarter), %q(100B), %q(4), %q(4)]).includes ["WIN"]
make([%q(First-Year Amharic, Third Quarter), %q(100C), %q(4), %q(4)]).includes ["SPR"]
make([%q(Second-Year Amharic, First Quarter), %q(101A), %q(4), %q(4)]).includes ["AUT"]
make([%q(Second-Year Amharic, Second Quarter), %q(101B), %q(4), %q(4)]).includes ["WIN"]
make([%q(Second-Year Amharic, Third Quarter), %q(101C), %q(4), %q(4)]).includes ["SPR"]
make([%q(First-Year Hausa, First Quarter), %q(103A), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(First-Year Hausa, Second Quarter), %q(103B), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(First-Year Hausa, Third Quarter), %q(103C), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
@@ -21,15 +24,19 @@ make([%q(Third-Year Swahili, First Quarter), %q(108A), %q(4), %q(4)]).includes [
make([%q(Third-Year Swahili, Second Quarter), %q(108B), %q(4), %q(4)]).includes ["WIN"]
make([%q(Third-Year Swahili, Third Quarter), %q(108C), %q(4), %q(4)]).includes ["SPR"]
make([%q(First-Year Wolof, First Quarter), %q(110A), %q(3), %q(3)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Beginning Afrikaans, First Quarter), %q(114A), %q(4), %q(4)]).includes ["WIN"]
make([%q(Beginning Afrikaans, Second Quarter), %q(114B), %q(4), %q(4)]).includes ["SPR"]
make([%q(Beginning Afrikaans, First Quarter), %q(114A), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Beginning Afrikaans, Second Quarter), %q(114B), %q(4), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Second year - Afrikaans, First Quarter), %q(115A), %q(4), %q(4)]).includes ["AUT"]
make([%q(Second - year Afrikaans, Second Quarter), %q(115B), %q(4), %q(4)]).includes ["WIN"]
make([%q(Second - YearAfrikaans, Third Quarter), %q(115C), %q(4), %q(4)]).includes ["SPR"]
make([%q(Reflection on the Other: The Jew and the Arab in Literature (COMPLIT 145, JEWISHST 106)), %q(126), %q(3), %q(5)]).includes ["WIN"]
make([%q(First-Year Hebrew, First Quarter (JEWISHST 101A)), %q(128A), %q(5), %q(5)]).includes ["AUT"]
make([%q(First-Year Hebrew, Second Quarter (JEWISHST 101B)), %q(128B), %q(5), %q(5)]).includes ["WIN"]
make([%q(First-Year Hebrew, Third Quarter (JEWISHST 101C)), %q(128C), %q(5), %q(5)]).includes ["SPR"]
make([%q(Second-Year Hebrew, First Quarter (JEWISHST 102A)), %q(129A), %q(4), %q(4)]).includes ["AUT"]
make([%q(Second-Year Hebrew, Second Quarter (JEWISHST 102B)), %q(129B), %q(4), %q(4)]).includes ["WIN"]
make([%q(Second-Year Hebrew, Third Quarter (JEWISHST 102C)), %q(129C), %q(4), %q(4)]).includes ["SPR"]
make([%q(Third-Year Hebrew, First Quarter (JEWISHST 103A)), %q(130A), %q(3), %q(4)]).includes ["AUT"]
make([%q(Hebrew Forum (JEWISHST 104)), %q(131A), %q(2), %q(4)]).includes ["WIN"]
make([%q(Hebrew Forum (JEWISHST 105)), %q(131B), %q(2), %q(4)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(The African Forum, Second Quarter), %q(133B), %q(1), %q(1)]).includes ["NOT GIVEN THIS YEAR"]
@@ -47,6 +54,7 @@ make([%q(Second-Year Xhosa, Third Quarter), %q(137C), %q(4), %q(4)]).includes ["
make([%q(First-Year Yiddish, First Quarter (JEWISHST 104A)), %q(140A), %q(4), %q(4)]).includes ["AUT"]
make([%q(First-Year Yiddish, Second Quarter (JEWISHST 104B)), %q(140B), %q(4), %q(4)]).includes ["WIN"]
make([%q(First-Year Yiddish, Third Quarter (JEWISHST 104C)), %q(140C), %q(4), %q(4)]).includes ["SPR"]
make([%q(Second-Year Yiddish, First Quarter), %q(141A), %q(4), %q(4)]).includes ["AUT"]
make([%q(First-Year Modern Persian, First Quarter), %q(144A), %q(5), %q(5)]).includes ["AUT"]
make([%q(First-Year Modern Persian, Second Quarter), %q(144B), %q(5), %q(5)]).includes ["WIN"]
make([%q(First-Year Modern Persian, Third Quarter), %q(144C), %q(5), %q(5)]).includes ["SPR"]
@@ -1,6 +1,7 @@
make([%q(Media, Culture, and Society (COMM 1B)), %q(1B), %q(5), %q(5)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Introduction to American National Government and Politics (POLISCI 2)), %q(2), %q(5), %q(5)]).includes ["WIN"]
make([%q(Global Flows: The Globalization of Hip Hop Art, Culture, and Politics), %q(15), %q(1), %q(2)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(The Origins of the Modern American City, 1865-1920 (HISTORY 55Q, URBANST 25Q)), %q(25Q), %q(3), %q(3)]).includes ["WIN"]
make([%q(The 5th Element: Hip Hop Knowledge, Pedagogy, and Social Justice (AFRICAAM 32, CSRE 32A, EDUC 32X, EDUC 432X, TAPS 32)), %q(32), %q(1), %q(5)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(The Literature of Inequality: Have and Have-Nots from the Gilded Age to the Occupy Era), %q(50N), %q(3), %q(3)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(Comparative Fictions of Ethnicity (COMPLIT 51Q, CSRE 51Q)), %q(51Q), %q(4), %q(4)]).includes ["SPR"]
@@ -38,6 +39,7 @@ make([%q(American Literature and Culture to 1855 (ENGLISH 23, ENGLISH 123)), %q(
make([%q(Colonial and Revolutionary America (HISTORY 150A)), %q(150A), %q(5), %q(5)]).includes ["AUT"]
make([%q(19th-Century America (AFRICAAM 150B, HISTORY 150B)), %q(150B), %q(5), %q(5)]).includes ["WIN"]
make([%q(The United States in the Twentieth Century (HISTORY 150C)), %q(150C), %q(5), %q(5)]).includes ["SPR"]
make([%q(From Gold Rush to Google Bus: History of San Francisco (URBANST 150)), %q(150X), %q(5), %q(5)]).includes ["SPR"]
make([%q(ID21 STRATLAB: Interdisciplinary Approaches to Improvising Identities (CSRE 151H, DANCE 151H, DANCE 251H, TAPS 151H, TAPS 351H)), %q(151H), %q(4), %q(5)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(\Mutually Assured Destruction\: American Culture and the Cold War), %q(152A), %q(5), %q(5)]).includes ["NOT GIVEN THIS YEAR"]
make([%q(The JFK Era and American Literature (ENGLISH 152C)), %q(152C), %q(5), %q(5)]).includes ["AUT"]
Oops, something went wrong.

0 comments on commit b30adcd

Please sign in to comment.