วิธีที่ดีที่สุดในการสอนผู้เริ่มต้นเรียนโปรแกรม? [ปิด]


324

คำถามเดิม

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

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

ภาษาที่เราใช้งานคือPythonแต่ยินดีให้คำแนะนำในทุกภาษา


วิธีช่วยเหลือ

หากคุณมีสิ่งที่ดีโปรดเพิ่มคำตอบต่อไปนี้ใน:

  • แบบฝึกหัดเริ่มต้นและแนวคิดโครงงาน
  • แหล่งข้อมูลสำหรับการสอนผู้เริ่มต้น
  • Screencasts / บล็อกโพสต์ / e-books ฟรี
  • พิมพ์หนังสือที่ดีสำหรับผู้เริ่มต้น

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


แหล่งข้อมูลออนไลน์สำหรับการสอนผู้เริ่มต้น:


หนังสือแนะนำสำหรับผู้เริ่มต้นสอน


ฉันไม่เข้าใจว่าทำไมจึงควรปิด มีผู้ใช้อย่างน้อย 295 คนที่พบคำถามนี้ (และคำตอบ 92 ข้อ) เพื่อเป็นประโยชน์มากพอที่จะโหวตให้กับพวกเขาโดย 290 คนคิดว่าเป็นหนึ่งในรายการโปรดของพวกเขา คำถามส่งผลให้มีการรวมทรัพยากรการสอนที่มีประโยชน์มาก มันไม่ได้ส่งผลให้เกิด 'ข้อโต้แย้ง' หรือ 'การอภิปราย' แต่มีคำแนะนำที่ดีมากมายเกี่ยวกับวิธีการจัดการกับ 'ปัจจัยมนุษย์' ที่ยากในการเขียนโปรแกรม ฉันคิดว่าการปิดคำถามเช่นนี้เป็นสิ่งที่แย่และเป็นอันตรายต่อชุมชน StackOverflow
Justin Standard

@JustinStandard คุณคิดว่าจะแปลงการแก้ไขของคุณเป็นคำตอบสำหรับความคิดเห็นต่างๆหรือไม่? เช่นที่นี่ , ที่นี่และที่นี่
เจสัน Plank

คำตอบ:


118

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

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

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

บางโครงการ:

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

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

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

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

บางโครงการ:

  • เกมเพชฌฆาต
  • การทดลองกับหุ่นยนต์ ( VexและMindstormsเป็นตัวเลือก)

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

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

บางโครงการ:

  • Tetris
  • โปรแกรมบล็อกไฟล์ข้อความ
  • การทำงานของหุ่นยนต์ขั้นสูงเพิ่มเติม

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

นี่เป็นคำตอบที่ดีมาก ข้อคัดค้านอย่างเดียวของฉันคือ Tetris ไม่ใช่ตัวเลือกที่ดีสำหรับเกมแรกหรือเกมที่สอง ในระดับนั้นการตรวจจับการชนอาจเป็นปัญหายาก - มันยอดเยี่ยมหากพวกเขาสามารถแก้ไขได้
phkahler

@phkahler ฉันเห็นประเด็นของคุณ แต่ฉันเชื่อว่า Tetris นั้นน่าสนใจเพราะมีการใช้งาน OSS / การสาธิตมากมายคุณสามารถวิเคราะห์ก่อนและหลังการเขียนโค้ดของคุณ
Eric Haskins

30

คุณอาจลองใช้อลิซ มันเป็นโปรแกรม 3 มิติที่ออกแบบมาเพื่อใช้ในชั้นเรียนการเขียนโปรแกรมเบื้องต้น

อุปสรรคที่ใหญ่ที่สุดสองประการสำหรับโปรแกรมเมอร์ใหม่มักจะ:

  • ข้อผิดพลาดทางไวยากรณ์
  • แรงจูงใจ (เขียนบางสิ่งที่มีความหมายและสนุกมากกว่าที่คิดไว้)

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

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

คำเตือน: ฉันทำงานกับอลิซ


ฉันรู้เรื่องนี้ผ่านการบรรยายครั้งสุดท้ายของ Randy Pausch เหตุผลที่อยู่เบื้องหลังโครงการนี้ทำให้ฉันนึก
Jesvin Jose

28

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

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

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

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

XKCDอธิบายถึงพลังของ Python ได้ดีขึ้นเล็กน้อย: "คุณกำลังบิน!  "งูใหญ่"

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

จากนั้นมาตรฐานคือ C หรือ C ++ อิสรภาพในภาษาเหล่านี้มีอยู่จริง ตอนนี้คุณรับผิดชอบการจัดการหน่วยความจำของคุณเอง ไม่มีการรวบรวมขยะเพื่อช่วยคุณ นี่คือที่ที่คุณสอนอัลกอริทึมขั้นสูงจริงๆ (เช่นการผสานและการเรียงลำดับด่วน) ที่นี่คุณจะได้เรียนรู้ว่าเหตุใด "การแบ่งกลุ่มผิด" เป็นคำสาป นี่คือที่ที่คุณดาวน์โหลดซอร์สโค้ดของเคอร์เนล Linux และจ้องเข้าไปที่ Abyss เริ่มต้นด้วยการเขียนบัฟเฟอร์แบบวงกลมและสแต็กสำหรับการจัดการสตริง จากนั้นก็เดินไปเรื่อย ๆ


