ผลต่างระหว่างรุ่นของ "การจัดการงาน IOI Thailand League 2010"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 72: แถว 72:
 
==== 4. ทดสอบ test data ====
 
==== 4. ทดสอบ test data ====
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 +
 +
ในการพัฒนาเฉลยและ test data ย่อมเป็นไปได้ที่จะมีข้อผิดพลาดหรือบั๊กในโปรแกรมที่คาดไม่ถึง ดังนั้น ถ้าเป็นไปได้ จึงอยากให้มีอีกคนที่ไม่ใช่ผู้พัฒนาเฉลยและ test data คนเดิม มาทดสอบ test data ให้ โดยประเด็นที่ต้องทดสอบมีดังนี้
 +
 +
1. test data ถูกต้องตาม format ที่ระบุไว้ในโจทย์หรือไม่
 +
2. เฉลยที่เขียนด้วยอัลกอริธึมที่ถูกต้อง โดยไม่ต้อง optimize มากจนเกินไป สามารถทำงานภายในเวลาและหน่วยความจำที่กำหนด หรือไม่ (ถ้าไม่ อาจต้องคุยกับผู้ออกโจทย์ และ/หรือ ผู้ทำ test data คนแรก ว่าใช้อัลกอริธึมเดียวกันหรือไม่)
 +
3. ไฟล์ output ของ test data ถูกต้องหรือไม่ และ มีหลายคำตอบได้หรือไม่
 +
4. ถ้าขยัน อาจเขียนโปรแกรมที่ใช้อัลกอริธีมที่รันนานกว่าโปรแกรมเฉลยพอสมควร แต่เขียนง่ายกว่า(โอกาสบั๊กน้อยกว่า) มาทดสอบ test data เพื่อเช็คให้แน่ใจว่าถูกจริงๆ
 +
 +
เมื่อทดสอบเสร็จแล้ว (ทำยังไงดีถึงจะ mark บอกคนอื่นว่าทดสอบแล้ว?)
  
 
==== 5. ดูแลการเตรียมงาน ====
 
==== 5. ดูแลการเตรียมงาน ====

รุ่นแก้ไขเมื่อ 17:27, 7 มีนาคม 2553

เอกสารนี้ใช้เป็นหน้าหลักเกี่ยวกับการจัดการงานการแข่งขัน IOI Thailand League 2010

ลิงก์ย่อ http://theory.cpe.ku.ac.th/wiki/index.php/League2010

แนวคิด

ปัญหา: ปัจจุบันการแข่ง TOI ที่จัดอยู่ค่อนข้างยากสำหรับคนหัดใหม่และอาจจะเข้าถึงยาก

ทางคณะกรรมการจัดงาน IOI 2011 จึงได้ประสานงานกับทางวิชาการ.คอม ให้เข้ามาช่วยในการประชาสัมพันธ์และการจัดการ ทำให้ ส่วนหลักของการแข่งขัน TOI จะเปลี่ยนไปเป็น IOI Thailand League 2010 โดยมีการเปลี่ยนแปลงคร่าว ๆ ดังนี้

  • มีการแข่งขันหลายระดับ ตอนนี้จะมี 3 ระดับ ระดับบนควรจะเป็นประมาณ TOI.C
  • จัดแข่งรายเดือน ทุกเดือน และมีการเลื่อนระดับ ลักษณะนี้จะคล้าย ๆ กับลีคของกีฬา เพื่อให้ผู้เข้าแข่งขันเห็นการพัฒนาของตนเอง
  • กำหนดการแข่งที่ยืดหยุ่นมากขึ้น มีการแข่งขันออนไลน์ ที่ไม่กำหนดเวลาแค่ 3 - 5 ชั่วโมง แต่ให้เวลานักเรียนเข้ามาทำตอนไหนก็ได้
  • ประชาสัมพันธ์ถึงโรงเรียน มีการไปจัดแข่งที่โรงเรียนต่าง ๆ ด้วย โดยตระเวนไปเดือนละหนึ่งโรงเรียน (ทางวิชาการ.คอมจะช่วยจัดให้ แต่เราสามารถไปเดินสายด้วยก็ได้)

