คำถามติดแท็ก education

คำถามทั่วไปเกี่ยวกับการเรียนรู้สาขาวิทยาการคอมพิวเตอร์และการศึกษา CS

13
วิธีการแก้ปัญหาแบบฮิวริสติก "ลองใช้กรณีทดสอบ": อัลกอริทึมที่ปรากฏถูกต้อง แต่จริง ๆ แล้วไม่ถูกต้อง
ในการพยายามทดสอบว่าอัลกอริทึมสำหรับปัญหาบางอย่างถูกต้องหรือไม่จุดเริ่มต้นตามปกติคือลองใช้อัลกอริทึมด้วยมือในกรณีทดสอบง่ายๆ - ลองกับตัวอย่างกรณีปัญหารวมถึงกรณีมุมง่าย ๆ สองสามตัวอย่าง " นี่เป็นวิธีแก้ปัญหาที่ยอดเยี่ยม: มันเป็นวิธีที่ดีในการกำจัดความพยายามที่ไม่ถูกต้องอย่างรวดเร็วของอัลกอริทึมและเพื่อทำความเข้าใจเกี่ยวกับสาเหตุที่อัลกอริทึมไม่ทำงาน อย่างไรก็ตามเมื่อการเรียนรู้อัลกอริทึมนักเรียนบางคนถูกล่อลวงให้หยุดที่นั่น: หากอัลกอริทึมของพวกเขาทำงานอย่างถูกต้องกับตัวอย่างจำนวนหนึ่งรวมถึงกรณีมุมทั้งหมดที่พวกเขาสามารถคิดได้ลองพวกเขาสรุปว่าอัลกอริทึมต้องถูกต้อง มีนักเรียนคนหนึ่งที่ถามอยู่เสมอ: "ทำไมฉันต้องพิสูจน์อัลกอริทึมของฉันให้ถูกต้องถ้าฉันลองได้ในบางกรณีทดสอบ?" ดังนั้นคุณจะหลอก "ฮิวริสติกแบบทดสอบกรณี" ได้อย่างไร ฉันกำลังมองหาตัวอย่างที่ดีเพื่อแสดงว่าฮิวริสติกนี้ไม่เพียงพอ กล่าวอีกนัยหนึ่งฉันกำลังมองหาหนึ่งหรือมากกว่าหนึ่งตัวอย่างของอัลกอริทึมที่เผินๆดูเหมือนว่ามันอาจจะถูกต้องและผลลัพธ์ที่ได้คำตอบที่ถูกต้องในอินพุตขนาดเล็กทั้งหมดที่ทุกคนมีแนวโน้มที่จะเกิดขึ้น ไม่ทำงาน อัลกอริทึมอาจทำงานได้อย่างถูกต้องกับอินพุตขนาดเล็กทั้งหมดและล้มเหลวสำหรับอินพุตขนาดใหญ่เท่านั้นหรือล้มเหลวเฉพาะสำหรับอินพุตที่มีรูปแบบที่ผิดปกติ โดยเฉพาะฉันกำลังมองหา: อัลกอริทึม ข้อบกพร่องจะต้องอยู่ในระดับอัลกอริทึม ฉันไม่ได้กำลังมองหาข้อผิดพลาดในการใช้งาน (ตัวอย่างเช่นอย่างน้อยที่สุดตัวอย่างควรเป็นผู้ไม่เชื่อเรื่องภาษาและข้อบกพร่องควรเกี่ยวข้องกับความกังวลด้านอัลกอริทึมมากกว่าปัญหาด้านวิศวกรรมซอฟต์แวร์หรือปัญหาการใช้งาน) อัลกอริทึมที่บางคนอาจมีความน่าเชื่อถือ รหัสเทียมควรมีลักษณะที่ถูกต้องอย่างน้อยน่าจะเป็นไปได้ (เช่นรหัสที่ obfuscated หรือน่าสงสัยว่าไม่ได้เป็นตัวอย่างที่ดี) คะแนนโบนัสหากเป็นอัลกอริทึมที่นักเรียนบางคนคิดขึ้นมาเมื่อพยายามแก้ไขปัญหาการบ้านหรือการสอบ อัลกอริทึมที่จะผ่านกลยุทธ์การทดสอบด้วยตนเองอย่างสมเหตุสมผลด้วยความน่าจะเป็นสูง คนที่ลองใช้กรณีทดสอบเล็ก ๆ น้อย ๆ ด้วยมือไม่น่าจะค้นพบข้อบกพร่อง ตัวอย่างเช่น "จำลอง QuickCheck ด้วยมือในกรณีทดสอบขนาดเล็กโหล" ไม่น่าจะเปิดเผยว่าอัลกอริทึมไม่ถูกต้อง เป็นอัลกอริทึมที่กำหนดขึ้นโดยเฉพาะ ฉันเคยเห็นนักเรียนหลายคนคิดว่า "ลองใช้กรณีทดสอบด้วยมือ" เป็นวิธีที่สมเหตุสมผลในการตรวจสอบว่าอัลกอริธึมที่กำหนดขึ้นถูกต้องหรือไม่ แต่ฉันสงสัยว่านักเรียนส่วนใหญ่จะไม่คิดว่าการลองใช้กรณีทดสอบสองสามอันเป็นวิธีที่ดี อัลกอริทึม สำหรับอัลกอริธึมความน่าจะเป็นมักจะไม่มีวิธีที่จะบอกได้ว่าเอาต์พุตใด ๆ ที่ถูกต้องหรือไม่ …

