ฉันควรทำอย่างไรกับคนที่มีอายุระหว่าง 16-17 ปีเพื่อให้พวกเขาสนใจวิทยาศาสตร์คอมพิวเตอร์?


40

ฉันจะเข้าร่วมกับ 'วันเปิดเรียน' ที่มหาวิทยาลัยของฉันในอีกไม่กี่สัปดาห์ เป็นส่วนหนึ่งของเวลานี้ฉัน (พร้อมกับเพื่อนร่วมงาน) กำลังได้รับนักเรียนระดับมัธยมทั้งกลุ่มเป็นเวลาสองชั่วโมงเช่นเดียวกับห้องปฏิบัติการคอมพิวเตอร์ขนาดใหญ่พอที่จะบรรจุพวกเขาทั้งหมดและฉันต้องทำอะไรบางอย่าง กิจกรรมหรือชุดกิจกรรมกับพวกเขาเพื่อกระตุ้นให้พวกเขาทำวิทยาการคอมพิวเตอร์ (ที่มหาวิทยาลัยของฉันเป็นเลิศ แต่โดยทั่วไปแล้ว) ฉันกำลังสูญเสียที่แน่นอนว่าจะทำอย่างไรที่นี่และยินดีต้อนรับข้อเสนอแนะใด ๆ และทั้งหมด


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

1
ฉันชอบ2008 สถาบันพระมหากษัตริย์คริสต์มาสบรรยาย คุณอาจต้องการลองกิจกรรม / การสาธิตที่คล้ายกัน
melhosseiny

คำตอบ:


21
  • คุณสามารถให้พวกเขาวาดภาพโดยใช้ไวยากรณ์ที่ไม่มีบริบท ศิลปะที่ไม่มีบริบทนี้ใช้ได้กับผู้ที่ไม่เคยตั้งโปรแกรมมาก่อนและปรับให้เหมาะกับโปรแกรมเมอร์ที่มีประสบการณ์ ภาษาพื้นฐานนั้นง่ายพอที่จะอธิบายในครึ่งชั่วโมง
  • การเรียนรู้บางอย่างเกี่ยวกับเรขาคณิตโดยใช้Turtle graphicsก็ดีเช่นกัน โลโก้ถูกออกแบบมาสำหรับเด็กนักเรียนมัธยมจึงไม่มีปัญหา มีวิดีโอเกี่ยวกับเด็ก ๆ ที่ใช้โลโก้บน youtube
  • หากคุณสามารถรับมือกับหุ่นยนต์ MindStorms ได้การเขียนโปรแกรมเหล่านี้สนุกมาก
  • มีเกมการเขียนโปรแกรมที่หลากหลายซึ่งคุณตั้งโปรแกรมให้โรบอตต่อสู้กันหรือแอสเซมบลีโปรแกรมที่พยายามเขียนทับกันในเครื่องเสมือน วิกิพีเดียในหัวข้อ , คำถาม StackOverflow ที่เกี่ยวข้อง
  • คุณยังสามารถคิดถึงโครงการฮาร์ดแวร์บางประเภท การทำให้ไมโครคอนโทรลเลอร์กระพริบไฟ LED ขึ้นอยู่กับจำนวนอีเมลที่ยังไม่ได้อ่านในกล่องจดหมายของคุณ
  • ให้พวกเขาใช้อัลกอริธึมในการสร้างเขาวงกตที่แตกต่างกันลองทำตามเกณฑ์ที่ทำให้เขาวงกต "ยากสำหรับมนุษย์" หากเวลาอนุญาตให้ขยายอัลกอริทึมเพื่อรวมทางเดินเท่านั้น แต่รวมถึงห้องด้วย
  • ซื้อ Arduinos และ LEDs สองสามคู่ ปล่อยให้พวกเขาเขียนโปรแกรมไฟกะพริบ

1
คุณอาจต้องการเพิ่มลิงก์ไปยังบทช่วยสอนการเขียนโปรแกรมคอมพิวเตอร์ของ Khan Academy ไปยังรายการ ตัวอย่างเช่น: khanacademy.org/cs/intro-to-animation/830742281
PhD

