forked from Courseography/courseography
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplanner.html
1303 lines (1228 loc) · 69.3 KB
/
planner.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="keywords" content="University of Toronto, Computer Science, UofT computer science, UofT comp sci, course planner, u of t, u of t timetable, flowscopic, Courseography, David Liu, Ian Stewart-Binks">
<meta name="robots" content="index, follow, noarchive, nosnippet">
<meta name="description" content="University of Toronto Department of Computer Science Course Planner.">
<title>Courseography</title>
<link href='http://fonts.googleapis.com/css?family=Bitter:400,400italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="style/graph/styles.css"/>
<link rel="stylesheet" href="style/graph/graph_styles.css"/>
<link rel="stylesheet" href="res/video-js/video-js.css">
</head>
<body>
<div id="graph">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="graphRootSVG" viewBox="150 -300 1210 660">
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="1" refY="5" markerUnits="strokeWidth" orient="auto" markerWidth="10" markerHeight="10">
<polyline points="0,1 10,5 0,9" fill="black" />
</marker>
</defs>
<!-- Nodes -->
<g id="nodes">
<g id="CSC438" class="node" data-group="theory">
<rect x="545.5955" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="565.5955" y="312.8916">438</text>
</g>
<g id="CSC463" class="node" data-group="theory">
<rect x="435.4041" y="136.2453" width="40" rx="4" ry="4" height="32"/>
<text x="455.4041" y="158.5304">463</text>
</g>
<g id="CSC448" class="node" data-group="theory">
<rect x="435.4041" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="455.4041" y="312.8916">448</text>
</g>
<g id="CSC165" class="node" data-group="theory">
<rect x="465.568" y="-261.4223" width="66" rx="4" ry="4" height="32"/>
<text x="498.568" y="-239.1371">165/240</text>
</g>
<g id="CSC236" class="node" data-group="theory">
<rect x="465.568" y="-148.4075" width="66" rx="4" ry="4" height="32"/>
<text x="498.568" y="-126.1224">236/240</text>
</g>
<g id="CSC263" class="node" data-group="theory">
<rect x="465.568" y="-59.778" width="66" rx="4" ry="4" height="32"/>
<text x="498.568" y="-37.4929">263/265</text>
</g>
<g id="CSC373" class="node" data-group="theory">
<rect x="478" y="23.6881" width="40" rx="4" ry="4" height="32"/>
<text x="498" y="45.9733">373</text>
</g>
<g id="CSC108" class="node" data-group="core">
<rect x="607" y="-261.4223" width="40" rx="4" ry="4" height="32"/>
<text x="627" y="-239.1371">108</text>
</g>
<g id="CSC148" class="node" data-group="core">
<rect x="607" y="-199.4223" width="40" rx="4" ry="4" height="32"/>
<text x="627" y="-177.1371">148</text>
</g>
<g id="CSC207" class="node" data-group="se">
<rect x="790" y="-148.4075" width="40" rx="4" ry="4" height="32"/>
<text x="810" y="-126.1224">207</text>
</g>
<g id="CSC209" class="node" data-group="systems">
<rect x="933" y="-59.778" width="40" rx="4" ry="4" height="32"/>
<text x="953" y="-37.4929">209</text>
</g>
<g id="CSC258" class="node" data-group="systems">
<rect x="1006" y="-148.4075" width="40" rx="4" ry="4" height="32"/>
<text x="1026" y="-126.1224">258</text>
</g>
<g id="CSC369" class="node" data-group="systems">
<rect x="967" y="23.6881" width="40" rx="4" ry="4" height="32"/>
<text x="987" y="45.9733">369</text>
</g>
<g id="CSC318" class="node" data-group="hci">
<rect x="194" y="74.2453" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="96.5304">318</text>
</g>
<g id="CSC320" class="node" data-group="graphics">
<rect x="287" y="75.3633" width="40" rx="4" ry="4" height="32"/>
<text x="307" y="97.6485">320</text>
</g>
<g id="CSC418" class="node" data-group="graphics">
<rect x="287" y="136.2453" width="40" rx="4" ry="4" height="32"/>
<text x="307" y="158.5304">418</text>
</g>
<g id="CSC454" class="node" data-group="hci">
<rect x="194" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="312.8916">454</text>
</g>
<g id="CSC300" class="node" data-group="hci">
<rect x="194" y="4.298" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="26.5831">300</text>
</g>
<g id="CSC200" class="node" data-group="hci">
<rect x="194" y="-59.778" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="-37.4929">200</text>
</g>
<g id="CSC404" class="node" data-group="hci">
<rect x="194" y="224.3459" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="246.6311">404</text>
</g>
<g id="CSC428" class="node" data-group="hci">
<rect x="194" y="136.2453" width="40" rx="4" ry="4" height="32"/>
<text x="214" y="158.5304">428</text>
</g>
<g id="CSC336" class="node" data-group="num">
<rect x="395" y="75.3633" width="40" rx="4" ry="4" height="32"/>
<text x="415" y="97.6485">336</text>
</g>
<g id="CSC446" class="node" data-group="num">
<rect x="360" y="222.2894" width="40" rx="4" ry="4" height="32"/>
<text x="380" y="244.5746">446</text>
</g>
<g id="CSC456" class="node" data-group="num">
<rect x="360" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="380" y="312.8916">456</text>
</g>
<g id="CSC436" class="node" data-group="num">
<rect x="360" y="134.4732" width="40" rx="4" ry="4" height="32"/>
<text x="380" y="156.7584">436</text>
</g>
<g id="CSC384" class="node" data-group="ai">
<rect x="667" y="192.4732" width="40" rx="4" ry="4" height="32"/>
<text x="687" y="214.7584">384</text>
</g>
<g id="CSC486" class="node" data-group="ai">
<rect x="667" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="687" y="312.8916">486</text>
</g>
<g id="CSC401" class="node" data-group="ai">
<rect x="747" y="192.4732" width="40" rx="4" ry="4" height="32"/>
<text x="767" y="214.7584">401</text>
</g>
<g id="CSC485" class="node" data-group="ai">
<rect x="832" y="192.4732" width="40" rx="4" ry="4" height="32"/>
<text x="852" y="214.7584">485</text>
</g>
<g id="CSC321" class="node" data-group="ai">
<rect x="607" y="76.2453" width="40" rx="4" ry="4" height="32"/>
<text x="627" y="98.5304">321</text>
</g>
<g id="CSC411" class="node" data-group="ai">
<rect x="607" y="222.2894" width="40" rx="4" ry="4" height="32"/>
<text x="627" y="244.5746">411</text>
</g>
<g id="CSC301" class="node" data-group="se">
<rect x="790" y="23.6881" width="40" rx="4" ry="4" height="32"/>
<text x="810" y="45.9733">301</text>
</g>
<g id="CSC302" class="node" data-group="se">
<rect x="790" y="80.1049" width="40" rx="4" ry="4" height="32"/>
<text x="810" y="102.39">302</text>
</g>
<g id="CSC410" class="node" data-group="se">
<rect x="706" y="78.2453" width="40" rx="4" ry="4" height="32"/>
<text x="726" y="99.5304">410</text>
</g>
<g id="CSC465" class="node" data-group="se">
<rect x="656.7" y="78.2453" width="40" rx="4" ry="4" height="32"/>
<text x="676.7" y="99.5304">465</text>
</g>
<g id="CSC324" class="node" data-group="theory">
<rect x="545" y="76.6881" width="40" rx="4" ry="4" height="32"/>
<text x="565" y="98.9733">324</text>
</g>
<g id="CSC488" class="node" data-group="systems">
<rect x="1140" y="192.4732" width="40" rx="4" ry="4" height="32"/>
<text x="1160" y="214.7584">488</text>
</g>
<g id="ECE489" class="node" data-group="systems">
<rect x="1140" y="290.6064" width="40" rx="4" ry="4" height="37"/>
<text x="1160" y="305.5303">ECE</text>
<text x="1160" y="322.6816">489</text>
</g>
<g id="CSC469" class="node" data-group="systems">
<rect x="1045" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="1065" y="312.8916">469</text>
</g>
<g id="CSC358" class="node" data-group="systems">
<rect x="1045" y="23.6881" width="40" rx="4" ry="4" height="32"/>
<text x="1065" y="45.9733">358</text>
</g>
<g id="CSC458" class="node" data-group="systems">
<rect x="1045" y="80.1049" width="40" rx="4" ry="4" height="32"/>
<text x="1065" y="102.39">458</text>
</g>
<g id="ECE385" class="node" data-group="systems">
<rect x="1045" y="192.4732" width="40" rx="4" ry="4" height="37"/>
<text x="1065" y="207.397">ECE</text>
<text x="1065" y="224.5484">385</text>
</g>
<g id="CSC309" class="node" data-group="dbweb">
<rect x="933" y="222.2894" width="40" rx="4" ry="4" height="32"/>
<text x="953" y="244.5746">309</text>
</g>
<g id="CSC343" class="node" data-group="dbweb">
<rect x="894" y="136.5216" width="40" rx="4" ry="4" height="32"/>
<text x="914" y="158.8068">343</text>
</g>
<g id="CSC443" class="node" data-group="dbweb">
<rect x="884" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="904" y="312.8916">443</text>
</g>
<g id="CSC494" class="node" data-group="core">
<rect x="1210" y="270.1562" width="40" rx="4" ry="4" height="32"/>
<text x="1230" y="292.4413">494</text>
</g>
<g id="CSC495" class="node" data-group="core">
<rect x="1266" y="270.1562" width="40" rx="4" ry="4" height="32"/>
<text x="1286" y="292.4413">495</text>
</g>
<g id="CSC490" class="node" data-group="core">
<rect x="1210" y="222.2894" width="40" rx="4" ry="4" height="32"/>
<text x="1230" y="244.5746">490</text>
</g>
<g id="CSC491" class="node" data-group="core">
<rect x="1266" y="222.2894" width="40" rx="4" ry="4" height="32"/>
<text x="1286" y="244.5746">491</text>
</g>
<g id="Calc1" class="node" data-group="core">
<rect x="317" y="-261.4223" width="62" rx="4" ry="4" height="32"/>
<text x="348" y="-239.1371">Calc1</text>
</g>
<g id="Sta1" class="node" data-group="core">
<rect x="192" y="-199.4223" width="50" rx="4" ry="4" height="32"/>
<text x="217" y="-177.1371">Sta1</text>
</g>
<g id="Sta2" class="node" data-group="core">
<rect x="192" y="-137.4223" width="50" rx="4" ry="4" height="32"/>
<text x="217" y="-115.1371">Sta2</text>
</g>
<g id="CSC412" class="node" data-group="ai">
<rect x="607" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="627" y="312.8916">412</text>
</g>
<g id="CSC420" class="node" data-group="graphics">
<rect x="287" y="290.6064" width="40" rx="4" ry="4" height="32"/>
<text x="307" y="313.0908">420</text>
</g>
<g id="CSC104" class="node" data-group="core">
<rect x="704" y="-261.4223" width="40" rx="4" ry="4" height="32"/>
<text x="724" y="-239.1371">104</text>
</g>
<g id="CSC120" class="node" data-group="core">
<rect x="790" y="-261.4223" width="40" rx="4" ry="4" height="32"/>
<text x="810" y="-239.1371">120</text>
</g>
<g id="Lin1" class="node" data-group="core">
<rect x="272" y="-137.4223" width="50" rx="4" ry="4" height="32"/>
<text x="297" y="-115.1371">Lin1</text>
</g>
<g id="CSC372" class="node" data-group="systems">
<rect x="1046" y="136.5216" width="40" rx="4" ry="4" height="32"/>
<text x="1066" y="158.8068">372</text>
</g>
<g id="CSC310" class="node" data-group="theory">
<rect x="545" y="25.3633" width="40" rx="4" ry="4" height="32"/>
<text x="565" y="47.6485">310</text>
</g>
</g>
<!-- hybrids -->
<g>
<g id="hybrid1" class="hybrid">
<rect x="160" width="55" height="28" y="180.2956"/>
<text x="187.5" y="192.0983">301/318/</text>
<text x="187.5" y="204.3493">384/418</text>
</g>
<g id="hybrid2" class="hybrid">
<rect x="1100" width="27" height="24" y="-55.778"/>
<text x="1113.5" y="-39.8498">263</text>
</g>
<g id="hybrid3" class="hybrid">
<rect x="272" width="72" height="28" y="196.4732"/>
<text x="308" y="207.2759">336/373/463,</text>
<text x="308" y="219.5269">Calc1</text>
</g>
<g id="hybrid4" class="hybrid">
<rect x="1206" width="27" height="24" y="143.3476"/>
<text x="1219.5" y="159.2758">324</text>
</g>
<g id="hybrid5" class="hybrid">
<rect x="826" width="27" height="24" y="253.3551"/>
<text x="839.5" y="269.2834">373</text>
</g>
<g id="hybrid6" class="hybrid">
<rect x="574" width="27" height="24" y="-83.4169"/>
<text x="587.5" y="-67.4887">Sta1</text>
</g>
<g id="hybrid7" class="hybrid">
<rect x="650" width="27" height="24" y="-83.4169"/>
<text x="663.5" y="-67.4887">Lin1</text>
</g>
<g id="hybrid8" class="hybrid">
<rect x="753" width="27" height="24" y="261.6064"/>
<text x="766.5" y="277.5347">Sta1</text>
</g>
<g id="hybrid9" class="hybrid">
<rect x="510" width="110" height="24" y="182.7716"/>
<text x="565" y="198">Calc1, Sta1, Sta2</text>
</g>
<g id="hybrid10" class="hybrid">
<rect x="796" width="27" height="24" y="-55.778"/>
<text x="809.5" y="-39.8498">263</text>
</g>
<g id="hybrid11" class="hybrid">
<rect x="1099" width="27" height="24" y="249.3551"/>
<text x="1112.5" y="265.2834">236</text>
</g>
<g id="hybrid12" class="hybrid">
<rect x="254" width="27" height="24" y="-55.778"/>
<text x="267.5" y="-39.8498">209</text>
</g>
<g id="hybrid13" class="hybrid">
<rect x="552" width="27" height="24" y="-19.0449"/>
<text x="565.5" y="-4.1">148</text>
</g>
<g id="hybrid14" class="hybrid">
<rect x="910" width="27" height="24" y="70.6649"/>
<text x="923.5" y="86.5931">207</text>
</g>
<g id="hybrid15" class="hybrid">
<rect x="293" width="27" height="24" y="236.6064"/>
<text x="306.5" y="252.5347">263</text>
</g>
<g id="hybrid16" class="hybrid">
<rect x="864" width="58" height="24" y="31.6881"/>
<text x="893" y="47.6164">165/Calc1</text>
</g>
<g id="hybrid17" class="hybrid">
<rect x="649" width="58" height="24" y="-19.0449"/>
<text x="678" y="-4.1">236</text>
</g>
<g id="bool1" class="bool">
<ellipse rx="9.88" ry="7.3684" cx="627.1759" cy="-103.4169"/>
<text x="627.1759" y="-100.4169">and</text>
</g>
<g id="bool2" class="bool">
<ellipse rx="9.88" ry="7.3684" cx="1025.7129" cy="-43.778"/>
<text x="1025.7129" y="-40.778">and</text>
</g>
<g id="bool3" class="bool">
<ellipse rx="9.88" ry="7.3684" cx="498.1717" cy="238.2894"/>
<text x="498.1717" y="241.2894">or</text>
</g>
<g id="bool4" class="bool">
<ellipse rx="9.88" ry="7.3684" cx="627.1759" cy="-5.4919"/>
<text x="627.1759" y="-2.4919">and</text>
</g>
<g id="bool5" class="bool">
<ellipse rx="9.88" ry="7.3684" cx="347.78" cy="-52.4096"/>
<text x="347.78" y="-49.4096">and</text>
</g>
</g>
<!-- Edges -->
<g>
<path id="p1" d="M455.4041 168.2617 L455.4041 282.6306" marker-end="url(#arrow)"/>
<path id="p2" d="M486.4949 -229.423 L486.4949 -156.4426" marker-end="url(#arrow)"/>
<path id="p3" d="M465.555 -132.4075 L455.4041 -132.4075 L455.4041 128.2266" marker-end="url(#arrow)"/>
<path id="p4" d="M498.1717 -27.7613 L498.1717 15.715" marker-end="url(#arrow)"/>
<path id="p5" d="M627.1759 -229.4076 L627.1759 -207.4543" marker-end="url(#arrow)"/>
<path id="p6" d="M607.1496 -183.4223 L511.8061 -183.4223 L511.8061 -156.3891" marker-end="url(#arrow)"/>
<path id="p7" d="M647.1322 -183.4223 L810.0412 -183.4223 L810.0412 -156.3994" marker-end="url(#arrow)"/>
<path id="p8" d="M830.0372 -132.4075 L952.9791 -132.4075 L952.9791 -67.7469" marker-end="url(#arrow)"/>
<path id="p9" d="M647.1285 -183.4223 L1017.2745 -183.4223 L1017.2745 -156.4256" marker-end="url(#arrow)"/>
<path id="p10" d="M498.1717 -261.4184 L498.1717 -281.4223 L1035.7622 -281.4223 L1035.7622 -156.383" marker-end="url(#arrow)"/>
<path id="p11" d="M607.1931 -183.4223 L415.4041 -183.4223 L415.4041 67.3633" marker-end="url(#arrow)"/>
<path id="p12" d="M415.4041 107.3975 L415.4041 238.2894 L408.609 238.2894" marker-end="url(#arrow)"/>
<path id="p13" d="M415.4041 107.3647 L415.4041 306.6064 L408.609 306.6064" marker-end="url(#arrow)"/>
<path id="p14" d="M415.4041 107.3819 L415.4041 150.4732 L408.609 150.4732" marker-end="url(#arrow)"/>
<path id="p15" d="M687.8184 224.4294 L687.8184 282.5964" marker-end="url(#arrow)"/>
<path id="p16" d="M790.048 -132.4075 L767.3 -132.4075 L767.3 184.4528" marker-end="url(#arrow)"/>
<path id="p17" d="M933.0172 -43.778 L852.0361 -43.778 L852.0361 184.492" marker-end="url(#arrow)"/>
<path id="p18" d="M528.1487 -28.0056 L528.1487 152.2894 L627 152.2894 L627 213" marker-end="url(#arrow)"/>
<path id="p19" d="M932.9691 -43.778 L851.7929 -43.778 L851.7929 39.6881 L838.0608 39.6881" marker-end="url(#arrow)"/>
<path id="p20" d="M810.0412 55.6931 L810.0412 72.1217" marker-end="url(#arrow)"/>
<path id="p21" d="M528.1487 -28.0056 L528.1487 152.2894 L688 152.2894 L688 184" marker-end="url(#arrow)"/>
<path id="p22" d="M986.7648 55.6863 L986.7648 306.6064 L1037.7932 306.6064" marker-end="url(#arrow)"/>
<path id="p23" d="M952.9791 -27.7671 L952.9791 214.2779" marker-end="url(#arrow)"/>
<path id="p24" d="M921.1373 168.5612 L942.364 215.0442" marker-end="url(#arrow)"/>
<path id="p25" d="M903.7817 168.5546 L903.7817 282.597" marker-end="url(#arrow)"/>
<path id="p26" d="M986.7648 55.6863 L986.7648 306.6064 L931.7576 306.6064" marker-end="url(#arrow)"/>
<path id="p27" d="M194.0034 208.2956 L199.9133 217.5993" marker-end="url(#arrow)"/>
<path id="p28" d="M1112.8696 -31.778 L1112.8696 208.4732 L1131.9268 208.4732" marker-end="url(#arrow)"/>
<path id="p29" d="M1112.8696 -31.778 L1112.8696 39.6881 L1093.8125 39.6881" marker-end="url(#arrow)"/>
<path id="p30" d="M1112.8696 -31.778 L1112.8696 96.1049 L1093.8125 96.1049" marker-end="url(#arrow)"/>
<path id="p31" d="M306.8166 195.9732 L306.8166 176.2589" marker-end="url(#arrow)"/>
<path id="p32" d="M530.7434 -132.4075 L581.6596 -132.4075 L612.9153 -112.4999" marker-end="url(#arrow)"/>
<path id="p33" d="M790.0251 -132.4075 L674.0781 -132.4075 L641.5879 -112.3251" marker-end="url(#arrow)"/>
<path id="p34" d="M617.296 -103.4169 L498.1717 -103.4169 L498.1717 -67.7652" marker-end="url(#arrow)"/>
<path id="p35" d="M637.0559 -103.4169 L726.3378 -103.4169 L726.3378 70.2352" marker-end="url(#arrow)"/>
<path id="p37" d="M1205.9095 155.3476 L1177.9095 186.4487" marker-end="url(#arrow)"/>
<path id="p38" d="M853.7817 274.1251 L877.1755 289.3224" marker-end="url(#arrow)"/>
<path id="p39" d="M972.9738 -43.778 L1007.8329 -43.778" marker-end="url(#arrow)"/>
<path id="p40" d="M1025.7129 -116.4386 L1025.7129 -59.1465" marker-end="url(#arrow)"/>
<path id="p41" d="M1025.7129 -36.4096 L1025.7129 39.6881 L1014.7333 39.6881" marker-end="url(#arrow)"/>
<path id="p42" d="M1025.7129 -36.4096 L1025.7129 207.3551 L1037.8136 207.6924" marker-end="url(#arrow)"/>
<path id="p43" d="M1025.7129 -36.4096 L1025.7129 39.6881 L1037.8105 39.6881" marker-end="url(#arrow)"/>
<path id="p44" d="M1025.7129 -36.4096 L1025.7129 96.1049 L1037.8105 96.1049" marker-end="url(#arrow)"/>
<path id="p45" d="M455.4041 168.2525 L455.4041 238.2894 L480.2917 238.2894" marker-end="url(#arrow)"/>
<path id="p46" d="M498.1717 55.7219 L498.1717 211.161 L498.1717 222.921" marker-end="url(#arrow)"/>
<path id="p47" d="M498.1717 245.6579 L498.1717 306.6064 L537.612 306.6064" marker-end="url(#arrow)"/>
<path id="p48" d="M498.1717 245.6579 L498.1717 342.6064 L687.8184 342.6064 L687.8184 330.6025" marker-end="url(#arrow)"/>
<path id="p49" d="M587.5033 -59.4169 L587.5033 -43.778 L538.7551 -43.778" marker-end="url(#arrow)"/>
<path id="p50" d="M753.8 262.5435 L712.4668 228.672" marker-end="url(#arrow)"/>
<path id="p51" d="M767.3 261.6064 L767.3 232.4806" marker-end="url(#arrow)"/>
<path id="p52" d="M780.8 263.2295 L826.6669 227.9735" marker-end="url(#arrow)"/>
<path id="p54" d="M585.0955 206.5041 L603.2718 217.515" marker-end="url(#arrow)"/>
<path id="p55" d="M347.7799 -229.4076 L347.7799 -183.4223 L250.3452 -183.4223" marker-end="url(#arrow)"/>
<path id="p56" d="M192.3429 -121.4223 L172.3478 -121.4223 L172.3478 152.5216 L186.3644 152.5216" marker-end="url(#arrow)"/>
<path id="p57" d="M217.3478 -167.4076 L217.3478 -145.4543" marker-end="url(#arrow)"/>
<path id="p58" d="M627.1759 254.2679 L627.1759 282.5829" marker-end="url(#arrow)"/>
<path id="p59" d="M810.0412 -31.778 L810.0412 15.6711" marker-end="url(#arrow)"/>
<path id="p60" d="M1125.3439 273.3551 L1137.5702 285.1165" marker-end="url(#arrow)"/>
<path id="p61" d="M1025.7129 -36.4096 L1025.7129 152.5216 L1037.8105 152.5216" marker-end="url(#arrow)"/>
<path id="p62" d="M267.8231 -31.778 L266.7799 342.6064 L380.576 342.6064 L380.576 330.6025" marker-end="url(#arrow)"/>
<path id="p63" d="M267.8566 -31.778 L267.8566 152.2453 L242.3444 152.2453" marker-end="url(#arrow)"/>
<path id="p64" d="M267.8566 -31.778 L267.8566 91.3633 L278.842 91.3633" marker-end="url(#arrow)"/>
<path id="p65" d="M267.8566 -31.778 L267.8566 -4.4825 L267.8566 152.2453 L278.842 152.2453" marker-end="url(#arrow)"/>
<path id="p66" d="M657.0176 -59.4169 L634.8187 -19.3027" marker-end="url(#arrow)"/>
<path id="p67" d="M594.7247 -59.4169 L619.0055 -19.0689" marker-end="url(#arrow)"/>
<path id="p68" d="M627.1759 1.8766 L627.1759 68.2759" marker-end="url(#arrow)"/>
<path id="p69" d="M627.1759 1.8766 L627.1759 41.3633 L593.5911 41.3633" marker-end="url(#arrow)"/>
<path id="p70" d="M565.5955 4.9551 L565.5955 17.344" marker-end="url(#arrow)"/>
<path id="p71" d="M921.6411 94.6649 L917.0528 128.5759" marker-end="url(#arrow)"/>
<path id="p72" d="M306.8166 260.6064 L306.8166 282.5693" marker-end="url(#arrow)"/>
<path id="p73" d="M876.3403 55.7048 L900.0989 128.9013" marker-end="url(#arrow)"/>
<path id="p74" d="M309.0447 -105.4159 L338.3318 -65.3387" marker-end="url(#arrow)"/>
<path id="p75" d="M347.7799 -229.4478 L347.7799 -67.778" marker-end="url(#arrow)"/>
<path id="p76" d="M347.7799 -45.0411 L347.7799 91.3633 L387.4272 91.3633" marker-end="url(#arrow)"/>
<path id="p77" d="M347.7799 -45.0411 L347.7799 91.3633 L334.7782 91.3633" marker-end="url(#arrow)"/>
<path id="p78" d="M347.7799 -45.0411 L347.7799 306.6064 L334.7782 306.6064" marker-end="url(#arrow)"/>
<path id="p79" d="M1045.3652 -132.1224 L1150.3652 -132.1224 L1150.3652 185.1224" marker-end="url(#arrow)"/>
<path id="p80" d="M214.3625 106.2599 L214.3625 128.2132" marker-end="url(#arrow)"/>
<path id="p81" d="M528.1487 -28.0056 L528.1487 93.2894 L537 93.2894" marker-end="url(#arrow)"/>
<path id="p82" d="M678.1487 5.0056 L678.1487 70.2894" marker-end="url(#arrow)"/>
</g>
<!-- Title & Logo -->
<g>
<image xlink:href="res/img/dcs.png" x="1070" y="-285" width="270" height="90"/>
<text id="svgTitle" x="1200" y="-170">Courseography</text>
</g>
<!-- Reset Button -->
<g onclick="reset()" cursor="pointer">
<ellipse id="resetButton" cx="220" cy="-255" rx="30" ry="30"/>
<text id="resetButtonText" x="220" y="-250">Reset</text>
</g>
<!-- Legend -->
<g>
<g data-group="theory">
<rect x="1170" width="175" height="30" y="-121.778"/>
<text x="1257.5" y="-100.8857" >Theory</text>
</g>
<g data-group="systems">
<rect x="1170" width="175" height="30" y="-91.778"/>
<text x="1257.5" y="-70.8857" >Systems</text>
</g>
<g data-group="dbweb">
<rect x="1170" width="175" height="30" y="-61.778"/>
<text x="1257.5" y="-40.8857" >Databases & Web</text>
</g>
<g data-group="num">
<rect x="1170" width="175" height="30" y="28.222"/>
<text x="1257.5" y="49.1143" >Numerical Computing</text>
</g>
<g data-group="se">
<rect x="1170" width="175" height="30" y="-31.778"/>
<text x="1257.5" y="-10.8857" >Software Engineering</text>
</g>
<g data-group="graphics">
<rect x="1170" width="175" height="30" y="58.222"/>
<text x="1257.5" y="79.1143" >Graphics</text>
</g>
<g data-group="hci">
<rect x="1170" width="175" height="30" y="88.222"/>
<text x="1257.5" y="109.1143" >Humans and Computing</text>
</g>
<g data-group="ai">
<rect x="1170" width="175" height="30" y="-1.778"/>
<text x="1257.5" y="19.1143" >Artificial Intelligence</text>
</g>
</g>
</svg>
</div>
<!-- Disclaimer -->
<div id="disclaimerDiv" >
DISCLAIMER: Both the
<a href="http://www.artsandscience.utoronto.ca/ofr/timetable/winter/csc.html">Official Timetable</a> and <a href="http://www.artsandscience.utoronto.ca/ofr/calendar/index.html">Calendar</a> take precedence over the information presented here. It's important that you double-check your course selection, prerequisites, and your program plans.
</div>
<!-- Tabs -->
<div class="infoTabs">
<div class="tabListDiv">
<ul class="tabList">
<li><a href="#welcome">Welcome!</a></li>
<li><a href="#focuses">Focuses</a></li>
<li><a href="#timetable">Timetable</a></li>
<li><a href="#post">Check My POSt!</a></li>
</ul>
<div id='FCECountDiv'><span id='FCEcount'>0.0</span> FCEs</div>
</div>
<!-- Welcome Tab -->
<div id="welcome" class="infoTab">
<div class="infoTabContent">
<h2>Welcome!</h2>
<p>
The graph above displays the prerequisite links connecting courses
in our department. Select courses to plan your enrolments for
future terms! Courses that you've selected but have missing
prerequisites will be highlighted in red.
</p>
<p>
Check out the different tabs to access helpful features for your
planning. Also, here's a
<a href="res/full_graph.jpg" target="_blank">printable version</a>
of the graph.
</p>
<br>
<p>
Courseography is an ongoing
<a target="_blank" href="https://github.com/Ian-Stewart-Binks/cscourseplanner">
project</a> maintained by Ian Stewart-Binks
and <a target="_blank" href="http://www.cs.toronto.edu/~liudavid/">David Liu</a>.
Ideas for new features, better design, and (especially) bug reports
are always welcome!
Please send all feedback to
<a target="_blank" href="mailto:[email protected]">this address</a>.
If you see a bug, please do let us know which browser and version you're using.
And if there's a display issue, giving us your screen display info
(e.g., resolution) will be rather helpful. Thanks!
</p>
</div>
</div>
<!-- Focuses Tab -->
<div id="focuses" class="infoTab">
<div class="focusTabs">
<div id="focusListDiv" class="sideListDiv">
<ul class="focusList sideTabList">
<li><a href="#sciDetails">Scientific Computing</a></li>
<li><a href="#AIDetails">Artificial Intelligence</a></li>
<li><a href="#NLPDetails">Natural Language Processing</a></li>
<li><a href="#visionDetails">Computer Vision</a></li>
<li><a href="#systemsDetails">Computer Systems</a></li>
<li><a href="#gameDetails">Video Games</a></li>
<li><a href="#HCIDetails">Human Computer Interaction</a></li>
<li><a href="#theoryDetails">Theory of Computation</a></li>
<li><a href="#webDetails">Web Technologies</a></li>
</ul>
</div>
<div id="sciDetails" class="focusDetails innerTabContents">
<p>
Scientific computing studies the world around us. Known and unknown quantities are related through certain rules, e.g. physical laws, formulating mathematical problems. These problems are solved by numerical methods implemented as algorithms and run on computers. The numerical methods are analyzed and their performance (e.g. accuracy, efficiency) studied. Problems, such as choosing the optimal shape for an airplane (to achieve, for example, minimal fuel consumption), finding the fair price for derivative products of the market, or regulating the amount of radiation in medical scans, can be modeled by mathematical expressions, and solved by numerical techniques.
</p>
<p>
Students wishing to study scientific computing should have a strong background in mathematics, in particular calculus of several variables, linear algebra and statistics, be fluent in programming, and have a good understanding of data structures and algorithm design.
</p>
<p>Required Courses:</p>
<ol>
<li>MAT235Y1/MAT237Y1/MAT257Y1</li>
<li>1.5 FCE from the following: CSC336H1, CSC350H1, CSC351H1, CSC446H1, 456H1</li>
<li>1 FCE from the following: CSC320H1/418H1, CSC321H1/411H1, CSC343H1, CSC384H1, CSC358H1/CSC458H1</li>
</ol>
Suggested Related Courses:
<ol>
<li>MAT224H1/MAT240H1, MAT244H1, MAT334H1/MAT354H1, MAT337H1/MAT357H1</li>
</ol>
<p>
It is also recommended that students in this focus consider taking a half-course or two from the basic sciences (such as physics, chemistry, biology), as these sciences provide the sources of many problems solved by numerical techniques.
</p>
</div>
<div id="AIDetails" class="focusDetails innerTabContents">
<p>
Artificial Intelligence (AI) is aimed at understanding and replicating the computational processes underlying intelligent behaviour. These behaviours include the perception of one's environment, learning how that environment is structured, communicating with other agents, and reasoning to guide one's actions. This focus is designed to provide students with an introduction to some of the key scientific and technical ideas that have been developed in AI. There are four different sub-areas of AI represented in our department: Computer Vision, Computational Linguistics (CL), Machine Learning (ML), and Knowledge Representation and Reasoning (KR). These areas cover a wide variety of ideas and techniques. Students wanting to achieve this focus are required to take courses from at least two of these sub-areas.
</p>
<p>Required Courses:</p>
<ol>
<li>1 FCE from the following: MAT235Y1/237Y1/257Y1, APM236H1/MIE262H1/STA248/261H1, CSC350H1, CSC310H1, CSC330H1, CSC438H1, CSC448H1, CSC463H1</li>
<li>2.5 FCEs from the following covering at least two of the four areas
<ol>
<li>CSC401H1, CSC485H1</li>
<li>CSC320H1, CSC420H1</li>
<li>CSC321H1, CSC411H1, CSC412H1</li>
<li>CSC384H1, CSC486H1</li>
</ol>
</li>
</ol>
<p>Suggested Related Courses: CSC200Y1, CSC324H1, COG250Y1, PSY270H1, PHL232H1, PHL342H1, STA414H1</p>
</div>
<div id="NLPDetails" class="focusDetails innerTabContents">
<p>
How can we build and analyze systems for enabling users to communicate with computers using human language (also called natural language), and for automatically processing the vast amounts of data on the web available in the form of text? The focus covers appropriate material on natural language interfaces, as well as tools such as document summarization, intelligent search over the web, and so on. Students considering this focus are encouraged to consider a second Major in Linguistics. [Note 0.5 FCEs in LIN are in addition to the 12.0 FCEs required to complete the Specialist program]
</p>
<p>Required Courses:</p>
<ol>
<li>CSC318H1</li>
<li>CSC401H1, CSC485H1</li>
<li>LIN200H1</li>
<li>1.5 FCE from the following: CSC309H1, CSC321H1, CSC330H1, CSC411H1, CSC428H1, CSC486H</li>
<li>0.5 FCE from the following: PSY100H1, COG250Y1</li>
</ol>
<p>Suggested Related Courses:</p>
<p>
Other relevant CSC courses, depending on the student's interests, include other courses in artificial intelligence such as CSC384H1 or CSC420H1. Linguistics, Psychology, and Cognitive Science are all directly relevant to this focus, and we recommend that interested students take additional courses from any or all of them.
</p>
</div>
<div id="visionDetails" class="focusDetails innerTabContents">
<p>
Computer vision is the science and technology of machines that can see. As a science, the goal of computer vision is to understand the computational processes required for a machine to come to an understanding of the content of a set of images. The data here may be a single snapshot, a video sequence, or a set of images from different viewpoints or provided by medical scanners.
</p>
<p>
The computer vision focus introduces students to the study of vision from a computational point of view. That is, we attempt to clearly define computational problems for various steps of the overall process, and then show how these problems can be tackled with appropriate algorithms.
</p>
<p>
Students who wish to pursue computer vision should have an understanding of linear algebra and calculus of several variables. Moreover, they should be solid programmers and have a good understanding of data structures and algorithm design. These basic tools are required in order to first pose computational vision problems, and then develop and test algorithms for their solution.
</p>
<p>Required Courses:</p>
<ol>
<li>MAT235Y1/MAT237Y1/MAT257Y1, CSC320H1, CSC350H1, CSC411H1, CSC420H1</li>
<li>0.5 FCE from the following: CSC418H1, CSC412H1, CSC2503H (Note: students must petition to take this course.)</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>ECE216H1</li>
</ol>
<p>
The following are examples of topics and courses that fit naturally with a study of computational vision. The list is meant to be illustrative of the range of cognate topics, but is not necessarily complete. The ordering is alphabetical and not indicative of importance. Note: there are prerequisites for many of these courses that we do not list here.
</p>
<p>
APM462H1, COG250Y1, CSC384H, CSC485H1, CSC486H1, PHL232H1, PHY385H1, PSL440Y1, PSY270H1, PSY280H1, STA257H1/STA261H1
</p>
</div>
<div id="systemsDetails" class="focusDetails innerTabContents">
<p>
Software systems are complex and interesting. Poorly done systems can be incredibly expensive: they can cost society billions of dollars, and sometimes make the difference between life and death. Rapid changes in technology and applications means that the underlying systems must continually adapt. This focus takes you under the covers of software systems, laying bare the layers and introducing you to concurrency issues, scalability, multiprocessor systems, distributed computing, and more.
</p>
<p>Required Courses:</p>
<ol>
<li>CSC324H1, CSC343H1, CSC443H1, CSC469H1, CSC488H1</li>
<li>1 FCE from the following: CSC372H1/ECE385H1, CSC358H1, CSC458H1</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>CSC301H1, CSC309H1, CSC410H1, ECE489H1</li>
<li>Relevant courses offered at UTM: CSC347H5, CSC423H5, CSC427H5</li>
<li>Relevant courses offered by Engineering: ECE454H1, ECE568H1</li>
</ol>
</div>
<div id="gameDetails" class="focusDetails innerTabContents">
<p>
Video game design combines several disciplines within computer science, including software engineering, graphics, artificial intelligence and human-computer interaction. It also incorporates elements of economics, psychology, music and creative writing, requiring video game researchers to have a diverse, multidisciplinary set of skills.
</p>
<p>
Students who wish to pursue video game design should have an understanding of linear algebra (for computer graphics modeling), computer hardware and operating systems (for console architecture), data structures, and algorithm design. Students will gain a general knowledge of the more advanced topics listed in the courses below.
</p>
<p>Required Courses:</p>
<ol>
<li>CSC300H1, CSC301H1, CSC318H1, CSC324H1, CSC384H1, CSC418H1, CSC404H1</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>CSC358H1, CSC458H1, CSC428H1</li>
<li>MUS300H1, INI222H1, INI465H1, ENG235H1</li>
<li>ECO326H1, MGT2056H</li>
</ol>
</div>
<div id="HCIDetails" class="focusDetails innerTabContents">
<p>
Human-Computer Interaction (HCI) is the scientific study of the use of computers by people and the design discipline that informs the creation of systems and software that are useful, usable, and enjoyable for the people who use them. HCI students have exciting opportunities for research and graduate school; HCI professionals often have jobs with titles such as user interface architect, user interface specialist, interaction designer, or usability engineer. [Note 3.5 FCEs in SOC and PSY are in addition to the 12.0 FCEs required to complete the Specialist program]
</p>
<p>Required Courses:</p>
<ol>
<li>CSC300H1, CSC301H1, CSC318H1, CSC428H1</li>
<li>SOC101Y1, SOC200H1, SOC202H1, SOC302H1</li>
<li>1 FCE from the following: CSC309H1, CSC320H1, CSC321H1, CSC343H1, CSC384H1, CSC401H1, CSC404H1, CSC418H1, CSC485H1, CSC490H1/491H1</li>
<li>PSY100H1, PSY270H1/PSY280H1</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>CSC454H1, CSC290H1</li>
<li>At least one half-course in Human Factors or Ergonomics offered by the Department of Mechanical and Industrial Engineering, such as MIE240H, MIE343H, MIE344H, MIE448H, and MIE449H. Human factors is a sister discipline to human-computer interaction that approaches problems in slightly different ways.</li>
<li>WDW260H1</li>
</ol>
</div>
<div id="theoryDetails" class="focusDetails innerTabContents">
<p>
Why is it easy to sort a list of numbers, but hard to break Internet encryption schemes? Is finding a solution to a problem harder than checking that a solution is correct? Can we find good approximate solutions, even when the exact solutions seem out of reach? Theory of Computation studies the inherent complexity of fundamental algorithmic problems. On one hand, we develop ground-breaking efficient data structures and algorithms. On the other, we have yet to develop good algorithms for many problems despite decades of effort, and for these problems we strive to prove no time- or space-efficient algorithms will ever solve them. While the field has seen some successful impossibility results, there are still many problems – such that those underlying modern cryptography and security – for which we do not know either efficient algorithms or strong lower bounds!
</p>
<p>
This focus takes a rigorous, mathematical approach to computational problem-solving: students will gain a deep understanding of algorithm paradigms and measures of problem complexity, and develop the skills necessary to convey abstract ideas with precision and clarity. Many of our students go on to graduate studies and sophisticated algorithmic work in industry. This focus has natural ties with many branches of mathematics and is the foundation of many computer science fields. Consequently, our students often apply their theoretical knowledge to other fields of interest. We strongly encourage taking the enriched theory courses (CSC240H1, CSC265H1, CSC375H1) as well as specialist/major versions of the MAT requirements for our focus. [Depending on courses selected for points 4 & 5, students may need to complete 0.5-1.0 FCEs in addition to the 12.0 FCEs required to complete the Specialist program.]
</p>
<p>Required Courses:</p>
<ol>
<li>MAT137Y1/MAT157Y1/MAT237Y1 Note: if MAT237Y1 is used it cannot be counted in the 2 FCE list below. </li>
<li>CSC463H1 </li>
<li>CSC336H1/CSC350H1 </li>
<li>1.5 FCEs from the following:
<ul>
<li>CSC310H1, CSC438H1, CSC448H1, MAT443H1</li>
<li>MAT332H1, MAT344H1</li>
<li>At UTM: CSC322H5/MAT302H5, CSC422H5</li>
<li>CSC494H1/CSC495H1 project supervised by a faculty member from the Theory group, or a relevant introductory graduate course in Theory. (Note that students must petition to take a graduate course.)</li>
</ul>
</li>
<li>2 FCEs from the following:
<ul>
<li>APM236H1/MIE262H1, MIE263H1, APM421H1, APM461H1</li>
<li>MAT224H1/MAT247H1, MAT237Y1/MAT257Y1, MAT244H1/MAT267H1</li>
<li>MAT301H1/MAT347Y1, MAT315H1, MAT327H1, MAT334H1/MAT354H1, MAT337H1/MAT357H1</li>
<li>Any 400-level MAT course (except MAT443H1)</li>
<li>STA248H1/STA261H1, STA347H1</li>
</ul>
</li>
</ol>
<p>Recommended Courses:</p>
<ol>
<li>Students are strongly encouraged to take the enriched theory courses: CSC240H1, CSC265H1, and CSC375H1, rather than their regular counterparts: CSC165H1/CSC236H1, CSC263H1, and CSC373H1, respectively.</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>BCB410H1</li>
<li>CSC320H1/CSC418H1/CSC420H1, CSC321H1/CSC384H1/CSC411H1/CSC485H1, CSC343H1/CSC443H1, CSC351H1/CSC456H1, CSC358H1/CSC458H1, CSC412H1/CSC465H1/CSC486H1, CSC488H1</li>
</ol>
</div>
<div id="webDetails" class="focusDetails innerTabContents">
<p>
The Web and Internet Technologies focus introduces students to the systems and algorithms that power today's large-scale web and Internet applications such as search engines, social networking applications, web data mining applications, and content distribution networks. The focus covers both the algorithm foundations of Web and Internet Technologies, as well as the implementation and system architecture.
</p>
<p>
Students who wish to pursue the Web and Internet Technologies focus should have a solid understanding of statistics, should be good programmers and have a good understanding of data structures and algorithm design.
</p>
<p>
To get practical experience, students pursuing the web and Internet technologies focus are encouraged to do either a term project or a summer USRA carrying out a project in web and internet technologies.
</p>
<p>Required courses:</p>
<ol>
<li>STA248H1, CSC309H1, CSC343H1, CSC358H1, CSC458H1, CSC411H1</li>
<li>0.5 FCEs from the following: CSC310H1, CSC443H1, CSC469H1</li>
</ol>
<p>Suggested Related Courses:</p>
<ol>
<li>Courses offered at UTM: CSC347H5, CSC423H5, CSC427H5</li>
<li>ECE568H1</li>
</ol>
</div>
</div>
</div>
<!-- Timetable Tab -->
<div id="timetable" class="infoTab">
<div id="timetableSearch" class="infoTabContent">
<h2>2014-2015 Timetable</h2>
<p>Search through the timetable for a course or instructor.</p>
<p>The "(+5)" caps are extra reserved seats. See official timetable for details.</p>
<p id="timetable-creator-link"><a href="timetable_creator.html"> Plan your timetable here! </a></p>
<input type="text" class="text-input" id="filter" value="" />
</div>
<div id="timetableContainer"></div>
</div>
<!-- Check My POSt Tab -->
<div id="post" class="infoTab">
<div id="postReqs" class="postTypeTabs">
<div id="postTypeListDiv" class="sideListDiv">
<ul id="postTypeList" class="postList sideTabList">
<li><a href='#specCheck'>Specialist
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'></a>
</li>
<li><a href='#majorCheck'>Major
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'></a>
</li>
<li><a href='#minorCheck'>Minor
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'></a>
</li>
</ul>
</div>
<div id="specCheck" class="postTabs">
<div id="postListDiv" class="sideListDiv">
<ul class="postList sideTabList">
<li><a href='#cscReqs'>CSC Required Courses
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'></a>
</li>
<li><a href='#matReqs'>MAT/STA Required Courses
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'/></a>
</li>
<li><a href='#csc400s'>CSC/ECE/BCB 400+
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'/></a>
</li>
<li><a href='#cscElecs'>CSC Electives
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'/></a>
</li>
<li><a href='#matElecs'>MAT/STA Electives
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'/></a>
</li>
<li><a href='#peyReq'>Inquiry (PEY)
<img class='statusIcon' src='res/ico/delete.ico' alt='MISSING'/></a>
</li>
</ul>
</div>
<div id="cscReqs" class="postDetails innerTabContents">
<h4>ALL of...</h4>
<table class='checkTable'>
<tr>
<td><input type="checkbox" id="CSC108check" disabled><label for='CSC108check'>CSC108</label></td>
<td><input type="checkbox" id="CSC165check" disabled><label for='CSC165check'>CSC165</label></td>
</tr>
<tr>
<td><input type="checkbox" id="CSC148check" disabled><label for='CSC148check'>CSC148</label></td>
<td><input type="checkbox" id="CSC236check" disabled><label for='CSC236check'>CSC236</label></td>
</tr>
<tr>
<td><input type="checkbox" id="CSC207check" disabled><label for='CSC207check'>CSC207</label></td>
<td><input type="checkbox" id="CSC263check" disabled><label for='CSC263check'>CSC263</label></td>
</tr>
<tr>
<td><input type="checkbox" id="CSC209check" disabled><label for='CSC209check'>CSC209</label></td>
<td><input type="checkbox" id="CSC373check" disabled><label for='CSC373check'>CSC373</label></td>
</tr>
<tr>
<td><input type="checkbox" id="CSC258check" disabled><label for='CSC258check'>CSC258</label></td>
</tr>
<tr>
<td><input type="checkbox" id="CSC369check" disabled><label for='CSC369check'>CSC369</label></td>
<td></td>
</tr>
</table>
</div>
<div id='matReqs' class="postDetails innerTabContents">
<h4>ALL of...</h4>
<table class='checkTable'>
<tr>
<td><input type='checkbox' id='Calc1check' disabled><label for='Calc1check'>(MAT135,136)/137/157</label></td>
</tr>
<tr>
<td><input type='checkbox' id='Lin1check' disabled><label for='Lin1check'>MAT221/223/240</label></td>
</tr>
<tr>
<td><input type='checkbox' id='Sta1check' disabled><label for='Sta1check'>STA247/255/257</label></td>
</tr>
</table>
</div>
<div id='csc400s' class='postDetails innerTabContents'>
<h4>At least 1.5 FCEs from...</h4>
<p>CSC400+, ECE489, BCB410, BCB420, and BCB430. (Input BCB410/420/430 manually.)</p>
<table class='checkTable'>
<tr>
<td><input type='text' id='4xx1' placeholder='CSC4xx' disabled></td>
<td><input id='BCB410check' type='checkbox'
onchange='updateCSC400s(); updateElecs(); updatePOStTotal()'>
<label for='BCB410check' >BCB410</label>
</td>
</tr>
<tr>
<td><input type='text' id='4xx2' placeholder='CSC4xx' disabled></td>
<td><input id='BCB420check' type='checkbox'
onchange='updateCSC400s(); updateElecs(); updatePOStTotal()'>
<label for='BCB420check'>BCB420</label>
</td>
</tr>
<tr>
<td><input type='text' id='4xx3' placeholder='CSC4xx' disabled></td>
<td><input id='BCB430check' type='checkbox'
onchange='updateCSC400s(); updateElecs(); updatePOStTotal()'>
<label for='BCB430check'>BCB430</label>
</td>
</tr>
</table>
<p>Note: no more than two of CSC490/491/494/495 will be counted.</p>
</div>
<div id='cscElecs' class='postDetails innerTabContents'>
<p>
Note: 400-level courses will fill up "CSC/ECE/BCB 400+" first.
No more than 1 FCE from {CSC490, 491, 494, 495, BCB430} will be counted.
</p>
<table class='checkTable'>
<tr>
<td><input type='text' id='inputCSC1' placeholder='CSC/ECE' disabled></td>
<td><input type='text' id='inputCSC2' placeholder='CSC/ECE' disabled></td>
</tr>
<tr>
<td><input type='text' id='inputCSC3' placeholder='CSC/ECE' disabled></td>
<td><input type='text' id='inputCSC4' placeholder='CSC/ECE' disabled></td>
</tr>
<tr>
<td><input type='text' id='inputCSC5' placeholder='CSC/ECE' disabled></td>
<td><input type='text' id='inputCSC6' placeholder='CSC/ECE' disabled></td>
</tr>
<tr>
<td><input type='text' id='inputCSC7' placeholder='CSC/ECE' disabled></td>
<td></td>
</tr>
</table>
</div>
<div id='matElecs' class='postDetails innerTabContents'>
<p>Note: you can count at <em>most</em> 2 MAT/STA FCEs from...</p>
<p>
MAT: 224, 235, 237, 257, 300+ except 329, 390, 391. STA: 249, 261, any 300+. (Input manually. This is currently fragile: it will accept any course starting with "MAT" or "STA".)
</p>
<table class='checkTable'>
<tr>
<td><input type='text' name='MATa' placeholder='MAT/STA'
onchange="updateElecs(); updatePOStTotal()">
</td>
<td><input type='text' name='MATb' placeholder='MAT/STA'
onchange="updateElecs(); updatePOStTotal()">
</td>
</tr>
<tr>
<td><input type='text' name='MATc' placeholder='MAT/STA'
onchange="updateElecs(); updatePOStTotal()">
</td>
<td><input type='text' name='MATd' placeholder='MAT/STA'
onchange="updateElecs(); updatePOStTotal()">
</td>
</tr>
</table>
</div>
<div id='peyReq' class='postDetails innerTabContents'>
<h4>Doing PEY? <input id='peycheck' type='checkbox' onchange='updatePEY()'>
<label for='peycheck'></label>
</h4>
<h4>If not, at least one of...</h4>
<table class='checkTable'>
<tr>
<td><input type='checkbox' id='CSC301check' disabled><label for='CSC301check'>CSC301</label></td>
<td><input type='checkbox' id='CSC318check' disabled><label for='CSC318check'>CSC318</label></td>
<td><input type='checkbox' id='CSC404check' disabled><label for='CSC404check'>CSC404</label></td>
</tr>
<tr>
<td><input type='checkbox' id='CSC411check' disabled><label for='CSC411check'>CSC411</label></td>
<td><input type='checkbox' id='CSC418check' disabled><label for='CSC418check'>CSC418</label></td>
<td><input type='checkbox' id='CSC420check' disabled><label for='CSC420check'>CSC420</label></td>
</tr>
<tr>
<td><input type='checkbox' id='CSC428check' disabled><label for='CSC428check'>CSC428</label></td>
<td><input type='checkbox' id='CSC454check' disabled><label for='CSC454check'>CSC454</label></td>
<td><input type='checkbox' id='CSC485check' disabled><label for='CSC485check'>CSC485</label></td>
</tr>
<tr>
<td><input type='checkbox' id='CSC490check' disabled><label for='CSC490check'>CSC490</label></td>
<td><input type='checkbox' id='CSC491check' disabled><label for='CSC491check'>CSC491</label></td>
<td><input type='checkbox' id='CSC494check' disabled><label for='CSC494check'>CSC494</label></td>
</tr>
<tr>
<td><input type='checkbox' id='CSC495check' disabled><label for='CSC495check'>CSC495</label></td>
<td></td>
<td></td>
</tr>
</table>
</div>
<div class='postFCETotalDiv'>
<h4>FCE Totals (Specialist)</h4>
<table>
<tr>
<td class='FCECrit'>Required CSC:</td>
<td class='FCETotal'><span id='cscReqTotal'>0.0</span>/5 FCEs</td>
</tr>