Cách tốt nhất để dạy một người mới bắt đầu lập trình? [đóng cửa]


324

Câu hỏi gốc

Tôi hiện đang tham gia vào việc dạy anh trai tôi lập trình. Anh ấy là một người mới bắt đầu, nhưng rất thông minh. (Và anh ấy thực sự muốn học). Tôi đã nhận thấy rằng một số phiên của chúng tôi đã bị sa lầy vào các chi tiết nhỏ và tôi không cảm thấy mình đã rất ngăn nắp. ( Nhưng câu trả lời cho bài đăng này đã giúp rất nhiều. )

Tôi có thể làm gì tốt hơn để dạy anh ta hiệu quả? Có một trật tự logic mà tôi có thể sử dụng để chạy qua khái niệm theo khái niệm? Có những phức tạp tôi nên tránh cho đến sau này?

Ngôn ngữ chúng tôi đang làm việc là Python , nhưng lời khuyên trong bất kỳ ngôn ngữ nào đều được chào đón.


Làm thế nào để giúp đỡ

Nếu bạn có những cái tốt xin vui lòng thêm vào sau đây trong câu trả lời của bạn:

  • Bài tập cho người mới bắt đầu và ý tưởng dự án
  • Tài nguyên cho người mới bắt đầu giảng dạy
  • Screencasts / bài đăng trên blog / sách điện tử miễn phí
  • In sách tốt cho người mới bắt đầu

Vui lòng mô tả tài nguyên với một liên kết đến nó để tôi có thể xem qua. Tôi muốn mọi người biết rằng tôi chắc chắn đã sử dụng một số ý tưởng này. Bài nộp của bạn sẽ được tổng hợp trong bài này.


Tài nguyên trực tuyến cho người mới bắt đầu giảng dạy:


Sách in được đề xuất cho người mới bắt đầu giảng dạy


Tôi không hiểu tại sao điều này nên được đóng lại. Ít nhất 295 người dùng đã tìm thấy câu hỏi này (và 92 câu trả lời) đủ hữu ích để bình chọn nó, với 290 người cho đến nay coi đây là một trong những mục yêu thích của họ. Câu hỏi dẫn đến một tập hợp các tài nguyên giảng dạy rất hữu ích. Nó không thực sự dẫn đến 'tranh luận' hay 'tranh luận', nhưng thực sự có rất nhiều lời khuyên tuyệt vời về cách giải quyết một trong những 'yếu tố con người' khó khăn trong lập trình. Tôi nghĩ rằng việc đóng một câu hỏi như thế này là hà khắc và gây bất lợi cho cộng đồng StackOverflow.
Justin Standard

@JustinSt Chuẩn Bạn đã xem xét chuyển đổi các chỉnh sửa của mình thành một số câu trả lời cho các bình luận chưa? Ví dụ ở đây , đâyđây
Jason Plank

Câu trả lời:


118

Tôi đã phải làm việc với một số lập trình viên mới bắt đầu (chưa bao giờ viết một dòng mã) và tôi sẽ làm một hội thảo sau giờ học với các học sinh trung học vào mùa thu này. Đây là điều gần nhất mà tôi có được tài liệu. Đây vẫn là một công việc đang tiến triển, nhưng tôi hy vọng nó có ích.

1) FizzBuzz. Bắt đầu với các chương trình dòng lệnh. Bạn có thể viết một số trò chơi hoặc công cụ thú vị rất nhanh chóng và bạn học tất cả các tính năng ngôn ngữ rất nhanh mà không cần phải học các công cụ GUI trước. Những ứng dụng ban đầu này đủ đơn giản để bạn không cần sử dụng bất kỳ công cụ gỡ lỗi thực tế nào để làm cho chúng hoạt động.

Nếu không có gì khác, những thứ như FizzBuzz là những dự án tốt. Một vài ứng dụng đầu tiên của bạn không cần phải xử lý DB, hệ thống tệp, cấu hình, ect. Đây là những khái niệm chỉ gây nhầm lẫn cho hầu hết mọi người và khi bạn chỉ học cú pháp và các tính năng khung cơ bản, bạn thực sự không cần phức tạp hơn.

