มีการมอบหมายที่ดีอะไรบ้างสำหรับหลักสูตรเบื้องต้นเพื่อเข้าถึงนักเรียนปัจจุบัน [ปิด]


25

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

เพื่อให้แนวคิดเกี่ยวกับขอบเขตของคุณนี่คือสิ่งที่ครอบคลุม :

  • การมอบหมายต้องเป็นภาษาจาวาโดยใช้ไลบรารีภายนอกบางอันสามารถทำได้ แต่จะต้องเป็น API แบบง่ายและไม่ใช่เฟรมเวิร์กแบบเต็ม
  • ตัวแปรดั้งเดิมและสตริง
  • อินพุตและเอาต์พุตคอนโซล
  • if, for,while
  • ตัวดำเนินการทางคณิตศาสตร์และตรรกะ
  • กราฟิกที่เรียบง่ายด้วยการวาดเส้นและรูปร่าง
  • วิธีการคงที่
  • อาร์เรย์หนึ่งมิติ

นักเรียนจะไม่เข้าสู่หัวข้อขั้นสูง (เช่นไม่มีการเรียกซ้ำไม่มีการเน้นเรื่องมรดก) ดังนั้นฉันไม่ได้มองหาโครงการที่ซับซ้อน: "ให้พวกเขาเขียนคอมไพเลอร์ C ฉันทำมันเมื่อฉันอายุ 5 ขวบและเป็นวิธีเดียวที่ฉันเรียนรู้!"

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

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

  • นักเรียนสามารถเขียนรุ่นคอนโซลของ"Star Wars ชื่อ" เครื่องกำเนิดไฟฟ้า นี่คือการอ่าน Strings และการใช้อย่างมีประสิทธิภาพsubstringแต่ฉันคิดว่ามันสนุก การเปลี่ยนแปลงที่คล้ายกันจะเป็นโปรแกรม " Mad Libs " ฉันใช้สิ่งนี้เมื่อห้าปีที่แล้วและบางทีมันอาจ "ค้าง" แล้ว

  • นักเรียนสามารถวาดรูปหลายเหลี่ยมปกติและสร้างรูปทรงเกลียวที่น่าสนใจ

  • นอกจากนี้ยังไม่ใช่คำถามที่จะใช้คลาสแอนิเมชั่นง่ายๆกับรหัสส่วนใหญ่ที่ให้มา และถ้าคุณรู้จักบริการ Twitter หรือ Facebook ที่สามารถเข้าถึงได้ด้วย API ที่เรียบง่ายฉันก็อยากจะรู้

โปรดทราบว่าคำถามนี้แตกต่างจากคำถาม "คำถามท้าทาย Java สำหรับผู้เริ่มต้น " ฉันไม่ได้มองหาความท้าทายต่อ se เพียงแค่น่าสนใจ ฉันคิดว่าถ้านักเรียนทำงานบางอย่างที่พวกเขาสามารถตอบได้อย่างง่ายดายว่า "ทำไมทุกคนจะต้องการโปรแกรมนั้น" แล้วพวกเขาจะเรียนรู้ได้ดีขึ้น

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

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


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

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

คำตอบ:


9

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

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

เช่น

You have 10 guesses left.      * * * E * * T
What is your next guess?

จากนั้นแนะนำลูปเพื่อเอาองค์ประกอบการตัดและวางออกจากรหัสเมื่อผู้เดา 10 คนนับถอยหลัง ... สร้างขึ้นเพื่อให้มีกราฟิคไลน์

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


ความคิดที่ดี! ฉันคิดว่าฉันจะใช้อันนี้ :-) BTW คุณหมายถึง "level of tition"? ในขณะที่ค่าใช้จ่าย?
Macneil

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

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

7

เสียงเหมือนเกมผจญภัยข้อความอาจเป็นงานที่ยอดเยี่ยมสักแห่งในช่วงกลางภาค ฉันมีคลาสที่ทำให้เราเล่น Colossal Cave Adventure แล้วสร้างเกมของเราเอง มันสอนโครงสร้างพื้นฐานจำนวนมากให้ฉันตั้งแต่ต้นและมันสนุกมากที่จะทำให้ทุกคนเข้ามาได้