9
แคลคูลัสใช้กับวิทยาศาสตร์คอมพิวเตอร์อย่างไร
โปรแกรมวิทยาศาสตร์คอมพิวเตอร์หลายโปรแกรมต้องการเรียนแคลคูลัสสองหรือสามชั้น ฉันสงสัยว่าแคลคูลัสใช้กับวิทยาศาสตร์คอมพิวเตอร์อย่างไรและเมื่อไหร่? เนื้อหา CS ของปริญญาในสาขาวิทยาศาสตร์คอมพิวเตอร์มีแนวโน้มที่จะมุ่งเน้นไปที่อัลกอริธึมระบบปฏิบัติการโครงสร้างข้อมูลปัญญาประดิษฐ์วิศวกรรมซอฟต์แวร์ ฯลฯ มีเวลาที่แคลคูลัสมีประโยชน์ในสาขาเหล่านี้หรือสาขาอื่น ๆ ของวิทยาศาสตร์คอมพิวเตอร์หรือไม่?

5
อะไรคือเหตุผลในการเรียนรู้อัลกอริทึม / โครงสร้างข้อมูลที่แตกต่างกันซึ่งให้บริการเพื่อจุดประสงค์เดียวกัน
ฉันสงสัยเกี่ยวกับคำถามนี้ตั้งแต่ฉันเป็นนักเรียนระดับปริญญาตรี มันเป็นคำถามทั่วไป แต่ฉันจะทำอย่างละเอียดพร้อมตัวอย่างด้านล่าง ฉันได้เห็นอัลกอริทึมมากมาย - ตัวอย่างเช่นสำหรับปัญหาการไหลสูงสุดฉันรู้อัลกอริทึม 3 อย่างที่สามารถแก้ปัญหาได้: ฟอร์ด - ฟัลเกอร์สัน, เอ็ดมันด์ - คาร์ปและดินิกโดย Dinic มีความซับซ้อนที่สุด สำหรับโครงสร้างข้อมูล - ตัวอย่างเช่น heap - มี binary heaps, binomial heaps & Fibonacci heaps โดยที่ Fibonacci heap มีความซับซ้อนโดยรวมที่ดีที่สุด สิ่งที่ทำให้ฉันสับสนคือ: มีเหตุผลใดบ้างที่เราจำเป็นต้องรู้จักพวกเขาทั้งหมด? ทำไมไม่เพียงแค่เรียนรู้และทำความคุ้นเคยกับความซับซ้อนที่ดีที่สุด? ฉันรู้ว่ามันดีที่สุดถ้าเรารู้จักพวกเขาทั้งหมดฉันแค่อยากรู้ว่ามีเหตุผล "ที่ถูกต้องมากกว่า" เช่นปัญหา / อัลกอริทึมบางอย่างสามารถแก้ไขได้โดยใช้Aแต่ไม่ใช่Bเป็นต้น