Một số dự án:

  • Chào thế giới!
  • Lấy năm sinh của tôi và tính tuổi của tôi (chỉ (bây giờ - sau đó) không sửa tháng). (toán đơn giản, đầu vào, đầu ra)
  • Yêu cầu một hướng (Lên, xuống, trái, phải), sau đó cho người dùng biết số phận của họ (rơi vào một cái lỗ, tìm một chiếc bánh, ect). (Logic Boolean)
  • FizzBuzz, nhưng đếm một lần mỗi giây. (Vòng lặp, bộ hẹn giờ và logic hơn)
  • Tùy thuộc vào độ tuổi của họ, một số người thực sự thích một ứng dụng gọi người dùng là một sự xúc phạm ngẫu nhiên ở một khoảng thời gian nào đó. (Vòng lặp, mảng, bộ hẹn giờ và ngẫu nhiên nếu bạn tạo khoảng thời gian ngẫu nhiên)

2) Dự án đơn giản Một khi họ nắm bắt tốt các tính năng ngôn ngữ, bạn có thể bắt đầu một dự án (các trò chơi đơn giản, vui nhộn hoạt động tốt.). Bạn nên cố gắng để dự án đầu tiên có thể hoàn thành trong vòng 6-12 giờ. Đừng dành thời gian để kiến ​​trúc sư sớm. Hãy để họ thiết kế nó ngay cả khi nó hút. Nếu nó sụp đổ, hãy nói về những gì đã xảy ra và tại sao nó thất bại, sau đó chọn một chủ đề khác và bắt đầu lại.

Đây là nơi bạn bắt đầu giới thiệu khả năng sửa lỗi của các công cụ của mình. Ngay cả khi bạn có thể nhìn thấy vấn đề bằng cách đọc mã, bạn nên dạy họ cách sử dụng các công cụ, và sau đó chỉ cho họ cách bạn có thể nhìn thấy nó. Điều đó phục vụ mục đích kép là dạy các công cụ sửa lỗi và dạy cách ID lỗi mà không có công cụ.

Một khi, hoặc nếu, dự án có chức năng, bạn có thể sử dụng nó để giới thiệu các công cụ tái cấu trúc. Thật tốt nếu bạn có thể mở rộng dự án với một số tính năng đơn giản mà bạn không bao giờ lên kế hoạch. Điều này thường có nghĩa là tái cấu trúc và gỡ lỗi đáng kể, vì rất ít người viết mã thậm chí chỉ bằng một nửa lần đầu tiên.

Một số dự án:

  • Trò chơi Hangman
  • Thử nghiệm với robot ( VexMindstorms là các tùy chọn)

3) Dự án thực sự Bắt đầu một dự án thực sự có thể mất một thời gian. Sử dụng kiểm soát nguồn thích hợp và tạo một điểm để có một lịch trình. Chạy dự án này giống như một dự án thực sự, nếu không có gì khác thì kinh nghiệm tốt của nó phải đối phó với các công cụ.

Rõ ràng bạn cần điều chỉnh điều này cho mỗi người. Điều quan trọng nhất tôi đã tìm thấy là làm cho ngay cả những ứng dụng đơn giản đầu tiên áp dụng cho những gì người đó quan tâm.

Một số dự án:

  • Tetris
  • Tập tin văn bản dựa trên công cụ blog
  • Công việc chế tạo robot tiên tiến hơn

Đây là một hướng dẫn tuyệt vời. Cá nhân, tôi không thể mã hóa ra khỏi túi giấy (thực sự tôi muốn thấy ai đó làm điều đó trong cuộc sống thực), vì vậy đây có vẻ là một hướng dẫn tốt để dạy bản thân tôi.
keyofnight