+1 สำหรับ CFG เช่นกัน - อีกรุ่นที่มีแนวคิดเดียวกันซึ่งน่าจะเป็นสิ่งที่ดีที่จะลองและนำไปใช้ก็คือพยายามทำพุ่มไม้ด้วย Iterated Function System; ให้พวกเขาเริ่มต้นด้วยสี่เหลี่ยมตั้งค่าอีกหลายสี่เหลี่ยมแล้วทำซ้ำ 'เนื้อหา' ของสี่เหลี่ยมแรก (รวมถึงการย่อยทั้งหมด) ลงในแต่ละย่อย คุณสามารถตั้งค่ารุ่นดิจิตอลเพื่อการเปรียบเทียบ
Steven Stadnicki

13

ตรวจสอบวิทยาศาสตร์คอมพิวเตอร์ Unplugged จากเว็บไซต์ของพวกเขา:

CS Unplugged คือชุดของกิจกรรมการเรียนรู้ฟรีที่สอนวิทยาศาสตร์คอมพิวเตอร์ผ่านเกมและปริศนาที่น่าสนใจซึ่งใช้ไพ่สตริงสีเทียนและการวิ่งรอบ ๆ

กิจกรรมแนะนำให้นักเรียนแนวคิดพื้นฐานเช่นเลขฐานสอง , อัลกอริทึมและการบีบอัดข้อมูลแยกออกมาจากการรบกวนและรายละเอียดทางเทคนิคที่เรามักจะเห็นกับคอมพิวเตอร์

CS Unplugged เหมาะสำหรับผู้คนทุกวัยตั้งแต่ระดับประถมศึกษาถึงผู้อาวุโสและจากหลายประเทศและภูมิหลัง Unplugged มีการใช้ทั่วโลกมานานกว่าสิบห้าปีในห้องเรียนศูนย์วิทยาศาสตร์บ้านและแม้กระทั่งสำหรับกิจกรรมวันหยุดในสวนสาธารณะ!


1
นี่เป็นข้อเสนอแนะที่ดี แต่ฉันคิดว่า OP ต้องการสิ่งที่ใช้ห้องปฏิบัติการคอมพิวเตอร์ที่ได้ตั้งไว้
András Salamon

จุดที่ถูกต้อง ควรมีโครงการ robocode สำหรับผู้ที่ไม่รู้จักการเขียนโปรแกรม
Pål GD

11

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

สิ่งที่คุณต้องการคือการออกกำลังกายสองชั่วโมงซึ่งตรงกับสองเป้าหมาย:

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

เป้าหมายแรกนั้นค่อนข้างเป็นอิสระจากสิ่งที่คุณจะแสดงออกมาและมีส่วนเกี่ยวข้องกับการเป็นครู / ผู้นำเสนอที่ดี การฝึกสอนเกี่ยวกับการสอนที่ดีคือการรักษาผู้ชมของคุณไว้ที่เท้าปล่อยให้พวกเขาลองสิ่งเล็ก ๆ ในกลุ่มให้พวกเขาได้รับชีวิตทุกๆ 15 นาที

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

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

จากนั้นคุณสามารถเริ่มต้นการสนทนาเกี่ยวกับวิธีการที่คุณจะหาเส้นทางที่สั้นที่สุดและอื่น ๆ ให้พวกเขาพยายามที่จะกำหนดว่าเป็นอัลกอริทึม ฯลฯ ... แล้วคุณจะอธิบายขั้นตอนวิธีการของ Dijkstra , ปล่อยให้พวกเขาสีโหนดเป็นเยี่ยมชม , ไม่แน่นอนและชุดที่ไม่ได้เข้าชม ปัง คุณมีอัลกอริทึม!

หากคุณยังมีเวลาคุณสามารถอธิบายรายละเอียดบางอย่างได้เช่นข้อมูลที่เราให้สิทธิ์เช่นค้นหาขั้นต่ำในชุดโหนดที่ไม่แน่นอน หากคุณได้มาถึงตอนนี้คุณสามารถแสดงความแตกต่างระหว่างการค้นหาเชิงเส้นและฮีปและเป็นโบนัสที่คุณจะแนะนำหมายเหตุO

ต้องบอกว่าทั้งหมดนี้เป็นเรื่องเกี่ยวกับเท่าที่ฉันจะไป อยู่ให้ห่างจากการสนทนาทั้ง vs.ด้วยเสาสิบฟุต แม้ว่านักวิทยาศาสตร์คอมพิวเตอร์ส่วนใหญ่จะค้นพบสิ่งที่น่าหลงใหล แต่นักเรียนมัธยมปลายส่วนใหญ่จะไม่ทำเช่นนั้น ฉันรู้สิ่งนี้จากประสบการณ์ ที่สำคัญในความคิดของฉันคือการเริ่มต้นด้วยปัญหาที่พวกเขาสามารถเข้าใจหรือเกี่ยวข้องและนำมาจากที่นั่นโดยไม่จำเป็นต้องแนะนำมากN PPยังไม่มีข้อความP


