Cara terbaik untuk mengajar pemula ke program? [Tutup]

324

Pertanyaan Asli

Saat ini saya terlibat dalam mengajar saudara lelaki saya untuk memprogram. Dia adalah pemula total, tetapi sangat cerdas. (Dan dia sebenarnya ingin belajar). Saya perhatikan bahwa beberapa sesi kami macet dalam detail-detail kecil, dan saya rasa saya tidak terlalu teratur. ( Tetapi jawaban untuk posting ini sangat membantu. )

Apa yang bisa saya lakukan lebih baik untuk mengajarinya secara efektif? Apakah ada urutan logis yang dapat saya gunakan untuk menjalankan konsep demi konsep? Apakah ada kerumitan yang harus saya hindari sampai nanti?

Bahasa yang kami gunakan adalah Python , tetapi saran dalam bahasa apa pun diterima.


Cara Membantu

Jika Anda memiliki yang bagus, harap tambahkan yang berikut dalam jawaban Anda:

  • Latihan Pemula dan Gagasan Proyek
  • Sumber daya untuk mengajar pemula
  • Screencasts / posting blog / e-book gratis
  • Cetak buku yang bagus untuk pemula

Tolong jelaskan sumber daya dengan tautan ke sana sehingga saya bisa melihatnya. Saya ingin semua orang tahu bahwa saya pasti telah menggunakan beberapa ide ini. Kiriman Anda akan dikumpulkan di pos ini.


Sumber Daya Online untuk mengajar pemula:


Buku Cetak yang direkomendasikan untuk mengajar pemula

Justin Standard
sumber
Saya tidak mengerti mengapa ini harus ditutup. Setidaknya 295 pengguna telah menemukan pertanyaan ini (dan 92 jawaban) cukup membantu untuk memutakhirkannya, dan 290 menganggapnya sebagai salah satu favorit mereka. Pertanyaan itu menghasilkan kumpulan sumber daya pengajaran yang sangat berguna. Itu tidak benar-benar menghasilkan 'argumen' atau 'debat', tetapi benar-benar banyak nasihat bagus tentang bagaimana mengatasi salah satu 'faktor manusia' yang sulit dalam pemrograman. Saya pikir menutup pertanyaan seperti ini kejam dan merugikan komunitas StackOverflow.
Justin Standard
@JustinStandard Sudahkah Anda mempertimbangkan untuk mengubah suntingan Anda menjadi beberapa jawaban atas komentar? Misalnya di sini , di sini , dan di sini
Jason Plank

Jawaban:

118

Saya harus bekerja dengan beberapa programmer pemula (tidak pernah menulis baris kode), dan saya akan melakukan lokakarya setelah sekolah dengan siswa sekolah menengah musim gugur ini. Ini adalah hal terdekat yang saya miliki dengan dokumentasi. Ini masih dalam proses, tapi saya harap ini membantu.

1) FizzBuzz. Mulai dengan program baris perintah. Anda dapat menulis beberapa permainan menyenangkan, atau alat, dengan sangat cepat, dan Anda mempelajari semua fitur bahasa dengan sangat cepat tanpa harus mempelajari alat GUI terlebih dahulu. Aplikasi awal ini harus cukup sederhana sehingga Anda tidak perlu menggunakan alat debugging nyata untuk membuatnya bekerja.

Jika tidak ada hal lain seperti FizzBuzz adalah proyek yang bagus. Beberapa aplikasi pertama Anda tidak harus berurusan dengan DB, sistem file, konfigurasi, dll. Ini adalah konsep yang hanya membingungkan kebanyakan orang, dan ketika Anda baru belajar sintaks dan fitur kerangka dasar Anda benar-benar tidak memerlukan lebih banyak kompleksitas.

Beberapa proyek:

  • Halo Dunia!
  • Ambil tahun kelahiran saya, dan hitung usia saya (hanya (sekarang - kemudian) tanpa koreksi bulan). (matematika sederhana, input, output)
  • Mintalah arah (Atas, bawah, kiri, kanan), lalu beri tahu nasib mereka kepada pengguna (jatuh dalam lubang, temukan kue, dll.). (Logika Boolean)
  • FizzBuzz, tetapi hitung sekali setiap detik. (Loop, timer, dan lebih banyak logika)
  • Tergantung pada usia mereka, beberapa sangat suka aplikasi yang menyebut pengguna penghinaan acak pada beberapa interval. (Loop, array, timer, dan acak jika Anda membuat interval secara acak)