Đây là một câu trả lời rất tốt. Phản đối duy nhất của tôi là Tetris không phải là một lựa chọn tốt cho trò chơi thứ nhất hoặc thứ hai. Ở cấp độ đó, việc phát hiện va chạm có thể là một vấn đề khó khăn - thật tuyệt nếu họ có thể giải quyết nó.
phkahler

@phkahler Tôi thấy quan điểm của bạn, nhưng tôi tin Tetris rất thú vị bởi vì có rất nhiều triển khai OSS / demo bạn có thể phân tích trước và sau khi viết mã.
Eric Haskins

30

Bạn có thể thử sử dụng Alice . Đây là một chương trình 3D được thiết kế để sử dụng trong các lớp lập trình giới thiệu.

Hai trở ngại lớn nhất đối với các lập trình viên mới thường là:

  • lỗi cú pháp
  • động lực (viết một cái gì đó có ý nghĩa và vui vẻ hơn là cố gắng)

Alice sử dụng giao diện kéo và thả để xây dựng chương trình, tránh khả năng xảy ra lỗi cú pháp. Alice cho phép bạn xây dựng các thế giới 3D và có các ký tự và hoạt hình 3D (đơn giản), điều này thường thú vị hơn nhiều so với việc thực hiện các danh sách được liên kết.

Các lập trình viên có kinh nghiệm có thể nhìn xuống Alice như một món đồ chơi và chế giễu việc kéo và thả các dòng mã, nhưng nghiên cứu cho thấy phương pháp này hiệu quả.

Tuyên bố miễn trừ trách nhiệm: Tôi đã làm việc với Alice.


Tôi biết đến nó qua bài giảng cuối cùng của Randy Pausch. Lý do đằng sau dự án này đã thổi vào tâm trí của tôi.
Jesvin Jose

28

Tôi đề nghị Logo (còn gọi là rùa) để có được các khái niệm cơ bản. Nó cung cấp một hộp cát tốt với phản hồi đồ họa ngay lập tức và bạn có thể hạ cấp các vòng lặp, biến, hàm, điều kiện, v.v. Trang này cung cấp một hướng dẫn tuyệt vời.

Sau Logo, di chuyển đến Python hoặc Ruby. Tôi khuyên dùng Python, vì nó dựa trên ABC, được phát minh cho mục đích dạy lập trình.

Khi dạy lập trình, tôi phải đề xuất thứ hai cho EHaskins về các dự án đơn giản và sau đó là các dự án phức tạp. Cách tốt nhất để học là bắt đầu với một kết quả xác định và một cột mốc có thể đo lường được. Nó giữ cho các bài học tập trung, cho phép học sinh xây dựng các kỹ năng và sau đó xây dựng các kỹ năng đó, và cung cấp cho học sinh một cái gì đó để thể hiện với bạn bè. Đừng đánh giá thấp sức mạnh của việc có thứ gì đó để thể hiện cho công việc của một người.

Về mặt lý thuyết, bạn có thể gắn bó với Python, vì Python có thể làm hầu hết mọi thứ. Đó là một phương tiện tốt để dạy lập trình hướng đối tượng và (hầu hết) các thuật toán. Bạn có thể chạy Python trong chế độ tương tác như một dòng lệnh để cảm nhận về cách thức hoạt động của nó hoặc chạy toàn bộ tập lệnh cùng một lúc. Bạn có thể chạy các tập lệnh của bạn được diễn giải một cách nhanh chóng hoặc biên dịch chúng thành các tệp nhị phân. Có hàng ngàn mô-đun để mở rộng chức năng. Bạn có thể tạo một máy tính đồ họa giống như một máy tính đi kèm với Windows hoặc bạn có thể tạo một máy khách IRC hoặc bất cứ thứ gì khác.

XKCD mô tả sức mạnh của Python tốt hơn một chút: "Bạn đang bay! Làm thế nào?"  "Con trăn!"