2
ฟังดูสนุก แต่ให้เล็ก

7

วิธีการเกี่ยวกับการใช้ปัญหาหนึ่งหรือสองอย่างจากhttp://projecteuler.net/ สิ่งเหล่านี้น่าสนใจมากและเราสามารถเห็นประโยชน์ของการเขียนโปรแกรมเพื่อแก้ปัญหาเหล่านั้น มีขนาดเล็กพอที่สามารถทำได้หลายอย่างตามที่มอบหมาย อีกอันที่ฉันชอบใช้คือการหาคำที่ $ 1.00 ตัวอักษรแต่ละตัวใน alaphabet นั้นมีค่าตำแหน่งใน pennies เช่น a = 1, b = 2 คุณสามารถค้นหาคำได้ $ 1.00 ดอลลาร์กี่คำ สิ่งนี้อาจเกี่ยวข้องกับไฟล์ i / o (การอ่านในพจนานุกรม), อาร์เรย์, ลูปเป็นต้น


1
+1 สำหรับ Project Euler เด็ดมาก แม้ว่าปัญหาบางอย่างจะก้าวหน้าไปเล็กน้อย แต่ก็มีหลายอย่างที่ไม่ได้เป็นเช่นนั้น
Macneil

ฉันรัก Project Euler แต่ฉันไม่แน่ใจว่ามันจะสนุกไหมถ้าฉันต้องฝึกที่มหาวิทยาลัย
Oliver Weiler

ไม่มีไม่ได้ทั้งหมดของพวกเขาจะสนุก แต่บางอย่างที่ฉันคิดว่าเราจะเป็นทางเลือกที่ดี
Gratzy

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

  • ให้ไฟล์ที่เข้ารหัสซึ่งเข้ารหัสด้วยกฎที่สามารถย้อนกลับได้บางข้อและขอให้พวกเขาเขียนโปรแกรมถอดรหัส (ทำให้ง่ายพอ) สิ่งนี้ให้สิ่งจูงใจพิเศษเพื่อแก้ไขเนื่องจากความลึกลับเกี่ยวกับเนื้อหาของข้อความ

  • ฉันไม่รู้ว่าทำไมคุณครอบคลุมเฉพาะอาเรย์หนึ่งมิติและไม่ใช่เมทริกซ์ (จริง ๆ แล้วมันไม่ได้มีความแตกต่างกันทั้งหมด) แต่ถ้าคุณยินดีที่จะรวมสิ่งนั้นไว้ในเกมแห่งชีวิตของ Jon Conway ก็ค่อนข้างง่ายเช่นกัน สนุก.

  • เกมอย่างหมากรุกต้องการความคิด แต่ยังอยู่ในขอบเขตของสิ่งที่มือใหม่สามารถทำได้โดยมีการสืบทอดน้อยที่สุด (ชิ้นส่วนที่เจาะจงได้รับมรดกจากชิ้นส่วนทั่วไปและกระดานถือวัตถุประเภทชิ้น) และอาร์เรย์ 2 มิติ (คุณสามารถเลือกที่จะ ทำให้มันง่ายขึ้นโดยไม่ต้องใช้สิ่งที่ยากเช่นการตรวจจับ stelmate หรือการไม่สามารถโจมตีปราสาทได้หากชิ้นส่วนศัตรูกำลังคุกคามเส้นทางของปราสาท)


+1 สำหรับคำแนะนำเกม Monopoly สำหรับอาร์เรย์ 2 มิติฉันเห็นด้วยอย่างยิ่งว่าพวกเขาสามารถนำไปสู่การมอบหมายที่น่าสนใจมาก อย่างไรก็ตามมีข้อ จำกัด ที่ทำให้อาร์เรย์ 2 มิตินั้นไม่สามารถใช้งานได้ (เช่นตำราเรียนได้รับการแก้ไขแล้วและปัญหาทางการเมืองของคณะอื่น ๆ อีกหลายพันล้านเรื่องที่ฉันจะไม่ทำให้คุณเบื่อด้วยและฉันจะไม่เบื่อคุณ สิ่งที่อยู่นอกเหนือการควบคุมของฉัน)
Macneil