14
ฉันจะอธิบายให้ผู้ปกครองของฉันเห็นว่าฉันเรียนภาษาโปรแกรมได้อย่างไร
ฉันกำลังจบปริญญาโทด้านวิทยาศาสตร์คอมพิวเตอร์ ฉันสนใจในการเขียนโปรแกรมภาษาโดยเฉพาะในระบบพิมพ์ ฉันมีความสนใจในการวิจัยในสาขานี้และภาคการศึกษาถัดไปฉันจะเริ่มปริญญาเอกในเรื่อง ต่อไปนี้เป็นคำถามที่แท้จริง: ฉันจะอธิบายสิ่งที่ฉันต้องการทำกับผู้ที่ไม่มีความรู้มาก่อนในสาขาวิทยาศาสตร์คอมพิวเตอร์หรือสาขาที่เกี่ยวข้องได้อย่างไร ชื่อนี้มาจากข้อเท็จจริงที่ว่าฉันไม่สามารถอธิบายสิ่งที่ฉันทำกับพ่อแม่เพื่อนและอื่น ๆ ได้ ใช่ฉันสามารถพูดได้ว่า"ประเด็นทั้งหมดคือการช่วยให้นักพัฒนาซอฟต์แวร์เขียนซอฟต์แวร์ที่ดีขึ้น"แต่ฉันไม่คิดว่ามันจะมีประโยชน์จริง ๆ : พวกเขาไม่ทราบว่า "การเขียนโปรแกรม" พวกเขาไม่ได้เบาะแสว่ามันหมายถึงอะไร รู้สึกเหมือนฉันกำลังบอกว่าฉันเป็นช่างซ่อมรถยนต์ให้กับใครบางคนจากยุคกลาง: พวกเขาไม่รู้ว่าฉันกำลังพูดถึงอะไรอยู่ ใครบ้างที่มีการเปรียบเทียบที่ดีกับโลกแห่งความจริง? ตัวอย่างการทำให้กระจ่างทำให้เกิดเหตุการณ์ "a-ha" ฉันควรแสดงตัวอย่างรหัสสั้น ๆ และง่าย ๆ ให้แก่อายุ 60 ปีขึ้นไปที่ไม่มีประสบการณ์ด้านวิทยาการคอมพิวเตอร์ (หรือด้านวิชาการ) หรือไม่? ถ้าเป็นเช่นนั้นฉันควรใช้ภาษาใด มีใครที่นี่ประสบปัญหาที่คล้ายกัน?

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

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

6
คอมพิวเตอร์ทำงานอย่างไร
ฉันเป็นคนบ้าคอมพิวเตอร์มาหลายปีแล้ว ฉันสามารถเขียนโปรแกรมในไม่กี่ภาษาและฉันยังสามารถสร้างพวกเขาได้ ฉันนั่งลงกับเพื่อนเมื่อวันก่อนและถามว่าคอมพิวเตอร์ใช้พลังงานไฟฟ้าจริง ๆ และทำอะไรกับมันได้อย่างไรและเราก็ไม่สามารถเข้าใจได้และ Google ก็ไม่ได้ช่วยอะไรเช่นกัน ฉันหมายถึงคอมพิวเตอร์ใช้กระแสไฟฟ้าคงที่และเปลี่ยนเป็น 1 และ 0 ของแล้วทำอะไรกับ 1 และ 0 เหมือนเปิดไฟใน 15 วินาที? ผมเข้าใจประตู (AND, OR NOR, NAND, NOT) และเล็ก ๆ น้อย ๆ เกี่ยวกับไดโอด , ตัวต้านทานและทรานซิสเตอร์แต่ฉันคิดนี้จะเป็นสถานที่ที่สมบูรณ์แบบที่จะมีมันอธิบายได้ในแง่ laymens จริง! ใครช่วยชี้ฉันในทิศทางที่ถูกต้องหรือให้คำอธิบายสั้น ๆ กับฉันได้ไหม

