เมื่อฉันอยู่ในวิทยาลัยฉันเคยเป็นครูสอนพิเศษสำหรับการแนะนำหลักสูตรการเขียนโปรแกรมในหลักสูตรอื่น ๆ ปัญหาที่คุณอธิบายไม่ใช่เรื่องแปลก ขึ้นอยู่กับบทบาทเฉพาะของคุณคุณอาจมีแนวทางที่แตกต่างกันตามที่คุณต้องการ
ก่อนอื่นหากนี่เป็นปัญหาที่เกิดขึ้นอย่างกว้างขวางที่ส่งผลต่อส่วนสำคัญของนักเรียนในชั้นเรียนหากคุณสามารถเข้าถึงได้ฉันจะเข้าหาอาจารย์ที่สอนหลักสูตรที่มีความคิดเห็นเฉพาะเกี่ยวกับแนวคิดที่นักเรียนไม่เข้าใจเพื่อให้เขาหรือ เธออาจรวมการตรวจสอบเพิ่มเติมของเนื้อหานั้นเมื่อมันปรากฏขึ้นอีกครั้งในภาคเรียนหรือปรับปรุงหลักสูตรสำหรับภาคการศึกษาในอนาคต
หากคุณสอนหัวข้อสนทนาสำหรับหลักสูตรนอกเหนือจากเวลาแล็บของคุณนั่นจะเป็นเวลาที่ยอดเยี่ยมในการอธิบายสิ่งต่าง ๆ ที่ทำให้เกิดความสับสนในการบรรยายและช่วยทำให้พวกเขาเป็นรูปธรรมมากขึ้นและทำให้แน่ใจว่าทุกคนเข้าใจพื้นฐาน
หากครั้งเดียวที่คุณทำงานกับนักเรียนเหล่านี้คือในช่วงเวลาของคุณในห้องปฏิบัติการสอนคุณยังสามารถใช้เวลานี้ในการสอนนักเรียนแบบตัวต่อตัวหรือไม่กี่อย่างในเวลาเดียวกันหน่วยการสร้างแนวคิดที่พวกเขาต้องการเพื่อที่จะเข้าใจ และทำการบ้านให้เสร็จ
พวกเขาอาจรู้สึกสูญเสียในชั้นเรียนจนไม่รู้ว่าจะหยุดและถามคำถามอย่างไร หากเป็นเช่นนั้นให้กลับไปสู่พื้นฐานด้วย พวกเขาอยู่ที่ไหนในหลักสูตรเมื่อพวกเขาเข้าใจครั้งสุดท้ายว่าเกิดอะไรขึ้น หากพวกเขาไม่แน่ใจหรือ "ไม่เข้าใจ" คุณอาจต้องกลับไปที่จุดเริ่มต้นเพื่ออธิบายสวัสดีโลกสอนสิ่งต่าง ๆ เช่นตัวแปรคืออะไรคอมพิวเตอร์ใช้รายการ "คำแนะนำ" และพยายามที่จะ ทำตามลำดับ แต่คอมพิวเตอร์ไม่ได้เป็น "ฉลาด" เหมือนเราดังนั้นคุณต้องเป็นตัวอักษรมากและพูดในสิ่งที่ถูกต้องเพื่อให้คอมพิวเตอร์เข้าใจ
นั่นเป็นจุดของการดิ้นรนและความยุ่งยากที่ฉันได้เห็นบ่อยครั้งในหลักสูตรการเขียนโปรแกรมที่ไม่ใช่สาขาวิชา นักเรียนเขียนโค้ดบางส่วน ดูเหมือนว่า "เกี่ยวกับ" ถูกต้อง แต่จากนั้นพวกเขาก็รวบรวมและให้ข้อผิดพลาดข้อผิดพลาดที่คลุมเครือมาก และพวกเขาก็ไม่รู้ว่าเกิดอะไรขึ้นกับมัน และจ้องที่รหัสของพวกเขาเป็นเวลาหลายชั่วโมง ในที่สุดก็คิดออกว่ามันเป็นสิ่งที่ดูเหมือนเล็กน้อยเช่นเซมิโคลอนที่หายไปหรือรั้งในที่ผิด จากนั้นพวกเขาก็รวบรวมมันอีกครั้งและยังมีข้อผิดพลาดมันเป็นอย่างอื่น พวกเขาสะกดชื่อตัวแปรต่างกันในครั้งที่สองที่ใช้ และอื่น ๆ ดังนั้นพวกเขาจึงขอความช่วยเหลือจากเพื่อนหรือครูสอนพิเศษหรือใครบางคนและพวกเขาสามารถตอบคำถามได้จากด้านบนของหัว "โอ้แค่เพิ่มที่นี่แล้วมันจะได้ผล" ดังนั้นประสบการณ์ของพวกเขาคือการเขียนโปรแกรมนั้นค่อนข้าง "ลึกลับ"
นั่นคือพื้นที่เป็นติวเตอร์ซึ่งคุณมีพื้นที่เหลือเฟือที่จะช่วยเหลือ ฉันอาจมีวิธีที่แตกต่างกันในการช่วยให้พวกเขาทราบว่าเหตุใดรหัสของพวกเขาจึงไม่ทำงาน หากพวกเขาได้รับมันฉันอาจให้คำแนะนำและพยายามช่วยเหลือพวกเขา แต่ถ้าพวกเขาอยู่ในตอนท้ายของเชือกพร้อมที่จะท้อถอยฉันมักจะให้คำตอบ freebie สองสามครั้งแล้วลองถามคำถามอย่างน้อยพวกเขาเช่น "คุณเข้าใจไหมว่าทำไมการเปลี่ยนแปลงนี้จึงแก้ไขโปรแกรมของคุณ ?"
สำหรับนักเรียนบางคนโดยเฉพาะอย่างยิ่งที่ไม่ใช่สาขาวิชาพวกเขาอาจไม่ได้ใส่ใจในรายละเอียดที่จำเป็นในการเป็นโปรแกรมเมอร์ที่ดีหรือสนุกกับการเขียนโปรแกรม คุณสามารถจับพวกเขาด้วยกลยุทธ์เพื่อช่วยให้พวกเขาใส่ใจกับรายละเอียดและมีระเบียบพอที่จะแก้ปัญหาแม้ว่ามันจะเป็นความท้าทายสำหรับพวกเขา
แต่ทางทวารหนักเกี่ยวกับนักเรียนเยื้องรหัสของพวกเขา "ถูกต้อง" - บ่อยครั้งที่โปรแกรมเมอร์เริ่มต้นสร้างปัญหากับการทำรังและขอบเขตเพราะพวกเขามีวงเล็บปีกกาที่ไม่ตรงกันหรือไม่ชอบเพราะพวกเขาไม่ใส่ใจกับสิ่งที่ซ้อนอยู่ภายใต้อะไร ให้รายการตรวจสอบ "สิ่งที่ต้องตรวจสอบเมื่อโปรแกรมของคุณจะไม่คอมไพล์" เช่นเยื้องรหัสทั้งหมดอย่างถูกต้องและตรวจสอบให้แน่ใจว่าวงเล็บปีกกาตรงกันตรวจสอบให้แน่ใจว่าทุกบรรทัดลงท้ายด้วยเครื่องหมายอัฒภาคโดยเฉพาะรอบ ๆ หมายเลขบรรทัด ขึ้น ฯลฯ
สอนพวกเขาให้รวบรวมเร็วและรวบรวมบ่อย เขียนรหัสโครงกระดูกขั้นต่ำ (พูดสวัสดีโลก) รวบรวม / ทดสอบ เพิ่มสองสามบรรทัดรวบรวมอีกครั้ง การหาข้อผิดพลาดง่ายขึ้นถ้าคุณดูที่การเปลี่ยนแปลงเล็ก ๆ เท่านั้นไม่ใช่ที่ฝากใหญ่
ช่วยให้พวกเขาเรียนรู้วิธีการแบ่งปัญหาออกเป็นปัญหาที่แก้ไขได้น้อยลง นี่คือสิ่งเดียวกันกับที่เราทำในฐานะโปรแกรมเมอร์มืออาชีพในการแก้ปัญหาที่ยากขึ้นมากที่เราไม่รู้ว่าจะแก้ปัญหาอย่างไร คุณแยกมันออกเป็นชิ้น ๆ จนกว่าคุณจะได้สิ่งที่คุณรู้วิธีแก้ปัญหาหรือสามารถทำวิจัยเพื่อเรียนรู้วิธีแก้ปัญหา "คุณจะต้องทำตามขั้นตอนอะไรบ้างเพื่อไปหาทางออกในการทำงาน" ก่อนอื่นคุณต้องมีรหัสโครงกระดูก (สวัสดีชาวโลก) คุณรู้วิธีการทำเช่นนั้น? ใช่เยี่ยมมากดังนั้นเมื่อเราพูดจบคุณสามารถเริ่มต้นด้วยการทำเช่นนั้น! จากนั้นจะต้องอ่านไฟล์เป็นอินพุต คุณจำได้ไหมว่าอ่านในบทที่ 4? ไม่จริงเหรอ? ทำไมคุณไม่ลองดูที่หลังจากที่คุณสวัสดีโลกวิ่งและดูว่าคุณสามารถทำงานได้ไกลแค่ไหนแล้วโทรหาฉันและฉัน ' จะช่วยให้คุณมากขึ้นเมื่อคุณติดอยู่ที่ สองสามครั้งแรกคุณอาจต้องทำรายการหมายเลขสำหรับขั้นตอนที่จำเป็นในการแก้ปัญหาเพื่อให้พวกเขาสามารถเรียนรู้จากตัวอย่างวิธีแยกย่อยปัญหา
หากพวกเขามีเนื้อหาบางส่วน แต่ไม่ใช่ทั้งหมดในชั้นเรียนกระตุ้นให้พวกเขาถามคำถามในชั้นเรียนเพราะเก้าครั้งจากสิบพวกเขาไม่ใช่นักเรียนคนเดียวที่ไม่เข้าใจและศาสตราจารย์อาจทำสิ่งที่สำคัญกว่า
หากพวกเขาใช้เวลา "ชั่วโมง" จ้องมองที่จุดบกพร่องหนึ่งจุด แต่ไม่ได้คิดออกมันเป็นเรื่องเสียเวลาพวกเขาไม่ได้เรียนรู้อะไรมากมาย บ่อยครั้งที่ข้อบกพร่องเป็นปัญหาเชิงลึกและเป็นเรื่องของการหาข้อมูลเชิงลึกที่ถูกต้องเพื่อแก้ไขปัญหาและพวกเขาอาจไม่มีความสามารถพิเศษสำหรับปัญหาประเภทนั้น แนะนำวิธีการทั่วไปอื่น ๆ เมื่อพวกเขาติดขัด: ถามเพื่อนอีกคนในชั้นเรียนเพื่อขอความช่วยเหลือ (ทำความรู้จักกับเพื่อนร่วมชั้นบางคนถ้าจำเป็นต้องทำ) เริ่มทำการบ้านก่อนเวลาเพื่อให้พวกเขามีเวลาหยุดและต่อมาเข้ามา ห้องติวติวเตอร์และถามคำถามในเวลาทำการหรือไปที่สำนักงานของอาจารย์ หากพวกเขาคุ้นเคยกับการยัดเยียดซึ่งใช้งานได้ดีกับหัวข้อการท่องจำพวกเขาจะประสบความยุ่งยากเมื่อพวกเขา ต้องเผชิญกับการเขียนโปรแกรมซึ่งเกี่ยวกับการแก้ปัญหามากกว่าการท่องจำ แสดงวิธีการค้นหาตัวอย่างของไวยากรณ์จากตำราเรียนสแต็คโอเวอร์โฟลว์ ฯลฯ กระตุ้นให้พวกเขาโพสต์คำถามบนฟอรัมคำถามในชั้นเรียนส่วนตัวหากมี
สอนพวกเขาถึงวิธีการ จำกัด ให้รหัสหยุดทำงาน ใส่ความคิดเห็นออกจนกว่าคุณจะกลับไปที่สิ่งที่ทำงานแล้วค่อย ๆ เพิ่มสิ่งต่าง ๆ กลับเข้าไปจนกระทั่งคุณได้รับ segfault นั้นอีกครั้ง
ความคิดเหล่านี้มากมายอาจกลายเป็นเอกสารประกอบคำบรรยายหากพวกเขาคิดมาก กลยุทธ์มักจะเป็นอาจารย์ส่วนหนึ่งกล่อม - พวกเขาใช้เวลาของพวกเขาในไวยากรณ์ความหมายของวิธีการเขียนลูป, อาร์เรย์, i / o ฯลฯ แต่ใช้เวลาไม่พอ "ฉันจะทำอย่างไรเมื่อฉันลอง เพื่อเรียกใช้รหัสของฉันและมันก็ไม่ได้รวบรวมหรือเกิดปัญหากับฉัน "
เมื่อพูดถึงสิ่งที่เป็นแนวคิดโดยเฉพาะอย่างยิ่งปัจจัยพื้นฐานเช่น "ตัวแปรคืออะไร" หรือ "ลูปคืออะไร" ไม่เข้าใจที่จะป้องกันไม่ให้พวกเขาสามารถติดตามส่วนที่เหลือของหลักสูตร ในหลักสูตรที่เน้นการบรรยายอาจารย์อาจไม่มีเวลาตอบคำถามทุกข้อหรือช่วยให้หลอดไฟดับลงสำหรับนักเรียนทุกคน และนั่นเป็นส่วนหนึ่งของสาเหตุที่ผู้สอนมีความสำคัญต่อการเรียนรู้การเขียนโปรแกรม พวกเขาอาจต้องการคำแนะนำเป็นรายบุคคลพร้อมการเปรียบเทียบเพิ่มเติมเพื่อสร้างหัวข้อเฉพาะ
เนื่องจากคุณกำลังสอนใน C ++ ฉันจะจินตนาการว่าชั้นเรียนเป็นหัวข้อที่เป็นนามธรรมซึ่งนักเรียนบางคนพยายามที่จะ "รับ" บ่อยครั้งที่สิ่งที่เป็นนามธรรมของคลาสนั้นถูกสอนด้วยตัวอย่างที่สอดคล้องกับวัตถุในโลกแห่งความจริงแบบสุ่มบางอย่างเช่น "เครื่องเอทีเอ็ม" และการเปรียบเทียบกับวัตถุในโลกแห่งความเป็นจริง คุณอาจมีตัวแปรในการติดตามจำนวนเงินที่อยู่ภายในคุณมีวิธีการซึ่งเป็นเหมือนกฎที่บอกเครื่อง ATM วิธีการตอบสนองต่อเงื่อนไขบางอย่าง ฯลฯ บางครั้งการเปรียบเทียบก็คือ "แท่ง" สำหรับบุคคลใดบุคคลหนึ่ง และนักเรียนคนอื่น ๆ เข้าใจดีกว่าคนอื่น
เมื่อใดก็ตามที่เป็นไปได้วาดภาพสำหรับพวกเขา เช่นเดียวกับแผนภาพลำดับของสิ่งที่เกิดขึ้นเมื่อเวลาผ่านไปเพื่อช่วยให้พวกเขาเห็นภาพรวมของรหัสที่เขียน ผู้ใช้คลิกปุ่มนี้ จากนั้นโปรแกรมควรตอบกลับโดยทำ x, y และ z วาดอาเรย์เหมือนพวงของกล่อง PO ณ ที่ทำการไปรษณีย์ซึ่งแต่ละหมายเลขสามารถเก็บได้เพียงหนึ่งหมายเลขและพอยน์เตอร์เช่นลูกศรชี้ไปที่ "ที่อยู่" ที่ด้านหน้าของกล่อง เป็นต้น