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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 9 รุ่นระหว่างกลางโดยผู้ใช้ 2 คน)
แถว 61: แถว 61:
 
# เขียนเฉลยและทำ test data โดยใช้รูปแบบไฟล์ตามรายละเอียดด้านล่าง (ดูส่วนโจทย์และข้อมูลทดสอบ)  
 
# เขียนเฉลยและทำ test data โดยใช้รูปแบบไฟล์ตามรายละเอียดด้านล่าง (ดูส่วนโจทย์และข้อมูลทดสอบ)  
 
# เมื่อทำเสร็จแล้ว upload ไฟล์เฉลยลงไปที่ <tt>unused/testdata</tt> แล้วย้ายไฟล์โจทย์จาก <tt>IN-PROGRESS</tt> ไปไว้ใน <tt>unused/toi.*</tt> ตามเหมาะสม ถ้าไม่รู้จะไว้ที่ระดับใด ให้ใส่ไว้ที่ <tt>unused/unclassified</tt>
 
# เมื่อทำเสร็จแล้ว upload ไฟล์เฉลยลงไปที่ <tt>unused/testdata</tt> แล้วย้ายไฟล์โจทย์จาก <tt>IN-PROGRESS</tt> ไปไว้ใน <tt>unused/toi.*</tt> ตามเหมาะสม ถ้าไม่รู้จะไว้ที่ระดับใด ให้ใส่ไว้ที่ <tt>unused/unclassified</tt>
 +
 +
ถ้าเปลี่ยนใจไม่ทำเฉลยและ test data ข้อนั้น ๆ แล้ว ให้ย้ายไฟล์โจทย์ออกจาก <tt>IN-PROGRESS</tt> กลับที่เดิมด้วย เพื่อคนอื่น ๆ จะได้มาทำได้ต่อไป
  
 
==== 3. แก้ไข ปรับปรุงโจทย์ ====
 
==== 3. แก้ไข ปรับปรุงโจทย์ ====
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
+
 
 +
ถ้าคุณได้รับการ share dropbox อยู่ คุณก็สามารถแก้ไขไฟล์ในนั้นได้เลย!
 +
 
 +
อย่างไรก็ตาม ถ้าคุณกลัวว่าอาจจะมีคนแก้ไฟล์เดียวกันกับคุณ คุณสามารถใช้โฟลเดอร์ <tt>IN-PROGRESS</tt> ให้เป็นประโยชน์ได้ โดย move ไฟล์ที่เกี่ยวข้องไปไว้ในโฟลเดอร์ดังกล่าว เพื่อป้องกันคนอื่นแก้ไขชั่วคราว (แต่อย่าลืมย้ายกลับ)
  
 
==== 4. ทดสอบ test data ====
 
==== 4. ทดสอบ test data ====
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 +
 +
ในการพัฒนาเฉลยและ test data ย่อมเป็นไปได้ที่จะมีข้อผิดพลาดหรือบั๊กในโปรแกรมที่คาดไม่ถึง ดังนั้น ถ้าเป็นไปได้ จึงอยากให้มีอีกคนที่ไม่ใช่ผู้พัฒนาเฉลยและ test data มาทดสอบ test data ให้ โดยประเด็นที่ต้องทดสอบมีดังนี้
 +
 +
1. test data ถูกต้องตาม format และเงื่อนไขที่ระบุไว้ในโจทย์หรือไม่ (ทั้ง test data จริงและ sample test data)
 +
 +
2. เฉลยที่เขียนด้วยอัลกอริธึมที่ถูกต้อง โดยไม่ต้อง optimize มากจนเกินไป สามารถทำงานภายในเวลาและหน่วยความจำที่กำหนด หรือไม่ (ถ้าไม่ อาจต้องคุยกับผู้ออกโจทย์ และ/หรือ ผู้ทำ test data คนแรก ว่าใช้อัลกอริธึมเดียวกันหรือไม่)
 +
 +
3. โปรแกรมที่เขียนด้วยอัลกอริธึมที่ไม่ดีเท่าเฉลย แต่ optimize ดีกว่า จะได้คะแนนดีเกินไปหรือเปล่า ถ้ามีเวลาเหลือควรลองเขียนและส่งขึ้นไปทดสอบด้วย
 +
 +
4. ไฟล์ output ของ test data ถูกต้องหรือไม่ และ มีหลายคำตอบได้หรือไม่ (ทั้ง test data จริงและ sample test data)
 +
 +
5. ถ้าขยัน อาจเขียนโปรแกรมที่ใช้อัลกอริธีมที่รันนานกว่าโปรแกรมเฉลยพอสมควร แต่เขียนง่ายกว่า(โอกาสบั๊กน้อยกว่า) มาทดสอบ test data เพื่อเช็คให้แน่ใจว่าถูกจริงๆ
 +
 +
เมื่อทดสอบเสร็จแล้ว (ทำยังไงดีถึงจะ mark บอกคนอื่นว่าทดสอบแล้ว?)
  
 
==== 5. ดูแลการเตรียมงาน ====
 
==== 5. ดูแลการเตรียมงาน ====
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 +
 +
ผู้ที่ทำหน้าที่ดูแลการเตรียมงานของการแข่งขันนั้นๆ มีหน้าที่ดังต่อไปนี้ คือ
 +
 +
- เลือกโจทย์สำหรับการแข่งขันในระดับที่ตนดูแล (ถึงอ.มะนาว ถ้าเลือกแล้วให้ทำยังไงคะ ย้ายไปเลย? ต้องคุยกับคนดูแลระดับอื่นด้วย เพราะโจทย์ซ้อนทับกัน?)
 +
 +