9

หากคุณมีเวลาเพียง 2 ชั่วโมงคุณจะไม่ได้รับการเข้ารหัสมากนัก เพียงแค่เรียนรู้ไวยากรณ์จะยากในเวลานั้น แต่มีหลายสิ่งที่สามารถทำได้แทน

ในฐานะที่เป็นข้อเสนอแนะลองสอนให้พวกเขาควบคุมการไหลและความสำคัญของการมีลักษณะเฉพาะ:

  1. แบ่งชั้นเรียนออกเป็น 2 "หุ่นยนต์" และ "โปรแกรมเมอร์" คนอื่น ๆ
  2. มาพร้อมกับความท้าทายที่เหมาะสมที่ต้องใช้ตรรกะง่ายๆวนรอบ ฯลฯ - มีตัวอย่างด้านล่าง
  3. มี "โปรแกรมเมอร์" เขียนคำแนะนำรายการที่มอบให้กับ "หุ่นยนต์"
  4. ให้ "หุ่นยนต์" ดำเนินการตามคำแนะนำ แต่ให้ "หุ่นยนต์" รู้ว่าหากคำสั่งนั้นทำให้เกิดความสับสนพวกเขาจะได้รับอนุญาตให้หยุดข้อผิดพลาดหรือกระทำการใด ๆ จนกว่า "โปรแกรมเมอร์" จะหยุดและ debugs พวกเขา รับประกันถ้าให้โอกาสในการเล่นเป็น schooler สูงจะ

เป็นงานตัวอย่างให้ตั้งค่าลูกบอลสีต่างกันโดยมีแถบสีที่สอดคล้องกันที่อื่นและมีถังขนาดเล็กพอสำหรับหุ่นยนต์ / โปรแกรมเมอร์แต่ละคู่ ภารกิจคือการทำให้หุ่นยนต์เติมลูกบอลด้วยถังอย่างไรก็ตามจะทำได้เพียงใช้ลูกบอลที่ตรงกับแถบกระดาษเฉพาะ หากไม่มีลูกบอลสีในอ่างแล้วหุ่นยนต์จะต้องส่งคืนแถบกระดาษและเก็บใหม่

งานนี้ต้องการการแยกย่อยตามเงื่อนไขการวนซ้ำการจัดการข้อผิดพลาดและการคิดอย่างต่อเนื่อง ทุกสิ่งที่โปรแกรมเมอร์ต้องดีโดยไม่คำนึงถึงภาษาหรือกิจกรรม

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


1
ทำไมฉันไม่ให้ +10 นี้ นี่เป็นความคิดที่ดี
Xynariz

@ Xynariz ขอบคุณ! ฉันได้ทำมันสองสามครั้งกับกลุ่มเล็ก ๆ จริง ๆ แล้วมันก็กลายเป็นเรื่องสนุกและน่าผิดหวังอย่างเท่าเทียมกัน - อย่างไรก็ตามความคับข้องใจก็คือ "หุ่นยนต์" ที่ทำงานผิดปกติและไม่ใช่คอมพิวเตอร์ที่เด็ก ๆ ยังไม่เข้าใจ

บางครั้งผู้คนดูเหมือนจะไม่เข้าใจว่าคอมพิวเตอร์นั้นดีมากในการทำสิ่งที่คุณบอกพวกเขา .. ไม่มีอะไรมากไม่มีอะไรน้อย แม้จะมีตอน CyberChase เกี่ยวกับเรื่องนี้ ... (ซ่อน)
Xynariz

7

ฉันได้ฝึกอบรมโปรแกรมเมอร์มากมาย หากสิ่งที่คุณมีคือ 2 ชั่วโมงอย่ากังวลกับการสอนวิธีใช้รหัสให้ ห้องปฏิบัติการคอมพิวเตอร์ก็ไม่จำเป็นเช่นกัน หากต้องการไปจากศูนย์ถึงสวัสดีโลกคุณจะสูญเสียครึ่งหนึ่งของคลาสและใช้จ่ายและชั่วโมง 45 ของ 2 ชั่วโมงของคุณในการจัดการกับข้อบกพร่องและไม่ได้ทำอะไรเลย

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