Sau đó, bạn có thể chuyển sang C # hoặc Java, mặc dù họ không cung cấp nhiều mà Python chưa có. Lợi ích của việc này là họ sử dụng cú pháp kiểu C, mà nhiều ngôn ngữ (tôi dám nói nhất?) Sử dụng. Bạn không cần phải lo lắng về việc quản lý bộ nhớ, nhưng bạn có thể quen với việc có một chút tự do hơn và ít nắm giữ hơn từ trình thông dịch ngôn ngữ. Python thực thi khoảng trắng và thụt lề, đó là phần lớn thời gian nhưng không phải lúc nào cũng vậy. C # và Java cho phép bạn quản lý khoảng trắng của riêng mình trong khi vẫn được gõ mạnh.

Từ đó, tiêu chuẩn là C hoặc C ++. Sự tự do trong các ngôn ngữ này là gần như tồn tại. Bây giờ bạn chịu trách nhiệm quản lý bộ nhớ của riêng bạn. Không có bộ sưu tập rác để giúp bạn. Đây là nơi bạn dạy các thuật toán thực sự tiên tiến (như mergesort và quicksort). Đây là nơi bạn tìm hiểu tại sao "lỗi phân khúc" là một từ chửi rủa. Đây là nơi bạn tải mã nguồn của nhân Linux và nhìn vào Vực thẳm. Bắt đầu bằng cách viết một bộ đệm tròn và một ngăn xếp để thao tác chuỗi. Sau đó làm việc theo cách của bạn lên.


Trên thực tế, bạn không quản lý hoàn toàn bộ nhớ trong C. Bạn có được malloc, v.v. và quản lý miễn phí nó cho bạn. Bạn chỉ cần nói với hệ thống khi bạn muốn có thêm bộ nhớ và khi bạn hoàn thành bộ nhớ mà bạn đang sử dụng.
soạn nhạc


12

Gói Python VPython - Lập trình 3D cho Người bình thường ( video hướng dẫn ).

Mã ví dụ:

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

Bóng nảy VPython http://vpython.org/bounce.gif


Tốt cho chỉ sau khi họ đã học được các khái niệm cơ bản. Tạo hình ảnh là một cách tuyệt vời để thúc đẩy mọi người học lập trình.
phkahler

12

Bắt đầu với đồ họa Rùa trong Python.

Tôi sẽ sử dụng đồ họa rùa tiêu chuẩn với Python. Nó trực quan, đơn giản và bạn có thể sử dụng môi trường này để giới thiệu nhiều khái niệm lập trình như lặp lại và gọi thủ tục trước khi đi quá xa vào cú pháp. Hãy xem xét phiên tương tác sau trong 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

Khi cố gắng hoàn thành hai nhiệm vụ cuối cùng, họ sẽ có nhiều lần thất bại, nhưng những thất bại sẽ rất thú vị và họ sẽ học hỏi nhanh chóng khi họ cố gắng tìm ra lý do tại sao nó không rút ra những gì họ mong đợi.



11

Điều quan trọng là người trong câu hỏi cần phải có một số vấn đề mà họ muốn giải quyết. Nếu bạn không có chương trình mà bạn muốn viết (và một cái gì đó hợp lý và được xác định rõ ràng, không phải là "Tôi muốn viết Quake tiếp theo!") Thì bạn không thể học lập trình, bởi vì bạn không có gì để thúc đẩy bạn . Ý tôi là, bạn có thể đọc một cuốn sách và hiểu sơ bộ về cú pháp và ngữ nghĩa của ngôn ngữ, nhưng cho đến khi bạn có một chương trình mà bạn muốn viết, bạn sẽ không bao giờ nắm được tầm ma.

Nếu động lực đó tồn tại thì mọi thứ khác chỉ là chi tiết nhỏ.


Cách tốt nhất để học bất kỳ môn học kỹ thuật nào, tôi nghĩ, là học cách giải quyết các vấn đề nhỏ, gia tăng.
cbednarski




5

Đây là một cuốn sách tuyệt vời mà các em trai tôi đã từng học:

http://pine.fm/LearnToProgram/

Tất nhiên, điều quan trọng nhất là bắt đầu một chương trình thực sự, hữu ích của một số loại NGAY LẬP TỨC sau khi hoàn thành cuốn sách.