อาเราต้องสร้างเกมผูกขาดในโรงเรียน และเครื่องเข้ารหัสเข้ารหัส
Carra

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

4

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

โครงการเหล่านี้ทั้งหมดทำด้วยฟังก์ชั่น & i / o:

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

  • เบรกเกอร์รหัส คุณรู้ว่าการเข้ารหัสซีซาร์เลือกตัวอักษรและเพิ่มมูลค่าของตัวอักษรให้กับตัวอักษรแต่ละคำของคุณ เช่น key = 'a' และ the word = "secret" นี่จะกลายเป็น "tfdsfq" สามารถทำได้โดยการอ่านไฟล์แล้วสร้างตารางความถี่สำหรับแต่ละตัวอักษร คุณอ่านเป็นภาษาอังกฤษด้วย จากนั้นคุณจะเห็นได้ว่าตัวอักษรที่ใช้มากที่สุดในตัวอักษรภาษาอังกฤษคือ 'e' และแก้ไขมัน เพิ่มความท้าทาย: ใช้คีย์เช่น 'ab' ซึ่งเป็นหน้าที่ของเรา การออกกำลังกายที่ดีที่จะเข้าใจ i / o

  • ผู้ผลิตบาร์โค้ด โปรแกรมนี้เป็นแบบฝึกหัดในการเรียกห้องสมุดภายนอก คุณได้รับรหัสและต้องสร้างภาพด้วยบาร์โค้ด ห้องสมุดภายนอกถูกใช้เพื่อสร้างภาพ

  • อัลกอริทึมทางพันธุกรรมเพื่อแก้ปัญหาพนักงานขายที่เดินทาง นี่เป็นโครงการขั้นสูงสำหรับ 2 หรือ 3 คน คุณเริ่มต้นด้วยเส้นทางแบบสุ่มและเส้นทางนี้จะปรับปรุงตลอดเวลาจนกว่าคุณจะมี "เส้นทางที่ดี" โบนัส: สร้างแผนที่พร้อมเส้นทาง

  • โปรแกรมบีบอัด lzw ที่ใช้งานได้ นี่เป็นโครงการ 4 คนสุดท้าย พารามิเตอร์ค่อนข้างง่าย "Zip file.txt file.zip" หรืออะไรที่คล้ายกัน โครงการที่สนุกสนาน แต่การเข้าใจอัลกอริทึม lzw ใช้เวลาสักครู่


น่าสนใจมาก ... คุณไปโรงเรียนอะไร? ทั้งหมดนี้เป็นปีแรกของคุณหรือเปล่า
Macneil

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

3

เครื่องคิดเลขจะเป็นโครงการที่ดีสำหรับการเรียนรู้การดำเนินการทางคณิตศาสตร์ คุณสามารถทำให้มันเป็นแอพคอนโซลที่ใช้เมนูหรือ GUI สี่ฟังก์ชั่น (+, -, *, /) เพื่อเริ่มต้นด้วยจุดพิเศษสำหรับสิ่งที่ซับซ้อนมากขึ้นเช่นรากที่สอง ฯลฯ

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

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

หวังว่าสิ่งเหล่านี้จะให้ความคิดกับคุณ! ขอให้โชคดีในชั้นเรียนของคุณ


1
+1 ขอบคุณ! นี่เป็นคำตอบที่ฉันต้องการ
Macneil

เกมสนุกกว่าเครื่องคิดเลข

3

สิ่งหนึ่งที่น่าสนใจและยอดเยี่ยมสำหรับงานที่ได้รับมอบหมายคือการเขียนการนำGame of Lifeของ Conway ไปใช้ในแบบ 2D มันแมปได้ดีกับโครงสร้างข้อมูลของอาเรย์พื้นฐานมันสนุกและทำได้ง่าย แต่ก็ยังต้องใช้ความคิด มันอาจเปิดใจอยากรู้อยากเห็นและการทดลองเช่นกัน (AI)

นักเรียนระดับสูงสามารถเขียนเวอร์ชันในแบบ 3 มิติเพื่อเพิ่มคะแนน


3

ฉันจะวนซ้ำกับตัวสร้างจำนวนเฉพาะ

