المسابقة البرمجية للجامعات

المسابقة البرمجية للكليات الجامعية  ICPC

تعتبر المسابقة الدولية البرمجية للطلاب الجامعيين ICPC مسابقة البرمجة الأولى التي تنظمها الجامعات على المستوى العالمي.

على مدار أكثر من أربعة عقود، نمت ICPC لتصبح برنامجاً تعليمياً عالمياً تنافسياً متغيراً في عالم الألعاب، مما أدى إلى رفع مستوى التطلعات والأداء للمتنافسين في هذه المسابقة، في علوم الكمبيوتر والهندسة.

تتولى إدارة المسابقة البرمجية  ICPC Foundation المستضافة في جامعة بايلور الاميركية تنظيم هذه المسابقة منذ عام 1977 وبرعاية جمعيتي ACM  و  Upsilon Pi Epsilonالأمريكيتين.

مراحل المسابقة البرمجية

يتم إجراء المسابقة سنوياً وفق عدة مستويات من المنافسة:

  • المستوى الأول - المسابقة الوطنية: بدايةً تقيم كل جامعة مسابقتها المحلية الخاصة بها. تتأهل الفرق الفائزة من كل جامعة إلى المسابقة الوطنية، حيث تنحصر المنافسة فيها بين جامعات البلد الواحد.

ويجري في نهاية هذا المستوى ترشيح عدة فرق لتمثيل جامعتها على المستوى الإقليمي.

  • المستوى الثاني - المسابقة الإقليمية: حيث يتم تقسيم العالم إلى عدة أقاليم وتنحصر المنافسة بين فرق جامعات الإقليم الواحد التي تم ترشيحها من قبل دول هذا الإقليم.
    • المستوى الثالث - المسابقة العالمية: وهي المرحلة الأخيرة في المسابقة حيث يتم إجراء المنافسة بين الفرق التي تأهلت من المسابقات الإقليمية.

 

أهمية المشاركة في المسابقة

تشكل المسابقة فرصة لاختبار قدرات المتسابق على:

  • العمل تحت الضغط (وقت قصير، مسائل تتدرج بالصعوبة، إمكانيات محدودة).
  • تنمية القدرة على تنسيق الجهد مع باقي أعضاء الفريق.
  • تنمية التفكير المرن والقدرة العالية على التحليل المنطقي.
  • كما توفر الميزات التالية:
  • الحصول على شهادات معتمدة عالمياً.
  • توفير لقاءات للطلاب في المرحلة الجامعية بأهم شركات القطاع المعلوماتي وقطاع الاتصالات مما يسمح لهم بالتواصل مع سوق العمل ومعرفة متطلباته واحتياجاته.
  • رفع سوية الخريجين بشكل عام ورفع سوية المعرفة البرمجية والتقنية بشكل تراكمي لدى المتسابقين وضمن الجامعات عاماً بعد آخر.
  • المسابقة البرمجية من أهم المسابقات العالمية في مجال المعلوماتية ومدخلاً للاعتراف العالمي بشهادات الجامعات التي تشارك فيها.

- شروط الاشتراك في المسابقة البرمجية

يحق للطالب الاشتراك في المسابقة البرمجية للكليات الجامعية في حال:

حقق الشروط العامة التالية:

  1. أن يكون طالباً جامعياً في إحدى الجامعات السورية.
  2. أن لا يكون قد شارك في النهائي العالمي أكثر من مرتين.
  3. أن لا يكون قد شارك في النهائي الإقليمي أكثر من خمس مرات.

 

حقق أحد الشرطين التاليين، بالإضافة إلى الشروط العامة السابقة:

  1. أن يكون الطالب قد بدأ دراسته الجامعية قبل أربعة أعوام ميلادية على الأكثر من العام الجاري للمسابقة التي يشارك بها.
  2. أن يكون عمر الطالب أقل من 24 عاماً.

 