ที่จริงแล้วคุณไม่ได้จัดการหน่วยความจำในซีอย่างเต็มที่คุณจะต้องมี malloc ฯลฯ และจัดการให้คุณฟรี คุณเพียงแค่ต้องบอกระบบเมื่อคุณต้องการหน่วยความจำเพิ่มเติมและเมื่อคุณทำกับหน่วยความจำที่คุณใช้
compman

15

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

แก้ไข [ Justin Standard ]

หลักสูตรนี้ใช้หนังสือออนไลน์ฟรีเล่มนี้: วิธีคิดเหมือนนักวิทยาศาสตร์คอมพิวเตอร์
ฉันพบว่ามันมีประโยชน์ทีเดียว


12

Python package VPython - การเขียนโปรแกรม 3 มิติสำหรับสามัญสามัญ ( วิดีโอสอน )

ตัวอย่างรหัส:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

VPython กำยำบอล http://vpython.org/bounce.gif


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

12

เริ่มต้นด้วย Turtle graphics ใน Python

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

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

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



11

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

หากแรงผลักดันนั้นมีอยู่ทุกอย่างก็เป็นเพียงรายละเอียดเล็กน้อย


ฉันคิดว่าวิธีที่ดีที่สุดในการเรียนรู้วิชาเทคนิคคือการเรียนรู้เพื่อแก้ปัญหาเล็ก ๆ น้อย ๆ ที่เพิ่มขึ้น
cbednarski




5

นี่คือหนังสือที่ยอดเยี่ยมที่น้องชายของฉันเคยเรียน:

http://pine.fm/LearnToProgram/

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


4

หากเขาสนใจรายละเอียดเล็ก ๆ น้อย ๆ ก็ไม่ใช่ชิ้นส่วนที่ดีใช่มั้ย ด้วยการใช้ python คุณได้ตัด GUI ออกไปแล้วเพื่อให้เกิดความสับสน ทำไมไม่เลือกโครงการเกมหรือบางสิ่งและนำไปใช้ เกมทายหมายเลข hi-lo แบบคลาสสิกสามารถนำไปใช้งานได้ง่ายจากบรรทัดคำสั่งในโค้ด 20-30 บรรทัด (ขึ้นอยู่กับภาษาของหลักสูตร) ​​และให้ตัวแปรเงื่อนไขลูปและอินพุตของผู้ใช้



4

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

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

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

แก้ไข: [Justin Standard]

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


ใช่ฉันรู้ว่าโพสต์ใดที่คุณกำลังพูดถึงจัสติน การอ่านทำให้ฉันนึกถึงสิ่งที่ฉันเรียนรู้ส่วนใหญ่มาจากการพยายามและเรียนรู้จากความผิดพลาดของฉันเอง ฉันไม่สามารถเน้นความสำคัญของการเรียนรู้ด้วยการทำ!
Esteban Araya

2

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

หลังจาก Hello World ไปที่การสร้างตัวแปรพื้นฐานคณิตศาสตร์และตรรกะบูลีนและคำสั่ง if / else หากคุณมีตำราการเขียนโปรแกรมเล่มเก่าของคุณลองดูตัวอย่างต้น ๆ และลองให้เขาอ่าน อย่าพยายามแนะนำมากเกินไปในคราวเดียวมิเช่นนั้นจะทำให้คุณสับสนและสับสน


2

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


2

ฉันเคยสอนการเขียนโปรแกรมและพี่ชายของคุณมีข้อได้เปรียบหลักอย่างหนึ่งกับนักเรียนส่วนใหญ่ที่เขาต้องการเรียน :)

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

โดยส่วนตัวฉันคิดว่า Python และ Ruby จะสร้างภาษาแรกที่ยอดเยี่ยม

แก้ไข: รายการการมอบหมายการเขียนโปรแกรมเริ่มต้นปรากฏขึ้นข้ามคืนอาจเป็นสิ่งที่คุณกำลังมองหา


2

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

ฉันฉันชอบที่จะเริ่มต้นด้วยภาพใหญ่และเจาะลึกเข้าไปใน nitty-gritty สิ่งแรกที่ฉันอยากรู้ก็คือมันเข้ากันได้ดีกับทุกอย่างแล้ว Object-oriented gobbledygook จากนั้นเกี่ยวกับคลาส & อินสแตนซ์และอื่น ๆ ฉันชอบที่จะรู้แนวคิดพื้นฐานและทฤษฎีก่อนที่ฉันจะเรียนรู้ไวยากรณ์ ฉันมีข้อได้เปรียบเล็กน้อยเพราะฉันเขียนบางเกมใน BASIC เมื่อ 20 ปีก่อน แต่ไม่มีอะไรมากตั้งแต่นั้นมา

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

