คอมพิวเตอร์โอลิมปิกระหว่างประเทศ

การแข่งขันคอมพิวเตอร์โอลิมปิกระหว่างประเทศ () เป็นการแข่งขันเกี่ยวกับวิทยาการคอมพิวเตอร์ประจำปี เป็นหนึ่งในการแข่งขันโอลิมปิกวิชาการสำหรับนักเรียนมัธยมศึกษา คอมพิวเตอร์โอลิมปิกครั้งแรกเริ่มต้นในปี พ.ศ. 2532 (ค.ศ. 1989)

การแข่งขันประกอบด้วยการเขียนโปรแกรมคอมพิวเตอร์สองวัน เป็นการแก้ปัญหาด้วยขั้นตอนวิธีต่างๆ ผู้เข้าแข่งขันจะแข่งเป็นทีม ทีมละไม่เกิน 4 คนจากแต่ละประเทศ (อาจยกเว้นประเทศเจ้าภาพที่สามารถมีผู้เข้าแข่งขันเกิน 4 คนได้) แต่การแข่งขันจะเป็นการแข่งเดี่ยว มีผู้เข้าแข่งขันจาก 81 ประเทศเมื่อปี พ.ศ. 2547 นักเรียนที่เข้าแข่งขันจะมาจากการแข่งขันการเขียนโปรแกรมคอมพิวเตอร์ภายในประเทศ เพื่อเป็นตัวแทนประเทศนั้นๆ

รูปแบบการแข่งขัน 
การแข่งขันมีทั้งสิ้นสองวัน ในแต่ละวันนักเรียนแต่ละคนจะได้รับโจทย์ 3 ข้อ (บางปีอาจเป็น 4 ข้อ) และมีเวลาสำหรับแก้ปัญหา 5 ชั่วโมง ผู้เข้าแข่งขันจะต้องแก้ไขปัญหาด้วยตนเอง โดยมีคอมพิวเตอร์หนึ่งเครื่อง และไม่มีการช่วยเหลืออื่นใด เช่น การสื่อสารกับผู้แข่งขันคนอื่น การสื่อสารกับบุคคลภายนอก หนังสือ อินเทอร์เน็ต ฯลฯ โดยปกตินักเรียนจะต้องแก้ปัญหาโดยการเขียนโปรแกรมคอมพิวเตอร์ด้วย ภาษาซี, ภาษาซีพลัสพลัส หรือ ภาษาปาสกาล และส่งภายในเวลา 5 ชั่วโมงของการแข่งขัน หลังจากนั้นจะมีการตรวจโปรแกรมที่ส่งมาด้วยชุดข้อมูลทดสอบอันเป็นความลับ ซึ่งมีข้อมูลทดสอบจำนวนหนึ่ง (ปกติจะเป็น 10 หรือ 20 ข้อ) ผู้เข้าแข่งขันจะได้คะแนนสำหรับชุดทดสอบที่โปรแกรมทำงานถูกต้อง ภายในเวลาที่กำหนด และไม่ใช้หน่วยความจำเกินกำหนด โจทย์บางข้ออาจมีการตอบโต้ระหว่างโปรแกรมและไลบรารีหนึ่งซึ่งเป็นความลับ ทำให้ข้อมูลนำเข้ามีความแตกต่างกัน ขึ้นอยู่กับการตอบโต้ของโปรแกรม เช่นโจทย์เขียนโปรแกรมให้เล่นเกมให้ชนะ นอกจากนี้ยังมีปัญหาอีกชนิดหนึ่งซึ่งเปิดเผยชุดข้อมูลทดสอบให้กับนักเรียนระหว่างการแข่งขัน นักเรียนจะต้องแก้ปัญหาสำหรับข้อมูลทดสอบชุดนี้ และส่งคำตอบเท่านั้นโดยไม่ต้องส่งโปรแกรม ซึ่งนักเรียนอาจใช้การเขียนโปรแกรมแก้ปัญหา อาจทำด้วยมือ หรืออาจใช้การผสมผสานของสองอย่างนี้ก็ได้

คะแนนจากการแข่งขันทั้งสองวันจะนำมารวมกันสำหรับแต่ละคน จะมีการมอบเหรียญรางวัลหลังการแข่งขันจบ เหรียญรางวัลที่ได้ขึ้นอยู่กับคะแนนที่แต่ละคนทำได้ ผู้เข้าแข่งขันประมาณ 50% จะได้รับเหรียญรางวัล โดยมีอัตราส่วนของ เหรียญทอง:เหรียญเงิน:เหรียญทองแดง:ไม่ได้เหรียญรางวัล เป็น 1:2:3:6 (นั่นคือผู้เข้าแข่งขันหนึ่งในสิบสอง จะได้เหรียญทอง)

รูปแบบการแข่งขันอาจมีการปรับเปลี่ยนได้ ในการแข่งขัน IOI 2010 มีการเปลี่ยนมาใช้ระบบ RunC ซึ่งจะตรวจโปรแกรมที่ส่งไปทันที (ต่างจากก่อนหน้านี้ซึ่งการตรวจจะดำเนินการหลังจบการแข่งขันแล้ว) ผูเข้าแข่งขันสามารถใช้โทเค็นในการให้ระบบตรวจแสดงผลลัพธ์จากการตรวจเพื่อที่จะนำมาปรับปรุงโปรแกรมให้ถูกต้องยิ่งขึ้น โทเค็นที่ให้ตอนเริ่มต้นจะมีเพียงเล็กน้อยและจะค่อยๆเพิ่มขึ้นเมื่อเวลาผ่านไป เนื่องจากระบบตรวจโปรแกรมทันทีที่ส่ง จึงได้มีการแสดงตารางคะแนนออนไลน์ เพื่อให้ผู้ชมต่างๆจากทั่วโลกสามารถชมผลการแข่งขันออนไลน์ได้ นอกจากนี้ระบบ RunC ยังถูกพัฒนาให้ใช้งานร่วมกับโปรแกรมแก้ไขข้อความ gedit ได้อีกด้วย

ระบบ RunC ยังปรับเปลี่ยนรูปแบบการแข่งขันในอีกหลายเรื่อง ผู้เข้าแข่งขันจะต้องเขียนฟังก์ชันขึ้นมาเพื่อแก้ไขปัญหาแทนที่จะเขียนโปรแกรมขึ้นมาซึ่งทำให้บางปัญหายากขึ้น สำหรับวิธีการให้คะแนน ข้อมูลทดสอบจะถูกรวมเป็นกลุ่มๆเรียกว่างานย่อย ผู้เข้าแข่งขันจะได้คะแนนในงานย่อยใดๆก็ต่อเมื่อโปรแกรมทำงานถูกต้องสำหรับทุกๆข้อมูลทดสอบในงานย่อยนั้น แต่ละงานย่อยอาจมีข้อกำหนดที่แตกต่างกันเพื่อให้มีความยากง่ายแตกต่างกัน

ในการแข่งขัน IOI 2012 มีการใช้ระบบ CMS  แทนที่ระบบ RunC

รายชื่อประเทศเจ้าภาพการแข่งขันคอมพิวเตอร์โอลิมปิก

อ้างอิง

แหล่งข้อมูลอื่น 
 IOI International Committee Website
 เว็บไซต์คอมพิวเตอร์โอลิมปิกประเทศไทย 
 IOI Secretariat Website
 รูปถ่ายจากการแข่งขันคอมพิวเตอร์โอลิมปิก

โอลิมปิกวิชาการ
การแข่งขันเขียนโปรแกรม