ให้พวกเขาได้ลิ้มรสสิ่งที่ชอบคิดว่าเป็นโปรแกรมเมอร์ พวกเขาจะได้รับมากขึ้นจากที่คุณพยายามสอน Python ใน 2 ชั่วโมง


6

คุณอาจลองอลิซ มันเป็น IDE และ API สำหรับภาพเคลื่อนไหว 3 มิติ มันมีวัตถุทุกประเภทในตัว (กระต่ายมนุษย์ต่างดาวต้นไม้อาคาร ... ) ที่คุณสามารถวางในฉากเริ่มต้นด้วยวิธีการระดับสูงมากเช่น: walk(north)(ซึ่งเคลื่อนไหวแขนและขาในขณะที่ตัวละครเคลื่อนไหว) และsay("my name is Winky")อาจทำให้การ์ตูนฟองออกมาจากปากของตัวละคร

ช่วยให้คุณสามารถเชื่อมโยงเหตุการณ์แป้นพิมพ์และเมาส์เพื่อให้คุณสามารถทำสิ่งต่าง ๆ ที่มีการโต้ตอบ

ภาษาการเขียนโปรแกรมพื้นฐานคือ Java แต่ IDE ให้ตัวแปรกราฟิกที่คุณลากและวางบางส่วนของนิพจน์ลงในหน้าต่างแก้ไข (ไม่อนุญาตให้คุณสร้างข้อผิดพลาดทางไวยากรณ์)

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


1
ฉันลังเลที่จะใช้วิธีนี้ มันอาจใช้ได้กับนักเรียนที่อายุน้อยกว่า แต่นักเรียนมัธยมมักจะมองว่ามันเป็นเด็ก ที่กล่าวมานี้เป็นวิธีที่รวดเร็วสมบูรณ์บางสิ่งบางอย่างในระยะเวลา 2 ชั่วโมง ...
Izkata

6

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

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

  1. เรียงลำดับรายการ
  2. การค้นหาต้นไม้ที่ครอบคลุมน้อยที่สุด
  3. การคำนวณ (โดยประมาณ) รากของจำนวนเต็ม
  4. เป็นต้น

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

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

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

  1. ให้เด็กเข้าใจง่าย แต่มีปัญหามากมายในการสำรวจ
  2. ให้เด็ก ๆ มาหาคำตอบด้วยตัวเองโดยให้ความช่วยเหลือเพียงพอที่จะทำให้เด็กเข้าใจปัญหา
  3. อภิปรายความถูกต้อง / ประสิทธิภาพในการตั้งกลุ่มให้โอกาสกลุ่มอธิบายวิธีแก้ปัญหา ในฐานะที่ปรึกษาคุณมีอิสระที่จะพูดคุยถึงความถูกต้อง / ประสิทธิภาพเท่าที่คุณคิดว่าสามารถทำกำไรได้
  4. ไม่ว่าในสถานการณ์ใดคุณไม่ควรนำเสนอวิธีการแก้ปัญหาของคุณเองหรือที่รู้จักกันดีเว้นแต่ว่าพวกเขาจะเหมือนกับนักเรียนที่ให้ไว้ อย่าทำให้ดูเหมือนว่า CS เป็นเขตข้อมูลที่ผู้คนได้คิดคำตอบทั้งหมดแล้ว
  5. ถ้าเป็นไปได้ปล่อยให้เด็ก ๆ รู้สึกว่าได้เรียนรู้อะไรบางอย่าง แต่ยังมีคำถาม: พวกเขาหาคำตอบที่ดีที่สุดหรือไม่? คำถามอื่น ๆ ของพวกเขาที่พวกเขาสามารถแก้ไขในทำนองเดียวกันได้หรือไม่? คุณอาจให้ปัญหาที่ไม่คาดคิดแก่พวกเขาในรูปแบบที่ย่อยง่ายเพื่อให้พวกเขาได้ทำงานต่อไป

คุณอาจจะพิจารณาทีมที่แข่งกันเองในการแข่งขันกระชับมิตร ให้ทีมเดียวกันมีปัญหาเดียวกันและดูว่าใครจะมาพร้อมกับทางออกที่ดีกว่า
Patrick87

