کتاب Programming Challenges: The Programming Contest Training Manual از انتشارات معتبر Springer کتاب مفیدی برای آمادگی شرکت در مسابقات برنامهنویسی است که نویسندگان آن به صورت گام به گام، خلاصه و مفید، به مفاهیم و نکات مهم برنامهنویسی، ساختمان دادهها، محاسبات ریاضی و طراحی الگوریتمها اشاره داشته و با طرح مسائل متفاوت از هر موضوع، خواننده را به چالش حل مسئله کشیدهاند.
در این کتاب برای هر موضوع مورد بحث تعدادی سوال از وبسایت UVA انتخاب و مطرح شده است. به این ترتیب خواننده علاوه بر آشنایی با مفاهیم مختلف، با نحوه طراحی سوال از آن موضوع نیز مواجه میشود. نویسندگان کتاب در مقدمه به این نکته اشاره داشتهاند که در انتخاب سوالها علاوه بر مرتبط بودن موضوع، جنبه سرگرمی و جذابیت نیز تا حد ممکن رعایت شده است: «گاهی موضوعات جذاب علم کامپیوتر و ریاضیات در قالب داستانهای سرگرم کننده بیان شده است. این مسئله مطالعه موارد جذاب دیگری را پیش میآورد.»
کتاب Programming Challenges از چهارده فصل به شرح زیر تشکیل یافته است:
1. Getting Started
• Getting Started With the Judge
• Choosing Your Weapon
• Programming Hints
• Elementary Data Types
• About the Problems
• Problems, Hints and Notes
2. Data Structures
• Elementary Data Structures
• Object Libraries
• Program Design Example: Going to War
• Hitting the Deck
• String Input/Output
• Winning the War
• Testing and Debugging
• Problems, Hints and Notes
3. Strings
• Character Codes
• Representing Strings
• Program Design Example: Corporate Renamings
• Searching for Patterns
• Manipulating Strings
• Completing the Merger
• String Library Functions
• Problems, Hints and Notes
4. Sorting
• Sorting Applications
• Sorting Algorithms
• Program Design Example: Rating the Field
• Sorting Library Functions
• Rating the Field
• Problems, Hints and Notes
5. Arithmetic and Algebra
• Machine Arithmetic
• High-Precision Integers
• High-Precision Arithmetic
• Numerical Bases and Conversion
• Real Numbers
• Algebra
• Logarithms
• Real Mathematical Libraries
• Problems, Hints and Notes
6. Combinatorics
• Basic Counting Techniques
• Recurrence Relations
• Binomial Coefficients
• Other Counting Sequences
• Recursion and Induction
• Problems, Hints and Notes
7. Number Theory
• Prime Numbers
• Divisibility
• Modular Arithmetic
• Congruences
• Number Theoretic Libraries
• Problems, Hints and Notes
8. Backtracking
• Backtracking
• Constructing All Subsets
• Constructing All Permutations
• Program Design Example: The Eight-Queens Problem
• Pruning Search
• Problems, Hints and Notes
9. Graph Traversal
• Flavors of Graphs
• Data Structures for Graphs
• Graph Traversal: Breadth-First
• Graph Traversal: Depth-First
• Topological Sorting
• Problems and Hints
10. Graph Algorithms
• Graph Theory
• Minimum Spanning Trees
• Shortest Paths
• Network Flows and Bipartite Matching
• Problems and Hints
11. Dynamic Programming
• Don’t Be Greedy
• Edit Distance
• Reconstructing the Path
• Varieties of Edit Distance
• Program Design Example: Elevator Optimization
• Problems, Hints and Notes
12. Grids
• Rectilinear Grids
• Triangular and Hexagonal Grids
• Program Design Example: Plate Weight
• Circle Packings
• Longitude and Latitude
• Problems and Hints
13. Geometry
• Lines
• Triangles and Trigonometry
• Circles
• Program Design Example: Faster Than a Speeding Bullet
• Trigonometric Function Libraries
• Problems and Hints
14. Computational Geometry
• Line Segments and Intersection
• Polygons and Angle Computations
• Convex Hulls
• Triangulation: Algorithms and Related Problems
• Algorithms on Grids
• Geometry Libraries
• Problems and Hints
Appendix
• The ACM International Collegiate Programming Contest
• International Olympiad in Informatics
• Topcoder.com
• Go to Graduate School!
• Problem Credits
این کتاب برای شروع تمرین تیمهای مسابقات برنامهنویسی توصیه میشود و از این پیوند قابل دریافت است.
مجموعه ویدئوها و اسلایدهای کلاس درس 2009 نویسنده که بر اساس فصلهای همین کتاب پیش رفته است، از این پیوند و فایلهای صوتی آن از این پیوند در دسترسی عموم قرار گرفته است.
همچنین امکان مشاهده و دریافت ویدئوهای آموزشی از طریق کانال الگوریتمستان در آپارات وجود دارد.