กฎทองที่นี่คือการแสดงออกถึงสไตล์การเอนของนักเรียนของคุณ


2

หากพี่ชายของคุณสามารถเข้าถึง iTunes เขาสามารถดาวน์โหลดวิดีโอการบรรยายวิชาวิทยาการคอมพิวเตอร์เบื้องต้นที่ Richard Buckland มอบให้ที่ University of New South Wales เขาเป็นผู้สอนที่มีส่วนร่วมและครอบคลุมพื้นฐานการคำนวณและภาษา C หากไม่มีสิ่งใดบอกให้พี่ชายของคุณเล่น vids ในพื้นหลังและแนวคิดบางอย่างอาจจมลงไปในการดูดซึม :)

COMP1917 การคำนวณที่สูงกว่า - 2008 เซสชัน 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

หากลิงก์ไม่ทำงานนี่เป็นเส้นทาง:

หน้าแรก -> iTunes U -> วิศวกรรม -> COMP1917 การคำนวณที่สูงกว่า - 2008 เซสชัน 1


2

มีwikibook ที่ค่อนข้างดีสำหรับการเรียนรู้ภาษาไพธ อน

ฉันไม่ทราบว่า wikibooks นั้นใช้กับภาษาอื่น ๆ ได้อย่างไร แต่ฉันเรียนรู้งูใหญ่จาก wikibook อย่างที่เคยเป็นในเดือนกุมภาพันธ์ 2550

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



2

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

บางโครงการที่เป็นไปได้ (ไม่มีคำสั่งพิเศษ):

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

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

    นี่คือตัวอย่างของตัวแปลงแบบขยายที่มีแนวคิดเดียวกัน: http://pastebin.org/6541

  • จัดทำโปรแกรมที่รับข้อมูลตัวเลขและแสดงเกรดตัวอักษรที่จะแปล มันจะจบลงด้วยการประเมินอินพุตกับ if และ elif statement เพื่อหาตำแหน่งที่เหมาะสม

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

  • รับอินพุตของจำนวนเพนนี (สันนิษฐาน) จำนวนมากและแปลงเป็นสกุลเงินที่ใหญ่กว่า ตัวอย่างเช่น 149 pennies = 1 ดอลลาร์, 1 ใน 4, 2 dimes และ 4 pennies

  • สร้างเครื่องมือจัดการรายการอย่างง่าย สามารถเพิ่ม / ลบรายการและเพิ่ม / ลบรายการในรายการเหล่านั้น นี่คือตัวอย่างของผู้จัดการรายการคริสต์มาส: http://pastebin.org/6543

  • สร้างโปรแกรมที่จะสร้างและทดสอบว่าหมายเลขที่ป้อนเป็นรูปสี่เหลี่ยมเวทย์มนตร์ (พร้อมด้วยอาร์เรย์ 2 มิติ) นี่คือตัวอย่างโค้ด แต่ควรพิมพ์สแควร์ในแต่ละขั้นตอนเพื่อแสดงว่าผู้ใช้อยู่ที่ไหนในแง่ของการสร้างสี่เหลี่ยม: http://pastebin.org/6544

ฉันขอแนะนำให้ทำบางสิ่งบางอย่างกับ xTurtle หรือโมดูลกราฟิกอื่นเพื่อผสมสิ่งต่าง ๆ และป้องกันไม่ให้เขาเบื่อ แน่นอนว่านี่คือการเขียนโปรแกรมฝึกหัดอย่างมากและไม่ใช่สคริปต์ที่ผู้คนจำนวนมากจะใช้กับงูหลาม แต่ตัวอย่างที่ฉันให้มานั้นค่อนข้างตรงจากตอนที่ฉันเรียนรู้ผ่านงูหลามและมันดีมากสำหรับฉัน โชคดี!



2

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



2

หลังจากผ่านหนังสืออิเล็กทรอนิกส์ฟรีสองสามเล่มฉันพบว่าหนังสือที่ดีที่สุดสำหรับการเรียนรู้โปรแกรมคือ Head First Programming ที่ตีพิมพ์โดย O'Reily Press มันใช้ Python เป็นภาษาและให้โปรแกรมของคุณทำงานตั้งแต่เริ่มต้น พวกเขาทั้งหมดน่าสนใจยิ่งกว่า 'Hello World' มันคุ้มค่ากับเงินที่ฉันใช้ไปกับมันและเนื่องจากมันออกมาไม่นานคุณอาจจะสามารถหาสำเนาที่ใช้แล้วราคาถูกกว่าใน eBay หรือ Amazon


1

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


1

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


1

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

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

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


1

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


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