13
เกณฑ์การเลือกภาษาสำหรับหลักสูตรการเขียนโปรแกรมครั้งแรก
ในฐานะที่เป็นผู้สอน CS ในระดับมหาวิทยาลัยปัญหาของการเขียนโปรแกรมภาษาที่จะสอนในหลักสูตรการเขียนโปรแกรมแรกมักจะเกิดขึ้นสำหรับการอภิปราย มีหลายพันภาษาให้เลือกและมีไข้ทางศาสนามากมาย (หรือไข้) สนับสนุนค่ายภาษาหนึ่งมากกว่าอีกภาษาหนึ่ง ความลำเอียงแบบอัตนัยทั้งหมดนี้ล้อมรอบแต่ละภาษาการเขียนโปรแกรมทำให้ผู้สอนเลือกได้ยาก คำถามของฉันคือ: ผู้สอนสามารถใช้เกณฑ์วัตถุประสงค์อะไรในการเลือกภาษาการเขียนโปรแกรมเพื่อใช้เป็นพื้นฐานสำหรับหลักสูตรการเขียนโปรแกรมมหาวิทยาลัยปีแรก เกณฑ์สำหรับเกณฑ์เหล่านี้คืออะไร หมายเหตุ : ฉันไม่ต้องการเห็นรายการภาษาการเขียนโปรแกรมและทำไมจึงเป็นภาษาที่ดีที่สุดที่จะใช้ คำถามคือไม่ได้เกี่ยวกับภาษาที่ดีที่สุดก็เป็นเรื่องเกี่ยวกับเกณฑ์สำหรับการเลือกภาษา คำตอบอาจใช้ภาษาการเขียนโปรแกรมเพื่อแสดงจุดเฉพาะ คำถามนี้ได้รับแรงบันดาลใจจากคำถามอื่นซึ่งถือว่านอกหัวข้อ: https://cs.stackexchange.com/questions/1946/criteria-for-choosing-a-first-programming-language