2) Proyek Sederhana Setelah mereka memiliki pemahaman yang baik tentang fitur bahasa, Anda dapat memulai suatu proyek (permainan sederhana dan menyenangkan bekerja dengan baik.). Anda harus mencoba agar proyek pertama dapat diselesaikan dalam waktu 6-12 jam. Jangan menghabiskan waktu untuk merancangnya lebih awal. Biarkan mereka mendesainnya meskipun itu menyebalkan. Jika berantakan, bicarakan apa yang terjadi dan mengapa gagal, lalu pilih topik lain dan mulai lagi.

Di sinilah Anda mulai memperkenalkan kemampuan debugging alat Anda. Bahkan jika Anda dapat melihat masalah dengan membaca kode Anda harus mengajari mereka cara menggunakan alat, dan kemudian menunjukkan kepada mereka bagaimana Anda bisa melihatnya. Itu melayani tujuan ganda yaitu mengajarkan alat debugging dan mengajarkan cara mengidentifikasi kesalahan tanpa alat.

Sekali, atau jika, proyek menjadi fungsional, Anda dapat menggunakannya untuk memperkenalkan alat refactoring. Ada baiknya jika Anda kemudian dapat memperluas proyek dengan beberapa fitur sederhana yang tidak pernah Anda rencanakan. Ini biasanya berarti refactoring dan debugging yang signifikan, karena sangat sedikit orang yang bahkan menulis setengah kode yang layak untuk pertama kalinya.

Beberapa proyek:

  • Game Hangman
  • Bereksperimen dengan robotika ( Vex dan Mindstorms adalah opsi)

3) Proyek Nyata Mulai proyek nyata yang mungkin memakan waktu. Gunakan kontrol sumber yang tepat, dan buat titik untuk memiliki jadwal. Jalankan proyek ini seperti proyek nyata, jika tidak ada pengalaman yang baik harus berurusan dengan alat.

Jelas Anda perlu menyesuaikan ini untuk setiap orang. Hal paling penting yang saya temukan adalah membuat aplikasi sederhana yang pertama berlaku untuk apa yang orang itu sukai.

Beberapa proyek:

  • Tetris
  • Mesin blog berbasis file teks
  • Robotika yang lebih canggih bekerja
Eric Haskins
sumber
Ini adalah panduan yang bagus. Secara pribadi, saya tidak bisa membuat kode jalan keluar dari kantong kertas (sebenarnya saya ingin melihat seseorang melakukannya di kehidupan nyata), jadi ini sepertinya panduan yang baik untuk mengajar diri saya juga.
keyofnight
Ini jawaban yang sangat bagus. Satu-satunya keberatan saya adalah bahwa Tetris bukan pilihan yang baik untuk pertandingan pertama atau kedua. Pada tingkat itu, deteksi tabrakan bisa menjadi masalah yang sulit - bagus jika mereka bisa menyelesaikannya
phkahler
@ phkahler Saya mengerti maksud Anda, tetapi saya percaya Tetris menarik karena ada begitu banyak implementasi OSS / demo yang dapat Anda analisis sebelum dan sesudah menulis kode Anda.
Eric Haskins
30

Anda bisa mencoba menggunakan Alice . Ini adalah program 3D yang dirancang untuk digunakan dalam kelas pemrograman pengantar.

Dua kendala terbesar bagi programmer baru sering:

  • kesalahan sintaksis
  • motivasi (menulis sesuatu yang bermakna dan menyenangkan daripada dibuat-buat)

Alice menggunakan antarmuka seret dan lepas untuk membuat program, menghindari kemungkinan kesalahan sintaksis. Alice memungkinkan Anda membangun dunia 3D dan memiliki kontrol kode (sederhana) karakter 3D dan animasi, yang biasanya jauh lebih menarik daripada menerapkan daftar tertaut.

Pemrogram berpengalaman mungkin memandang rendah Alice sebagai mainan dan mencemooh menyeret dan menjatuhkan baris kode, tetapi penelitian menunjukkan bahwa pendekatan ini bekerja.

Penafian: Saya bekerja pada Alice.