4

Nếu anh ấy quan tâm, không phải là chi tiết nhỏ những phần tốt? Sử dụng python, bạn đã cắt GUI để tránh sự nhầm lẫn. Tại sao không chọn một dự án, một trò chơi hoặc một cái gì đó, và thực hiện nó. Trò chơi đoán số hi-lo cổ điển có thể được thực hiện đơn giản từ dòng lệnh trong 20-30 dòng mã (tùy thuộc vào ngôn ngữ của khóa học) và cung cấp cho bạn các biến, điều kiện, vòng lặp và đầu vào của người dùng.



4

Tôi chỉ để anh ta viết hàng tấn mã. Hãy để anh ấy lái xe trong tất cả mọi thứ bạn làm, và chỉ cần có sẵn để trả lời câu hỏi.

Dù bạn có tin hay không, sau vài tháng viết hàng tấn mã tào lao, anh ta sẽ bắt đầu có ý tưởng và bắt đầu viết các chương trình tốt hơn. Tại thời điểm đó, bạn có thể bị sa lầy vào các chi tiết (bộ nhớ, v.v.), và cũng có thể nói về các nguyên tắc thiết kế chung.

Tôi đã nghe nói rằng điều tách biệt các nghệ sĩ vĩ đại với những người tầm thường, là mỗi khi họ luyện tập, họ sẽ cải thiện một thứ gì đó, dù nhỏ đến đâu. Hãy để anh trai bạn luyện tập, và anh ấy sẽ tiến bộ mỗi khi ngồi xuống bàn phím.

Chỉnh sửa: [Tiêu chuẩn Justin]

Esteban, điều này làm tôi nhớ đến một gần đây bài kinh dị mã hóa , và tôi làm nghĩ bạn là đúng. Nhưng tôi nghĩ vẫn đáng để tìm phương pháp để hướng dẫn thực hành của mình. Không có câu hỏi, tôi muốn anh ấy viết nhiều mã như anh ấy biết làm thế nào. Đó là một lý do tôi yêu cầu các dự án mẫu.


Vâng, tôi biết bài đăng nào bạn đang nói về Justin. Đọc nó nhắc nhở tôi rằng hầu hết những điều tôi học được đến từ việc cố gắng và học hỏi từ những sai lầm của chính mình. Tôi thực sự không thể nhấn mạnh đủ tầm quan trọng của việc học bằng cách làm!
Esteban Araya

2

Trước hết, hãy bắt đầu như mọi người khác: với chương trình Hello World . Thật đơn giản, và nó mang lại cho họ cảm giác cơ bản về bố cục của một chương trình. Hãy thử và nhớ lại khi bạn lần đầu tiên lập trình, và một số khái niệm khó khăn như thế nào - bắt đầu đơn giản.

Sau Hello World, chuyển sang tạo một số biến cơ bản, số học, sau đó vào logic boolean và các câu lệnh if / other. Nếu bạn đã có một trong những cuốn sách giáo khoa lập trình cũ của mình, hãy xem một số ví dụ ban đầu và để anh ấy chạy qua chúng. Chỉ cần đừng cố gắng giới thiệu quá nhiều tất cả cùng một lúc, nếu không nó sẽ quá tải và khó hiểu.


2

Một điều bạn nên rất lưu tâm trong khi dạy anh trai lập trình là để anh ấy không phụ thuộc quá nhiều vào bạn. Thường thì khi tôi thấy mình giúp đỡ người khác, họ sẽ bắt đầu nghĩ về tôi như cuốn sách trả lời cho tất cả các câu hỏi của họ và thay vì thử nghiệm để tìm câu trả lời họ chỉ cần hỏi tôi. Thường thì giáo viên giỏi nhất là thử nghiệm và mỗi khi anh trai bạn có một câu hỏi như "Điều gì sẽ xảy ra nếu tôi thêm 2 vào một chuỗi?" bạn nên nói với anh ấy để thử nó và xem cho chính mình. Ngoài ra tôi đã nhận thấy rằng khi tôi không thể có được một khái niệm thông qua ai đó, sẽ giúp xem một số mã mẫu nơi chúng ta có thể xem xét từng phân đoạn riêng lẻ và giải thích từng mảnh một. Là một lưu ý phụ những người mới lập trình thường gặp rắc rối với ý tưởng lập trình hướng đối tượng,