ส่วนการแข่งขันระดับที่สูงขึ้น เช่น TOI.CPP จะยังจัดเหมือนเดิม เป็นครั้งคราวไป

สำหรับทีมงาน

กิจกรรมที่คุณสามารถช่วยได้

หาคุณต้องการช่วยเหลือ มีกิจกรรมมากมายที่คุณสามารถช่วยได้ หลายกิจกรรมสามารถทำได้ยามว่าง (มั๊ง) กรุณาอ่านส่วนช่องทางติดต่อด้านล่างด้วย จะได้ติดต่อกันได้สะดวก

0. ตารางเวลาการทำงาน

จะเพิ่มรายละเอียดเร็ว ๆ นี้

1. ออกโจทย์

อันนี้เป็นกิจกรรมหลักที่น่าจะเป็นแก่นของการจัดการงาน IOI Thailand League เลยก็ว่าได้ คาดว่ากิจกรรมนี้จะสัมพันธ์กับกิจกรรมที่ 2 (ทำ test data) อย่างลึกซึ้ง

ในการเขียนให้ใช้เทมเพลตต่อไปนี้: แบบแรก .doc, แบบสอง .docx

เมื่อเขียนแล้วสามารถนำเข้าสู่โฟลด์เดอร์ dropbox ที่แชร์ไปให้ได้เลย (dropbox? แชร์อะไร? --- กรุณาอ่านด้านล่าง) ในโฟลด์เดอร์นั้นจะมีโครงสร้างคร่าว ๆ ดังนี้

/toi-tasks
  /samples     --- ตัวอย่างที่ใส่ให้ทดลองหลัง register
  /templates   --- เทมเพลตข้างต้น
  /mar53       --- โจทย์และ testdata แยกตามเดือน
  /apr53
  /... 
  /unused      --- คลังโจทย์ที่ยังไม่ได้ใช้
    /toi.a     --- โจทย์ที่มี test data แล้ว แยกตามระดับ
    /toi.b
    /toi.c
    /unclassified  --- โจทย์ที่มี test data แล้ว แต่ยังไม่ได้แยกระดับ
    /testdata  --- test data ของโจทย์ทั้งหมด ไม่แยกระดับ (เพื่อให้การเปลี่ยนระดับโจทย์ทำได้ง่าย)
    /NO-TESTDATA   --- คลังโจทย์ที่รอคอย test data จากคุณ
      /toi.*       --- แยกตามระดับ
      /unclassified  --- ยังไม่ได้แยกระดับ
    /IN-PROGRESS   --- สำหรับไว้ย้ายไฟล์โจทย์จาก NO-TESTDATA ที่จะทำ test data มาพักไว้ (จะได้ไม่ทำซ้ำกัน)

สมมติว่าวันดีคืนดีคุณคิดโจทย์ได้ อย่ารอช้า เปิดเทมเพลตข้างต้นแล้วเขียนส่งมา ถ้าคุณคิดว่าคุณจะทำ test data เอง แค่นั้นคงพอ แต่ถ้าคิดว่าคงไม่ทำแล้ว (555) กรุณาเมล์แจ้ง (หรือบอกใน facebook) คนที่ว่างจะทยอยทำ test data ให้ต่อไป

2. พัฒนาเฉลยและ test data

จะเพิ่มรายละเอียดอีกเร็ว ๆ นี้

ถ้าวันดีคืนดีคุณว่าง ๆ ไม่มีอะไรทำ อยากเขียนโจทย์แต่ไร้ซึ่งแรงบันดาลใจ... มาเขียนเฉลยและทำ test data กันดีกว่า

ขั้นตอนง่าย ๆ มีดังนี้ (ต้องใช้ dropbox)

  1. เลือกโจทย์ที่อ่านแล้วคุณสนใจ จากใน NO-TESTDATA
  2. ให้ย้ายไฟล์โจทย์จากโฟลด์เดอร์ NO-TESTDATA มาไว้ที่ IN-PROGRESS ก่อน เพื่อเป็นการจองโจทย์
  3. เขียนเฉลยและทำ test data โดยใช้รูปแบบไฟล์ตามรายละเอียดด้านล่าง (ดูส่วนโจทย์และข้อมูลทดสอบ)
  4. เมื่อทำเสร็จแล้ว upload ไฟล์เฉลยลงไปที่ unused/testdata แล้วย้ายไฟล์โจทย์จาก IN-PROGRESS ไปไว้ใน unused/toi.* ตามเหมาะสม ถ้าไม่รู้จะไว้ที่ระดับใด ให้ใส่ไว้ที่ unused/unclassified