1
การแข่งขันประเภทนั้นไม่สนับสนุนให้คนเขินอายและสนับสนุนอัตตาของผู้ที่รู้จักสิ่งของ นี่เป็นเพียงการเสริมความแข็งแกร่งให้กับภาพของ CS ว่าเป็น "สำหรับผู้สนใจเท่านั้น"
adrianN

6

Im 17 ตอนนี้และฉันเริ่มเขียนโปรแกรมตลอดเวลาที่ฉันอายุครบ 16 ปีฉันจะเล่าเรื่องของฉันและให้คำแนะนำมากกว่า: ความสนใจของฉันในการเขียนโปรแกรมเริ่มต้นเมื่อฉันดูคนที่แต่งตัวประหลาดเทคโนโลยีคอมพิวเตอร์ฉันโทรยุ่งกับ registries แม้ว่าเขาต้องการ 500 $ เพื่อแก้ไข BSOD ของฉันและฉันไม่จ่ายเงินฉันแก้ไขด้วยตัวเอง) ดังนั้นฉันจึง googled "command prompt language" และพบว่ามีบางสิ่งที่เรียกว่า "source code" และอนุญาตให้คุณเขียนโปรแกรม . ตอนที่ฉันไม่รู้ว่า c ++ คืออะไรฉันไม่คิดว่าฉันจะเคยได้ยิน ดังนั้นฉันจึงไปที่ cpp.com (บทเรียนที่ไม่ดีมากคุณจะได้เรียนรู้วิธีปฏิบัติที่ไม่ดีและล้าสมัย) และเริ่มเรียนรู้พื้นฐาน ใจของฉันบ้าและจริง ๆ แล้วฉันเรียนรู้ว่าไวรัสที่ฉันติดเชื้อทำให้เกิดปัญหาของฉันถูกเขียนใน c ++ ซึ่งสนใจฉันต่อไป ต่อมาฉันเริ่มอ่านการเรียนรู้การชุมนุมและภาษาระดับสูงอื่น ๆ ฉันเริ่มต้องการเรียนรู้เกี่ยวกับมัลแวร์และการเขียนโปรแกรมกราฟิกก่อน

  1. สิ่งนี้อาจฟังดูไม่ดี แต่ผู้คนจำนวนมากในวัยของฉันสนใจที่จะเขียนโปรแกรมทำลายล้าง คำถามแรกที่ฉันได้รับจากเพื่อนของฉันเมื่อฉันบอกพวกเขาว่าฉันค่อนข้างดีกับ c ++ คือ "คุณสามารถสร้างไวรัสเปลี่ยนเกรดหรือแฮ็คเกม" ฉันไม่ได้อยู่ในระดับนั้น ... ฉันเคยเรียนการฉีด dll เมื่อเร็ว ๆ นี้ ที่นั่น บางทีคุณอาจพบบางสิ่งในสายมัลแวร์ที่ไม่อันตรายหรือผิดกฎหมาย แต่ก็ยังน่าสนใจ (อาจได้รับข้อมูลการเข้าสู่ระบบของนักเรียนจากเซิร์ฟเวอร์ของโรงเรียน) คุณสามารถพูดคุยกับพวกเขาเกี่ยวกับวิธีการทำงานของไวรัสและซอฟต์แวร์ที่เป็นอันตรายเช่นกัน
  2. พัฒนาเกมเล็ก ๆ ตามแนวโปเกมอนและอธิบายให้พวกเขาเห็นว่าเกมและเอ็นจิ้นเกมทำงานอย่างไร ผู้คนจำนวนมากอาจจะประหลาดใจที่รู้ว่าในเกม 2d มากมายเช่นนี้ตัวละครไม่เคลื่อนไหวจริงพื้นหลังเป็นและตัวละครใช้แค่อนิเมชั่นพูดคุยเกี่ยวกับตัวเลขสุ่ม ฯลฯ มากับการสาธิต 3 มิติด้วย
  3. พยายามหลีกเลี่ยงการอธิบายว่าโค้ดทำอะไรและพยายามบอกพวกเขาว่าโปรแกรมนั้นตัวเองทำโดยไม่พูดถึงรหัสมากเกินไป จากประสบการณ์ของฉันนั่นเป็นวิธีที่ง่ายในการลดความสนใจของประชาชนโดยเฉพาะอย่างยิ่งหากพวกเขาไม่เข้าใจพื้นฐานของภาษา ในความเป็นจริงฉันจะพยายามอย่าใส่ซอร์สโค้ดจริง ๆ เพราะมันอาจทำให้ท้อใจสำหรับคนที่จะดูโค้ด 500 บรรทัดและไม่เข้าใจเลย นอกจากนี้หากคุณมีคนที่คุณแสดงให้เห็นว่าเป็นเหมือนฉันพวกเขาอาจจะถามคำถามเพราะพวกเขามีความอยากรู้อยากเห็น เช่น: คุณกำลังพูดถึงตัวเลขสุ่มพวกเขาถามว่าตัวเลขแบบสุ่มสำหรับอะไรและมาจากไหน ... กว่าที่คุณต้องอธิบายให้พวกเขาเกี่ยวกับเสียงอิเล็กทรอนิกส์และวิธีการสุ่มและทุกอย่างมากกว่าที่คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณกำลัง เหมือนกับ "ฉันไม่รู้"
  4. Lego Mindstorms เป็นไอเดียที่ยอดเยี่ยม หากคุณไม่ต้องการใช้เส้นทางที่ยาวและใช้ภาษาหลักมันมาพร้อมกับภาษาการเขียนโปรแกรมแบบบล็อกที่คุณสามารถใช้ได้ ฉันคิดภาษาประมาณ 30-40 นาทีทุกอย่างเรียงกันเมื่อคุณคิดถึงมัน

  5. คุณสามารถพัฒนาแอปได้อย่างรวดเร็วและแสดงมันพูดคุยกับพวกเขาเกี่ยวกับ $$ ที่มาจากการพัฒนาแอพ