قواعد المسابقة البرمجية

  • يتكون الفريق من ثلاثة طلاب.
  • تعطى الفرق المشاركة خلال فترة انعقاد المسابقة 5 ساعات لحل مجموعة من المسائل يتراوح عددها ما بين 8 إلى 12 مسألة. تقوم الفرق بتسليم الحلول على شكل رماز برمجي مكتوب قابل للتنفيذ بإحدى لغات البرمجة التالية:
    • C/C++
    • Java
    • Python
  • يخصص لكل فريق حاسب واحد فقط، ويطلب من الفرق المشاركة حل أكبر عدد ممكن من المسائل، وبالتالي يجب الاستفادة من العمل الجماعي بين أعضاء الفريق والتنسيق فيما بينهم لاسثنمار وقت المسابقة بالشكل الأمثل.
  • عندما يتمكن الفريق من حل المسألة يرسل الحل إلى مخدم يحوي برنامج تحكيم آلي، يتولى البرنامج تقييم الحل المُرسل إليه وذلك تحت مراقبة من قبل لجنة التحكيم وعندما يكون الحل مستوفياً للمطلوب ضمن المدة الزمنية المحددة يتم قبول نتيحة المسألة.
  • يحتل الفريق المرتبة الأولى في حال تمكن من حل أكبر عدد من المسائل بأقصر وقت ممكن وأقل عدد ممكن من المحاولات الخاطئة، ووفقا لهذه الاستراتيجية يتم ترتيب الفرق المتنافسة. حيث تتم زيادة 21 دقيقة لكل محاولة حل خاطئة تضاف إلى مجموع الأزمنة المستغرقة لتسليم الحلول في المسابقة.
  • يتم تجهيز حواسب الفرق على مستويين هما: المستوى العتادي والمستوى البرمجي
  • المستوى العتادي:

المعالج:  Intel i7-3720QM (3.6Ghz)  

الذاكرة الحية:   16 GB

الشاشة مسطحة:  23in wide, 1920x1080 Native Resolution

  • المستوى البرمجي:

نظام التشغيل: Ubuntu 12.04.1 LTS Linux

سطح المكتب:  GNOME

محرر النصوص: vi/vim, gvim, emacs, gedit

بيئة التطوير المتكاملة (IDE): Eclipse, Netbeans

المترجمات:   JDK 1.7, C/C++ GCC 4.6.3

مشاركة الجامعة الافتراضية السورية في المسابقة البرمجية

  • 2015 - بدأت مشاركة فرق الجامعة الافتراضية السورية في المسابقة البرمجية بفريق واحد.
  • 2016 - تأهل فريق واحد من الجامعة الافتراضية السورية للمشاركة في المسابقة الإقليمية.
  • 2017 - تأهل فريقان من الجامعة الافتراضية السورية للمشاركة في المسابقة الإقليمية.
  • 2018 - تأهل ثلاث فرق من الجامعة الافتراضية السورية للمشاركة في المسابقة الإقليمية.

 - أحرزت الجامعة الافتراضية السورية كأس المسابقة على مستوى الوطن العربي وغرب أفريقيا.

ويعدّ هذا الفوز الأول لـ"سورية" منذ بداية مشاركتها في هذه المسابقة.

- تأهل فريق الجامعة الافتراضية السورية للمشاركة في المسابقة العالمية.

 

الاستضافة والدعم والتنظيم:

تستضيف الجامعة الافتراضية السورية منذ عام 2017 المسابقة البرمجية على المستوى الوطني من خلال مساهمتها في دعم المسابقات المحلية على مستوى الجامعات السورية العامة والخاصة واستضافة ودعم وتنظيم المسابقة الوطنية الجامعية على مستوى سورية وفي دعم وتنظيم مشاركات الفرق السورية الجامعية المتأهلة إلى المستويين الإقليمي والعالمي.

 

منح الجامعة الافتراضية السورية الخاصة بطلاب المسابقة

مساهمةً من الجامعة الافتراضية السورية في بناء سورية علماً وفكراً وثقافةً وعملاً، وتماشياً مع رسالة الجامعة الأكاديمية والمهنية، أعلنت الجامعة الافتراضية السورية عن منح خاصة لطلاب المسابقات البرمجية في برامجها الأكاديمية المختلفة ضمن الإجازات الجامعية والماجستيرات، وذلك ضمن مبادرتها (الافتراضية السورية - إلتزام).

وتتضمن المنح:

  • تقدم الجامعة الافتراضية السورية لأي طالب من طلابها يتأهل إلى النهائيات الإقليمية من المسابقة البرمجية للكليات الجامعية (أو أية مسابقة عالمية علمية مشابهة تشارك  فيها الجامعة ويوافق عليها مجلس الجامعة) منحة دراسية كاملة على كافة الأقساط الدراسية اعتباراً من الفصل الذي يلي تأهله وحتى تخرجه من الجامعة.
  • تقدم الجامعة الافتراضية السورية لأي طالب سوري يتأهل إلى النهائيات العالمية من المسابقة البرمجية للكليات الجامعية ـأو مسابقة الروبوت العالمي أو إحدى مسابقات الأولمبياد العلمي السوري (أو أي مسابقة علمية أخرى مشابهة يقرها مجلس الجامعة)، منحة دراسية كاملة في أي برنامج من برامجها الدراسية.