การมอบหมาย

  1. พิมพ์ช่วงเวลาตั้งแต่ 1 ถึง 100
  2. พิมพ์จำนวนเฉพาะจากอินพุต 1 ถึงอินพุต 2
  3. บันทึกและพิมพ์ข้อมูลประสิทธิภาพของรุ่นที่ดีเยี่ยม
  4. กราฟข้อมูลประสิทธิภาพของรุ่นที่ดีเยี่ยม
  5. ทำซ้ำการเพิ่มประสิทธิภาพอัลกอริทึมของตัวสร้างจำนวนเฉพาะ

2

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

ฉันพยายามอยู่ห่างจาก console I / O ให้นานที่สุด เป็นแนวคิดต่างประเทศสำหรับนักเรียนหลายคนในทุกวันนี้เนื่องจากพวกเขาเติบโตมาพร้อมกับ GUI ดังนั้นฉันจึงมุ่งเน้นไปที่ MVC ทำให้แบบจำลองถูกต้องและเพิ่ม GUI หลังจากที่พวกเขาได้ทดสอบแบบจำลองของพวกเขาเท่านั้น การทดสอบจะทำผ่านการทดสอบหน่วยอัตโนมัติและผัดรหัสในBlueJ ไม่public static void main()จำเป็นเลยทีเดียว


น่าสนใจ บางทีคุณอาจจะเขียนประสบการณ์ของคุณในบทความหรือรายการบล็อก?

2

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

  • เกมผจญภัยง่ายๆเช่น Wumpus
  • การจำลองการกีฬา (ข้อความเท่านั้นกราฟิกสำหรับความทะเยอทะยาน) สำหรับเบสบอลหรืออะไรก็ตาม
  • วิทยาศาสตร์เหมือนกับการจำลองวิวัฒนาการทางพันธุกรรม
  • กีฬา / วิทยาศาสตร์เช่นการแข่งเรือใบ
  • การเงินเช่นมีธนาคารของคุณเองสำหรับคนในครัวเรือนของคุณหรือการลงทุน
  • เพลงหรือเกมกราฟิกง่าย ๆ

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

โดยปกติแล้วโปรเจ็กต์ของพวกเขาจะเป็นโค้ดสองสามร้อยบรรทัดและพวกเขาก็สนุกกับมันเสมอ

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


1

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


1

ในหลักสูตรแนะนำของฉันมีสามโครงการที่ติดอยู่กับฉัน

เขียนโปรแกรมเพื่อแสดงภาพวาดMondrianสุ่ม
เขียนส่วนแรกของเกม BrickBreaker รับลูกบอลกระดอนไปมาภายในบริเวณที่กำหนด
เขียนเกมผจญภัยแบบข้อความ

จากคลาสอัลกอริทึมของฉัน
ใช้สามเหลี่ยม Serpinski

โครงการทั้งสี่นี้ทำให้ฉันมีความเข้าใจที่ดีเกี่ยวกับการประมวลผลสตริงการสุ่มกราฟิกการเรียกซ้ำและการเคลื่อนไหว


1

นักเรียนทุกคนในวิชาเอก CS หรือไม่ ฉันเดาว่าคงไม่ใช่ ฉันจะมากับงานที่ได้รับการปรับให้เหมาะกับวิชาเอกในชั้น

ตัวอย่าง:

  • นักเรียนศิลปะสามารถเขียนโปรแกรมที่ใช้ขนาดของผืนผ้าใบและเฟรมเพื่อคำนวณจำนวนผ้าใบที่จะใช้ในการวาดภาพไม่ได้ (เนื่องจากการห่อและเย็บผ้าใบรอบ ๆ เฟรม)

  • นักเรียน Econ สามารถคำนวณดอกเบี้ยทบต้นในรายการ

  • นักเรียนคณิตศาสตร์สามารถเลือกปัญหาจาก Project Euler


1
ชั้นเรียนสำหรับวิชาเอกและวิชาเอกที่ไม่ใช่ หลายคนอยู่ในชีววิทยา
Macneil

