สำหรับ Course นี้ มีแนะนำมาอีกทีครับ เห็นว่าเหมือนแนสคิดเดียวกับ Udemy ครับ แต่ใน EDX แต่ละ Course เป็นอาจารย์จากมหาวิทยาลัยชั้นนำของโลกมาเปิดครับ โดยจุดแข็งที่ผมชอบฟรีครับ ถ้าอยากได้ใบ Cert ต้องจ่ายเงินครับ
มาเข้าเรื่องของ Week แรกที่เรียนดีกว่าครับ เนื้อหานี้เป็นการปูพื้นฐานครับ โดยผมมองว่าคนไม่จบสายคอมเรียนได้นะครับ เค้าไม่ลงลึกจนเกินไป
📚Introduction
📚Knowledge Management
- Imperative knowledge = A recipe or “how-to” ซึ่ง Recipe ผมชอบคำนี้ อาจารย์เปรียบเปรยได้ดีเลยครับ จริงมัน คือ ขั้นตอนการทำงาน (Algorithm) ครับ
- Declarative knowledge = Statements of fact. เช่น ค่า PI = 3.14 / เก้าอี้มีสมุดสีแดงวางอยู่ เป็นต้น
📚Fixed & Stored Program
- Fixed Program - ทำงานเฉพาะอย่าง ทำมาเฉพาะเจาะจงให้ประมวลผลงานอย่างเดียว เช่น ทำมาเพื่อคิดเลข / ทำมาเพื่อคำนวณวิถีของจรวด (จริง น่าจะมองว่าเป็น SW ที่มาเจาะจงกับ HW)
- Stored Program - ทำได้หลายอย่างเลย แล้วแต่เราสั่งให้มันทำอะไร เอาง่ายๆ เราต้องเขียนโปรแกรมบอกเครื่อง
📚Basic Computer Architecture ตามรูปดีกว่าครับ

- A program counter The computer executes the instructions mostly in a linear sequence, except sometimes it jumps to a different place in the sequence.
Turing บอกถ้ามีการทำงานพื้นฐาน(Primitives Operation) เช่น การ Shift Bit/ AND / OR / NOT เป็นต้น เราสามารถประมวลทุกๆปัญหาได้บนโลก ถ้ามีปัญหาที่ต้องสร้าง Operation ใหม่ เราสามารถเพิ่มได้ โดยการทำ Abstract Data Type (เขียน Function ใหม่ และเรียกพวก Primitives Operation ด้านใน ถ้าใช้เครื่องเรียนพวก Assembly หรือ LC-3 ลองนึกดูว่า ถ้าต้องการหาเลขยกกำลัง มีขั้นตอนอะไรบ้าง)
📚Aspect of Language
- Syntax - ตรงตามโครงสร้างพื้นฐาน เเช่น ประโยคที่ดีควรมีประธาน + กริยา + กรรม
- Static Semantics - ตรงตามกฏเกณฑ์ ถ้าในภาษาอังกฤษ เป็นพวก Grammar ครับ ดู Syntax ว่าถูกตามกฏไหม
- Semantics - ดูความหมายและ ซึ่งบอกที่ประโยคเดียวกัน อาจจะตีความได้หลายแบบ แต่สำหรับ Computer ต้องตีความได้แบบเดียวเท่านั้นครับ
📚แนวคิดการคิดโปรแกรมภาษา Python หลักๆ มีเรื่อง
- Data Type - int, Boolean, float และ string (ตัวหลังเน้นเยอะเลย)
- Statement - คำสั่งต่างๆ
- Operation - การ + - * / และพวก Logic ต่างๆ อย่าง AND, OR
# MATH Operation print(5+2) print(5-2) print(5*2) print(5/2) print(5//2) # floor division print(5**2) print(10/3)
- String Method
# String is immutable text = " a cat walks into a garden." text.replace("cat ", "lion") print(text) # a cat walks into a garden. # ===================================== text = text.replace("cat", "lion") print(text) # a lion walks into a garden.
ที่เห็นว่ามันค่ามันเปลี่ยน เพราะมันแก้ Reference ใน Memory ให้เลย ง่ายๆสร้างใหม่นี่แหละ หลักการเต็มๆลองอ่าน Java และ C#
# ถ้าจะสร้าง String เลยใช้ slicer ตัวอย่าง แบบนี้ language = "C" + language[1:] print(language)
ตัวอย่างอื่น พบ Upper Lower ครับ
language = "Python" print(language.upper())
- Control Flow - IF-ELSE
# control flow def grade(score): if score >= 90: return 'A' elif score >= 80: return 'B' elif score >= 70: return 'C' else: return 'Please retake exam !!!' # กรณีที่ไม่ Return # None pass def sampleNone(): return None # special keyword def samplePass(): pass
- Iteration - พวก for while
# Define a list of numbers numbers = [1, 2, 3, 4, 5] # Iterate over the list using a for loop for number in numbers: print("Current number:", number) print("Loop finished") # =========================================== # ปกติพวก i++ ใน python ไม่มีใช้ range แทน # Define the range of numbers for i in range(5): print("Current value of i:", i) print("Loop finished")
# while # Initialize a counter counter = 0 # Define the condition for the while loop while counter < 5: print("Counter value:", counter) # Increment the counter counter += 1 print("Loop finished")
- Basic I/O - input กับ print
- และอื่นๆ
📚สำหรับการเขียนโปรแกรม อันนี้เค้าให้ผ่านตัวเว็บ แต่ผมยังไม่ได้ลง 555