2

Tôi đã từng dạy lập trình và anh trai của bạn có một lợi thế chính so với hầu hết các sinh viên của tôi mà anh ấy muốn học :)

Nếu bạn quyết định đồng hành cùng C, một người bạn có một trang web có các loại chương trình được sử dụng từ các thế hệ cũ, hãy nhớ là loại cơ bản. Sự phức tạp hơn trong số họ sử dụng các câu hỏi loại bỏ việc sử dụng chúng như một công cụ hỗ trợ giảng dạy phần nào nhưng một số trong số đó là những điều nhỏ bé và bạn có thể học được tải mà không được dạy.

Cá nhân tôi nghĩ Python và Ruby sẽ tạo ra những ngôn ngữ đầu tiên tuyệt vời.

EDIT: danh sách các bài tập lập trình cho người mới bắt đầu xuất hiện qua đêm có thể chỉ là những gì bạn đang tìm kiếm.


2

Nó thực sự phụ thuộc vào cách học của anh trai bạn. Nhiều người học nhanh hơn bằng cách làm bẩn tay & chỉ cần tham gia vào nó, kết tinh các khái niệm và bức tranh lớn khi họ tiến bộ và xây dựng kiến ​​thức.

Tôi, tôi thích bắt đầu với bức tranh lớn và đi sâu vào nitty-gritty. Điều đầu tiên tôi muốn biết là làm thế nào tất cả khớp với nhau sau đó là tất cả các gobbledygook hướng đối tượng, sau đó về các lớp học & trường hợp và vân vân. Tôi muốn biết các khái niệm cơ bản và một chút lý thuyết trước khi tôi học cú pháp. Tôi đã có một chút lợi thế vì tôi đã viết một số trò chơi trong BASIC 20 năm trước nhưng không có gì nhiều kể từ đó.

Có lẽ rất hữu ích để che giấu một quy trình sản xuất bằng cách bắt đầu với một tuyên bố sứ mệnh tổng thể, sau đó là một kế hoạch và / hoặc sơ đồ, sau đó xây dựng thành một số mã giả (nghiêng về cú pháp cuối cùng bạn sẽ sử dụng) trước khi thực sự viết mã.

Nguyên tắc vàng ở đây là nói ra phong cách nghiêng của học sinh.


2

Nếu anh trai của bạn có quyền truy cập vào iTunes, anh ta có thể tải xuống các bài giảng video của khóa học khoa học máy tính giới thiệu do Richard Buckland tại Đại học New South Wales cung cấp. Anh ấy là một người hướng dẫn hấp dẫn và bao quát các nguyên tắc cơ bản của điện toán và ngôn ngữ C. Nếu không có gì khác, hãy nói với anh trai của bạn chơi các vids dưới nền và một số khái niệm có thể chìm trong sự thẩm thấu. :)

Comp1917 Máy tính cao hơn - Phiên 1 năm 2008 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Nếu liên kết không hoạt động, đây là một đường dẫn:

Trang chủ -> iTunes U -> Kỹ thuật -> Máy tính cao hơn COMP1917 - Phiên 1 năm 2008


2

có một wikibook khá tốt cho việc học trăn .

Tôi không biết wikibook dành cho các ngôn ngữ khác như thế nào, nhưng cá nhân tôi đã học được python từ wikibook như hồi tháng 2 năm 2007

ps - nếu bạn không quen thuộc với wikibook , về cơ bản, đây là phiên bản wikipedia của tác giả sách. thật khó để mô tả, nhưng nếu bạn xem một vài cuốn sách trên đó bạn sẽ thấy nó hoạt động như thế nào