4

บางรายการโปรดของฉัน

  • สร้าง fractals พวกเขามีความเชื่อมโยงที่แข็งแกร่งกับคณิตศาสตร์เชิงลึกและคอมพิวเตอร์กราฟิกส์และพวกมันยังเหมาะสำหรับการขนาน มันแสดงให้เห็นถึงความซับซ้อนและพฤติกรรมเร่งด่วนโดยเฉพาะอย่างยิ่งเมื่อคุณซูมไปยังเครื่องชั่งโดยพลการและมีเน็คไทที่แข็งแกร่งกับวิทยาศาสตร์และปรากฏการณ์ทางธรรมชาติ ไม่ยากที่จะเขียนรหัสเศษส่วนแบบขนานที่ทำงานบนเครื่องหลายเครื่อง การทดลองหนึ่งคือการให้แต่ละเครื่องแสดงบรรทัดสุ่มที่มันประมวลผล (เช่นเครื่อง "ทาส" ที่ประมวลผลบรรทัดจากคิว) จากนั้นเครื่องกลางจะแสดงผลลัพธ์ที่รวมกัน

  • เลโก้หุ่นยนต์ (หรือชุดหุ่นยนต์อื่น ๆ เช่นตราประทับ ) Mindstorms เป็นของเล่น แต่มันอาจเป็นสิ่งที่ก้าวหน้ามากซึ่งแสดงให้เห็นถึงแนวคิดที่เป็นนามธรรม ซอฟต์แวร์ที่สามารถทำงานกับซอฟต์แวร์นั้นมีความซับซ้อนมากและสามารถมีลูป / อัลกอริธึมที่ต้องใช้ความรู้สึก - การคิดที่ซับซ้อน มีหนังสือกองกำลังที่ดีมากมาย ที่น่าประทับใจก็คือนักแก้ปัญหาลูกบาศก์ Rubiksเมื่อเร็ว ๆ นี้ทำลายสถิติโลก

  • ราสเบอร์รี่ piเป็นแพลตฟอร์มราคาไม่แพงใหม่ที่เห็นความสนใจและการใช้งานเป็นอย่างมาก มันสามารถใช้เพื่อแสดงให้เห็นถึงการเขียนโปรแกรมลินุกซ์หุ่นยนต์ ฯลฯ และมีเอาท์พุท HD ฯลฯ ดูเช่นซูเปอร์คอมพิวเตอร์ Southhampton ราสเบอร์รี่ piกับชั้นวางเลโก้

  • โลโก้ตามที่กล่าวไว้ในคำตอบอื่น ๆ เป็นคลาสสิกเก่า อีกมุมที่ใหม่กว่าคือการเขียนโปรแกรมเกมเช่นภาษาใหม่ยอดนิยมที่เรียกว่าScratch (คิดค้นที่MIT ) มันสามารถสอนหัวข้อ CS ธรรมชาติ / ขั้นสูงจำนวนมาก