Jason Pratt
sumber
Saya mengetahuinya melalui kuliah terakhir Randy Pausch. Alasan di balik proyek ini mengejutkan saya.
Jesvin Jose
28

Saya merekomendasikan Logo (alias kura-kura) untuk mendapatkan konsep dasar. Ini memberikan kotak pasir yang baik dengan umpan balik grafis langsung, dan Anda dapat mendemostrasikan loop, variabel, fungsi, kondisional, dll. Halaman ini menyediakan tutorial yang sangat baik.

Setelah Logo, pindah ke Python atau Ruby. Saya merekomendasikan Python, karena didasarkan pada ABC, yang diciptakan untuk tujuan pengajaran pemrograman.

Saat mengajar pemrograman, saya harus mendukung saran EHaskins tentang proyek sederhana dan kemudian proyek kompleks. Cara terbaik untuk belajar adalah memulai dengan hasil yang pasti dan tonggak yang dapat diukur. Itu membuat pelajaran tetap fokus, memungkinkan siswa untuk membangun keterampilan dan kemudian membangun keterampilan itu, dan memberi siswa sesuatu untuk dipamerkan kepada teman-teman. Jangan meremehkan kekuatan memiliki sesuatu untuk ditampilkan untuk pekerjaan seseorang.

Secara teoritis, Anda dapat tetap menggunakan Python, karena Python dapat melakukan hampir semua hal. Ini adalah kendaraan yang bagus untuk mengajarkan pemrograman berorientasi objek dan (sebagian besar) algoritma. Anda dapat menjalankan Python dalam mode interaktif seperti baris perintah untuk merasakan bagaimana cara kerjanya, atau menjalankan seluruh skrip sekaligus. Anda dapat menjalankan skrip yang ditafsirkan dengan cepat, atau mengkompilasinya menjadi biner. Ada ribuan modul untuk memperluas fungsi. Anda dapat membuat kalkulator grafis seperti yang dibundel dengan Windows, atau Anda dapat membuat klien IRC, atau apa pun.

XKCD menggambarkan kekuatan Python sedikit lebih baik: "Kamu terbang! Bagaimana?"  "Python!"

Anda dapat pindah ke C # atau Java setelah itu, meskipun mereka tidak menawarkan banyak yang belum dimiliki oleh Python. Keuntungannya adalah mereka menggunakan sintaks C-style, yang digunakan banyak (berani saya katakan sebagian besar?) Bahasa. Anda tidak perlu khawatir tentang manajemen memori, tetapi Anda dapat membiasakan diri memiliki sedikit lebih banyak kebebasan dan lebih sedikit pegangan dari penerjemah bahasa. Python menegakkan spasi putih dan indentasi, yang bagus sebagian besar waktu tetapi tidak selalu. C # dan Java memungkinkan Anda mengelola ruang putih Anda sendiri sambil tetap diketik dengan kuat.

Dari sana, standarnya adalah C atau C ++. Kebebasan dalam bahasa-bahasa ini hampir eksistensial. Anda sekarang bertanggung jawab atas manajemen memori Anda sendiri. Tidak ada pengumpulan sampah untuk membantu Anda. Di sinilah Anda mengajarkan algoritma yang sangat canggih (seperti mergesort dan quicksort). Di sinilah Anda belajar mengapa "kesalahan segmentasi" adalah kata kutukan. Di sinilah Anda mengunduh kode sumber kernel Linux dan menatap Abyss. Mulailah dengan menulis buffer melingkar dan tumpukan untuk manipulasi string. Kemudian naik ke atas.

Magus
sumber
Sebenarnya, Anda tidak sepenuhnya mengelola memori dalam C. Anda bisa memiliki malloc, dll, dan bebas mengaturnya untuk Anda. Anda hanya perlu memberi tahu sistem kapan Anda ingin lebih banyak memori dan kapan Anda selesai dengan memori yang telah Anda gunakan.
compman
12

Paket Python VPython - Pemrograman 3D untuk Fana Biasa ( tutorial video ).

Contoh kode:

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 bola memantul http://vpython.org/bounce.gif

jfs
sumber
Baik hanya setelah mereka mempelajari konsep dasar. Membuat visual adalah cara yang bagus untuk memotivasi orang untuk belajar pemrograman.
phkahler
12

Mulailah dengan grafik Turtle di Python.