ถ้าเปลี่ยนใจไม่ทำเฉลยและ test data ข้อนั้น ๆ แล้ว ให้ย้ายไฟล์โจทย์ออกจาก IN-PROGRESS กลับที่เดิมด้วย เพื่อคนอื่น ๆ จะได้มาทำได้ต่อไป

3. แก้ไข ปรับปรุงโจทย์

ถ้าคุณได้รับการ share dropbox อยู่ คุณก็สามารถแก้ไขไฟล์ในนั้นได้เลย!

อย่างไรก็ตาม ถ้าคุณกลัวว่าอาจจะมีคนแก้ไฟล์เดียวกันกับคุณ คุณสามารถใช้โฟลเดอร์ IN-PROGRESS ให้เป็นประโยชน์ได้ โดย move ไฟล์ที่เกี่ยวข้องไปไว้ในโฟลเดอร์ดังกล่าว เพื่อป้องกันคนอื่นแก้ไขชั่วคราว (แต่อย่าลืมย้ายกลับ)

4. ทดสอบ test data

จะเพิ่มรายละเอียดเร็ว ๆ นี้

ในการพัฒนาเฉลยและ test data ย่อมเป็นไปได้ที่จะมีข้อผิดพลาดหรือบั๊กในโปรแกรมที่คาดไม่ถึง ดังนั้น ถ้าเป็นไปได้ จึงอยากให้มีอีกคนที่ไม่ใช่ผู้พัฒนาเฉลยและ test data คนเดิม มาทดสอบ test data ให้ โดยประเด็นที่ต้องทดสอบมีดังนี้

1. test data ถูกต้องตาม format ที่ระบุไว้ในโจทย์หรือไม่ 2. เฉลยที่เขียนด้วยอัลกอริธึมที่ถูกต้อง โดยไม่ต้อง optimize มากจนเกินไป สามารถทำงานภายในเวลาและหน่วยความจำที่กำหนด หรือไม่ (ถ้าไม่ อาจต้องคุยกับผู้ออกโจทย์ และ/หรือ ผู้ทำ test data คนแรก ว่าใช้อัลกอริธึมเดียวกันหรือไม่) 3. ไฟล์ output ของ test data ถูกต้องหรือไม่ และ มีหลายคำตอบได้หรือไม่ 4. ถ้าขยัน อาจเขียนโปรแกรมที่ใช้อัลกอริธีมที่รันนานกว่าโปรแกรมเฉลยพอสมควร แต่เขียนง่ายกว่า(โอกาสบั๊กน้อยกว่า) มาทดสอบ test data เพื่อเช็คให้แน่ใจว่าถูกจริงๆ

เมื่อทดสอบเสร็จแล้ว (ทำยังไงดีถึงจะ mark บอกคนอื่นว่าทดสอบแล้ว?)

5. ดูแลการเตรียมงาน

จะเพิ่มรายละเอียดเร็ว ๆ นี้

6. ดูแลการแข่งขัน

จะเพิ่มรายละเอียดเร็ว ๆ นี้

ช่องทางติดต่อ

ในการสื่อสารจะใช้เมล์เป้นหลัก โดยจะมีเมล์ลิสต์สองอัน คือ

  • เมล์ลิสต์ของทีมงานทั้งหมด คนที่สนใจช่วยเหลือจะได้รับการเชิญเข้าเมล์ลิสต์นี้ หลัก ๆ จะเอาไว้ประกาศข่าว หรือแจ้งเวลามีคนเพิ่มโจทย์เข้าในระบบเป็นต้น จะเป็นเมล์ลิสต์ที่ส่งเมล์ไม่มากนัก
  • เมล์ลิสต์ของทีมหลัก (core team) สมาชิกในเมล์ลิสต์นี้จะเปลี่ยนไปตามแต่ละครั้ง สมาชิกจากในเมล์ลิสต์ของทีมงานสามารถสมัครเข้าเมล์ลิสต์ทีมหลักเพื่อระบุว่าพร้อมจะช่วยการจัดครั้งนั้น ๆ ได้ เมล์ลิสต์นี้จะมีการสนทนาที่มากกว่าเมล์ลิสต์แรก