الخطة التدريبية

يتم تسجيل المتدرب على امتحان تحديد مستوى، وبناءً على نتيجة الامتحان يتم فرز الطلاب إلى المستويين التاليين:

 

المستوى الأول: المرحلة الأولى

Level 1 - Phase I

# Session Content Sessions Count
1 Introduction 1
2 C++ Programming Language 6
3
4
5
6
7
8 Complexity 2
9
Standard Template Library
10 Vector, String, List 2
11
12 Stack, Queue, Deque, Priority queue 2
13
14 Set, Multiset, Map 3
15
16
17 Sorting 2
18
19 Greedy 2
20
21 Binary search (basics) 2
22
23 Recursion 2
24
25 Complete Search 2
26
Math and Number Theory
27 Primes, Divisors, Factorization, GCD, LCM 2
28 Sieve of Eratosthenes
Game theory
29 Game states - Nim game 2
30

 

المستوى الأول: المرحلة الثانية

Level 1 – Phase II

# Session Content Sessions Count
Dynamic programming
1 Fibonacci, Paths in a grid 1
2 Coin change 1
3 Knapsack 2
4
5 Edit Distance - Longest Common Subsequence 1
6 Longest Increasing Subsequence 1
Graphs
7 Graph Representation 1
8 Depth First Search 1
9 Breadth First Search, Multiple Source BFS 1
10 Finding Connected Components, Classification of edges 1
11 Checking a graph for acyclicity, Topological Sorting 1
12 Other applications of DFS and BFS 2
13
14 Bipartite Graph Check, Eulerian Path 1
15 Tree algorithms 2
16
Data Structure
17 Ordered set, Static array queries 1
18 Disjoint Set Union 2
19
Amortized analysis
20 Two pointers, Sliding window 2
21
Search
22 Binary search (Continuous) 1
23 Binary search (Discrete) 2
24
Math and Number Theory
25 Modular arithmetic, Binary exponentiation 1
26 Extended Euclidean Algorithm, Linear Diophantine Equations 1
27 Euler's totient, Modular inverse 2
28
29 Meet in the middle 2
30

المستوى الثاني: المرحلة الأولى

Level 2 - Phase I

# Session Content Sessions Count
Graphs
1 Dijkstra, 0-1 Breadth First Search 2
2
3 Bellman-Ford 1
4 Floyd-Warshall, Finding a Negative Cycle 1
5 Minimum Spanning Tree 2
6
String processing
7 String Hashing 2
8
9 Trie (Keyword Tree) 2
10
Data Structures
11 Fenwick (Binary Indexed) Tree 2
12
13 Sparse table 1
14 Segment Tree 3
15
16
17 Trie (Keyword Tree) 1
Search
18 Binary Search (Advanced) 2
19
20 Ternary Search 1
Math, Number Theory
21 Matrix Exponentiation 2
22
23 Combinatorics 2
24
25 Probabilities 1
26 Expected Value 2
27
Geometry
28 Complex numbers, Point representation 1
29 Elementary operations, Transformations 1
30 Products and angles 1
31 Lines, Segments 2
32
33 Polygons 1
34 Circles 2
35

 

المستوى الثاني: المرحلة الثانية

Level 2 - Phase II

# Session Content Sessions Count
Dynamic programming
1 Chain Matrix Multiplication 2
2
3 DP + Bitmask 2
4
5 Digit DP 2
6
Graphs
7 Dijkstra 2D 1
8 Lowest Common Ancestor 2
9
10 Finding Bridges 1
11 Finding articulation points 1
12 Strongly Connected Components 2
13
14 Maximum flow 2
15
16 Maximum Bipartite Matching 2
17
Data Structures
18 Segment Tree (advanced) 2
19
20 Lazy Propagation 2
21
22 Sqrt Decomposition 2
23
24 MO Algorithm 2
25
Game theory
26 Sprague–Grundy theorem 1
Geometry
27 Sweep line 2
28
29 Convex hull  
String processing
30 Knuth-Morris-Pratt’s (KMP) Algorithm 2
31
32 Suffix array 2
33
34 The Inclusion-Exclusion Principle 2
35