Saya akan menggunakan grafis penyu yang datang standar dengan Python. Ini visual, sederhana dan Anda dapat menggunakan lingkungan ini untuk memperkenalkan banyak konsep pemrograman seperti iterasi dan panggilan prosedur sebelum terlalu jauh ke dalam sintaksis. Pertimbangkan sesi interaktif berikut dengan 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

Dalam mencoba menyelesaikan dua tugas terakhir, mereka akan mengalami banyak upaya gagal, tetapi kegagalan akan menarik secara visual dan mereka akan belajar dengan cepat ketika mereka mencoba mencari tahu mengapa itu tidak menarik apa yang mereka harapkan.

dyoung
sumber
11

Kuncinya adalah bahwa orang tersebut perlu memiliki beberapa masalah yang ingin mereka selesaikan. Jika Anda tidak memiliki program yang ingin Anda tulis (dan sesuatu yang masuk akal dan terdefinisi dengan baik, bukan "Saya ingin menulis Gempa berikutnya!") Maka Anda tidak dapat belajar memprogram, karena Anda tidak memiliki apa pun untuk memotivasi Anda . Maksud saya, Anda bisa membaca buku dan memiliki pemahaman kasar tentang sintaksis dan semantik bahasa, tetapi sampai Anda memiliki program yang ingin Anda tulis, Anda tidak akan pernah mengerti.

Jika dorongan itu ada maka yang lainnya hanyalah detail kecil.

DrPizza
sumber
Menurut saya, cara terbaik untuk mempelajari subjek teknis apa pun adalah dengan belajar memecahkan masalah kecil yang bersifat inkremental.
cbednarski
8

Saya tidak tahu apakah ada yang menyebutkan ini di sini, tetapi Anda mungkin ingin memeriksa Zed Shaw 's Learn Python the Hard Way

Semoga ini membantu

inspectorG4dget
sumber
7

http://tryruby.hobix.com/">Coba Ruby (Di Browser Anda)

CodingWithoutComments
sumber
Bagus! Tampaknya mudah dan kuat untuk menggunakan Ruby
Luc M
5

Ini adalah buku yang luar biasa yang biasa dipelajari oleh adik lelaki saya:

http://pine.fm/LearnToProgram/

Tentu saja, hal yang paling penting adalah memulai program yang nyata dan bermanfaat, SEGERA setelah menyelesaikan buku.

Jarin Udom
sumber
4

Jika dia tertarik, bukankah detail kecil bagian yang baik? Menggunakan python, Anda sudah memotong GUI sehingga kebingungan hilang. Mengapa tidak memilih proyek, permainan, atau sesuatu, dan mengimplementasikannya. Permainan menebak angka hi-lo klasik dapat dengan mudah diimplementasikan dari baris perintah dalam 20-30 baris kode (tergantung pada bahasa tentu saja) dan memberi Anda variabel, kondisi, loop, dan input pengguna.

jj33
sumber
4

Saya hanya akan membiarkan dia menulis banyak kode. Biarkan dia mengemudi dalam semua yang kalian lakukan, dan siaplah untuk menjawab pertanyaan.

Percaya atau tidak, setelah beberapa bulan menulis berton-ton kode jelek, dia akan mulai mendapatkan ide dan mulai menulis program yang lebih baik. Pada titik itu, Anda dapat terjebak dalam detail (memori, dll), dan juga berbicara tentang prinsip-prinsip desain umum.

Saya pernah mendengar bahwa yang membedakan seniman besar dari yang biasa-biasa saja, adalah bahwa setiap kali mereka berlatih, mereka meningkatkan sesuatu, tidak peduli seberapa kecil. Biarkan adikmu berlatih, dan dia akan meningkatkan setiap kali dia duduk di keyboard.

Sunting: [Justin Standard]

Esteban, ini mengingatkan saya baru-baru ini posting horor coding , dan saya tidak pikir Anda benar. Tetapi saya pikir masih bermanfaat untuk menemukan metode untuk membimbing praktiknya. Tidak ada pertanyaan, saya ingin dia menulis kode sebanyak yang dia tahu caranya. Itulah salah satu alasan saya meminta proyek sampel.