2
ใน“ ความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์จริงๆ”
Dijkstra ในเรียงความของเขาในความโหดร้ายของการสอนวิทยาศาสตร์คอมพิวเตอร์จริงทำให้ข้อเสนอต่อไปนี้สำหรับหลักสูตรการเขียนโปรแกรมเบื้องต้น: ในอีกด้านหนึ่งเราสอนสิ่งที่ดูเหมือนว่าแคลคูลัสเพรดิเคต แต่เราทำแตกต่างจากนักปรัชญามาก ในการฝึกอบรมโปรแกรมเมอร์มือใหม่ในการจัดการสูตรที่ไม่ถูกตีความเราสอนมันมากขึ้นในฐานะพีชคณิตแบบบูลทำความคุ้นเคยกับนักเรียนเกี่ยวกับคุณสมบัติเชิงพีชคณิตของตรรกะเชิงเชื่อม เพื่อตัดการเชื่อมโยงไปยังปรีชาเพิ่มเติมเราเปลี่ยนชื่อค่า {true, false} ของโดเมนบูลีนเป็น {black, white} ในทางกลับกันเราสอนภาษาการเขียนโปรแกรมที่ง่ายสะอาดและมีความจำเป็นโดยมีการข้ามและการมอบหมายหลายอย่างเป็นข้อความพื้นฐานพร้อมโครงสร้างบล็อกสำหรับตัวแปรท้องถิ่นเซมิโคลอนเป็นโอเปอเรเตอร์สำหรับองค์ประกอบคำสั่งโครงสร้างทางเลือกที่ดี การทำซ้ำและหากต้องการให้เรียกขั้นตอน ในส่วนนี้เราเพิ่มประเภทข้อมูลขั้นต่ำเช่น booleans, จำนวนเต็ม, อักขระและสตริง สิ่งสำคัญคือสำหรับสิ่งที่เราแนะนำความหมายที่สอดคล้องกันจะถูกกำหนดโดยกฎการพิสูจน์ที่ไปกับมัน ตั้งแต่เริ่มต้นและตลอดหลักสูตรเราเน้นว่างานของโปรแกรมเมอร์ไม่เพียง แต่เขียนโปรแกรม แต่งานหลักของเขาคือให้การพิสูจน์อย่างเป็นทางการว่าโปรแกรมที่เขาเสนอนั้นตรงตามข้อกำหนดการทำงานที่เป็นทางการเท่ากัน ในขณะที่การออกแบบการพิสูจน์และโปรแกรมจับมือนักเรียนได้รับโอกาสที่เพียงพอที่จะสมบูรณ์แบบความคล่องแคล่วว่องไวกับแคลคูลัสภาค สุดท้ายเพื่อขับรถกลับบ้านข้อความที่หลักสูตรการเขียนโปรแกรมเบื้องต้นนี้เป็นหลักสูตรหลักในวิชาคณิตศาสตร์อย่างเป็นทางการเราจะเห็นว่าภาษาการเขียนโปรแกรมที่เป็นปัญหาไม่ได้ดำเนินการในมหาวิทยาลัยเพื่อให้นักเรียนได้รับการปกป้องจากสิ่งล่อใจเพื่อทดสอบโปรแกรมของพวกเขา . เขาเน้นว่านี่เป็นข้อเสนอที่ร้ายแรงและสรุปการคัดค้านที่เป็นไปได้ต่างๆรวมถึงความคิดของเขาที่ว่า "ไม่สมจริงอย่างเต็มที่" และ "ยากเกินไป" แต่ว่าวจะไม่บินทั้งสำหรับสมมุติฐานได้รับการพิสูจน์ผิด: ตั้งแต่ต้นปี 80 หลักสูตรการเขียนโปรแกรมเบื้องต้นดังกล่าวได้รับการประสบความสำเร็จให้กับนักศึกษาหลายร้อยคนในแต่ละปี [เพราะจากประสบการณ์ของฉันการพูดครั้งนี้ไม่พอประโยคก่อนหน้าควรทำซ้ำอย่างน้อยอีกสองครั้ง] หลักสูตรใดที่ Dijkstra อ้างถึงและมีวรรณกรรมอื่นอีกบ้างที่กล่าวถึงเรื่องนี้ เรียงความที่ปรากฏในปี 1988 เมื่อ Dijkstra อยู่ที่มหาวิทยาลัยเท็กซัสที่ออสตินซึ่งอาจเป็นเบาะแส - พวกเขาเป็นเจ้าภาพเก็บถาวร Dijkstra แต่มันมีขนาดใหญ่และฉันสนใจที่จะได้ยินจากคนอื่นเกี่ยวกับหลักสูตรนี้ ฉันไม่ต้องการที่จะพูดคุยว่าความคิดของ Dijkstra ดีหรือเหมือนจริงที่นี่ ฉันพิจารณาการโพสต์สิ่งนี้ใน cstheory.se …

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