2

Tôi nghĩ Python là một ý tưởng tuyệt vời. Tôi sẽ đưa cho anh ta một vài nhiệm vụ cơ bản để tự làm và nói với anh ta rằng bất kỳ ngõ cụt nào anh ta có thể được giải quyết bằng một chuyến đi đến google. Đối với tôi, ít nhất, tự mình giải quyết một vấn đề luôn khiến nó trở nên tốt hơn so với việc ai đó nói cho tôi giải pháp.

Một số dự án có thể (không theo thứ tự cụ thể):

  • Đồng xu giả lập lật. Hãy để người dùng nhập một số lượng thử nghiệm mong muốn cho việc lật đồng xu. Thực hiện nó và hiển thị kết quả cùng với tỷ lệ phần trăm cho đầu hoặc đuôi.

  • Tạo một bộ chuyển đổi nhiệt độ với một menu lấy đầu vào của người dùng để chọn loại chuyển đổi mà người dùng muốn thực hiện. Sau khi chọn chuyển đổi và thực hiện nó, nó sẽ trở về menu chính.

    Dưới đây là ví dụ về trình chuyển đổi mở rộng có cùng ý tưởng: http://pastebin.org/6541

  • Tạo một chương trình lấy đầu vào số và hiển thị loại chữ mà nó sẽ dịch sang. Cuối cùng, nó sẽ đánh giá đầu vào dựa trên các câu lệnh if và elif để tìm vị trí phù hợp.

  • Làm một bài kiểm tra đơn giản trải qua nhiều lựa chọn hoặc điền vào các câu hỏi trống. Cuối cùng, nó sẽ hiển thị như thế nào người dùng đã làm. Anh ta có thể chọn bất kỳ câu hỏi mà anh ta muốn.

  • Lấy đầu vào của một số đồng xu (có lẽ là lớn) và chuyển đổi nó thành mệnh giá lớn hơn. Ví dụ: 149 đồng xu = 1 đô la, 1 quý, 2 xu và 4 đồng xu.

  • Tạo một trình quản lý danh sách đơn giản. Có thể thêm / xóa danh sách và thêm / xóa các mục trong danh sách đó. Dưới đây là ví dụ về trình quản lý danh sách Giáng sinh: http://pastebin.org/6543

  • Tạo một chương trình sẽ xây dựng và sau đó kiểm tra xem các số đã nhập có tạo thành một hình vuông ma thuật (với một mảng 2D) hay không. Đây là một số mã mẫu, nhưng nó thực sự nên in ra hình vuông ở mỗi bước để cho biết người dùng đang ở đâu trong việc bắt nạt hình vuông: http://pastebin.org/6544

Tôi cũng sẽ đề nghị làm một số thứ với xTurtle hoặc một mô-đun đồ họa khác để trộn lẫn mọi thứ và giữ cho anh ta không bị nhàm chán. Tất nhiên, đây là chương trình thực hành rất nhiều và không phải là kịch bản mà nhiều người thực sự sẽ sử dụng python, nhưng các ví dụ tôi đưa ra được lấy trực tiếp từ khi tôi học qua python và nó rất hiệu quả với tôi. Chúc may mắn!


2

Chỉ cần làm cho nó vui vẻ!

Thật đáng kinh ngạc Scala có thể là dễ nhất nếu bạn thử Kojo


2

Nếu anh trai của bạn thích câu đố, tôi muốn giới thiệu Python Challenge . Tôi sẽ không sử dụng nó như một công cụ giảng dạy chính thức trong hướng dẫn 1 trên 1, nhưng đó là điều anh ấy có thể làm khi bạn không cùng nhau thử thách bản thân và vui chơi.



2