Esteban Araya
sumber
Ya, saya tahu pos mana yang Anda bicarakan tentang Justin. Membacanya mengingatkan saya bagaimana sebagian besar hal yang saya pelajari berasal dari mencoba dan belajar dari kesalahan saya sendiri. Saya benar-benar tidak dapat cukup menekankan pentingnya belajar sambil bekerja!
Esteban Araya
2

Pertama-tama, mulailah seperti yang dilakukan orang lain: dengan program Hello World . Ini sederhana, dan memberi mereka nuansa dasar untuk tata letak program. Coba dan ingat kembali ketika Anda pertama kali pemrograman, dan betapa sulitnya beberapa konsep - mulai sederhana.

Setelah Hello World, lanjutkan dengan membuat beberapa variabel dasar, aritmatika, kemudian ke boolean logic dan pernyataan if / else. Jika Anda memiliki salah satu buku teks pemrograman lama Anda, lihat beberapa contoh awal dan minta dia memeriksa semua itu. Hanya saja, jangan mencoba memperkenalkan terlalu banyak sekaligus, atau itu akan membingungkan dan membingungkan.

Brandon Wood
sumber
2

Sesuatu yang Anda harus sangat waspada saat mengajar saudara laki-laki Anda untuk memprogram adalah agar dia tidak terlalu bergantung pada Anda. Seringkali ketika saya menemukan diri saya membantu orang lain, mereka akan mulai menganggap saya sebagai buku jawaban untuk semua pertanyaan mereka dan bukannya bereksperimen untuk menemukan jawaban, mereka hanya bertanya kepada saya. Seringkali guru terbaik adalah eksperimen dan setiap kali saudara lelaki Anda memiliki pertanyaan seperti "Apa yang akan terjadi jika saya menambahkan 2 ke string?" Anda harus menyuruhnya mencobanya dan melihatnya sendiri. Saya juga memperhatikan bahwa ketika saya tidak bisa menyampaikan konsep kepada seseorang, ada baiknya melihat beberapa kode contoh di mana kita dapat melihat setiap segmen secara individual dan menjelaskannya sepotong demi sepotong. Sebagai catatan orang yang baru pemrograman sering mengalami masalah dengan gagasan pemrograman berorientasi objek,

Anton
sumber
2

Saya dulu mengajar pemrograman dan kakak Anda memiliki satu keunggulan utama daripada sebagian besar murid saya yang ingin ia pelajari :)

Jika Anda memutuskan untuk pergi dengan C, seorang teman memiliki situs yang memiliki jenis program yang digunakan oleh generasi yang lebih tua, ingat sebagai tipe-in ​​dasar. Semakin kompleks mereka menggunakan ncurses yang agak meniadakan penggunaan mereka sebagai alat bantu mengajar, tetapi beberapa dari mereka adalah hal-hal kecil dan Anda dapat belajar banyak tanpa diajari.

Secara pribadi saya pikir Python dan Ruby akan membuat bahasa pertama yang bagus.

EDIT: daftar tugas pemrograman pemula muncul dalam semalam mungkin hanya apa yang Anda cari.

memicu
sumber
2

Itu benar-benar tergantung pada gaya belajar kakakmu. Banyak orang belajar lebih cepat dengan membuat tangan mereka kotor & baru saja masuk ke dalamnya, mengkristalkan konsep dan gambaran besarnya ketika mereka maju dan membangun pengetahuan mereka.

Saya, saya lebih suka memulai dengan gambaran besar dan menelusuri ke seluk-beluk. Hal pertama yang saya ingin tahu adalah bagaimana semua itu cocok bersama semua gobbledygook yang berorientasi Objek, kemudian tentang kelas & instance dan sebagainya. Saya suka mengetahui konsep-konsep yang mendasari dan sedikit teori sebelum saya belajar sintaks. Saya memiliki sedikit keuntungan karena saya menulis beberapa permainan di BASIC 20 tahun yang lalu tetapi tidak banyak sejak itu.

Mungkin berguna untuk membayangi proses produksi dengan memulai dengan pernyataan misi keseluruhan, kemudian rencana dan / atau diagram alur, kemudian menguraikan beberapa kode pseudo (condong ke arah sintaks yang pada akhirnya akan Anda gunakan) sebelum benar-benar menulis kode.

Aturan emas di sini adalah untuk menyortir gaya belajar siswa Anda.

CAD cowok
sumber
2