ขณะนี้ได้ทดลองเปิดกลุ่มใน facebook ร่วมด้วย หวังว่าจะติดต่อกันสะดวกขึ้น

ส่วนโจทย์และข้อมูลทดสอบจะแชร์ผ่านระบบของ dropbox ที่จะแชร์ให้กับทีมงาน

การพัฒนาโจทย์และข้อมูลทดสอบ

โจทย์ ควรเขียนโดยใช้เทมเพลต แบบแรก .doc, แบบสอง .docx สำหรับทีมงานที่ไม่สะดวกกับรูปแบบดังกล่าวสามารถส่งในรูปแบบอื่นได้เช่นกัน

โจทย์จะต้องระบุ: (1) ขอบเขตทั้งเวลาและหน่วยความจำให้ชัดเจน

ข้อมูลทดสอบ ในกรณีที่การตรวจเป็นแบบการเปรียบเทียบสตริงธรรมดา ระบบ grader ปัจจุบันสามารถอัพโหลดข้อมูลทดสอบและโจทย์ได้ทางหน้าเว็บแล้ว โดยจะอัพโหลดเป็นแฟ้ม .zip, .tar, .tar.gz, หรือ .tgz โดยไฟล์ดังกล่าวจะต้องมีรูปแบบดังนี้

  • ไฟล์ข้อมูลทดสอบ จะมีสองชุด ชุดแรกเป็นตัวอย่างในข้อสอบ (ใช้ตรวจระหว่างการแข่งขัน) และชุดที่สองสำหรับการตรวจจริง
    • ไฟล์ข้อมูลนำเข้าจะมีชื่อ เช่น 1.in, 2.in สำหรับข้อมูลชุดทดสอบจริง สำหรับชุดข้อมูลทดสอบตัวอย่างจะเพิ่ม prefix ex. เข้าไป ตัวอย่างเช่น ex.1.in หรือ ex.2.in
    • หรือถ้าต้องการ group หลาย test case ให้ใช้ a, b, c ในการระบุต่อท้ายหมายเลขข้อมูลทดสอบ เช่น 1a.in, 1b.in, 1c.in หรือ ex.1a.in (โดยปกติข้อมูลชุดทดสอบตัวอย่างมักไม่ต้อง group)
    • ไฟล์ข้อมูลผลลัพธ์ มีนามสกุล .sol ที่ตรงกับไฟล์ข้อมูลนำเข้า
  • ไฟล์โจทย์จะชื่ออะไรก็ได้ ให้มีนามกสุล pdf ไฟล์ดังกล่าวจะถูก link จากโจทย์ให้โดยอัตโนมัติ

สำหรับการตรวจแบบอื่นก็สามารถทำได้ แต่ต้องอัพโหลดและ import ข้อมูลทดสอบแบบ manual

เครื่องสำหรับทดสอบ ในการทดสอบ จัดระดับ และวิจารณ์โจทย์ สามารถใช้เครื่องที่ http://theory.cpe.ku.ac.th/toi-test โดย account จะกระจายให้ทางเมล์ลิสต์ต่อไป

มีไอเดีย แต่ไม่มีเวลาพัฒนาโจทย์

จะระบุต่อไป

ต้องการเข้าร่วมทีมงาน

ติดต่อไปที่รายชื่อต่อไปนี้ (ชื่อจะเพิ่มขึ้นในภายหลัง)

  • จิตร์ทัศน์ ฝักเจริญผล
  • ทักษพร กิตติอัครเสถียร
  • ภัทร สุขประเสริฐ
  • วิชชากร กมลพรวิจิตร
  • อาภาพงศ์ จันทร์ทอง

แล้วคำเชิญต่าง ๆ จะตามมาเอง