Sau khi xem qua một vài cuốn sách điện tử miễn phí, tôi tìm thấy cuốn sách tốt nhất để học lập trình là Lập trình đầu tiên được xuất bản bởi O'Reily Press. Nó sử dụng Python làm ngôn ngữ và cung cấp cho bạn các chương trình để làm việc ngay từ đầu. Tất cả đều thú vị hơn rằng 'Xin chào thế giới'. Nó rất xứng đáng với số tiền tôi đã bỏ ra cho nó, và vì nó đã được bán ra một chút, bạn có thể tìm thấy một bản sao được sử dụng rẻ hơn trên Ebay hoặc Amazon.


1

Nếu bạn muốn dạy những điều cơ bản về lập trình, mà không phải là ngôn ngữ cụ thể, có một ứng dụng có tên Scratch được tạo ra ở MIT. Nó được thiết kế để giúp mọi người phát triển các kỹ năng lập trình. Khi người dùng tạo dự án Scratch, họ học cách tạo điều kiện, vòng lặp, v.v. Ngoài ra còn có một cộng đồng các dự án đầu, hình thức mà dự án có thể được tải xuống - theo cách đó bạn có thể khám phá các chương trình của người khác và xem cách chúng được xây dựng.


1

Tôi nghĩ rằng một khi anh ấy có những điều cơ bản (biến, vòng lặp, v.v.), bạn nên cố gắng giúp anh ấy tìm ra thứ gì đó cụ thể mà anh ấy quan tâm và giúp anh ấy tìm hiểu những điều cần thiết để biến nó thành hiện thực. Tôi biết rằng tôi có khuynh hướng và động lực hơn nhiều để làm một cái gì đó nếu nó quan tâm đến tôi. Ngoài ra, hãy chắc chắn để cho anh ấy đấu tranh mặc dù một số vấn đề khó khăn hơn, không có gì thỏa mãn hơn khoảnh khắc bạn tự mình tìm ra.


1

Tôi đã được dạy bằng cách học cách giải quyết các vấn đề theo cách bất khả tri ngôn ngữ bằng cách sử dụng sơ đồ và PDL (Ngôn ngữ thiết kế chương trình). Sau một vài tuần, tôi đã học cách chuyển đổi PDL mà tôi đã viết thành ngôn ngữ. Tôi vui vì tôi đã học được cách đó bởi vì tôi đã dành phần lớn thời gian để lập trình, giải quyết các vấn đề mà không bị ràng buộc với một ngôn ngữ. Ngôn ngữ tôi sử dụng luôn là một chi tiết triển khai và không phải là một phần của thiết kế.

Phải giải quyết vấn đề bằng cách chia nhỏ nó thành các bước cơ bản là một kỹ năng quan trọng. Tôi nghĩ rằng đó là một trong những điều tách biệt những thứ không thể lập trình với những thứ không thể.

Theo như cách bạn giải quyết thứ tự các khái niệm của ngôn ngữ, tôi tin rằng cách dễ nhất là quyết định đó là có một dự án trong đầu và giải quyết các khái niệm khi cần thiết. Điều này cho phép bạn áp dụng chúng khi chúng cần thiết cho một cái gì đó mà bạn quan tâm. Khi học một ngôn ngữ, thật tốt khi có một vài dự án đơn giản và một vài dự án có độ phức tạp tiến bộ. Quyết định về những điều đó sẽ giúp bạn vạch ra các khái niệm cần thiết và thứ tự của chúng.


1

Tôi cũng khuyên bạn nên xem một số screencasts - chúng thường được tạo trong bối cảnh của một công nghệ cụ thể không phải là ngôn ngữ, mặc dù nếu có mã Python được hiển thị, điều đó sẽ làm :). Vấn đề là - chúng được tạo ra bởi một số lập trình viên giỏi và xem chương trình lập trình viên tốt như thế nào là một điều tốt. Bạn và anh trai của bạn cũng có thể thực hiện một số chương trình ngang hàng, đó có thể là một ý tưởng thậm chí còn tốt hơn. Đừng quên giải thích TẠI SAO bạn làm điều gì đó theo cách này chứ không phải theo cách đó. Tôi nghĩ cách tốt nhất để học lập trình là từ những ví dụ tốt và cố gắng không nhìn thấy những cái xấu.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.