9
อธิบายความแตกต่างระหว่างวิทยาการคอมพิวเตอร์และความรู้คอมพิวเตอร์ [ปิด]
คำอุปมาหรือตัวอย่างที่ดีในการอธิบายภาษาอังกฤษที่สำคัญแตกต่างระหว่างวิทยาการคอมพิวเตอร์แบบดั้งเดิมและ "การใช้ MS-Windows ได้ดี" วิทยาศาสตร์คอมพิวเตอร์ การเขียนโปรแกรมคอมพิวเตอร์ ใช้คอมพิวเตอร์ 3 สิ่งที่แตกต่างอย่างสุดซึ้ง คนส่วนใหญ่ไม่รู้ว่าวิทยาการคอมพิวเตอร์นั้นคืออะไร พวกเขาเห็นคำว่า "คอมพิวเตอร์" ดังนั้น "เขาเป็นวิชาเอกวิทยาศาสตร์คอมพิวเตอร์" สามารถตีความได้ว่า "เขาสามารถขอเครื่องพิมพ์ของฉัน" หรือว่าเขา "ดีกับคอมพิวเตอร์" แม้แต่คนที่น้อยก็รู้ถึงความแตกต่างระหว่างการเขียนโปรแกรมคอมพิวเตอร์และวิทยาการคอมพิวเตอร์ วิทยาการคอมพิวเตอร์เป็นทฤษฎีการคำนวณ CS สามารถเรียนรู้ได้โดยไม่ต้องใช้คอมพิวเตอร์จริง สถาปัตยกรรมไมโครซีพียู วิธีการเรียงลำดับหมายเลขวิธีการสำรวจรายการ ฯลฯ เครื่องสถานะ อัลกอริทึมใหญ่ (Oh) ฯลฯ วิธีการออกแบบภาษาโปรแกรมหรือคอมไพเลอร์ การเขียนโปรแกรมคือการเขียนโค้ดและสร้างแอปพลิเคชันในภาษาและคอมไพเลอร์ที่สร้างขึ้นโดยนักวิทยาศาสตร์คอมพิวเตอร์ สุดท้ายมีการใช้คอมพิวเตอร์ (ใช้ GUI, เมาส์และคีย์บอร์ด Internet, MS-Office, ฯลฯ ) ทั้งสามคนนี้ใช้แทนกันได้โดยอุปัฏฐาก คำเปรียบเทียบหรือตัวอย่างที่ดีในการอธิบายความแตกต่างระหว่างวิทยาศาสตร์คอมพิวเตอร์แบบคลาสสิคกับ "การใช้ MS-Windows ได้ดี" หรือเพียงแค่ตัวอย่างที่น่าสนใจว่าวิทยาการคอมพิวเตอร์ที่แท้จริงนั้นไม่เกี่ยวข้องกับการใช้ MS-Windows อย่างไร

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