น่าสนใจ แนวคิด: ค้นหาภาพสิ่งมีชีวิตเซลล์เดียวว่ายน้ำในน้ำ แปลงภาพเป็น B&W เขียนโปรแกรมเพื่อนับจำนวนสิ่งมีชีวิตในน้ำ สิ่งนี้จะนำเสนอหัวข้อสนทนาที่น่าสนใจทุกประเภท: การตรวจจับขอบ, การแยกความแตกต่างระหว่างน้ำกับที่ไม่ใช่น้ำ, การกำจัดฝุ่น ฯลฯ
Barry Brown

สำหรับไบโอสิ่งที่เห็นได้ชัดเจนก็คือออโตมาตาเซลลูล่าร์ คุณสามารถปล้นได้ที่bioquest.orgเพื่อรับแนวคิดบางอย่าง
Kavet Kerek

1

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

นอกจากนี้ยังมีการประมวลผลซึ่งฉันเพิ่งค้นพบซึ่ง แต่เดิมได้รับการออกแบบมาเพื่อสอนการเขียนโปรแกรมและยังอยู่ในจาวา


0

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

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


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

1
มันควรจะเป็นปัญหาที่พวกเขาไม่สามารถทำได้ (ง่าย ๆ ) ในเครื่องคิดเลข TI-83 ของพวกเขา อีกเครื่องคิดเลขภาษีจะไม่ตัดมัน
Barry Brown

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

1
ไม่โครงการเหล่านี้น่าสนุก โครงการสนุก ๆ อาจเป็นเรื่องยาก ความจริงแล้วโครงการสัตว์เลี้ยงส่วนใหญ่ของฉันนั้นยากกว่าการเขียนโปรแกรมทุกวันที่ฉันทำงาน
Carra

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

0

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


0

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

บางอย่างที่ทำให้ฉันประทับใจ:

  1. Roshambo AIs (ใช้ในหลักสูตร AI ที่ UOA) ฟังก์ชั่นง่าย ๆ ที่คืนค่า -1, 0, 1 สำหรับหินกระดาษกรรไกร AIs เป็นหลุมต่อกันและกันและสถิติจะถูกรวบรวมโดยโปรแกรมอรรถประโยชน์รวม การมอบหมายนี้ทำให้ผู้คนประหลาดใจอย่างต่อเนื่องในหลายวิธีที่ปฏิบัติได้ (และจำนวนการปฏิบัติที่ไม่ดี)

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

  3. ปัญหาการจำลองที่ปรากฏเล็กน้อย การจำลองการจราจร (ยานพาหนะ, เครือข่าย), การจำลองรถแข่ง (ซ้าย, ขวา, เร็วกว่า, ช้ากว่า), การจำลองร้านขายของชำ

  4. ปัญหาเครือข่าย (จุดอ่อนที่สำคัญในผู้สำเร็จการศึกษาที่ฉันได้ทำงานด้วยในช่วงสองสามปีที่ผ่านมา) ปัญหาเครือข่ายเพียร์กับอุปกรณ์พกพายกตัวอย่างเช่นพิสูจน์ความซับซ้อนของปัญหาการซิงโครไนซ์, การอัพเดตเพียร์, ความน่าเชื่อถือเพียร์ ฯลฯ

  5. ภาษาเล็ก ๆ น้อย ๆ (จุดอ่อนอื่นในการศึกษาล่าสุด) พัฒนาภาษาเล็ก ๆ น้อย ๆ สำหรับเกม AI แบบง่าย ๆ (ตัวตรวจสอบ, roshambo, รถถัง, CSS mojo, บอท Twitter) การคิดเกี่ยวกับแนวคิดของการออกแบบการตีความและการกระทำทางภาษาเป็นสิ่งสำคัญ


กระดาษร็อคและกรรไกร AIs ทำความรู้จักกับผลลัพธ์หรือดูว่าประวัติศาสตร์คืออะไร
Macneil

ใช่ประวัติมีให้บริการผ่านอาร์เรย์ในตัวอย่าง C (แต่มันจะนำไปใช้อย่างเท่าเทียมกันกับ Java, Ruby, ฯลฯ ) ตรวจสอบหน้าการแข่งขันดั้งเดิม: webdocs.cs.ualberta.ca/~darse/rsbpc.html
Bruce Alderson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.