การตัดสินใจของ Massachusetts Institute of Technology ที่จะเปลี่ยนจาก Scheme เป็น Python ในหลักสูตรวิทยาการคอมพิวเตอร์เบื้องต้น ได้จุดประกายการถกเถียงอย่างต่อเนื่องเกี่ยวกับทิศทางของการศึกษา CS การเปลี่ยนแปลงนี้เกิดขึ้นในช่วงกลางทศวรรษ 2000 และเป็นการสิ้นสุดยุคสมัยหนึ่งของหลักสูตรการเขียนโปรแกรมที่มีอิทธิพลมากที่สุดในประวัติศาสตร์วิชาการ
การสิ้นสุดของการเจาะลึกสี่ด้าน
แนวทางเดิมของ MIT มุ่งเน้นไปที่สี่หลักสูตรเข้มข้น 15 หน่วยกิต ที่สำรวจภาษาของวิศวกรรมศาสตร์ หลักสูตร 6.001 ที่มีชื่อเสียง Structure and Interpretation of Computer Programs ใช้ Scheme ในการสอนแนวคิดพื้นฐานโดยไม่ต้องกังวลกับไวยากรณ์ภาษาที่ซับซ้อน หลักสูตรนี้พร้อมกับอีกสามหลักสูตรที่ครอบคลุมวงจร สัญญาณ และสถาปัตยกรรมคอมพิวเตอร์ ให้พื้นฐานทางทฤษฎีที่ลึกซึ้งในวิทยาการคอมพิวเตอร์แก่นักศึกษา
อย่างไรก็ตาม การลดลงของจำนวนผู้สมัครเรียนหลังจากวิกฤต dot-com โดยเฉพาะในกลุ่มที่ขาดการเป็นตัวแทน ได้กระตุ้นให้เกิดการปรับปรุงหลักสูตรครั้งใหญ่ ภาควิชาได้เปลี่ยนหลักสูตรเจาะลึกสี่หลักสูตรเป็นหลักสูตรภาพรวมสองหลักสูตร 12 หน่วยกิต ที่ออกแบบมาเพื่อแสดงให้เห็นการประยุกต์ใช้ที่น่าตื่นเต้นของวิทยาการคอมพิวเตอร์ ตั้งแต่หุ่นยนต์ไปจนถึงเครือข่าย
หลักสูตร MIT EECS เดิม (1980s-2005)
- 6.001: Structure and Interpretation of Computer Programs (Scheme)
- 6.002: Circuits and Electronics
- 6.003: Signals and Systems
- 6.004: Computation Structures
- แต่ละวิชา: 15 หน่วยกิต (รูปแบบการเรียนเชิงลึกแบบเข้มข้น)
จากทฤษฎีสู่การประยุกต์ใช้
หลักสูตรใหม่เน้นการประยุกต์ใช้จริงมากกว่าความลึกทางทฤษฎี หลักสูตรทดแทน 6.01 ให้นักศึกษาทำงานกับหุ่นยนต์ที่นำทางผ่านเขาวงกตโดยใช้เซ็นเซอร์และ Bayesian inference Python ถูกเลือกเป็นหลักด้วยเหตุผลเชิงปฏิบัติ - มีไลบรารีที่จำเป็นสำหรับอินเทอร์เฟซหุ่นยนต์และช่วยให้นักศึกษาเขียนโปรแกรมสั้นๆ สำหรับงานเฉพาะเจาะจงเช่นการควบคุมหุ่นยนต์
การเปลี่ยนแปลงนี้สะท้อนแนวโน้มที่กว้างขึ้นในการศึกษาวิทยาการคอมพิวเตอร์ ภาควิชาหลายแห่งได้เปลี่ยนจากการสอนแนวคิดวิทยาการคอมพิวเตอร์ที่บริสุทธิ์ไปสู่ทักษะการเขียนโปรแกรมเชิงอาชีพมากขึ้น การเปลี่ยนแปลงนี้ยอมรับว่านักศึกษาส่วนใหญ่จะไม่ติดตามอาชีพทางวิชาการ แต่ต้องการทักษะที่จำหน่ายได้ในตลาดสำหรับตำแหน่งในอุตสาหกรรม
หลักสูตร MIT EECS ใหม่ (2005-2007)
- 6.01: บทนำสู่ EECS I (Python) - หุ่นยนต์ การควบคุม การตรวจจับ สถิติ
- 6.02: บทนำสู่ EECS II - การสื่อสาร เครือข่าย ทฤษฎีสารสนเทศ
- แต่ละวิชา: 12 หน่วยกิต (รูปแบบภาพรวม)
- จุดเน้น: การเปิดรับประสบการณ์อย่างกว้างขวางในการประยุกต์ใช้ EECS มากกว่าการสร้างรากฐานทางทฤษฎีเชิงลึก
การถกเถียงใหญ่: Scheme กับ Python
ชุมชนการเขียนโปรแกรมยังคงแบ่งแยกเกี่ยวกับการเปลี่ยนแปลงนี้ ผู้สนับสนุน Scheme โต้แย้งว่าความบริสุทธิ์ทางคณิตศาสตร์และไวยากรณ์ที่เรียบง่ายของภาษานี้ทำให้เหมาะสำหรับการสอนแนวคิดพื้นฐานเช่น recursion, abstraction และ functional programming นักศึกษาสามารถเชี่ยวชาญภาษาทั้งหมดได้อย่างรวดเร็วและมุ่งเน้นไปที่หลักการวิทยาการคอมพิวเตอร์หลัก
Scheme มีความบริสุทธิ์ มันเป็นภาษาที่สวยงามและเบาที่ใครก็สามารถเรียนรู้ได้ในช่วงสุดสัปดาห์ มันไม่ทำอะไรที่มหัศจรรย์ให้คุณ ซึ่งหมายความว่าคุณได้รับโอกาส/ต้องสร้างทุกสิ่งที่คุณต้องการ และคุณต้องเข้าใจว่ามันเข้ากันได้อย่างไร
ผู้สนับสนุน Python โต้แย้งว่านักศึกษาได้รับประโยชน์จากการเรียนรู้ภาษาที่ใช้กันอย่างแพร่หลายพร้อมไลบรารีที่กว้างขวางและการประยุกต์ใช้ในโลกจริง พวกเขาโต้แย้งว่าระบบนิเวศของ Python ให้คุณค่าเชิงปฏิบัติและแรงจูงใจในการเรียนรู้ต่อไปทันที ในขณะที่ความรู้เรื่อง Scheme มีการถ่ายทอดไปใช้ในงานอุตสาหกรรมได้อย่างจำกัด
ความแตกต่างหลัก: Scheme เทียบกับ Python สำหรับการศึกษา
ด้าน | Scheme | Python |
---|---|---|
ความซับซ้อนของภาษา | ไวยากรณ์เรียบง่าย สเปกทั้งหมดใส่ได้ใน 2 หน้า | ซับซ้อน เต็มไปด้วยฟีเจอร์และไลบรารีมาตรฐานที่ครอบคลุม |
ความยากง่ายในการเรียนรู้ | เริ่มต้นยาก แต่สามารถเรียนรู้จนเชี่ยวชาญได้อย่างสมบูรณ์ | เริ่มต้นง่าย แต่การเข้าใจระบบนิเวศทั้งหมดใช้เวลาหลายปี |
ความเกี่ยวข้องกับอุตสาหกรรม | การใช้งานเชิงพาณิชย์จำกัด | ใช้งานอย่างแพร่หลายในอุตสาหกรรม |
จุดเน้นในการสอน | แนวคิด CS บริสุทธิ์ การคิดเชิงคณิตศาสตร์ | การประยุกต์ใช้จริง โครงการในโลกแห่งความเป็นจริง |
พื้นฐานของนักศึกษา | ทำให้ทุกคนเท่าเทียมกัน (มีคนเพียงไม่กี่คนที่เคยสัมผัสมาก่อน) | ไม่เท่าเทียมกัน (นักศึกษาบางคนมีประสบการณ์มาก) |
ผลกระทบการปรับระดับ
ข้อได้เปรียบหนึ่งของ Scheme ที่มักถูกมองข้ามคือความสามารถในการปรับระดับสนามเล่นให้เท่าเทียมกันระหว่างนักศึกษา เนื่องจากโรงเรียนมัธยมน้อยแห่งที่สอน functional programming นักศึกษาทุกคนจึงเริ่มต้นจากจุดที่ประมาณเดียวกัน สิ่งนี้ตรงข้ามกับภาษาเช่น Python หรือ Java ที่นักศึกษาบางคนมาถึงพร้อมกับประสบการณ์ก่อนหน้าที่มีนัยสำคัญ ทำให้เกิดสภาพแวดล้อมการเรียนรู้ที่ไม่เท่าเทียมกัน
การถกเถียงยังสัมผัสกับคำถามพื้นฐานเกี่ยวกับวัตถุประสงค์ของการศึกษาในมหาวิทยาลัย สถาบันชั้นนำควรมุ่งเน้นไปที่พื้นฐานทางทฤษฎีที่พัฒนาทักษะการคิดเชิงลึก หรือควรให้การฝึกอบรมเชิงปฏิบัติที่เตรียมนักศึกษาสำหรับการจ้างงานทันที คำตอบอาจแตกต่างกันไปขึ้นอยู่กับว่านักศึกษาวางแผนที่จะติดตามอาชีพการวิจัยหรือเข้าสู่อุตสาหกรรมโดยตรง
มองไปข้างหน้า
หลักสูตรวิทยาการคอมพิวเตอร์ของ MIT ในปัจจุบันได้พัฒนาไปอีกขั้น โดยเคลื่อนไปสู่ลำดับ CS0/CS1 ที่เป็นแบบแผนมากขึ้นคล้ายกับมหาวิทยาลัยอื่นๆ ภาควิชาได้ละทิ้งแนวคิดของหลักสูตรหลักที่เป็นหนึ่งเดียวไปแล้วเป็นส่วนใหญ่ ซึ่งสะท้อนการขยายตัวและความเชี่ยวชาญเฉพาะด้านที่ต่อเนื่องของสาขานี้
การเปลี่ยนผ่านจาก Scheme สู่ Python แสดงถึงมากกว่าแค่การเปลี่ยนภาษา - มันเป็นสัญลักษณ์ของการเปลี่ยนแปลงการศึกษาวิทยาการคอมพิวเตอร์จากนามธรรมทางคณิตศาสตร์ไปสู่ความเป็นจริงเชิงวิศวกรรม แม้ว่าทั้งสองแนวทางจะมีข้อดี แต่การเลือกนี้เผยให้เห็นสมมติฐานพื้นฐานเกี่ยวกับสิ่งที่นักศึกษาต้องการเพื่อประสบความสำเร็จในภูมิทัศน์เทคโนโลยีที่ซับซ้อนมากขึ้น