2

นี่เป็นอีกมุมมองหนึ่ง มีจำนวนมากดังนั้นปัญหาเปิดที่น่าสนใจหรือเทคโนโลยีที่เกิดขึ้นใหม่ในวิทยาศาสตร์คอมพิวเตอร์ที่พรมแดนของความเข้าใจทางวิทยาศาสตร์ที่สามารถจุดประกายความอยากรู้อยากเห็น / น่าแปลกใจคือการตรวจสอบข้อเท็จจริงของอยู่บริเวณใกล้เคียงสำรวจดินแดน หากคุณเพิ่มปัญหาแล้วให้ชั้นเรียนมีส่วนร่วมในการอภิปรายเกี่ยวกับการแบ่งย่อยของการแก้ปัญหานั่นอาจทำให้เกิดจุดสนใจ / แรงบันดาลใจที่สำคัญ [เนื่องจากคุณพูดถึงความพร้อมของห้องปฏิบัติการคอมพิวเตอร์มันอาจเป็นไปได้ที่จะเกิดขึ้นอย่างสร้างสรรค์ด้วยแบบฝึกหัดคอมพิวเตอร์ที่เกี่ยวข้องกับเรื่องเหล่านี้]

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

  • ดีเอ็นเอในการแก้ไขปัญหาการพับโปรตีน มีวิธีคิดคำนวณที่แม่นยำหรือไม่?

  • ปัญญาประดิษฐ์โดยทั่วไป เป็นไปได้ไหม? มีจริยธรรมเกี่ยวข้องหรือไม่

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

  • ระบบเฝ้าระวังที่ใช้เทคโนโลยีสารสนเทศเพื่อตรวจจับอาชญากรรม / การก่อการร้ายนั้นเป็นข่าวในช่วงหลัง

  • ไม่สามารถค้นพบHiggs bosonได้และ supercollider ไม่สามารถทำงานได้เลยหากไม่มีระบบที่ใช้ CS ขนาดใหญ่สำหรับการวิเคราะห์ "ข้อมูลขนาดใหญ่"

  • กฎของมัวร์ มันจะไปได้ไกลแค่ไหน? มีผลกระทบต่อสังคม / มนุษยชาติมากน้อยแค่ไหน

  • คอมพิวเตอร์ควอนตัม เป็นไปได้ไหม พวกเขาจะเร็วขึ้นหรือไม่ พวกเขาจะเป็น lowcost หรือไม่เสมอไปเสมอ? Dwaveเป็นกรณีศึกษาที่มีสีสันมีบทความ SciAm ที่ยอดเยี่ยมโดย Aaronson ฯลฯ

  • อัลกอริทึมของ PageRank ของ Googleเป็นหนึ่งในหลายพันล้านสิ่งมหัศจรรย์ของวิทยาศาสตร์คอมพิวเตอร์ที่ทันสมัย มันจะขยายออกไปไหม การกรองสแปมทำงานอย่างไร บริษัท ดูเหมือนว่าจะก้าวไปสู่การวิเคราะห์ภาพ ฯลฯ

  • การซื้อขายอัลกอริทึม / ความถี่สูงในขณะนี้ย้ายปริมาณ / มูลค่าการซื้อขายจำนวนมาก ดี / ไม่ดี มันเพิ่มขึ้น / ลดลง? จะมีการควบคุมในอนาคตหรือไม่ การแข่งขันทางด้านแขนคอมพิวเตอร์ประเภทใดที่เกี่ยวข้อง

  • ซูเปอร์คอมพิวเตอร์มีขนาดใหญ่มากแก้ปัญหาที่น่าอัศจรรย์และใหญ่ขึ้นเรื่อย ๆ มีข้อ จำกัด หรือไม่ พวกเขาจะคำนวณอะไรและพวกเขาจะคำนวณอะไรในอนาคต ค่อนข้างที่เกี่ยวข้องกับข้อมูลขนาดใหญ่และdatamining

  • เว็บไซต์เครือข่ายสังคมมีความหมายอย่างมากในเวลาน้อยกว่าทศวรรษที่เติบโต พวกเขามีส่วนร่วมในการเติมน้ำมันลุกฮือที่นิยมเช่นฤดูใบไม้ผลิอาหรับและครอบครอง Wall St อนาคตของพวกเขาคืออะไร