Jika saudara Anda memiliki akses ke iTunes, ia dapat mengunduh video ceramah dari kursus pengantar ilmu komputer yang diberikan oleh Richard Buckland di Universitas New South Wales. Dia seorang instruktur yang menarik dan mencakup dasar-dasar komputasi dan bahasa C. Jika tidak ada yang lain, beri tahu saudara Anda untuk memainkan video di latar belakang dan beberapa konsep mungkin meresap melalui osmosis. :)

COMP1917 Komputasi Tinggi - 2008 Sesi 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Jika tautannya tidak berfungsi, inilah jalannya:

Beranda -> iTunes U -> Rekayasa -> COMP1917 Higher Computing - 2008 Sesi 1

CodeCurious
sumber
2

ada wikibook yang cukup bagus untuk belajar python .

Saya tidak tahu bagaimana wikibook untuk bahasa lain, tapi saya pribadi belajar python dari wikibook seperti pada Februari 2007

ps - jika Anda tidak terbiasa dengan wikibooks , pada dasarnya itu adalah versi penulisan buku wikipedia. agak sulit untuk dijelaskan, tetapi jika Anda memeriksa beberapa buku di sana Anda akan melihat cara kerjanya

Jiaaro
sumber
2

Saya pikir Python adalah ide bagus. Saya akan memberinya beberapa tugas dasar untuk dilakukan sendiri dan memberitahunya bahwa jalan buntu yang dia klik mungkin dapat diselesaikan dengan perjalanan ke google. Bagi saya, paling tidak, menyelesaikan masalah sendiri selalu membuatnya tetap lebih baik daripada seseorang yang memberi tahu saya solusinya.

Beberapa proyek yang mungkin (tanpa urutan tertentu):

  • Simulator membalik koin. Biarkan pengguna memasukkan jumlah percobaan yang diinginkan untuk membalik koin. Jalankan dan tampilkan hasilnya bersama dengan persentase untuk kepala atau ekor.

  • Buat konverter suhu dengan menu yang mengambil input pengguna untuk memilih jenis konversi yang ingin dilakukan pengguna. Setelah memilih konversi dan melakukannya, itu harus kembali ke menu utama.

    Berikut adalah contoh konverter yang diperluas dengan ide yang sama: http://pastebin.org/6541

  • Buat program yang mengambil input angka dan menampilkan nilai huruf yang akan diterjemahkan. Akhirnya akan mengevaluasi input terhadap jika dan pernyataan elif untuk menemukan di mana itu cocok.

  • Buat kuis sederhana yang melewati beberapa pilihan ganda atau isi pertanyaan kosong. Pada akhirnya akan ditampilkan bagaimana yang dilakukan pengguna. Dia dapat memilih pertanyaan yang dia inginkan.

  • Ambil input dari sejumlah (mungkin besar) uang dan mengubahnya menjadi denominasi yang lebih besar. Misalnya, 149 sen = 1 dolar, 1 triwulan, 2 sen, dan 4 sen.

  • Buat pengelola daftar sederhana. Mampu menambah / menghapus daftar dan menambah / menghapus entri dalam daftar itu. Berikut adalah contoh pengelola daftar natal: http://pastebin.org/6543

  • Buat program yang akan membangun dan kemudian menguji apakah angka yang dimasukkan membentuk kotak ajaib (dengan array 2D). Berikut beberapa contoh kode, tetapi harus benar-benar mencetak kuadrat pada setiap langkah untuk menunjukkan di mana pengguna dalam hal menggertak kotak: http://pastebin.org/6544

Saya juga menyarankan melakukan beberapa hal dengan xTurtle atau modul grafis lain untuk mencampuradukkan dan membuatnya tidak bosan. Tentu saja, ini sangat banyak pemrograman pemrograman dan bukan scripting yang banyak orang benar-benar akan menggunakan python, tetapi contoh yang saya berikan cukup banyak diambil langsung dari ketika saya belajar melalui python dan itu berhasil bagi saya. Semoga berhasil!

Sean O'Hollaren
sumber
2

Jadikan itu menyenangkan!

Hebatnya Scala mungkin yang paling mudah jika Anda mencoba Kojo

Łukasz Lew
sumber
2