- ตรวจสอบความถูกต้องของโจทย์ที่เลือกมา หาคนมาทำและทดสอบ test data (ตามข้อ 4.)
 +
 +
- เกลาภาษาของเนื้อหาโจทย์ให้เข้าใจง่ายที่สุด จัด formatting ให้สวยงาม  เช็คว่าเงื่อนไขครบถ้วนและระบุชัดเจน (บางครั้ง แก้หลายๆครั้งแล้วรายละเอียดอาจหายไป)
 +
 +
- upload โจทย์ขึ้นไปบน grader ตัวทดสอบ และตัวจริง ถ้าเป็นไปได้ ควรมีคนลองส่งโปรแกรมไปรันบนตัวตรวจดูอีกครั้งหนึ่ง ทั้ง sample test data และ test data ตัวจริง
 +
 +
- ถ้าโจทย์ไม่พอ ลองออกเพิ่ม หรือโพสขอใน mailing list / facebook group ดู เผื่อมีคนช่วยออกโจทย์เพิ่มได้
  
 
==== 6. ดูแลการแข่งขัน ====
 
==== 6. ดูแลการแข่งขัน ====
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 
: ''จะเพิ่มรายละเอียดเร็ว ๆ นี้''
 +
 +
'''<span style="color:red"> - ระหว่างการแข่งขัน ห้ามติดต่อกับผู้เข้าแข่งขันใดๆเป็นการส่วนตัว เกี่ยวกับโจทย์หรือการแข่งขันเป็นอันขาด ไม่ว่าจะทาง MSN Messenger, Twitter, Facebook หรืออะไรก็แล้วแต่ หากต้องการสอบถามข้อสงสัยต่างๆ ให้ผู้เข้าแข่งขันส่งข้อความทางระบบบนตัว grader และผู้ดูแลการแข่งขันตอบโดยใช้ message console เท่านั้น </span>
 +
'''
  
 
=== ช่องทางติดต่อ ===
 
=== ช่องทางติดต่อ ===

รุ่นแก้ไขปัจจุบันเมื่อ 14:04, 25 มีนาคม 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 และเงื่อนไขที่ระบุไว้ในโจทย์หรือไม่ (ทั้ง test data จริงและ sample test data)

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

3. โปรแกรมที่เขียนด้วยอัลกอริธึมที่ไม่ดีเท่าเฉลย แต่ optimize ดีกว่า จะได้คะแนนดีเกินไปหรือเปล่า ถ้ามีเวลาเหลือควรลองเขียนและส่งขึ้นไปทดสอบด้วย

4. ไฟล์ output ของ test data ถูกต้องหรือไม่ และ มีหลายคำตอบได้หรือไม่ (ทั้ง test data จริงและ sample test data)

5. ถ้าขยัน อาจเขียนโปรแกรมที่ใช้อัลกอริธีมที่รันนานกว่าโปรแกรมเฉลยพอสมควร แต่เขียนง่ายกว่า(โอกาสบั๊กน้อยกว่า) มาทดสอบ test data เพื่อเช็คให้แน่ใจว่าถูกจริงๆ

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

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

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

ผู้ที่ทำหน้าที่ดูแลการเตรียมงานของการแข่งขันนั้นๆ มีหน้าที่ดังต่อไปนี้ คือ

- เลือกโจทย์สำหรับการแข่งขันในระดับที่ตนดูแล (ถึงอ.มะนาว ถ้าเลือกแล้วให้ทำยังไงคะ ย้ายไปเลย? ต้องคุยกับคนดูแลระดับอื่นด้วย เพราะโจทย์ซ้อนทับกัน?)

- ตรวจสอบความถูกต้องของโจทย์ที่เลือกมา หาคนมาทำและทดสอบ test data (ตามข้อ 4.)

- เกลาภาษาของเนื้อหาโจทย์ให้เข้าใจง่ายที่สุด จัด formatting ให้สวยงาม เช็คว่าเงื่อนไขครบถ้วนและระบุชัดเจน (บางครั้ง แก้หลายๆครั้งแล้วรายละเอียดอาจหายไป)

- upload โจทย์ขึ้นไปบน grader ตัวทดสอบ และตัวจริง ถ้าเป็นไปได้ ควรมีคนลองส่งโปรแกรมไปรันบนตัวตรวจดูอีกครั้งหนึ่ง ทั้ง sample test data และ test data ตัวจริง

- ถ้าโจทย์ไม่พอ ลองออกเพิ่ม หรือโพสขอใน mailing list / facebook group ดู เผื่อมีคนช่วยออกโจทย์เพิ่มได้

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

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

- ระหว่างการแข่งขัน ห้ามติดต่อกับผู้เข้าแข่งขันใดๆเป็นการส่วนตัว เกี่ยวกับโจทย์หรือการแข่งขันเป็นอันขาด ไม่ว่าจะทาง MSN Messenger, Twitter, Facebook หรืออะไรก็แล้วแต่ หากต้องการสอบถามข้อสงสัยต่างๆ ให้ผู้เข้าแข่งขันส่งข้อความทางระบบบนตัว grader และผู้ดูแลการแข่งขันตอบโดยใช้ message console เท่านั้น

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

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

  • เมล์ลิสต์ของทีมงานทั้งหมด คนที่สนใจช่วยเหลือจะได้รับการเชิญเข้าเมล์ลิสต์นี้ หลัก ๆ จะเอาไว้ประกาศข่าว หรือแจ้งเวลามีคนเพิ่มโจทย์เข้าในระบบเป็นต้น จะเป็นเมล์ลิสต์ที่ส่งเมล์ไม่มากนัก
  • เมล์ลิสต์ของทีมหลัก (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 จะกระจายให้ทางเมล์ลิสต์ต่อไป

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

จะระบุต่อไป

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

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

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

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