variables.php 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674
  1. <?php
  2. /**
  3. * <https://y.st./>
  4. * Copyright © 2016-2018 Alex Yst <mailto:copyright@y.st>
  5. *
  6. * This program is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <https://www.gnu.org./licenses/>.
  18. **/
  19. /**
  20. * It got to be too difficult keeping track of variable names
  21. * throughout this website's source code to prevent variable name
  22. * clashes. All variables are either declared in this file now or have
  23. * names that are reserved by the comments in this file. That way, new
  24. * variable names need only be checked against the variable names from
  25. * this file instead of checked against variable names from every file
  26. * of this project.
  27. **/
  28. use st\y\abbr, st\y\day_number;
  29. // This website is currently censored by my university. This variable
  30. // holds the number of days until I'm free to fully speak my mind, at
  31. // which point my entire coursework submission archive will go public.
  32. //
  33. // The "%r" shouldn't be needed if I'm at all watching this date, but
  34. // just in case I space out or something, it's there. It'll add a
  35. // negative sign if we go past zero instead of allowing the default
  36. // behaviour, which would be to start counting up again.
  37. $days_until_freedom = (new DateTimeImmutable('now'))->diff(new \st\y\datetime(2023, 1, 1))->format('%r%a');
  38. // The censored pages are counted as they're processed.
  39. $censored_pages = 0;
  40. // This is the number of days until I'm no longer attending classes,
  41. // though I still won't be fully free just yet.
  42. $days_until_partial_freedom = (new DateTimeImmutable('now'))->diff(new \st\y\datetime(2021, 6, 9))->format('%r%a');
  43. // Objects:
  44. $a = abbr::construct_from_file(__DIR__.'/abbr.txt');
  45. $entry = new day_number(2015, 3, 7, 5, 'Day ', ': <\\t\\i\\m\\e>l, Y F d</\\t\\i\\m\\e>');
  46. $entry_untagged = new day_number(2015, 3, 7, 5, 'Day ', ': l, Y F d');
  47. // In-string alias:
  48. $syntax = '\\st\\y\\highlight_string';
  49. // Please note that for signatures to be effective, I cannot give you my key.
  50. // If you want to compile the site on your own machine, you will need to edit the PGP lines here.
  51. $pgp = new gnupg;
  52. $pgp->addsignkey('D135B061DBED690B479FE2E37D83E1E5E7464A03');
  53. // These intervals are used in the navigation menus.
  54. $interval = array(
  55. 'year' => new DateInterval('P1Y'),
  56. 'month' => new DateInterval('P1M'),
  57. 'day' => new DateInterval('P1D'),
  58. );
  59. // This is the template we use to build pages:
  60. $template = file_get_contents(__DIR__.'/template/main.xhtml');
  61. // When compiling the weblog navigation, it would be helpful to know when the latest entry is.
  62. $latest_entry = array(
  63. 'year' => '',
  64. 'month' => '',
  65. 'day' => '',
  66. );
  67. foreach(scandir(__DIR__.'/pages/en/weblog') as $year):
  68. if(is_numeric($year) and $year > $latest_entry['year']):
  69. $latest_entry['year'] = $year;
  70. endif;
  71. endforeach;
  72. foreach(scandir(__DIR__."/pages/en/weblog/$latest_entry[year]") as $month):
  73. if($month > $latest_entry['month']):
  74. $latest_entry['month'] = $month;
  75. endif;
  76. endforeach;
  77. foreach(scandir(__DIR__."/pages/en/weblog/$latest_entry[year]/$latest_entry[month]") as $day):
  78. if($day > $latest_entry['day']):
  79. $latest_entry['day'] = $day;
  80. endif;
  81. endforeach;
  82. $latest_copyright_year = $latest_entry['year'];
  83. $latest_entry = array(
  84. 'year' => "/en/weblog/$latest_entry[year]/",
  85. 'month' => "/en/weblog/$latest_entry[year]/$latest_entry[month]/",
  86. 'day' => "/en/weblog/$latest_entry[year]/$latest_entry[month]/$latest_entry[day]",
  87. );
  88. // This is just to catch invalid arguments
  89. $valid_arguments = array(
  90. '--canary',
  91. );
  92. foreach($argv as $key => $value):
  93. // The "and $key" part prevents the script from treating the file name as an invalid argument.
  94. // $argv[0] will always be the file name and 0 evaluates to false.
  95. if(!in_array($value, $valid_arguments) and $key):
  96. $invalid_arguments[] = $value;
  97. endif;
  98. endforeach;
  99. // This array includes the names of all files that should not be
  100. // deleted from the compiled version of the website. Any page that
  101. // still has source code should have an entry in this array. If a page
  102. // is removed from the source code, it shouldn't be added to this array
  103. // during compilation time, which will result in that page being
  104. // removed from the compiled version. That way, we can recompile the
  105. // website without keeping pages that should be removed and without
  106. // erasing all already-compiled pages from disk before compiling them
  107. // if their source code hasn't been modified.
  108. $should_exist = array();
  109. // Used by the ASCII calendar pages:
  110. $months = array(
  111. 1 => '01-January',
  112. 2 => '02-February',
  113. 3 => '03-March',
  114. 4 => '04-April',
  115. 5 => '05-May',
  116. 6 => '06-June',
  117. 7 => '07-July',
  118. 8 => '08-August',
  119. 9 => '09-September',
  120. 10 => '10-October',
  121. 11 => '11-November',
  122. 12 => '12-December',
  123. );
  124. $monthheads = array(
  125. 1 => ' January',
  126. 2 => ' February',
  127. 3 => ' March',
  128. 4 => ' April',
  129. 5 => ' May',
  130. 6 => ' June',
  131. 7 => ' July',
  132. 8 => ' August',
  133. 9 => 'September',
  134. 10 => ' October',
  135. 11 => ' November',
  136. 12 => ' December',
  137. );
  138. // Previously, when I added new assignment submissions to my list of
  139. // coursework, I had to manually update both the coursework index and
  140. // the navigation menu of the course that the assignment was for. With
  141. // this array, I can now instead only update in one place instead of
  142. // two.
  143. $coursework = array(
  144. 'AHIST1401' => array(
  145. 'title' => 'AHIST 1401: Art History',
  146. 'subtitle' => "<span title=\"{$entry(2021, 4, 8)}\">2021-04-08</span> to <span title=\"{$entry(2021, 6, 9)}\">2021-06-09</span>",
  147. 'assignments' => array(
  148. 'Unit_1_essay' => array(
  149. 'title' => 'title',
  150. 'unit' => '1',
  151. ),
  152. 'Unit_2_essay' => array(
  153. 'title' => 'title',
  154. 'unit' => '2',
  155. ),
  156. 'Unit_3_essay' => array(
  157. 'title' => 'title',
  158. 'unit' => '3',
  159. ),
  160. 'Unit_4_essay' => array(
  161. 'title' => 'title',
  162. 'unit' => '4',
  163. ),
  164. 'Unit_5_essay' => array(
  165. 'title' => 'title',
  166. 'unit' => '5',
  167. ),
  168. 'Unit_6_essay' => array(
  169. 'title' => 'title',
  170. 'unit' => '6',
  171. ),
  172. 'Unit_7_essay' => array(
  173. 'title' => 'title',
  174. 'unit' => '7',
  175. ),
  176. ),
  177. ),
  178. 'BIOL1121' => array(
  179. 'title' => 'BIOL 1121: Biology 1 for Health Studies Majors',
  180. 'subtitle' => "<span title=\"{$entry(2020, 11, 12)}\">2020-11-12</span> to <span title=\"{$entry(2021, 1, 13)}\">2021-01-13</span>",
  181. 'assignments' => array(
  182. 'Unit_1_essay' => array(
  183. 'title' => 'title',
  184. 'unit' => '1',
  185. ),
  186. 'Unit_2_essay' => array(
  187. 'title' => 'title',
  188. 'unit' => '2',
  189. ),
  190. 'Unit_3_essay' => array(
  191. 'title' => 'title',
  192. 'unit' => '3',
  193. ),
  194. 'Unit_4_essay' => array(
  195. 'title' => 'title',
  196. 'unit' => '4',
  197. ),
  198. 'Unit_5_essay' => array(
  199. 'title' => 'title',
  200. 'unit' => '5',
  201. ),
  202. 'Unit_6_essay' => array(
  203. 'title' => 'title',
  204. 'unit' => '6',
  205. ),
  206. 'Unit_7_essay' => array(
  207. 'title' => 'title',
  208. 'unit' => '7',
  209. ),
  210. ),
  211. ),
  212. 'BIOL1301' => array(
  213. 'title' => 'BIOL 1301: Introduction to Biology',
  214. 'subtitle' => "<span title=\"{$entry(2020, 11, 12)}\">2020-11-12</span> to <span title=\"{$entry(2021, 1, 13)}\">2021-01-13</span>",
  215. 'assignments' => array(
  216. 'Unit_1_essay' => array(
  217. 'title' => 'title',
  218. 'unit' => '1',
  219. ),
  220. 'Unit_2_essay' => array(
  221. 'title' => 'title',
  222. 'unit' => '2',
  223. ),
  224. 'Unit_3_essay' => array(
  225. 'title' => 'title',
  226. 'unit' => '3',
  227. ),
  228. 'Unit_4_essay' => array(
  229. 'title' => 'title',
  230. 'unit' => '4',
  231. ),
  232. 'Unit_5_essay' => array(
  233. 'title' => 'title',
  234. 'unit' => '5',
  235. ),
  236. 'Unit_6_essay' => array(
  237. 'title' => 'title',
  238. 'unit' => '6',
  239. ),
  240. 'Unit_7_essay' => array(
  241. 'title' => 'title',
  242. 'unit' => '7',
  243. ),
  244. ),
  245. ),
  246. 'BUS1101' => array(
  247. 'title' => 'BUS 1101: Principles of Business Management',
  248. 'subtitle' => "<span title=\"{$entry(2016, 11, 10)}\">2016-11-10</span> to <span title=\"{$entry(2017, 1, 11)}\">2017-01-11</span>",
  249. 'assignments' => array(
  250. 'Leadership_Entrepreneurship_and_Strategy' => array(
  251. 'title' => 'Leadership, Entrepreneurship, and Strategy',
  252. 'unit' => '1',
  253. ),
  254. 'Behaviour_management_at_the_SAS_Institute' => array(
  255. 'title' => 'Behaviour management at the SAS Institute',
  256. 'unit' => '2',
  257. ),
  258. 'How_Coca-Cola_should_deal_with_globalization' => array(
  259. 'title' => 'How Coca-Cola should deal with globalization',
  260. 'unit' => '3',
  261. ),
  262. 'SCAMPER' => array(
  263. 'title' => 'SCAMPER',
  264. 'unit' => '4',
  265. ),
  266. 'Strengths_weaknesses_opportunities_and_threats' => array(
  267. 'title' => 'Strengths, weaknesses, opportunities, and threats',
  268. 'unit' => '5',
  269. ),
  270. 'Microsoft_and_corporate_social_responsibility' => array(
  271. 'title' => 'Microsoft and corporate social responsibility',
  272. 'unit' => '6',
  273. ),
  274. 'Three_types_of_organizational_structures' => array(
  275. 'title' => 'Three types of organizational structures',
  276. 'unit' => '7',
  277. ),
  278. 'Little_Caesars_culture' => array(
  279. 'title' => 'Little Caesars culture',
  280. 'unit' => '8',
  281. ),
  282. ),
  283. ),
  284. 'CS1101' => array(
  285. 'title' => 'CS 1101: Programming Fundamentals',
  286. 'subtitle' => "<span title=\"{$entry(2017, 1, 26)}\">2017-01-26</span> to <span title=\"{$entry(2017, 3, 29)}\">2017-03-29</span>",
  287. 'assignments' => array(
  288. 't_area.py' => array(
  289. 'title' => 't_area.py',
  290. 'unit' => '2',
  291. ),
  292. 'calculator_flowchart' => array(
  293. 'title' => 'calculator flowchart',
  294. 'unit' => '3',
  295. ),
  296. 'tryme3.py' => array(
  297. 'title' => 'tryme3.py',
  298. 'unit' => '4',
  299. ),
  300. 'mycalc.py' => array(
  301. 'title' => 'mycalc.py',
  302. 'unit' => '5',
  303. ),
  304. 'bool.py' => array(
  305. 'title' => 'bool.py',
  306. 'unit' => '6',
  307. ),
  308. 'sort_fruits.py' => array(
  309. 'title' => 'sort_fruits.py',
  310. 'unit' => '7',
  311. ),
  312. ),
  313. ),
  314. 'CS1102' => array(
  315. 'title' => 'CS 1102: Programming 1',
  316. 'subtitle' => "<span title=\"{$entry(2017, 4, 6)}\">2017-04-06</span> to <span title=\"{$entry(2017, 6, 7)}\">2017-06-07</span>",
  317. 'assignments' => array(
  318. 'GravityCalculator.java' => array(
  319. 'title' => 'GravityCalculator.java',
  320. 'unit' => '1',
  321. ),
  322. 'SnakeEyesCount.java' => array(
  323. 'title' => 'SnakeEyesCount.java',
  324. 'unit' => '2',
  325. ),
  326. 'Unit3.java' => array(
  327. 'title' => 'Unit3.java',
  328. 'unit' => '3',
  329. ),
  330. 'firstsubroutines.java' => array(
  331. 'title' => 'firstsubroutines.java',
  332. 'unit' => '4',
  333. ),
  334. 'Unit5.java' => array(
  335. 'title' => 'Unit5.java',
  336. 'unit' => '5',
  337. ),
  338. 'payrollsystem' => array(
  339. 'title' => 'package payrollsystem;',
  340. 'unit' => '7',
  341. ),
  342. 'matchbox' => array(
  343. 'title' => 'package matchbox;',
  344. 'unit' => '6',
  345. ),
  346. 'Unit7.java' => array(
  347. 'title' => 'Unit7.java',
  348. 'unit' => '7',
  349. ),
  350. ),
  351. ),
  352. 'CS1103' => array(
  353. 'title' => 'CS 1103: Programming 2',
  354. 'subtitle' => "<span title=\"{$entry(2017, 6, 15)}\">2017-06-15</span> to <span title=\"{$entry(2017, 8, 16)}\">2017-08-16</span>",
  355. 'assignments' => array(
  356. 'Unit1.java' => array(
  357. 'title' => 'Unit1.java',
  358. 'unit' => '1',
  359. ),
  360. 'SimpleRandomSentences.java' => array(
  361. 'title' => 'SimpleRandomSentences.java',
  362. 'unit' => '2',
  363. ),
  364. 'Tape.java' => array(
  365. 'title' => 'Tape.java',
  366. 'unit' => '3',
  367. ),
  368. 'Debugging' => array(
  369. 'title' => 'Debugging',
  370. 'unit' => '4',
  371. ),
  372. 'Unit5.java' => array(
  373. 'title' => 'Unit5.java',
  374. 'unit' => '5',
  375. ),
  376. 'DrawTextPanel.java' => array(
  377. 'title' => 'DrawTextPanel.java',
  378. 'unit' => '6',
  379. ),
  380. 'Unit7.java' => array(
  381. 'title' => 'Unit7.java',
  382. 'unit' => '7',
  383. ),
  384. ),
  385. ),
  386. 'CS1104' => array(
  387. 'title' => 'CS 1104: Computer Systems',
  388. 'subtitle' => "<span title=\"{$entry(2017, 11, 16)}\">2017-11-16</span> to <span title=\"{$entry(2018, 1, 17)}\">2018-01-17</span>",
  389. 'assignments' => array(
  390. 'Circuits' => array(
  391. 'title' => 'Circuits',
  392. 'unit' => '2',
  393. ),
  394. '4-bit_arithmetic_logic_unit' => array(
  395. 'title' => '4-bit arithmetic logic unit',
  396. 'unit' => '3',
  397. ),
  398. '4-bit_arithmetic_logic_unit_with_registers' => array(
  399. 'title' => '4-bit arithmetic logic unit with registers',
  400. 'unit' => '4',
  401. ),
  402. 'Computer_parts_and_purposes' => array(
  403. 'title' => 'Computer parts and purposes',
  404. 'unit' => '5',
  405. ),
  406. 'Assembly' => array(
  407. 'title' => 'Assembly',
  408. 'unit' => '6',
  409. ),
  410. 'Assembly~_revisited~_some_assembly_required' => array(
  411. 'title' => 'Assembly, revisited: some assembly required',
  412. 'unit' => '7',
  413. ),
  414. ),
  415. ),
  416. 'CS2203' => array(
  417. 'title' => 'CS 2203: Databases 1',
  418. 'subtitle' => "<span title=\"{$entry(2017, 6, 15)}\">2017-06-15</span> to <span title=\"{$entry(2017, 8, 16)}\">2017-08-16</span>",
  419. 'assignments' => array(
  420. 'Library_database_relations' => array(
  421. 'title' => 'Library database relations',
  422. 'unit' => '1',
  423. ),
  424. 'Library_database_relations~_continued' => array(
  425. 'title' => 'Library database relations, continued',
  426. 'unit' => '2',
  427. ),
  428. 'Library_database_relation_diagram' => array(
  429. 'title' => 'Library database relation diagram',
  430. 'unit' => '3',
  431. ),
  432. 'Library_database_normalisation' => array(
  433. 'title' => 'Library database normalisation',
  434. 'unit' => '4',
  435. ),
  436. 'Library_database_SQL' => array(
  437. 'title' => 'Library database SQL',
  438. 'unit' => '5',
  439. ),
  440. 'Library_database_SQL~_continued' => array(
  441. 'title' => 'Library database SQL, continued',
  442. 'unit' => '6',
  443. ),
  444. 'Library_database_SQL_select' => array(
  445. 'title' => 'Library database SQL select',
  446. 'unit' => '7',
  447. ),
  448. ),
  449. ),
  450. 'CS2204' => array(
  451. 'title' => 'CS 2204: Communications and Networking',
  452. 'subtitle' => "<span title=\"{$entry(2018, 04, 12)}\">2018-04-12</span> to <span title=\"{$entry(2018, 6, 13)}\">2018-06-13</span>",
  453. 'assignments' => array(
  454. 'Connection-oriented_and_connectionless_transmissions' => array(
  455. 'title' => 'Connection-oriented and connectionless transmissions',
  456. 'unit' => '1',
  457. ),
  458. 'More_about_transmission' => array(
  459. 'title' => 'More about transmission',
  460. 'unit' => '2',
  461. ),
  462. 'Transmission issues~_encoding~_and_checksums' => array(
  463. 'title' => 'Transmission issues, encoding, and checksums',
  464. 'unit' => '3',
  465. ),
  466. 'Addressing_and_packet_lengths' => array(
  467. 'title' => 'Addressing and packet lengths',
  468. 'unit' => '4',
  469. ),
  470. 'Routing' => array(
  471. 'title' => 'Routing',
  472. 'unit' => '5',
  473. ),
  474. 'UDP' => array(
  475. 'title' => 'UDP',
  476. 'unit' => '6',
  477. ),
  478. 'Packets' => array(
  479. 'title' => 'Packets',
  480. 'unit' => '7',
  481. ),
  482. ),
  483. ),
  484. 'CS2205' => array(
  485. 'title' => 'CS 2205: Web Programming 1',
  486. 'subtitle' => "<span title=\"{$entry(2017, 9, 7)}\">2017-09-07</span> to <span title=\"{$entry(2017, 11, 8)}\">2017-11-08</span>",
  487. 'assignments' => array(
  488. 'Markup_validation' => array(
  489. 'title' => 'Markup validation',
  490. 'unit' => '1',
  491. ),
  492. 'Wix' => array(
  493. 'title' => 'Wix',
  494. 'unit' => '2',
  495. ),
  496. 'Unit_3' => array(
  497. 'title' => 'CS 2205 Unit 3',
  498. 'unit' => '3',
  499. ),
  500. 'Codecademy' => array(
  501. 'title' => 'Codecademy',
  502. 'unit' => '4',
  503. ),
  504. 'Codecademy~_revisited' => array(
  505. 'title' => 'Codecademy, revisited',
  506. 'unit' => '5',
  507. ),
  508. 'XML' => array(
  509. 'title' => 'XML',
  510. 'unit' => '6',
  511. ),
  512. 'Codecademy~s_hidden_PHP_section' => array(
  513. 'title' => 'Codecademy&apos;s hidden PHP section',
  514. 'unit' => '7',
  515. ),
  516. ),
  517. ),
  518. 'CS2301' => array(
  519. 'title' => 'CS 2301: Operating Systems 1',
  520. 'subtitle' => "<span title=\"{$entry(2017, 9, 7)}\">2017-09-07</span> to <span title=\"{$entry(2017, 11, 8)}\">2017-11-08</span>",
  521. 'assignments' => array(
  522. 'Forking' => array(
  523. 'title' => 'Forking',
  524. 'unit' => '2',
  525. ),
  526. 'Resource_management' => array(
  527. 'title' => 'Resource management',
  528. 'unit' => '4',
  529. ),
  530. 'Process_Explorer' => array(
  531. 'title' => 'Process Explorer',
  532. 'unit' => '5',
  533. ),
  534. 'Paging' => array(
  535. 'title' => 'Paging',
  536. 'unit' => '6',
  537. ),
  538. 'NTFSInfo' => array(
  539. 'title' => 'NTFSInfo',
  540. 'unit' => '7',
  541. ),
  542. ),
  543. ),
  544. 'CS2401' => array(
  545. 'title' => 'CS 2401: Software Engineering 1',
  546. 'subtitle' => "<span title=\"{$entry(2017, 11, 16)}\">2017-11-16</span> to <span title=\"{$entry(2018, 1, 17)}\">2018-01-17</span>",
  547. 'assignments' => array(
  548. 'Acceptance_tests' => array(
  549. 'title' => 'Acceptance tests',
  550. 'unit' => '2',
  551. ),
  552. 'Garage_door_system' => array(
  553. 'title' => 'Garage door system',
  554. 'unit' => '3',
  555. ),
  556. 'Triangles' => array(
  557. 'title' => 'Triangles',
  558. 'unit' => '5',
  559. ),
  560. 'Complexity' => array(
  561. 'title' => 'Complexity',
  562. 'unit' => '6',
  563. ),
  564. ),
  565. ),
  566. 'CS3303' => array(
  567. 'title' => 'CS 3303: Data Structures',
  568. 'subtitle' => "<span title=\"{$entry(2018, 11, 15)}\">2018-11-14</span> to <span title=\"{$entry(2019, 1, 16)}\">2019-01-16</span>",
  569. 'assignments' => array(
  570. 'Stack' => array(
  571. 'title' => 'Stack',
  572. 'unit' => '3',
  573. ),
  574. 'Binary_search_tree' => array(
  575. 'title' => 'Binary search tree',
  576. 'unit' => '4',
  577. ),
  578. 'Quick_sort' => array(
  579. 'title' => 'Quick sort',
  580. 'unit' => '6',
  581. ),
  582. ),
  583. ),
  584. 'CS3304' => array(
  585. 'title' => 'CS 3304: Analysis of Algorithms',
  586. 'subtitle' => "<span title=\"{$entry(2020, 1, 30)}\">2020-01-30</span> to <span title=\"{$entry(2020, 4, 1)}\">2019-04-01</span>",
  587. 'assignments' => array(
  588. 'Binary_search' => array(
  589. 'title' => 'Binary search',
  590. 'unit' => '2',
  591. ),
  592. 'Graph_analysis' => array(
  593. 'title' => 'Graph analysis',
  594. 'unit' => '3',
  595. ),
  596. 'Minimum_spanning_tree' => array(
  597. 'title' => 'Minimum spanning tree',
  598. 'unit' => '4',
  599. ),
  600. 'Knapsack_problem' => array(
  601. 'title' => 'Knapsack problem',
  602. 'unit' => '5',
  603. ),
  604. ),
  605. ),
  606. 'CS3305' => array(
  607. 'title' => 'CS 3305: Web Programming 2',
  608. 'subtitle' => "<span title=\"{$entry(2019, 01, 31)}\">2019-01-31</span> to <span title=\"{$entry(2019, 4, 3)}\">2019-04-03</span>",
  609. 'assignments' => array(
  610. 'Online_PHP_interpreter' => array(
  611. 'title' => "Online $a[PHP] interpreter",
  612. 'unit' => '2',
  613. ),
  614. 'PHP_course_dashboard' => array(
  615. 'title' => "$a[PHP] course dashboard",
  616. 'unit' => '3',
  617. ),
  618. 'PHP_course_dashboard~_reprise' => array(
  619. 'title' => "$a[PHP] course dashboard, reprise",
  620. 'unit' => '4',
  621. ),
  622. 'Catalyst_Coders' => array(
  623. 'title' => 'Catalyst Coders',
  624. 'unit' => '5',
  625. ),
  626. 'CS3305-Alexand~er~ra~_Yst-Joomla~s Site' => array(
  627. 'title' => 'CS3305-Alexand(er|ra) Yst-Joomla&apos;s Site',
  628. 'unit' => '6',
  629. ),
  630. 'Weblinks' => array(
  631. 'title' => 'Weblinks',
  632. 'unit' => '7',
  633. ),
  634. ),
  635. ),
  636. 'CS3306' => array(
  637. 'title' => 'CS 3306: Databases 2',
  638. 'subtitle' => "<span title=\"{$entry(2019, 4, 11)}\">2019-04-11</span> to <span title=\"{$entry(2019, 6, 12)}\">2019-06-12</span>",
  639. 'assignments' => array(
  640. 'Entity-relationship_diagram' => array(
  641. 'title' => 'Entity-relationship diagram',
  642. 'unit' => '1',
  643. ),
  644. 'Deadlocks' => array(
  645. 'title' => 'Deadlocks',
  646. 'unit' => '2',
  647. ),
  648. 'Access_control' => array(
  649. 'title' => 'Access control',
  650. 'unit' => '4',
  651. ),
  652. 'Backups' => array(
  653. 'title' => 'Backups',
  654. 'unit' => '5',
  655. ),
  656. 'Classification_tree' => array(
  657. 'title' => 'Classification tree',
  658. 'unit' => '7',
  659. ),
  660. ),
  661. ),
  662. 'CS3307' => array(
  663. 'title' => 'CS 3307: Operating Systems 2',
  664. 'subtitle' => "<span title=\"{$entry(2019, 4, 11)}\">2019-04-11</span> to <span title=\"{$entry(2019, 6, 12)}\">2019-06-12</span>",
  665. 'assignments' => array(
  666. 'Processes' => array(
  667. 'title' => 'Processes',
  668. 'unit' => '2',
  669. ),
  670. 'Hardware' => array(
  671. 'title' => 'Hardware',
  672. 'unit' => '4',
  673. ),
  674. 'Filesystems' => array(
  675. 'title' => 'Filesystems',
  676. 'unit' => '5',
  677. ),
  678. 'Permissions' => array(
  679. 'title' => 'Permissions',
  680. 'unit' => '7',
  681. ),
  682. ),
  683. ),
  684. 'CS3308' => array(
  685. 'title' => 'CS 3308: Information Retrieval',
  686. 'subtitle' => "<span title=\"{$entry(2020, 6, 18)}\">2020-06-18</span> to <span title=\"{$entry(2020, 8, 19)}\">2020-08-19</span>",
  687. 'assignments' => array(
  688. 'Indexer' => array(
  689. 'title' => 'Indexer',
  690. 'unit' => '2',
  691. ),
  692. 'Indexer~_continued' => array(
  693. 'title' => 'Indexer, continued',
  694. 'unit' => '4',
  695. ),
  696. 'Search_engine' => array(
  697. 'title' => 'Search engine',
  698. 'unit' => '5',
  699. ),
  700. 'Spider' => array(
  701. 'title' => 'Spider',
  702. 'unit' => '7',
  703. ),
  704. ),
  705. ),
  706. 'CS4402' => array(
  707. 'title' => 'CS 4402: Comparative Programming Languages',
  708. 'subtitle' => "<span title=\"{$entry(2018, 11, 15)}\">2018-11-14</span> to <span title=\"{$entry(2019, 1, 16)}\">2019-01-16</span>",
  709. 'assignments' => array(),
  710. ),
  711. 'CS4403' => array(
  712. 'title' => 'CS 4403: Software Engineering 2',
  713. 'subtitle' => "<span title=\"{$entry(2019, 11, 14)}\">2019-11-14</span> to <span title=\"{$entry(2020, 1, 15)}\">2019-01-15</span>",
  714. 'assignments' => array(
  715. 'Project_planning' => array(
  716. 'title' => 'Project planning',
  717. 'unit' => '1',
  718. ),
  719. 'CPM_diagram' => array(
  720. 'title' => 'CPM diagram',
  721. 'unit' => '2',
  722. ),
  723. 'Structured_analysis' => array(
  724. 'title' => 'Structured analysis',
  725. 'unit' => '3',
  726. ),
  727. 'Object-oriented_analysis' => array(
  728. 'title' => 'Object-oriented analysis',
  729. 'unit' => '5',
  730. ),
  731. 'Testing_strategy' => array(
  732. 'title' => 'Testing strategy',
  733. 'unit' => '6',
  734. ),
  735. ),
  736. ),
  737. 'CS4404' => array(
  738. 'title' => 'CS 4404: Advanced Networking and Data Security',
  739. 'subtitle' => "<span title=\"{$entry(2019, 11, 14)}\">2019-11-14</span> to <span title=\"{$entry(2020, 1, 15)}\">2019-01-15</span>",
  740. 'assignments' => array(
  741. 'Net_neutrality' => array(
  742. 'title' => 'Net neutrality',
  743. 'unit' => '1',
  744. ),
  745. 'DNS_attacks' => array(
  746. 'title' => 'DNS attacks',
  747. 'unit' => '2',
  748. ),
  749. '~QoS~_versus_bandwidth' => array(
  750. 'title' => '&quot;QoS&quot; versus bandwidth',
  751. 'unit' => '4',
  752. ),
  753. 'Smart_Grid' => array(
  754. 'title' => 'Smart Grid',
  755. 'unit' => '5',
  756. ),
  757. 'Mobile_ad_hoc_networks' => array(
  758. 'title' => 'Mobile ad hoc networks',
  759. 'unit' => '7',
  760. ),
  761. ),
  762. ),
  763. 'CS4405' => array(
  764. 'title' => 'CS 4405: Mobile Applications',
  765. 'subtitle' => "<span title=\"{$entry(2019, 6, 20)}\">2019-06-20</span> to <span title=\"{$entry(2019, 8, 21)}\">2019-08-21</span>",
  766. 'assignments' => array(
  767. 'Prototype' => array(
  768. 'title' => 'Prototype',
  769. 'unit' => '1',
  770. ),
  771. 'Create_Project_Sunshine' => array(
  772. 'title' => 'Create Project Sunshine',
  773. 'unit' => '2',
  774. ),
  775. 'Course_completion' => array(
  776. 'title' => 'Course completion',
  777. 'unit' => '6',
  778. ),
  779. ),
  780. ),
  781. 'CS4406' => array(
  782. 'title' => 'CS 4406: Computer Graphics',
  783. 'subtitle' => "<span title=\"{$entry(2019, 6, 20)}\">2019-06-20</span> to <span title=\"{$entry(2019, 8, 21)}\">2019-08-21</span>",
  784. 'assignments' => array(
  785. 'Ungraded' => array(
  786. 'title' => 'Ungraded',
  787. 'unit' => '1',
  788. ),
  789. 'Assignment_~2_for_CS4406_Computer_Graphics' => array(
  790. 'title' => 'Assignment #2 for CS4406 Computer Graphics',
  791. 'unit' => '2',
  792. ),
  793. 'Assignment_~3_for_CS4406_Computer_Graphics' => array(
  794. 'title' => 'Assignment #3 for CS4406 Computer Graphics',
  795. 'unit' => '3',
  796. ),
  797. 'Assignment_~4_for_CS4406_Computer_Graphics' => array(
  798. 'title' => 'Assignment #4 for CS4406 Computer Graphics',
  799. 'unit' => '4',
  800. ),
  801. 'Assignment_~5_for_CS4406_Computer_Graphics' => array(
  802. 'title' => 'Assignment #5 for CS4406 Computer Graphics',
  803. 'unit' => '5',
  804. ),
  805. 'Assignment_~6_for_CS4406_Computer_Graphics.html' => array(
  806. 'title' => 'Assignment #6 for CS4406 Computer Graphics',
  807. 'unit' => '6',
  808. ),
  809. 'Assignment_~7_for_CS4406_Computer_Graphics.html' => array(
  810. 'title' => 'Assignment #7 for CS4406 Computer Graphics',
  811. 'unit' => '7',
  812. ),
  813. ),
  814. ),
  815. 'CS4407' => array(
  816. 'title' => 'CS 4407: Data Mining and Machine Learning',
  817. 'subtitle' => "<span title=\"{$entry(2019, 01, 31)}\">2019-01-31</span> to <span title=\"{$entry(2019, 4, 3)}\">2019-04-03</span>",
  818. 'assignments' => array(
  819. 'Lab~_Introduction_to_R' => array(
  820. 'title' => 'Lab: Introduction to R',
  821. 'unit' => '1',
  822. ),
  823. 'Components_of_data_mining' => array(
  824. 'title' => 'Components of data mining',
  825. 'unit' => '2',
  826. ),
  827. 'Linear_regression' => array(
  828. 'title' => 'Linear regression',
  829. 'unit' => '3',
  830. ),
  831. 'class~~knn~~' => array(
  832. 'title' => 'class::knn()',
  833. 'unit' => '4',
  834. ),
  835. 'Ionosphere' => array(
  836. 'title' => 'Ionosphere',
  837. 'unit' => '5',
  838. ),
  839. 'Failed_neural_network' => array(
  840. 'title' => 'Failed neural network',
  841. 'unit' => '6',
  842. ),
  843. 'Failed_neural_network~_evaluation' => array(
  844. 'title' => 'Failed neural network: evaluation',
  845. 'unit' => '7',
  846. ),
  847. ),
  848. ),
  849. 'CS4408' => array(
  850. 'title' => 'CS 4408: Artificial Intelligence',
  851. 'subtitle' => "<span title=\"{$entry(2020, 4, 9)}\">2020-04-09</span> to <span title=\"{$entry(2020, 6, 10)}\">2020-06-10</span>",
  852. 'assignments' => array(
  853. 'Practice_Exercise_2.A' => array(
  854. 'title' => 'Practice Exercise 2.A',
  855. 'unit' => '2',
  856. ),
  857. 'Practice_Exercise_5.A' => array(
  858. 'title' => 'Practice Exercise 5.A',
  859. 'unit' => '3',
  860. ),
  861. 'Practice_Exercises_3.A~_3.B~_3.C~_3.D~_and_3.E' => array(
  862. 'title' => 'Practice Exercises 3.A, 3.B, 3.C, 3.D, and 3.E',
  863. 'unit' => '4',
  864. ),
  865. 'Practice_Exercises_4.A~_4.B~_and_4.C' => array(
  866. 'title' => 'Practice Exercises 4.A, 4.B, and 4.C',
  867. 'unit' => '5',
  868. ),
  869. 'Practice_Exercises_6.A~_6.B~_6.C~_6.D~_and_6.E' => array(
  870. 'title' => 'Practice Exercises 6.A, 6.B, 6.C, 6.D, and 6.E',
  871. 'unit' => '6',
  872. ),
  873. 'Practice_Exercises_8.A~_8.B~_8.C~_9.A~_and_9.B' => array(
  874. 'title' => 'Practice Exercises 8.A, 8.B, 8.C, 9.A, and 9.B',
  875. 'unit' => '7',
  876. ),
  877. ),
  878. ),
  879. 'ECON1580' => array(
  880. 'title' => 'ECON 1580: Introduction to Economics',
  881. 'subtitle' => "<span title=\"{$entry(2021, 1, 28)}\">2021-01-28</span> to <span title=\"{$entry(2021, 3, 31)}\">2021-03-31</span>",
  882. 'assignments' => array(
  883. 'Unit_1_essay' => array(
  884. 'title' => 'title',
  885. 'unit' => '1',
  886. ),
  887. 'Unit_2_essay' => array(
  888. 'title' => 'title',
  889. 'unit' => '2',
  890. ),
  891. 'Unit_3_essay' => array(
  892. 'title' => 'title',
  893. 'unit' => '3',
  894. ),
  895. 'Unit_4_essay' => array(
  896. 'title' => 'title',
  897. 'unit' => '4',
  898. ),
  899. 'Unit_5_essay' => array(
  900. 'title' => 'title',
  901. 'unit' => '5',
  902. ),
  903. 'Unit_6_essay' => array(
  904. 'title' => 'title',
  905. 'unit' => '6',
  906. ),
  907. 'Unit_7_essay' => array(
  908. 'title' => 'title',
  909. 'unit' => '7',
  910. ),
  911. ),
  912. ),
  913. 'ENGL1102' => array(
  914. 'title' => 'ENGL 1102: English Composition 2',
  915. 'subtitle' => "<span title=\"{$entry(2018, 2, 1)}\">2017-11-16</span> to <span title=\"{$entry(2018, 4, 4)}\">2018-01-17</span>",
  916. 'assignments' => array(
  917. 'Drudgery' => array(
  918. 'title' => 'Drudgery',
  919. 'unit' => '1',
  920. ),
  921. 'Death_and_Odysseus' => array(
  922. 'title' => 'Death and Odysseus',
  923. 'unit' => '2',
  924. ),
  925. 'Consumer_ethics' => array(
  926. 'title' => 'Consumer ethics',
  927. 'unit' => '4',
  928. ),
  929. 'Implications_of_the_Internet' => array(
  930. 'title' => 'Implications of the Internet',
  931. 'unit' => '5',
  932. ),
  933. 'References' => array(
  934. 'title' => 'References',
  935. 'unit' => '6',
  936. ),
  937. 'Abstracts' => array(
  938. 'title' => 'Abstracts',
  939. 'unit' => '7',
  940. ),
  941. ),
  942. ),
  943. 'ENGL1405' => array(
  944. 'title' => 'ENGL 1405: World Literature',
  945. 'subtitle' => "<span title=\"{$entry(2018, 6, 21)}\">2018-06-21</span> to <span title=\"{$entry(2018, 8, 22)}\">2018-08-22</span>",
  946. 'assignments' => array(
  947. 'Back_in_the_day' => array(
  948. 'title' => 'Back in the day',
  949. 'unit' => '1',
  950. ),
  951. 'Dear_Diary' => array(
  952. 'title' => 'Dear Diary',
  953. 'unit' => '2',
  954. ),
  955. 'Double_murder_suicide' => array(
  956. 'title' => 'Double murder suicide',
  957. 'unit' => '4',
  958. ),
  959. 'A_romantic_evening_for_three' => array(
  960. 'title' => 'A romantic evening for three',
  961. 'unit' => '5',
  962. ),
  963. 'The_Marvellous_Land_of_Oz' => array(
  964. 'title' => 'The Marvellous Land of Oz',
  965. 'unit' => '7',
  966. ),
  967. ),
  968. ),
  969. 'ENVS1301' => array(
  970. 'title' => 'ENVS 1301: Introduction to Environmental Science',
  971. 'subtitle' => "<span title=\"{$entry(2018, 04, 12)}\">2018-04-12</span> to <span title=\"{$entry(2018, 6, 13)}\">2018-06-13</span>",
  972. 'assignments' => array(
  973. 'Impact_on_the_carbon_cycle' => array(
  974. 'title' => 'Impact on the carbon cycle',
  975. 'unit' => '4',
  976. ),
  977. 'Lane_Regional_Air_Protection_Agency' => array(
  978. 'title' => 'Lane Regional Air Protection Agency',
  979. 'unit' => '6',
  980. ),
  981. ),
  982. ),
  983. 'HIST1421' => array(
  984. 'title' => 'HIST 1421: Greek and Roman Civilization',
  985. 'subtitle' => "<span title=\"{$entry(2017, 4, 6)}\">2017-04-06</span> to <span title=\"{$entry(2017, 6, 7)}\">2017-06-07</span>",
  986. 'assignments' => array(
  987. 'Politics_in_Athens_and_Sparta' => array(
  988. 'title' => 'Politics in Athens and Sparta',
  989. 'unit' => '1',
  990. ),
  991. 'Forms_of_government_in_ancient_Greece' => array(
  992. 'title' => 'Forms of government in ancient Greece',
  993. 'unit' => '2',
  994. ),
  995. 'Inequalities_in_Rome' => array(
  996. 'title' => 'Inequalities in Rome',
  997. 'unit' => '4',
  998. ),
  999. 'The_first_Punic_war' => array(
  1000. 'title' => 'The first Punic war',
  1001. 'unit' => '5',
  1002. ),
  1003. 'Concrete_and_arches' => array(
  1004. 'title' => 'Concrete and arches',
  1005. 'unit' => '7',
  1006. ),
  1007. ),
  1008. ),
  1009. 'MATH1201' => array(
  1010. 'title' => 'MATH 1201: College Algebra',
  1011. 'subtitle' => "<span title=\"{$entry(2018, 2, 1)}\">2017-11-16</span> to <span title=\"{$entry(2018, 4, 4)}\">2018-01-17</span>",
  1012. 'assignments' => array(
  1013. 'Functions' => array(
  1014. 'title' => 'Functions',
  1015. 'unit' => '1',
  1016. ),
  1017. 'Lines' => array(
  1018. 'title' => 'Lines',
  1019. 'unit' => '2',
  1020. ),
  1021. 'Polynomials' => array(
  1022. 'title' => 'Polynomials',
  1023. 'unit' => '3',
  1024. ),
  1025. 'Inverses_and_composites' => array(
  1026. 'title' => 'Inverses and composites',
  1027. 'unit' => '4',
  1028. ),
  1029. 'Logarithms' => array(
  1030. 'title' => 'Logarithms',
  1031. 'unit' => '5',
  1032. ),
  1033. 'Systems_of_equations' => array(
  1034. 'title' => 'Systems of equations',
  1035. 'unit' => '6',
  1036. ),
  1037. 'Trigonometry' => array(
  1038. 'title' => 'Trigonometry',
  1039. 'unit' => '7',
  1040. ),
  1041. ),
  1042. ),
  1043. 'MATH1211' => array(
  1044. 'title' => 'MATH 1211: Calculus',
  1045. 'subtitle' => "<span title=\"{$entry(2020, 4, 9)}\">2020-04-09</span> to <span title=\"{$entry(2020, 6, 10)}\">2020-06-10</span>",
  1046. 'assignments' => array(
  1047. 'Functions' => array(
  1048. 'title' => 'Functions',
  1049. 'unit' => '1',
  1050. ),
  1051. 'Derivatives' => array(
  1052. 'title' => 'Derivatives',
  1053. 'unit' => '2',
  1054. ),
  1055. 'More_derivatives' => array(
  1056. 'title' => 'More derivatives',
  1057. 'unit' => '3',
  1058. ),
  1059. 'A_minimum~_a_concave_up_curve~_and_a_break_in_the_line' => array(
  1060. 'title' => 'A minimum, a concave up curve, and a break in the line',
  1061. 'unit' => '4',
  1062. ),
  1063. 'Even_more_derivatives' => array(
  1064. 'title' => 'Even more derivatives',
  1065. 'unit' => '5',
  1066. ),
  1067. 'Logarithms' => array(
  1068. 'title' => 'Logarithms',
  1069. 'unit' => '6',
  1070. ),
  1071. 'Newton~s_Method~_an_antiderivative~_and_a_summation' => array(
  1072. 'title' => 'Newton&apos;s, Method, an antiderivative, and a summation',
  1073. 'unit' => '7',
  1074. ),
  1075. ),
  1076. ),
  1077. 'MATH1280' => array(
  1078. 'title' => 'MATH 1280: Introduction to Statistics',
  1079. 'subtitle' => "<span title=\"{$entry(2018, 9, 5)}\">2018-09-05</span> to <span title=\"{$entry(2018, 11, 7)}\">2018-11-07</span>",
  1080. 'assignments' => array(
  1081. 'Using_R' => array(
  1082. 'title' => 'Using R',
  1083. 'unit' => '2',
  1084. ),
  1085. 'Data~_a_random_variable~_and_a_population' => array(
  1086. 'title' => 'Data, a random variable, and a population',
  1087. 'unit' => '4',
  1088. ),
  1089. 'Distributions' => array(
  1090. 'title' => 'Distributions',
  1091. 'unit' => '6',
  1092. ),
  1093. ),
  1094. ),
  1095. 'MATH1281' => array(
  1096. 'title' => 'MATH 1281: Statistical Inference',
  1097. 'subtitle' => "<span title=\"{$entry(2021, 1, 28)}\">2021-01-28</span> to <span title=\"{$entry(2021, 3, 31)}\">2021-03-31</span>",
  1098. 'assignments' => array(
  1099. 'Unit_1_essay' => array(
  1100. 'title' => 'title',
  1101. 'unit' => '1',
  1102. ),
  1103. 'Unit_2_essay' => array(
  1104. 'title' => 'title',
  1105. 'unit' => '2',
  1106. ),
  1107. 'Unit_3_essay' => array(
  1108. 'title' => 'title',
  1109. 'unit' => '3',
  1110. ),
  1111. 'Unit_4_essay' => array(
  1112. 'title' => 'title',
  1113. 'unit' => '4',
  1114. ),
  1115. 'Unit_5_essay' => array(
  1116. 'title' => 'title',
  1117. 'unit' => '5',
  1118. ),
  1119. 'Unit_6_essay' => array(
  1120. 'title' => 'title',
  1121. 'unit' => '6',
  1122. ),
  1123. 'Unit_7_essay' => array(
  1124. 'title' => 'title',
  1125. 'unit' => '7',
  1126. ),
  1127. ),
  1128. ),
  1129. 'MATH1302' => array(
  1130. 'title' => 'MATH 1302: Discrete Mathematics',
  1131. 'subtitle' => "<span title=\"{$entry(2020, 1, 30)}\">2020-01-30</span> to <span title=\"{$entry(2020, 4, 1)}\">2019-04-01</span>",
  1132. 'assignments' => array(
  1133. 'Sets' => array(
  1134. 'title' => 'Sets',
  1135. 'unit' => '1',
  1136. ),
  1137. 'Truth_table' => array(
  1138. 'title' => 'Truth table',
  1139. 'unit' => '3',
  1140. ),
  1141. 'Recurrence_relations' => array(
  1142. 'title' => 'Recurrence relations',
  1143. 'unit' => '5',
  1144. ),
  1145. 'Provinces' => array(
  1146. 'title' => 'Provinces',
  1147. 'unit' => '7',
  1148. ),
  1149. ),
  1150. ),
  1151. 'PHIL1402' => array(
  1152. 'title' => 'PHIL 1402: Introduction to Philosophy',
  1153. 'subtitle' => "<span title=\"{$entry(2018, 6, 21)}\">2018-06-21</span> to <span title=\"{$entry(2018, 8, 22)}\">2018-08-22</span>",
  1154. 'assignments' => array(
  1155. 'Thucydides' => array(
  1156. 'title' => 'Thucydides',
  1157. 'unit' => '1',
  1158. ),
  1159. 'Immanuel_Kant' => array(
  1160. 'title' => 'Immanuel Kant',
  1161. 'unit' => '2',
  1162. ),
  1163. 'Gods' => array(
  1164. 'title' => 'Gods',
  1165. 'unit' => '3',
  1166. ),
  1167. 'Thoughts_on_this_week~s_readings' => array(
  1168. 'title' => 'Thoughts on this week&apos;s readings',
  1169. 'unit' => '4',
  1170. ),
  1171. 'Male_genital_mutilation' => array(
  1172. 'title' => 'Male genital mutilation',
  1173. 'unit' => '5',
  1174. ),
  1175. 'Truth' => array(
  1176. 'title' => 'Truth',
  1177. 'unit' => '6',
  1178. ),
  1179. 'Humans_are_terrible' => array(
  1180. 'title' => 'Humans are terrible',
  1181. 'unit' => '7',
  1182. ),
  1183. ),
  1184. ),
  1185. 'PHIL1404' => array(
  1186. 'title' => 'PHIL 1404: Ethics and Social Responsibility',
  1187. 'subtitle' => "<span title=\"{$entry(2017, 1, 26)}\">2017-01-26</span> to <span title=\"{$entry(2017, 3, 29)}\">2017-03-29</span>",
  1188. 'assignments' => array(
  1189. 'Apple_and_ethics' => array(
  1190. 'title' => 'Apple and ethics',
  1191. 'unit' => '1',
  1192. ),
  1193. 'Cultural_relativism' => array(
  1194. 'title' => 'Cultural relativism',
  1195. 'unit' => '3',
  1196. ),
  1197. 'Artificial_value' => array(
  1198. 'title' => 'Artificial value',
  1199. 'unit' => '5',
  1200. ),
  1201. 'Caveat_emptor_and_the_McDonald~s_coffee_case' => array(
  1202. 'title' => 'Caveat emptor and the McDonald&apos;s coffee case',
  1203. 'unit' => '7',
  1204. ),
  1205. ),
  1206. ),
  1207. 'POLS1503' => array(
  1208. 'title' => 'POLS 1503: Globalization',
  1209. 'subtitle' => "<span title=\"{$entry(2016, 9, 1)}\">2016-09-01</span> to <span title=\"{$entry(2016, 11, 2)}\">2016-11-02</span>",
  1210. 'assignments' => array(
  1211. 'The_World_Bank_and_the_Integrated_Storm_Water_Drain_project_in_Chennai' => array(
  1212. 'title' => 'The World Bank and the Integrated Storm Water Drain project in Chennai',
  1213. 'unit' => '2',
  1214. ),
  1215. 'The_Electronic_Frontier_Foundation' => array(
  1216. 'title' => 'The Electronic Frontier Foundation',
  1217. 'unit' => '3',
  1218. ),
  1219. 'The_Canadian_Magazine_Dispute_and_an_Exemption_for_Whaling' => array(
  1220. 'title' => 'The Canadian Magazine Dispute and an Exemption for Whaling',
  1221. 'unit' => '6',
  1222. ),
  1223. 'Global_pathogens_and_GMOs' => array(
  1224. 'title' => 'Global pathogens and GMOs',
  1225. 'unit' => '7',
  1226. ),
  1227. ),
  1228. ),
  1229. 'PSYC1111' => array(
  1230. 'title' => 'PSYC 1111: Introduction to Health Psychology (previously known
  1231. as Introduction to Human Psychology)',
  1232. 'subtitle' => "<span title=\"{$entry(2018, 9, 5)}\">2018-09-05</span> to <span title=\"{$entry(2018, 11, 7)}\">2018-11-07</span>",
  1233. 'assignments' => array(
  1234. 'Fatima' => array(
  1235. 'title' => 'Fatima',
  1236. 'unit' => '1',
  1237. ),
  1238. 'Health_beliefs' => array(
  1239. 'title' => 'Health beliefs',
  1240. 'unit' => '2',
  1241. ),
  1242. 'Using_emotion_to_affect_health-related_behaviours' => array(
  1243. 'title' => 'Using emotion to affect health-related behaviours',
  1244. 'unit' => '3',
  1245. ),
  1246. 'Magda' => array(
  1247. 'title' => 'Magda',
  1248. 'unit' => '4',
  1249. ),
  1250. 'Weblogging_about_chronic_pain_and_illness' => array(
  1251. 'title' => 'Weblogging about chronic pain and illness',
  1252. 'unit' => '5',
  1253. ),
  1254. 'Psychology_and_chronic_illness' => array(
  1255. 'title' => 'Psychology and chronic illness',
  1256. 'unit' => '6',
  1257. ),
  1258. 'Gender_differences_in_illness' => array(
  1259. 'title' => 'Gender differences in illness',
  1260. 'unit' => '7',
  1261. ),
  1262. ),
  1263. ),
  1264. 'PSYC1205' => array(
  1265. 'title' => 'PSYC 1205: Emotional intelligence (EI)',
  1266. 'subtitle' => "<span title=\"{$entry(2020, 6, 18)}\">2020-06-18</span> to <span title=\"{$entry(2020, 8, 19)}\">2020-08-19</span>",
  1267. 'assignments' => array(
  1268. 'Ideals_are_my_guiding_light' => array(
  1269. 'title' => 'Ideals are my guiding light',
  1270. 'unit' => '2',
  1271. ),
  1272. 'Leadership_tools' => array(
  1273. 'title' => 'Leadership tools',
  1274. 'unit' => '5',
  1275. ),
  1276. 'Strengths~_weaknesses~_opportunities~_and_threats' => array(
  1277. 'title' => 'Strengths, weaknesses, opportunities, and threats',
  1278. 'unit' => '7',
  1279. ),
  1280. ),
  1281. ),
  1282. 'PSYC1504' => array(
  1283. 'title' => 'PSYC 1504: Introduction to Psychology',
  1284. 'subtitle' => "<span title=\"{$entry(2020, 9, 3)}\">2020-09-03</span> to <span title=\"{$entry(2020, 11, 4)}\">2020-11-04</span>",
  1285. 'assignments' => array(
  1286. 'Sleep_deprivation' => array(
  1287. 'title' => 'Sleep deprivation',
  1288. 'unit' => '2',
  1289. ),
  1290. 'Senses' => array(
  1291. 'title' => 'Senses',
  1292. 'unit' => '3',
  1293. ),
  1294. 'Repressed_memories' => array(
  1295. 'title' => 'Repressed memories',
  1296. 'unit' => '4',
  1297. ),
  1298. 'Choice_blindness' => array(
  1299. 'title' => 'Choice blindness',
  1300. 'unit' => '7',
  1301. ),
  1302. ),
  1303. ),
  1304. 'SOC1502' => array(
  1305. 'title' => 'SOC 1502: Introduction to Sociology',
  1306. 'subtitle' => "<span title=\"{$entry(2020, 9, 3)}\">2020-09-03</span> to <span title=\"{$entry(2020, 11, 4)}\">2020-11-04</span>",
  1307. 'assignments' => array(
  1308. 'A_study_proposal' => array(
  1309. 'title' => 'A study proposal',
  1310. 'unit' => '1',
  1311. ),
  1312. 'Cultural_objects' => array(
  1313. 'title' => 'Cultural objects',
  1314. 'unit' => '2',
  1315. ),
  1316. 'Stereotypes' => array(
  1317. 'title' => 'Stereotypes',
  1318. 'unit' => '4',
  1319. ),
  1320. 'Inequality' => array(
  1321. 'title' => 'Inequality',
  1322. 'unit' => '5',
  1323. ),
  1324. 'Concentric_zone_model' => array(
  1325. 'title' => 'Concentric zone model',
  1326. 'unit' => '7',
  1327. ),
  1328. ),
  1329. ),
  1330. 'UNIV1001' => array(
  1331. 'title' => 'UNIV 1001: Online Education Strategies',
  1332. 'subtitle' => "<span title=\"{$entry(2016, 9, 1)}\">2016-09-01</span> to <span title=\"{$entry(2016, 11, 2)}\">2016-11-02</span>",
  1333. 'assignments' => array(
  1334. 'Free_Business_Models_and_Why_They_Matter_to_Me' => array(
  1335. 'title' => 'Free Business Models and Why They Matter to Me',
  1336. 'unit' => '2',
  1337. ),
  1338. 'Proctoring' => array(
  1339. 'title' => 'Proctoring',
  1340. 'unit' => '3',
  1341. ),
  1342. 'Student_Success' => array(
  1343. 'title' => 'Student Success',
  1344. 'unit' => '4',
  1345. ),
  1346. 'Notes' => array(
  1347. 'title' => 'Notes',
  1348. 'unit' => '6',
  1349. ),
  1350. 'A_conflict_with_T-Mobile' => array(
  1351. 'title' => 'A conflict with T-Mobile',
  1352. 'unit' => '7',
  1353. ),
  1354. ),
  1355. ),
  1356. );
  1357. // Goal list data:
  1358. $goals = array(
  1359. 'bachelor' => array(
  1360. 'title' => 'Finish my bachelor degree',
  1361. 'priority' => 'high',
  1362. 'urgency' => 'high',
  1363. 'postrequisites' => array(
  1364. 'martial' => true,
  1365. ),
  1366. 'prerequisites' => array(),
  1367. 'body' => <<<END
  1368. <p>
  1369. For a number of reasons, this cannot be put off.
  1370. Not least of those reasons is that the completion of this degree marks the beginning of the countdown after which the school&apos;s censorship of my website ends.
  1371. </p>
  1372. END
  1373. ),
  1374. 'new_job' => array(
  1375. 'title' => 'Get a new job',
  1376. 'priority' => 'high',
  1377. 'urgency' => 'medium',
  1378. 'postrequisites' => array(
  1379. ),
  1380. 'prerequisites' => array(),
  1381. 'body' => <<<END
  1382. <p>
  1383. My current work environment is toxic and I need to escape.
  1384. </p>
  1385. <p>
  1386. Additionally, people are resistant to change.
  1387. Even the people I&apos;ve asked to refer to me as a &quot;they&quot; refuse.
  1388. In a brand new environment, I feel I would be more comfortable insisting and, as people wouldn&apos;t already be used to thinking of me as a man, people would be less resistant to accepting the fact that I&apos;m not one.
  1389. </p>
  1390. END
  1391. ),
  1392. 'good_job' => array(
  1393. 'title' => 'Get a good job',
  1394. 'priority' => 'high',
  1395. 'urgency' => 'high',
  1396. 'postrequisites' => array(
  1397. ),
  1398. 'prerequisites' => array(),
  1399. 'body' => <<<END
  1400. <p>
  1401. I want to not only escape my current, toxic work environment, but also move to a work environment in which I can actually stand behind what I do and enjoy it.
  1402. I&apos;ve got to finish learning to type before I can qualify for such a job though, and with how long that&apos;ll take me, I&apos;ll probably have my associate degree completed.
  1403. </p>
  1404. END
  1405. ),
  1406. 'hair' => array(
  1407. 'title' => 'Look into permanent hair removal',
  1408. 'priority' => 'low',
  1409. 'urgency' => 'low',
  1410. 'postrequisites' => array(
  1411. 'voice' => true,
  1412. ),
  1413. 'prerequisites' => array(),
  1414. 'body' => <<<END
  1415. <p>
  1416. Even right after I shave my face, the dark roots of my hair show through my skin.
  1417. Shaving therefore doesn&apos;t even fix the facial hair problem fully even on a temporary basis.
  1418. And then, it doesn&apos;t take long for it to grow back out.
  1419. I need to look into something that will remove the hair at a deeper and likely permanent level.
  1420. I wouldn&apos;t mind a permanent solution to arm, leg, and especially chest hair as well.
  1421. </p>
  1422. END
  1423. ),
  1424. 'voice' => array(
  1425. 'title' => 'Look into voice lessons',
  1426. 'priority' => 'medium',
  1427. 'urgency' => 'medium',
  1428. 'postrequisites' => array(
  1429. ),
  1430. 'prerequisites' => array(),
  1431. 'body' => <<<END
  1432. <p>
  1433. My voice is too masculine.
  1434. I&apos;d like to get lessons to feminise it.
  1435. I don&apos;t think I want to go through full feminisation through hormones and such, but having a sifter voice shouldn&apos;t be too much to ask.
  1436. A feminine voice isn&apos;t going to help me pull off an androgynous air if I haven&apos;t already dealt with my facial hair problem though.
  1437. </p>
  1438. END
  1439. ),
  1440. 'IRA' => array(
  1441. 'title' => "Deal with $a[IRA] paperwork",
  1442. 'priority' => 'medium',
  1443. 'urgency' => 'high',
  1444. 'postrequisites' => array(
  1445. ),
  1446. 'prerequisites' => array(),
  1447. 'body' => <<<END
  1448. <p>
  1449. The head manager at work gave me paperwork relating to the company&apos;s new $a[IRA] provider.
  1450. I need to actually deal with the paperwork soon to be sure there aren&apos;t further problems I need the person in charge to correct.
  1451. </p>
  1452. END
  1453. ),
  1454. 'Internet' => array(
  1455. 'title' => 'Get a home Internet connection set up',
  1456. 'priority' => 'medium',
  1457. 'urgency' => 'low',
  1458. 'postrequisites' => array(
  1459. ),
  1460. 'prerequisites' => array(),
  1461. 'body' => <<<END
  1462. <p>
  1463. My current laptop stopped freezing on me, so my fear that it&apos;s going to give up the ghost soon has subsided.
  1464. However, when it does finally die, I&apos;ll need to have already set up a home Internet connection to continue my coursework.
  1465. My current laptop is using Wi-Fi with a $a[MAC] address whitelist, and the new machine has no way to get onto that whitelist.
  1466. Additionally, having a home Internet connection will allow me to run a Minetest server and Web server.
  1467. Palette Game has postponed the opening of my Minetest server by quite a bit though, as I need to now get the game into a usable state before opening the world to the public instead of just using the pre-built Minetest Game with a few extra mods.
  1468. </p>
  1469. END
  1470. ),
  1471. 'CSS' => array(
  1472. 'title' => "Finish the $a[CSS] test page for $a[XHTML] elements",
  1473. 'priority' => 'low',
  1474. 'urgency' => 'low',
  1475. 'postrequisites' => array(
  1476. ),
  1477. 'prerequisites' => array(),
  1478. 'body' => <<<END
  1479. <p>
  1480. I started building a test page that would demonstrate how my website&apos;s $a[CSS] causes all valid $a[XHTML] elements to render, but didn&apos;t have time to finish it.
  1481. Having it done would help me notice bugs in the $a[CSS].
  1482. </p>
  1483. END
  1484. ),
  1485. 'variables' => array(
  1486. 'title' => 'Add variable use checks to this website&apos;s build scripts',
  1487. 'priority' => 'low',
  1488. 'urgency' => 'low',
  1489. 'postrequisites' => array(
  1490. ),
  1491. 'prerequisites' => array(),
  1492. 'body' => <<<END
  1493. <p>
  1494. To avoid variables getting overwritten by files in ways other files don&apos;t expect and to avoid unexpected values in variables files don&apos;t expect to be set yet, all variables are supposed to be set or reserved in one file of this website&apos;s build scripts.
  1495. At some point, I should build code that enforces that.
  1496. </p>
  1497. END
  1498. ),
  1499. 'JavaScript' => array(
  1500. 'title' => 'Research JavaScript more and get JavaScript redirects set up',
  1501. 'priority' => 'low',
  1502. 'urgency' => 'low',
  1503. 'postrequisites' => array(
  1504. ),
  1505. 'prerequisites' => array(),
  1506. 'body' => <<<END
  1507. <p>
  1508. I haven&apos;t been on my own Web server in ages, and as such, have been unable to use proper $a[HTTP] redirects.
  1509. Until I&apos;m back on my own server, I should have JavaScript redirects set up to deal with cases where people either access the site without $a[TLS] or access the site using the wrong host name.
  1510. </p>
  1511. END
  1512. ),
  1513. 'martial' => array(
  1514. 'title' => 'Learn a martial art',
  1515. 'priority' => 'medium',
  1516. 'urgency' => 'low',
  1517. 'postrequisites' => array(
  1518. ),
  1519. 'prerequisites' => array(),
  1520. 'body' => <<<END
  1521. <p>
  1522. I&apos;ve wanted to learn a martial art for a while now.
  1523. Martial arts training is supposed to help with discipline and fitness, both of which I need more of.
  1524. It wouldn&apos;t be bad having a way to defend myself either in the unlikely event that I&apos;m ever attacked.
  1525. With no way to get terms ahead in my coursework during slow periods, there&apos;s no way I can be sure can dedicate time to martial arts training during busy periods.
  1526. I&apos;ll need to complete my schooling before I even begin martial arts training.
  1527. </p>
  1528. END
  1529. ),
  1530. 'vasectomy' => array(
  1531. 'title' => 'Get a vasectomy',
  1532. 'priority' => 'high',
  1533. 'urgency' => 'low',
  1534. 'postrequisites' => array(
  1535. ),
  1536. 'prerequisites' => array(),
  1537. 'body' => <<<END
  1538. <p>
  1539. After doing some thinking, I came to the conclusion that the post-vasectomy risk of accidental conception is worth it because there&apos;s an even greater chance that I could talk someone out of having children.
  1540. I think what I find so unattractive about females is the risk of pregnancy and the fact that I&apos;m not the one that would get pregnant.
  1541. (If I was the one to get pregnant, I could know with complete certainty that the pregnant one, me, would make the right choice and get an abortion.)
  1542. If I greatly reduce the chance of pregnancy by getting a vasectomy, I think I could be bisexual instead of being exclusively attracted to males.
  1543. </p>
  1544. END
  1545. ),
  1546. );
  1547. foreach($goals as $key_prerequisite => $value_goaldata):
  1548. foreach($value_goaldata['postrequisites'] as $key_postrequisite => $_):
  1549. $goals[$key_postrequisite]['prerequisites'][$key_prerequisite] = true;
  1550. endforeach;
  1551. endforeach;
  1552. foreach($goals as $key_prerequisite => $value_goaldata):
  1553. if(count($value_goaldata['prerequisites'])):
  1554. foreach($value_goaldata['prerequisites'] as $key => $_):
  1555. $value_goaldata['prerequisites'][$key] = "<a href=\"#$key\">#$key</a>";
  1556. endforeach;
  1557. $goals[$key_prerequisite]['prerequisites'] = implode(', ', $value_goaldata['prerequisites']);
  1558. else:
  1559. $goals[$key_prerequisite]['prerequisites'] = 'none';
  1560. endif;
  1561. if(count($value_goaldata['postrequisites'])):
  1562. foreach($value_goaldata['postrequisites'] as $key => $_):
  1563. $value_goaldata['postrequisites'][$key] = "<a href=\"#$key\">#$key</a>";
  1564. endforeach;
  1565. $goals[$key_prerequisite]['postrequisites'] = implode(', ', $value_goaldata['postrequisites']);
  1566. else:
  1567. $goals[$key_prerequisite]['postrequisites'] = 'none';
  1568. endif;
  1569. endforeach;
  1570. unset($key_prerequisite, $value_goaldata, $value_goaldata);
  1571. // Automated navigation menu for the coursework section
  1572. foreach($coursework as $key_code => $value_array):
  1573. $assignment_array = array();
  1574. foreach($value_array['assignments'] as $key_href => $value_assignment):
  1575. $assignment_array[] = "<a href=\"/en/coursework/$key_code/$key_href.xhtml\" title=\"{$value_assignment['title']}\">Unit {$value_assignment['unit']}</a>";
  1576. endforeach;
  1577. $coursework_nav[$key_code] = implode(" |\n\t\t", $assignment_array);
  1578. endforeach;
  1579. unset($key_code, $value_array, $assignment_array, $key_href, $value_assignment);
  1580. // The following variable names are reserved, and may be declared in
  1581. // in any file. However, because they can be declared in any file, they
  1582. // cannot be assumed in any file to be empty before use.
  1583. //
  1584. // $key and variable names beginning in "$key_":
  1585. // Reserved for use in "foreach" statements.
  1586. // $value and variable names beginning in "$value_":
  1587. // Reserved for use in "foreach" statements.
  1588. // $i:
  1589. // Reserved for use in "for" statements.
  1590. // $canary:
  1591. // Currently used by the main build script to contain the warrant
  1592. // canary's contents.
  1593. // $dirname:
  1594. // Used in any file to refer to the name of a directory that needs
  1595. // to be checked for existence, then created if nonexistent. (This
  1596. // should be fixed with a function at some point.)
  1597. // $moved:
  1598. // Currently used in the file dealing with redirect pages.
  1599. // $_:
  1600. // Used when a value is required to be assigned to a variable, but
  1601. // we have no intention of actually reading that variable's value.
  1602. // $current_entry:
  1603. // Used in some of the weblog-specific code to hold the year,
  1604. // month, and day numbers. This code may need to be rewritten once
  1605. // path-specific code has been set up.
  1606. // $datetime:
  1607. // Used in some navigation code that needs to be cleaned up.
  1608. // $previous:
  1609. // Used in some navigation code that needs to be cleaned up.
  1610. // $next:
  1611. // Used in some navigation code that needs to be cleaned up.
  1612. // $URI_path_minus_slash:
  1613. // Set to the HTTP path of the webpage, minus the slash at the
  1614. // beginning.
  1615. // $xhtml:
  1616. // An array of page-specific variables used by the main template.
  1617. // $checkpath:
  1618. // A variable used on the main template to build the links to the
  1619. // XHTML/CSS conformance checker. This code should probably be
  1620. // cleaned up.
  1621. // $time_script_started:
  1622. // This variable holds the time that the script started, for
  1623. // statistical purposes. It can't be declared in this file simply
  1624. // because it needs to be declared before this file is require()d.
  1625. // $time_until_script_ended:
  1626. // This variable holds the time that the script took to complete,
  1627. // for statistical purposes. It can't be declared in this file
  1628. // simply because it needs to be declared at the end of the main
  1629. // script.
  1630. // $censored_pages:
  1631. // This variable is used to count the number of pages that are
  1632. // currently censored.
  1633. // NOTES:
  1634. // "weblog_index.php" majorly needs to be cleaned up later.
  1635. //
  1636. // Closures are also not included in this file. All variable names
  1637. // beginning in "$¢" are reserved for use as closures.