Jika saudara Anda suka teka-teki, saya akan merekomendasikan Python Challenge . Saya tidak akan menggunakannya sebagai alat pengajaran formal dalam tutorial 1 lawan 1, tetapi itu adalah sesuatu yang bisa dia lakukan ketika Anda tidak bersama untuk menantang dirinya sendiri dan bersenang-senang.

Jacinda
sumber
2

Setelah melalui beberapa e-book gratis, saya menemukan buku terbaik untuk belajar program adalah Head First Programming yang diterbitkan oleh O'Reily Press. Ini menggunakan Python sebagai bahasa dan memberi Anda program untuk dikerjakan sejak awal. Mereka semua lebih menarik dari 'Hello World'. Ini sepadan dengan uang yang saya habiskan untuk itu, dan karena sudah sedikit keluar Anda mungkin dapat menemukan salinan bekas yang lebih murah di Ebay atau Amazon.

chrisfs
sumber
1

Jika Anda ingin mengajarkan dasar-dasar pemrograman, tanpa spesifik bahasa, ada aplikasi bernama Scratch yang dibuat di MIT. Ini dirancang untuk membantu orang mengembangkan keterampilan pemrograman. Ketika pengguna membuat proyek Scratch, mereka belajar untuk membuat kondisi, loop, dll. Ada juga komunitas proyek awal, bentuk proyek yang dapat diunduh - dengan cara itu Anda dapat menjelajahi program orang lain dan melihat bagaimana mereka dibangun.

Lea Cohen
sumber
1

Saya pikir begitu dia memiliki dasar-dasar (variabel, loop, dll) Anda harus mencoba untuk membantunya menemukan sesuatu yang spesifik yang ia minati dan membantunya mempelajari kebutuhan untuk mewujudkannya. Saya tahu bahwa saya lebih cenderung dan termotivasi untuk melakukan sesuatu jika itu menarik bagi saya. Juga, pastikan untuk membiarkannya berjuang melalui beberapa masalah yang lebih sulit, tidak ada yang lebih memuaskan daripada saat Anda mengetahuinya sendiri.

DanV
sumber
1

Saya diajari dengan belajar bagaimana memecahkan masalah dengan cara agnostik menggunakan flowchart dan PDL (Program Design Language). Setelah beberapa minggu, saya belajar untuk mengubah PDL yang saya tulis ke bahasa. Saya senang saya belajar seperti itu karena saya telah menghabiskan sebagian besar tahun pemrograman saya, menyelesaikan masalah tanpa terikat dengan bahasa. Bahasa apa yang saya gunakan selalu menjadi detail implementasi dan bukan bagian dari desain.

Harus memecahkan masalah dengan memecahnya menjadi langkah-langkah dasar itu adalah keterampilan utama. Saya pikir itu adalah salah satu hal yang memisahkan yang dapat diprogram dari yang tidak.

Sejauh bagaimana Anda menangani urutan konsep suatu bahasa, saya percaya cara termudah adalah memutuskan untuk memiliki proyek dalam pikiran dan menangani konsep sesuai kebutuhan. Ini memungkinkan Anda menerapkannya karena diperlukan pada sesuatu yang Anda tertarik lakukan. Ketika belajar bahasa, ada baiknya memiliki beberapa proyek sederhana dalam pikiran dan beberapa dengan kompleksitas progresif. Memutuskan itu akan membantu Anda memetakan konsep-konsep yang diperlukan dan urutannya.

bruceatk
sumber
1

Saya akan merekomendasikan juga menonton beberapa screencasts - mereka umumnya dibuat dalam konteks teknologi spesifik bukan bahasa, meskipun jika ada kode Python ditampilkan, itu akan dilakukan :). Intinya adalah - mereka diciptakan oleh beberapa programmer yang baik dan menonton bagaimana program programmer yang baik adalah hal yang baik. Anda dan saudara Anda bisa melakukan pemrograman rekan juga, itu mungkin ide yang lebih baik. Hanya saja, jangan lupa untuk menjelaskan MENGAPA Anda melakukan sesuatu dengan cara ini dan bukan dengan cara itu. Saya pikir cara terbaik untuk belajar pemrograman adalah dari contoh yang baik dan cobalah untuk tidak melihat yang buruk.

martinsb
sumber
1

Robert Read menulis panduan yang bermanfaat, How to be a Programmer , yang mencakup berbagai bidang masalah pemrograman yang menurut pemula sangat membantu.

David
sumber