2

ฉันมีข้อเสนอที่

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

เราได้รับการถือครองการประชุมเชิงปฏิบัติการขนาดเล็กที่มีนักเรียนมัธยมเกี่ยวกับเรือกวาดทุ่นระเบิด การประชุมเชิงปฏิบัติการจะเป็นดังนี้:

  1. มาเล่นเกมกันสักหน่อย (ส่วนใหญ่ก็รู้)

  2. เราเพิ่งทำอะไรไป ปัญหาที่เราพยายามแก้ไขคืออะไร เราสามารถกำหนดกฎทั่วไปได้หรือไม่?

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

  3. แสดงปัญหาเกี่ยวกับกฎ

    ณ จุดนี้คุณต้องการที่จะแนะนำจำลองเรือกวาดทุ่นระเบิด The One by Bayer, Snyder และ Chouiery นั้นไม่สมบูรณ์แบบ แต่ช่วยให้คุณจัดแสดงสถานการณ์ที่ออกแบบมาอย่างพิถีพิถัน

  4. ปรับปรุงชุดกฎเพื่อให้ครอบคลุมสถานการณ์เพิ่มเติม

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

  5. ข้อ จำกัด หมายเหตุ

    อันดับแรกมีสถานการณ์ที่ไม่มีวิธีแก้ปัญหา ยิ่งกว่านั้นเราสามารถเปรียบเทียบความดุร้ายกับกลยุทธ์ที่พัฒนาขึ้นของเรา เราสามารถแลกเปลี่ยนความเร็วกับพลังงานได้หรือไม่? หากวิธีสมการของระบบปรากฎขึ้นโปรดทราบว่าเราสามารถแก้ปัญหานี้ได้อย่างมีประสิทธิภาพเหนือ reals แต่เราต้องการคำตอบแบบไบนารี ไม่ยากเกินไปที่จะสร้างสถานการณ์ที่นำไปสู่ ​​runtimes ขนาดใหญ่ (เราใช้พีชคณิตคอมพิวเตอร์เพื่ออธิบาย)

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

คำติชมจากนักเรียนโดยรวมแล้วเป็นบวก พวกเขารู้สึกมีส่วนร่วมและแสดงความสนใจในแนวคิด เป็นสิ่งสำคัญที่ให้พวกเขาทำงานส่วนใหญ่เพียง แต่สะกิดพวกเขาอย่างระมัดระวังในทิศทางที่ต้องการโดยถามคำถามที่แหลม


1

คุณมีหลายสิ่งหลายอย่างที่ต้องทำ ... แต่สิ่งหนึ่งที่ดูเหมือนจะออกจาก "เงิน" ดังนั้นนำเสนอคำถาม "P ≠ NP" และรางวัลเจ็ดพันปีเมื่อฉันอยู่ในโรงเรียนมัธยมฉันอ่านเกี่ยวกับเรื่องนี้แม้ว่าฉันจะ ไม่ทราบว่ามีสิ่งเดียวที่ฉันเข้าใจคือมีรางวัลใหญ่และคำถาม! สิ่งอื่น ๆ จะนำเสนอการเชื่อมต่อของคณิตศาสตร์และวิทยาการคอมพิวเตอร์เช่น: การแก้สมการการตรวจสอบการแก้ปัญหาโดยใช้คอมพิวเตอร์

อย่างอื่นที่ฉันอยากจะแนะนำก็คือการนำเสนออลันทัวริง "บิดาแห่งวิทยาการคอมพิวเตอร์" และเล่าเรื่องของเขา สิ่งสุดท้ายที่ฉันแนะนำคือศูนย์พิสูจน์ความรู้และเกม "ที่เป็น waldo?" และเล่นโดยไม่มีการโกงและการเข้ารหัสและการโจมตีทางไซเบอร์


-2

ทำทุกอย่างกับ Facebook พวกเขารักมัน บางทีนี่อาจเป็นเรื่องยากสำหรับผู้เริ่มต้น แต่คุณควรปล่อยให้พวกเขาวาดกราฟเชื่อมโยงซึ่งแสดงว่าโปรไฟล์ของพวกเขาเชื่อมต่อกันได้อย่างไร ฉันจะแนะนำ Javascript เป็นภาษาการเขียนโปรแกรม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.