forked from lnishan/awesome-competitive-programming
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
1476 lines (1371 loc) · 61.1 KB
/
index.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 lang="en-us">
<head>
<meta charset="UTF-8">
<title>Awesome-competitive-programming by lnishan</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="stylesheets/normalize.css" media="screen">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen">
<link rel="stylesheet" type="text/css" href="stylesheets/github-light.css" media="screen">
</head>
<body>
<section class="page-header">
<h1 class="project-name">Awesome-competitive-programming</h1>
<h2 class="project-tagline">:gem: A curated list of awesome Competitive Programming, Algorithm and Data Structure resources</h2>
<a href="https://github.com/lnishan/awesome-competitive-programming" class="btn">View on GitHub</a>
<a href="https://github.com/lnishan/awesome-competitive-programming/zipball/master" class="btn">Download .zip</a>
<a href="https://github.com/lnishan/awesome-competitive-programming/tarball/master" class="btn">Download .tar.gz</a>
</section>
<section class="main-content">
<h1>
<a id="awesome-competitive-programming-" class="anchor" href="#awesome-competitive-programming-" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Awesome Competitive Programming <a href="https://github.com/sindresorhus/awesome"><img src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg" alt="Awesome"></a>
</h1>
<p>A curated list of awesome <code>Competitive Programming</code>, <code>Algorithm</code> and <code>Data Structure</code> resources.</p>
<p>This list is aimed to provide a complete reference and guidance for everyone.<br>
No matter who you are, I hope you'll find this list helpful.</p>
<p><a href="https://www.quora.com/What-is-competitive-programming-2">What is competitive programming? - Quora</a></p>
<h2>
<a id="contributing" class="anchor" href="#contributing" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Contributing</h2>
<p>Please kindly follow <a href="CONTRIBUTING.md">CONTRIBUTING.md</a> to get started.</p>
<p>You can also contribute by sharing!<br>
Share the list with your classmates, your friends and everyone :)</p>
<blockquote>
<p>By connecting more people to information,<br>
You, are doing not me, but everyone a HUGE favor! </p>
<p>I really hope that more people can benefit from this list :)</p>
</blockquote>
<h2>
<a id="table-of-contents" class="anchor" href="#table-of-contents" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Table of Contents</h2>
<ul>
<li>
<p><a href="#awesome-reference-materials">Awesome Reference Materials</a></p>
<ul>
<li>
<a href="#algorithms-and-data-structures">Algorithms and Data Structures</a>
<ul>
<li><a href="#syllabuses">Syllabuses</a></li>
<li><a href="#list-of-lists">List of Lists</a></li>
</ul>
</li>
<li><a href="#implementations--notebooks">Implementations / Notebooks</a></li>
<li>
<a href="#language-specifics">Language Specifics</a>
<ul>
<li><a href="#cc">C/C++</a></li>
<li><a href="#java">Java</a></li>
<li><a href="#miscellaneous">Miscellaneous</a></li>
</ul>
</li>
<li>
<a href="#tools">Tools</a>
<ul>
<li><a href="#ides">IDEs</a></li>
<li><a href="#personal-use">Personal use</a></li>
<li><a href="#contest-preparation">Contest Preparation</a></li>
</ul>
</li>
</ul>
</li>
<li>
<p><a href="#awesome-learning-materials">Awesome Learning Materials</a></p>
<ul>
<li>
<a href="#open-courses">Open Courses</a>
<ul>
<li><a href="#open-courses-for-algorithms-and-data-structures">Open Courses for Algorithms and Data Structures</a></li>
</ul>
</li>
<li>
<a href="#books">Books</a>
<ul>
<li><a href="#books-for-algorithms">Books for Algorithms</a></li>
<li><a href="#books-for-mathematics">Books for Mathematics</a></li>
</ul>
</li>
<li>
<a href="#sites-to-practice">Sites to Practice</a>
<ul>
<li><a href="#problem-classifiers">Problem Classifiers</a></li>
<li><a href="#contest-calendars">Contest Calendars</a></li>
</ul>
</li>
<li><a href="#sites-to-ask-questions">Sites to ask Questions</a></li>
</ul>
</li>
<li>
<p><a href="#community">Community</a></p>
<ul>
<li><a href="#blogs">Blogs</a></li>
<li><a href="#youtube-and-livestreams">Youtube and Livestreams</a></li>
<li><a href="#quora">Quora</a></li>
</ul>
</li>
<li>
<p><a href="#other-awesome-resources">Other Awesome Resources</a></p>
<ul>
<li><a href="#articles">Articles</a></li>
<li><a href="#faqs">FAQs</a></li>
<li><a href="#awesome-lists">Awesome Lists</a></li>
<li><a href="#interview-questions">Interview Questions</a></li>
</ul>
</li>
<li><p><a href="#license">License</a></p></li>
</ul>
<h2>
<a id="awesome-reference-materials" class="anchor" href="#awesome-reference-materials" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Awesome Reference Materials</h2>
<h3>
<a id="algorithms-and-data-structures" class="anchor" href="#algorithms-and-data-structures" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Algorithms and Data Structures</h3>
<blockquote>
<p>Awesome websites to lookup and learn algorithms and data structures.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://www.topcoder.com/community/data-science/data-science-tutorials/">topcoder Data Science Tutorials</a></td>
<td>A list of tutorials written by respected topcoder members. Many top programmers started learning data sciences from here.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="http://e-maxx.ru/algo/">E-Maxx (Russian)</a>, <a href="http://e-maxx-eng.appspot.com/">(English)</a>
</td>
<td>A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Only a small fraction of the original site is translated into English, but Google Translate would work okay.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://www.geeksforgeeks.org/fundamentals-of-algorithms/">Algorithms - GeeksforGeeks</a></td>
<td>A website with a large archive of nicely written articles on different topics. It is a great complimentary resource for algorithm courses.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://wcipeg.com/wiki/Special:AllPages">PEGWiki</a></td>
<td>A website with amazing in-depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.hackerearth.com/practice/notes/trending/">Notes - HackerEarth</a></td>
<td>A great crowdsourcing platform for tutorials. Also visit <a href="https://www.hackerearth.com/practice/codemonk/">Code Monk</a>.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://www.usaco.org/">USA Computing Olympiad (USACO)</a></td>
<td>Contains several training pages on its website which are designed to develop one's skills in programming solutions to difficult and varied algorithmic problems at one's own pace.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="http://www.mii.lt/olympiads_in_informatics/index.html">OLYMPIADS IN INFORMATICS</a></td>
<td>An international journal focused on the research and practice of professionals who are working in the field of teaching and learning informatics to talented student.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="http://algolist.manual.ru/">algolist (Russian)</a></td>
<td>A Russian website devoted to algorithms of all sorts. Some topics listed on this website seems pretty interesting.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://www.csie.ntnu.edu.tw/%7Eu91029/">演算法筆記 (Algorithm Notes) (Chinese)</a></td>
<td>One of the most popular tutorial websites among the Taiwanese competitive programming community. The maintainer for this website spends immense efforts on researching algorithms.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://download.csdn.net/album/detail/657/1/1">国家集训队论文 1999-2015 (Papers from Chinese IOI training camps) (Chinese)</a></td>
<td>Papers from the Chinese IOI training camps. It's interesting for the fact that one can tell different regions emphasize different things.</td>
</tr>
</tbody>
</table>
<h4>
<a id="syllabuses" class="anchor" href="#syllabuses" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Syllabuses</h4>
<blockquote>
<p>Find out what topics you need to learn.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://people.ksp.sk/%7Emisof/ioi-syllabus/">IOI Syllabus</a></td>
<td>A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://docs.google.com/document/d/1_dc3Ifg7Gg1LxhiqMMmE9UbTsXpdRiYh4pKILYG2eA4/edit">Programming Camp Syllabus</a></td>
<td>A list of important topics in competitive programming with exercise problems.</td>
</tr>
</tbody>
</table>
<h4>
<a id="list-of-lists" class="anchor" href="#list-of-lists" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>List of Lists</h4>
<blockquote>
<p>Awesome curated lists classified by topics.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="http://codeforces.com/blog/entry/13529">Good Blog Post Resources about Algorithm and Data Structures - Codeforces</a></td>
<td>A collection of fantastic tutorial blog posts written by Codeforces users. Some intriguing ones include Palindromic Trees, Policy Based Data Structures, and a lot more.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://discuss.codechef.com/questions/48877/data-structures-and-algorithms">Data Structures and Algorithms - CodeChef Discuss</a></td>
<td>A very complete list of competitive programming resources. A must-have in your browser bookmark.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://www.geeksforgeeks.org/how-to-prepare-for-acm-icpc/">How to prepare for ACM - ICPC? - GeeksforGeeks</a></td>
<td>A detailed walk-through of the preparations for ACM-ICPC.</td>
</tr>
</tbody>
</table>
<h3>
<a id="implementations--notebooks" class="anchor" href="#implementations--notebooks" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Implementations / Notebooks</h3>
<blockquote>
<p>Algorithm / Data structure implementations.<br>
It is advised that you write yours first before looking at others'.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td>
<a href="http://code-library.herokuapp.com/">CodeLibrary</a>, by Andrey Naumenko (indy256)</td>
<td>CodeLibrary contains a large collection of implementations for algorithms and data structures in Java and C++. You may also visit his <a href="https://github.com/indy256/codelibrary">GitHub Repository</a>.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="https://github.com/spaghetti-source/algorithm">spaghetti-source/algorithm</a>, by Takanori MAEHARA (@tmaehara)</td>
<td>High-quality implementations of many hard algorithms and data structures.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://github.com/jaehyunp/stanfordacm">jaehyunp/stanfordacm</a></td>
<td>Stanford's team notebook is well maintained and the codes within are of high-quality.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://github.com/ngthanhtrung23/ACM_Notebook_new">ngthanhtrung23/ACM_Notebook_new</a>, by team RR Watameda (I_love_Hoang_Yen, flashmt, nguyenhungtam) from National University of Singapore</td>
<td>RR Watameda represented National University of Singapore for the 2016 ACM-ICPC World Finals. The items in this notebook are pretty standard and well-organized.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://github.com/bobogei81123/bcw_codebook">bobogei81123/bcw_codebook</a>, by team bcw0x1bd2 (darkhh, bobogei81123, step5) from National Taiwan University</td>
<td>bcw0x1bd2 represented National Taiwan University for the 2016 ACM-ICPC World Finals. This notebook contains robust implementations for advanced data structures and algorithms.</td>
</tr>
<tr>
<td>★☆☆</td>
<td>
<a href="https://github.com/foreverbell/acm-icpc-cheat-sheet">foreverbell/acm-icpc-cheat-sheet</a>, by foreverbell (foreverbell)</td>
<td>A notebook with some advanced data structures and algorithms including some from the China informatics scene.</td>
</tr>
<tr>
<td>★☆☆</td>
<td>
<a href="http://shygypsy.com/tools/">igor's code archive</a>, by Igor Naverniouk (Abednego)</td>
<td>A good notebook by Igor Naverniouk who is currently a software engineer at Google and part of the Google Code Jam team.</td>
</tr>
</tbody>
</table>
<h3>
<a id="language-specifics" class="anchor" href="#language-specifics" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Language Specifics</h3>
<blockquote>
<p>Languages and other miscellaneous knowledge.</p>
</blockquote>
<h4>
<a id="cc" class="anchor" href="#cc" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>C/C++</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.topcoder.com/community/data-science/data-science-tutorials/power-up-c-with-the-standard-template-library-part-1/">Power up C++ with the Standard Template Library - topcoder: Part 1</a>, <a href="https://www.topcoder.com/community/data-science/data-science-tutorials/power-up-c-with-the-standard-template-library-part-2/">Part 2</a>
</td>
<td>An introductory tutorial on basic C++ STLs.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/5217">Yet again on C++ input/output - Codeforces</a></td>
<td>Learn more about C++ I/O optimizations.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="http://codeforces.com/blog/entry/15643">C++ Tricks - Codeforces</a> ... <a href="https://www.quora.com/Competitive-Programming/What-are-some-cool-C++-tricks-to-use-in-a-programming-contest">What are some cool C++ tricks to use in a programming contest? - Quora</a>
</td>
<td>Plentiful C++ tricks for competitive programming. Note that some should be used with care.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="http://codeforces.com/blog/entry/11080">C++ STL: Policy based data structures - Codeforces: Part 1</a>, <a href="http://codeforces.com/blog/entry/13279">Part 2</a>
</td>
<td>Detailed introduction to the extra data structures implemented in GNU C++. The official documentation can be found <a href="https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/">here</a>.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="http://www.stroustrup.com/C++11FAQ.html">C++11 FAQ (English, Chinese, Russian, Japanese, Korean)</a></td>
<td>A list of FAQs regarding C++11 collected and written by Bjarne Stroustrup, the creator of C++.</td>
</tr>
</tbody>
</table>
<h4>
<a id="java" class="anchor" href="#java" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Java</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/7018">How to read input in Java — tutorial - Codeforces</a></td>
<td>Learn how to read input faster. This is a must-read for those who intend to use Java for competitive programming</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/7108">How to sort arrays in Java and avoid TLE - Codeforces</a></td>
<td>Some tips on how to avoid hitting the worst case of quick sort</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/17235">BigNum arithmetic in Java — Let's outperform BigInteger! - Codeforces</a></td>
<td>A basic but faster custom BigInteger class</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/14328">EZ Collections, EZ Life (new Java library for contests) - Codeforces</a></td>
<td>A Java library for contests written by Alexey Dergunov (dalex). ArrayList, ArrayDeque, Heap, Sort, HashSet, HashMap, TreeSet, TreeMap, TreeList and pair classes are implemented</td>
</tr>
</tbody>
</table>
<h4>
<a id="miscellaneous" class="anchor" href="#miscellaneous" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Miscellaneous</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://graphics.stanford.edu/%7Eseander/bithacks.html">Bit Twiddling Hacks</a></td>
<td>A huge compiled list of bit manipulation tricks.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/">Comparing Floating Point Numbers, 2012 Edition - Random ASCII</a></td>
<td>Everything you need to know about floating point numbers. A must read especially for geometry topics.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://hyperpolyglot.org/cpp">Object-Oriented C Style Languages: C++, Objective-C, Java, C# - a side-by-side reference sheet</a></td>
<td>A detailed side-by-side reference sheet for common syntaxes.</td>
</tr>
</tbody>
</table>
<h3>
<a id="tools" class="anchor" href="#tools" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Tools</h3>
<blockquote>
<p>Awesome tools that will make your life easier.</p>
</blockquote>
<h4>
<a id="ides" class="anchor" href="#ides" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>IDEs</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Platform</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="http://www.vim.org/download.php">Vim</a></td>
<td>CLI / Cross-Platform</td>
<td>Vim is one of the most popular text editors among advanced programmers. It allows text-editing to be done very efficiently with solely keystrokes. Vim is also highly configurable, extensible and integrates with shells (command lines) really well. The only setback about Vim is that it has a high learning curve for beginners.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://www.gnu.org/software/emacs/download.html">Emacs</a></td>
<td>CLI / Cross-Platform</td>
<td>Emacs is another popular text editor (or development environment to be more precise). The debate on "Vim vs. Emacs" is constantly brought up due to their popularity. Basically Emacs is more than just a text editor. It has plugins like file managers, web browsers, mail clients and news clients that allows users to performs these tasks directly inside Emacs. Emacs is "heavier" because of this, but it arguably has a relatively easier learning curve for beginners.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://www.farmanager.com/download.php?l=en">Far Manager</a></td>
<td>Hybrid / Windows</td>
<td>Far Manager is the most widely-used editor in the RU/CIS competitive programming community. It's actually a file manager in its bare bones, but you can install <a href="http://colorer.sourceforge.net/farplugin.html">FarColorer</a> - a syntax highlighter plugin to program on it. Properly configured, Far Manager allows you to navigate between files very efficiently while writing your codes.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://codeblocks.org/downloads">Code::Blocks</a></td>
<td>GUI / Cross-Platform</td>
<td>Code::Blocks is the go-to IDE for C/C++. It's a full-fledged, versatile IDE with numerous great features. Code::Blocks is usually provided along with Vim in programming contests.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://www.jetbrains.com/idea/#chooseYourEdition">IntelliJ IDEA</a></td>
<td>GUI / Cross-Platform</td>
<td>IntelliJ IDEA is certainly one of the best IDEs for Java. It's used by most competitive programmers who use Java as their main language. Be sure to check out <a href="https://plugins.jetbrains.com/plugin/7091?pr=">CHelper</a>, a very handy plugin written for programming contests.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.sublimetext.com/3">Sublime Text</a></td>
<td>GUI / Cross-Platform</td>
<td>Sublime Text is an extraordinary text editor. Packed with powerful and innovative features like Multiple Carets, Minimaps and Command Palletes, it attracts a strong and engaging community. Sublime Text is highly extensible, so be sure to have <a href="https://packagecontrol.io/">Package Control</a> installed and explore perhaps one of the largest catalogue of plugins!</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://eclipse.org/downloads/">Eclipse</a></td>
<td>GUI / Cross-Platform</td>
<td>Eclipse is another good IDE for Java. It's an okay alternative to Intellij IDEA (A tad inferior to IDEA by today's standards). Sometimes contests only provide Eclipse for some reason, so this might be a good incentive to try and use Eclipse.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.jetbrains.com/clion/download/">CLion</a></td>
<td>GUI / Cross-Platform</td>
<td>CLion, produced by JetBrains - the same company who made Intellij IDEA, is a powerful IDE for C++. Free educational licenses are available OR you can try out their <a href="https://confluence.jetbrains.com/display/CLION/Early+Access+Program">EAP (Early Access Program)</a> which is still free as of Aug, 2016. You may want to turn off its code inspection feature as it will cause quite a bit of lag.</td>
</tr>
<tr>
<td>★☆☆</td>
<td>Other IDEs</td>
<td>Mixed</td>
<td>
<a href="https://www.visualstudio.com/vs/community/">Visual Studio</a> is the IDE to use in case you want to code in C#, but beware that it will be a 7GB installation. ... Both <a href="https://atom.io/">Atom</a> and <a href="https://code.visualstudio.com/">Visual Studio Code</a> are built with Electron (written in JavaScript) and therefore somewhat resource-hogging. ... <a href="http://codelite.org/">CodeLite</a> is a newly rising IDE. Beware that the load-up and project-creation times can be extraordinary.</td>
</tr>
</tbody>
</table>
<h4>
<a id="personal-use" class="anchor" href="#personal-use" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Personal use</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://visualgo.net/">VisuAlgo</a></td>
<td>A website featuring a large collection of visualization tools for algorithms and data structures.</td>
</tr>
<tr>
<td>★★★</td>
<td>General Practice Helpers: ... <a href="https://plugins.jetbrains.com/plugin/7091?pr=idea">CHelper</a> (IntelliJ IDEA) (<a href="http://codeforces.com/blog/entry/3273">manual</a>) ... <a href="https://github.com/slycelote/caide">caide</a> (Visual Studio, CodeLite) ... <a href="http://codeforces.com/blog/entry/13369">JHelper</a> (AppCode, CLion)</td>
<td>Great tools that parse contests, inline library codes and provide testing frameworks. They save you from spending your precious time on switching windows and copy-pasting back and forth.</td>
</tr>
<tr>
<td>★★☆</td>
<td>Codeforces Parsers: ... <a href="https://github.com/johnathan79717/codeforces-parser">Codeforces Parser</a> ... <a href="https://github.com/sukeesh/GoCF">GoCF</a> ... <a href="https://github.com/gnull/cfparser">cfparser</a> (emacs)</td>
<td>These tools parse Codeforces contest problems and help run sample tests.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://oeis.org/">The On-Line Encyclopedia of Integer Sequences (OEIS)</a></td>
<td>A stunning encyclopedia with a database of countless integer sequences. It also features a powerful search engine. Sometimes a seemingly difficult combinatorics problem could be equivalent to a simple or studied integer sequence.</td>
</tr>
<tr>
<td>★★☆</td>
<td>Syntax Highlighters: ... <a href="https://tohtml.com/">tohtml.com</a> ... <a href="http://markup.su/highlighter/">markup.su</a> ... <a href="http://hilite.me/">hilite.me</a>
</td>
<td>Very handy for creating slides or team notebooks with pretty, formatted code snippets. Just copy the highlighted code snippets and paste them in your favorite WYSIWYG (What-You-See-Is-What-You-Get) editor!</td>
</tr>
<tr>
<td>★★☆</td>
<td>Code Sharing: ... <a href="http://ideone.com/">Ideone.com</a> ... <a href="http://pastebin.com/">Pastebin.com</a> ... <a href="http://paste.ubuntu.com/">Ubuntu Pastebin</a>
</td>
<td>These tools generate semi-permanent pages for code sharing. Very useful especially when you're trying to get someone else to look into your code.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://codeforces.com/blog/entry/19083">Ineffable</a></td>
<td>A simple command-line grader for local grading.</td>
</tr>
</tbody>
</table>
<h4>
<a id="contest-preparation" class="anchor" href="#contest-preparation" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Contest Preparation</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://polygon.codeforces.com/">polygon</a></td>
<td>polygon provides a platform and a rich set of tools for professional contest preparation. ... An example: <a href="http://codeforces.com/blog/entry/18426">Validators with testlib.h - Codeforces</a>
</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://csacademy.com/app/graph_editor/">Graph Editor</a></td>
<td>A fantasic tool to create and visualize graphs.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://tcframe.org/">tcframe</a></td>
<td>A C++ framework for generating test cases of competitive programming problems.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://vjudge.net">Virtual Judge (vjudge)</a></td>
<td>Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.bnuoj.com/v3/">BNU Online Judge</a></td>
<td>BNU Online Judge also allows users to create virtual contests.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://open.kattis.com/">Kattis</a></td>
<td>Kattis assists in contest preparation (E-mail them for assistance).</td>
</tr>
</tbody>
</table>
<h2>
<a id="awesome-learning-materials" class="anchor" href="#awesome-learning-materials" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Awesome Learning Materials</h2>
<h3>
<a id="open-courses" class="anchor" href="#open-courses" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Open Courses</h3>
<blockquote>
<p>Consider beginning your competitive programming journey with these awesome courses!</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.hackerearth.com/practice/codemonk/">Code Monk</a>, by HackerEarth</td>
<td>A fantastic step-by-step tutorial on the essential topics in competitive programming.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://web.stanford.edu/class/cs97si/">Stanford CS 97SI: Introduction to Competitive Programming Contests</a></td>
<td>Offers comprehensive lecture slides and a short list of exercise problems.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.edx.org/course/how-win-coding-competitions-secrets-itmox-i2cpx">How to Win Coding Competitions: Secrets of Champions</a></td>
<td>A course by ITMO University on competitive coding on edX.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.youtube.com/playlist?list=PLi0ZM-RCX5nsTc2Z6woHr5qoF6n3b-thO">Codechef's Indian Programming Camp</a></td>
<td>Video Lectures from <a href="https://blog.codechef.com/2016/08/03/lectures-from-indian-coding-camp/">Codechef's Indian Programming Camp 2016</a>. Lectures given by top competitive programmers like Sergey Kulik, Kevin Charles Atienza and Anudeep Nekkanti. Primarily focused on exploring these concepts by applying them to actual competitive contest problems.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://algo.is/competitive-programming-course/">Reykjavik T-414-ÁFLV: A Competitive Programming Course</a></td>
<td>An awesome course taught by <a href="https://algo.is">Bjarki Ágúst Guðmundsson (SuprDewd)</a>. These lectures feature neat slides and a nice list of problems to practice.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://sites.google.com/site/mzshieh/courses/problem-solving-and-programming-techniques-spring-2014">NCTU DCP4631: Problem Solving and Programming Techniques</a></td>
<td>A course on basic topics featuring good lecture slides.</td>
</tr>
<tr>
<td>★☆☆</td>
<td>
<a href="https://github.com/mostafa-saad/ArabicCompetitiveProgramming">Materials (English)</a> from <a href="https://www.youtube.com/user/nobody123497">Arabic Competitive Programming Channel</a>
</td>
<td>Some materials (slides & source codes) covering a broad range of algorithmic topics</td>
</tr>
</tbody>
</table>
<h4>
<a id="open-courses-for-algorithms-and-data-structures" class="anchor" href="#open-courses-for-algorithms-and-data-structures" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Open Courses for Algorithms and Data Structures</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://github.com/prakhar1989/awesome-courses#algorithms">prakhar1989/awesome-courses#algorithms</a></td>
<td>A fantastic list of open courses offered by notable institutions (MIT, Stanford, UC Berkeley ... etc.).</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/">MIT SMA 5503: Introduction to Algorithms</a></td>
<td>Lectured by Prof. Charles Leiserson (one of the coauthors of Introduction to Algorithms) and Prof. Erik Demaine (a brilliant professor who has made remarkable breakthroughs in data science), the course offers great materials, accompanied by intuitive and comprehensive analyses.</td>
</tr>
</tbody>
</table>
<h3>
<a id="books" class="anchor" href="#books" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Books</h3>
<blockquote>
<p>A list of recommended books for competitive programming.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★☆</td>
<td>
<a href="https://cpbook.net/">Competitive Programming</a>, by Steven and Felix Halim</td>
<td>This book contains a collection of relevant data structures, algorithms, and programming tips. It's a well-received book. ... The first edition is free for <a href="http://www.comp.nus.edu.sg/%7Estevenha/myteaching/competitive_programming/cp1.pdf">download (pdf)</a>.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Programming-Challenges-Contest-Training-Computer/dp/0387001638">Programming Challenges: The Programming Contest Training Manual</a>, by Steven Skiena and Miguel Revilla</td>
<td>This book includes more than 100 programming challenges, as well as the theory and key concepts necessary for approaching them. Problems are organized by topic, and supplemented by complete tutorial material.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="http://www.lookingforachallengethebook.com/">Looking for a Challenge</a>, written by a group of authors associated with the Polish Olympiads</td>
<td>Most of the problems described in the book are really hard but they are explained in such a way that even beginners can understand. It appears to be out of stock (as of Aug, 2016), but you can reserve one on their <a href="http://www.lookingforachallengethebook.com">official website</a>.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Computational-Geometry-Applications-Mark-Berg/dp/3540779736">Computational Geometry: Algorithms and Applications</a>, by Mark de Berg, Otfried Cheong, Marc van Kreveld, Mark Overmars</td>
<td>This is a well-written book which covers a broad range of computational geometry problems.</td>
</tr>
<tr>
<td>★☆☆</td>
<td>
<a href="http://comscigate.com/Books/contests/icpc.pdf">The Hitchhiker’s Guide to the Programming Contests</a>, by Nite Nimajneb</td>
<td>This book is free for <a href="http://comscigate.com/Books/contests/icpc.pdf">download (pdf)</a>. This book covers various topics relevant to competitive programming.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="http://goo.gl/M4yfbr">プログラミングコンテストチャレンジブック (Japanese)</a>, by 秋葉拓哉, 岩田陽一, 北川宜稔</td>
<td>An absolutely phenomenal book. The contents, organized in a very coherent manner, are nothing short of amazing. ... 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 (Chinese Traditional)</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="http://www.tup.com.cn/booksCenter/book_05568701.html">算法竞赛入门经典 (Chinese)</a>, by 刘汝佳</td>
<td>The Art of Algorithms and Programming Contests (English), 打下好基礎:程式設計與演算法競賽入門經典 (Chinese Traditional)</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.cn/%E7%AE%97%E6%B3%95%E7%AB%9E%E8%B5%9B%E5%85%A5%E9%97%A8%E7%BB%8F%E5%85%B8-%E8%AE%AD%E7%BB%83%E6%8C%87%E5%8D%97-%E5%88%98%E6%B1%9D%E4%BD%B3/dp/B009SJJGOU">算法竞赛入门经典——训练指南 (Chinese)</a>, by 刘汝佳, 陈锋</td>
<td>提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南 (Chinese Traditional)</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="http://goo.gl/O1tr8v">算法艺术与信息学竞赛 (Chinese)</a>, by 刘汝佳, 黄亮</td>
<td>An old-time classic. It's old but the contents in this book are still considered to be very difficult by today's standards.</td>
</tr>
</tbody>
</table>
<h4>
<a id="books-for-algorithms" class="anchor" href="#books-for-algorithms" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Books for Algorithms</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td>
<a href="https://mitpress.mit.edu/books/introduction-algorithms">Introduction to Algorithms</a>, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein</td>
<td>Also known as CLRS (taken from name initials), this book is often referred to as the "bible" for algorithms and data structures. It's one of the most popular textbooks for university algorithm courses. This book covered various algorithms and data structures in great detail. The writing is more rigorous and can be difficult to some.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="http://amzn.to/VjhioK">Algorithm Design</a>, by Jon Kleinberg and Éva Tardos</td>
<td>This book revolves around techniques for designing algorithms. It's well-organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots. ... The lecture slides that accompany the textbook are available on its <a href="http://www.cs.princeton.edu/%7Ewayne/kleinberg-tardos/">official website</a>.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693">The Algorithm Design Manual</a>, by Steven S. Skiena</td>
<td>The book is written in more readable text. Some find it comprehensive than other books. You can also find some good resources (including the author's own video lectures) on its <a href="http://www.algorist.com">official website</a>.</td>
</tr>
<tr>
<td>★★★</td>
<td>
<a href="https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X">Algorithms</a>, by Robert Sedgewick and Kevin Wayne</td>
<td>This book is neatly categorized, coupled with elaborate explanations and fantastic illustrations. It is used in some IOI training camps as a textbook.</td>
</tr>
</tbody>
</table>
<h4>
<a id="books-for-mathematics" class="anchor" href="#books-for-mathematics" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Books for Mathematics</h4>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0072899050">Discrete Mathematics and Its Applications</a>, by Kenneth H. Rosen</td>
<td>Discrete Mathematics is closely relevant to competitive programming. This book provides comprehensive materials on a wide range of topics including: Logics and Proofs, Sets, Functions, Sequences, Matrices, Number Theory, Recursion, Counting, Probablity, Graphs, Trees and Boolean Alegra to name but a few.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025">Concrete Mathematics: A Foundation for Computer Science</a>, by Ronald L. Graham, Donald E. Knuth, Oren Patashnik</td>
<td>The book offers a deeper insight into Discrete Mathematics with more emphases on number-related topics.</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/Linear-Algebra-Its-Applications-5th/dp/032198238X/ref=sr_1_1?ie=UTF8&qid=1455475253&sr=8-1&keywords=Linear+Algebra+and+Its+Applications">Linear Algebra and Its Applications</a>, by David C. Lay, Steven R. Lay, Judi J. McDonald</td>
<td>The book does a brilliant job at bridging the gap between a physical system (for scientists and engineers) and an abstract system (for mathematicians).</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="http://www.dartmouth.edu/%7Echance/teaching_aids/books_articles/probability_book/book.html">Introduction to Probability</a>, by Charles M. Grinstead, J. Laurie Snell</td>
<td>This is a well-written introductory probabilities book. ... It's free for <a href="http://www.dartmouth.edu/%7Echance/teaching_aids/books_articles/probability_book/amsbook.mac.pdf">download (pdf)</a> (released under GNU Free Documentation License).</td>
</tr>
<tr>
<td>★★☆</td>
<td>
<a href="https://www.amazon.com/How-Solve-It-Mathematical-Princeton/dp/069111966X">How to Solve It: A New Aspect of Mathematical Method</a>, by G. Polya</td>
<td>An old-time classic. In this book, the author provides a systematic way to solve problems creatively.</td>
</tr>
</tbody>
</table>
<h3>
<a id="sites-to-practice" class="anchor" href="#sites-to-practice" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Sites to Practice</h3>
<blockquote>
<p>Good online judge systems / contest platforms to practice.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="http://codeforces.com/">Codeforces</a></td>
<td>Codeforces is one of, if not, the most popular contest platforms out there. Currently maintained by Saratov State University, it features regular contests and countless awesome original problems. Additionally, every contest provides immediate helpful tutorials (usually) written by the authors themselves. Codeforces also houses a strong and engaging community. All in all, one would indeed learn and improve tremendously here.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://www.topcoder.com/">topcoder</a></td>
<td>topcoder has been around since 2001. Rich in history, It's considered to be one of the most prestigious organizations when it comes to technology competitions. Hundreds of SRMs gave birth to an abundant problemset. Problems here are typically more challenging than others and topcoder therefore appeals to many elite programmers. The annual topcoder Open (TCO) is also a widely-discussed event.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://code.google.com/codejam">Google Code Jam</a></td>
<td>Google Code Jam is certainly one of the most highly-esteemed programming competitions. The competition consists of unique programming challenges which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.codechef.com/">CodeChef</a></td>
<td>CodeChef is a non-profit educational initiative of Directi. It's a global competitive programming platform and has a large community of programmers that helps students and professionals test and improve their coding skills. Its objective is to provide a platform for practice, competition and improvement for both students and professional software developers. Apart from this, it aims to reach out to students while they are young and inculcate a culture of programming in India.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://www.spoj.com/">SPOJ</a></td>
<td>The SPOJ platform is centered around an online judge system. It holds a staggering amount of problems prepared by its community of problem setters or taken from previous programming contests, some of which are great problems for practice (refer to the <a href="#problem-classifiers">Problem classifiers</a> section). SPOJ also allows advanced users to organize contests under their own rules.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://acm.timus.ru/">Timus</a></td>
<td>Timus Online Judge is the largest Russian archive of programming problems with automatic judging system. Problems are mostly collected from contests held at the Ural Federal University, Ural Championships, Ural ACM ICPC Subregional Contests, and Petrozavodsk Training Camps.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="http://acm.hdu.edu.cn/">HDU</a></td>
<td>HDU is an online judge maintained by Hangzhou Dianzi University. It's home to many classic problems from the Chinese IOI scene.</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="https://atcoder.jp">AtCoder</a></td>
<td>AtCoder is a new but phenomenal contest platform created by a team of highly-rated Japanese competitive programmers.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://judge.u-aizu.ac.jp/onlinejudge/index.jsp">Aizu Online Judge</a></td>
<td>Aizu online judge is a contest platform and problem archive hosted by The University of Aizu. It has a lot of great problems from programming competitions in Japan.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://uva.onlinejudge.org/">UVa</a></td>
<td>An old-school problem archive / online judge with rich history. Thousands of problems, including many classic ones, are featured here. However, it is strongly advised that you practice with <a href="http://uhunt.felix-halim.net/id/0">uHunt</a> following its "Competitive Programming Exercise" section.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://www.hackerrank.com">HackerRank</a></td>
<td>HackerRank is a company that focuses on competitive programming challenges for both consumers and businesses. HackerRank's programming challenges can be solved in a variety of programming languages and span multiple computer science domains.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="http://poj.org/">POJ</a></td>
<td>POJ is an online judge with many great problems maintained by Peking University. Most Chinese competitive programmers began their journey here.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://projecteuler.net/">Project Euler</a></td>
<td>Project Euler features a stunning set of good math problems. It also hosts a forum where people can discuss.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="https://www.hackerearth.com/">Hackerearth</a></td>
<td>HackerEarth is a startup technology company based in Bangalore, India that provides recruitment solutions.</td>
</tr>
<tr>
<td>★☆☆</td>
<td><a href="http://coj.uci.cu/index.xhtml">Caribbean Online Judge</a></td>
<td>COJ is hosted by University of Informatics Sciences (UCI, by its acronym in Spanish), located in Cuba. Feature ACM ICPC and Progresive constest styles, mostly from Caribbean and Latin American problem setters, also has problem classifier and contest calendar.</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://csacademy.com">CS Academy</a></td>
<td>New in the competitive programming scene, CS Academy is a growing online judge that hosts competitions once every two weeks. It supports live chat, interactive lessons and an integrated online editor (that actually works).</td>
</tr>
</tbody>
</table>
<h4>
<a id="problem-classifiers" class="anchor" href="#problem-classifiers" aria-hidden="true"><span aria-hidden="true" class="octicon octicon-link"></span></a>Problem Classifiers</h4>
<blockquote>
<p>Sites classifying programming problems.<br>
Choose a category (eg. DP) of interest and practice problems on that topic.</p>
</blockquote>
<table>
<thead>
<tr>
<th>☆</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>★★★</td>
<td><a href="https://a2oj.com/Categories.jsp">A2 Online Judge</a></td>
<td>Mixed</td>
</tr>
<tr>
<td>★★★</td>
<td><a href="http://problemclassifier.appspot.com/">Problem Classifier</a></td>
<td>SPOJ</td>
</tr>
<tr>
<td>★★☆</td>
<td><a href="https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8">UVa Online Judge</a></td>
<td>CP Book</td>