3
การสอน NP-ครบถ้วน - การทัวริงการลดลงเทียบกับการลดคาร์ป
ฉันสนใจในคำถามของวิธีที่ดีที่สุดในการสอนปัญหาความสมบูรณ์ของวิชาเอกวิทยาการคอมพิวเตอร์ โดยเฉพาะอย่างยิ่งเราควรสอนโดยใช้การลดคาร์ปหรือการใช้การลดทอนของทัวริง ฉันรู้สึกว่าแนวคิดของความสมบูรณ์แบบ NP และการลดลงเป็นสิ่งที่วิทยาศาสตร์คอมพิวเตอร์ทุกคนควรเรียนรู้ อย่างไรก็ตามเมื่อสอน NP-ครบถ้วนฉันได้สังเกตเห็นว่าการใช้ Karp Reduction มีข้อเสีย ก่อนอื่นการลดคาร์ปดูเหมือนจะทำให้นักเรียนบางคนสับสนโดยไม่จำเป็น ความคิดที่เข้าใจง่ายของการลดคือ "ถ้าฉันมีอัลกอริทึมในการแก้ปัญหา X จากนั้นฉันก็สามารถใช้มันเพื่อแก้ปัญหา Y ได้เช่นกัน" นั่นเป็นเรื่องที่เข้าใจได้ง่ายมาก - แต่แผนที่ดีกว่าการทัวริงการลดลงมากกว่าการลดคาร์ป เป็นผลให้ฉันเห็นนักเรียนที่พยายามพิสูจน์ความสมบูรณ์แบบของ NP ถูกทำให้หลงผิดโดยสัญชาตญาณและพิสูจน์ข้อผิดพลาด พยายามที่จะสอนการลดลงทั้งสองประเภทและเน้นในแง่มุมของการลดคาร์ปนี้บางครั้งก็รู้สึกเหมือนเป็นพิธีการที่ไม่จำเป็นและใช้เวลาเรียนไม่จำเป็นและให้ความสนใจกับนักเรียนในสิ่งที่รู้สึกเหมือนรายละเอียดทางเทคนิค มันไม่ชัดเจนเลยว่าทำไมเราใช้ความคิดที่ จำกัด มากขึ้นในการลด ฉันเข้าใจความแตกต่างระหว่างการลด Karp และการลด Turing (Cook) และวิธีที่พวกเขานำไปสู่แนวคิดที่แตกต่างของความสมบูรณ์แบบ NP ฉันตระหนักว่าการลดคาร์ปทำให้เรามีความแตกต่างที่ละเอียดยิ่งขึ้นระหว่างคลาสความซับซ้อน ดังนั้นสำหรับการศึกษาทฤษฎีความซับซ้อนอย่างจริงจังการลดคาร์ปจึงเป็นเครื่องมือที่เหมาะสม แต่สำหรับนักศึกษาวิทยาศาสตร์คอมพิวเตอร์ที่เพิ่งเรียนรู้สิ่งนี้และไม่เคยไปสู่ทฤษฎีความซับซ้อนฉันไม่แน่ใจว่าการแยกความแตกต่างที่ดีกว่านี้มีความสำคัญอย่างยิ่งหรือไม่ ในที่สุดในฐานะนักเรียนฉันจำได้ว่ารู้สึกงุนงงเมื่อฉันพบปัญหาเช่น "ซ้ำซาก" - เช่นกำหนดสูตรบูลีนตรวจสอบว่าเป็นวิชาซ้ำซาก สิ่งที่สับสนคือปัญหานี้ชัดเจนยาก: อัลกอริธึมเวลาพหุนามใด ๆ สำหรับมันจะบ่งบอกว่าP= NPP=NPP=NP; เห็นได้ชัดว่าการแก้ปัญหานี้ยากพอ ๆ กับการแก้ไขปัญหาซ้ำซาก อย่างไรก็ตามถึงแม้ว่าการหยั่งรู้เชิงสัญชาตญาณนั้นยากพอ …

7
เริ่มเรียนรู้เกี่ยวกับทฤษฎีระบบกระจาย
อะไรคือวิธีที่ดีที่สุดที่ทุกคนสามารถทำได้เพื่อให้มีการแนะนำที่ดีเกี่ยวกับทฤษฎีระบบกระจายหนังสือหรือการอ้างอิงใด ๆ และหัวข้อควรได้รับการกล่าวถึงก่อนและมีข้อกำหนดเพื่อเริ่มการเรียนรู้ในหัวข้อนี้

12
ฉันจะสอนวิทยาศาสตร์คอมพิวเตอร์โดยไม่ต้องใช้คอมพิวเตอร์ได้อย่างไร
ในบางสถานที่ในโลกผู้คนมักจะไม่สามารถเข้าถึงคอมพิวเตอร์ (และด้วยความรู้เพียงเล็กน้อย) และแม้ว่าพวกเขาจะมีฮาร์ดและซอฟต์แวร์ล้าสมัยและการใช้งานก็เกิดจากปัญหาไฟฟ้าดับและเช่นนั้น การเข้าถึงหนังสือ (ดี) ยังมีแนวโน้มที่จะไม่เพียงพอ ฉันจะสอนวิทยาศาสตร์คอมพิวเตอร์ในสถานการณ์เช่นนี้ได้อย่างไร ฉันกังวลว่าหากไม่สามารถทำการทดลองและใช้สิ่งที่เรียนรู้พวกเขาจะไม่เรียนรู้ (ดี) เลยถึงแม้ว่าพวกเขาจะมีแรงบันดาลใจอย่างไม่น่าเชื่อและอุทิศเวลาส่วนใหญ่ให้กับงานอดิเรกนี้ เป็นไปได้หรือไม่ที่จะสอน CS ในทางทฤษฎี?
21 education 

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