พยายามลองใช้ตัว Editor ที่ทำใน Term Proj ตอนเรียน ป โท ผมพบข้อจำกัดของ Editor ของ ตัวเองเยอะมากครับ พยายามลองงมๆ แก้ให้มันแก้ขัดไปก่อน แต่ก็มีปัญหาใหม่มาครับ โดยข้อจำกัดต่างๆ ผมมีเขียนสรุปไว้ ดังนี้
- ไม่มีหน้าจอ แบบ Interactive แนวพวก Command Line ครับ เวลาจะลองอะไร ต้องเขียน Code เต็ม Complile และ Run อีกทีครับ
- Code Format ปัญหาที่สำคัญของภาษา Python คือ การจัดเยื้ยง
- Syntax Check ยังขาดครับ บางอย่างมันควรรู้ตั้งแต่แรกครับ ไม่ใช่มารู้ผลเอาตอน Complie
- การ Bypass ค่าบางอย่าง เช่น โจทย์บอกว่าให้อ่านข้อมูลจากตัวแปร S โดยที่คุณไม่ต้อง initial ค่าอะไร ตัว Grader เป็นคนจัดการยัดค่าให้ และทดสอบกับ Test Case ครับ
เลยใช้สลับกับ Online Editor ของ repl.it ครับ ผมว่ามันเจ๋งดี มีให้ตัว Debug กับตัว Command Line ให้ใช้ด้วย

📚Guess and Check
- Guess - ถ้ามองง่ายๆ มัน คือ การ Brute Force ครับ แต่พลังการคิดประมวลผลของเครื่องจักรมันทำได้ดีกว่าคนครับ
- Check - เอาตัว Recipe หรือ Algorithm มาช่วยตรวจสอบครับ
NOTE: หาเรารู้ Declarative Knowledge บางอย่าง เราสามารถทำให้โปรแกรมของเรา มีประสิทธิภาพ(Efficiency) มากขึ้นได้ครับ
สำหรับ Exercise ใน week แรกเยอะอยู่ครับ ผมใช้วิธีเปิด 2 จอ จอแรกเปิดโจทย์ สแกนไว้ก่อน อีกจอดู Video ครับ ถ้าคิดว่าอันไหนใช่ ก็ทำไปด้วยเลยครัย ส่วนตัว Problem Set จากที่ลองทำ ผมยอมรับว่าตกม้าตาย อะไรที่มันคิดว่าดูง่าย อย่างข้อที่ 1 และ 2 ผมทำแป๊บๆเสร์จ แต่ข้อสุดท้ายนี่และ ไปคิดเยอะ เสียเวลาไปต่อคำต้้งนาน พอได้ไปข้างนอก กินข้าว แล้วกลับมา จริงๆ เรานับจุด Start และ End จากนั้นนำมา subString ก็จบแล้ว ด้านล่างนี้เป็น Code ที่ผมเขียนปรับปรุงใหม่ครับ
#หา String ทีมีลำดับของตัวอักษรมากที่สุด เช่น azcbobobegghakl พบว่ามีอักษรที่เรียงติดต่อกันตามลำดับ คือ beggh #ตัวแปร s ตัว Grader ทำหน้าที่ยัดค่ามาให้ count = 0 maxcount = 0 result = 0 for char in range(len(s) - 1): if (s[char] <= s[char + 1]): count += 1 if count > maxcount: maxcount = count result = char + 1 else: count = 0 startposition = result - maxcount print('Longest substring in alphabetical order is:', s[startposition:result + 1])
ผมพยายามเขียน Blog ให้ได้ครบทุก Week นะครับ ตอนนี้ขอตัวไปลงตัว Anaconda ก่อน ถ้าใครสนใจลองตามมาเลยครับ MITx's 6.00.1x! Introduction to Computer Science and Programming Using Python
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.