Introduction to Databases by Stanford University (class2go)

ในที่สุดก็เอาชนะตัวเองได้ด้วยการเรียนจบคอร์ส Introduction to Databases (ยังไม่เคยเรียนวิชานี้ที่มหาลัยมาก่อนเลยนะ!) ที่ยาวนานถึง 2-3 เดือน

คอร์สนี้เป็นคอร์สที่ offer โดยมหาวิทยาลัย Stanford โดยเปิดเป็นช่วงๆ ไม่แน่ใจเหมือนกันว่ามีเคยเปิดมาก่อนแล้วรึเปล่า ที่เรียนไปเป็นรอบ Winter 2013 (Jan. 15, 2013 – Apr. 1, 2013) ค่ะ

ลักษณะของคอร์สคือให้ดูวิดีโอประกอบการสอน จริงๆมีการแนะนำ Textbook ให้อ่านด้วย แต่รู้สึกว่าถ้าไม่อ่านก็พอไปไหว (ตอนที่ take course มันเป็นช่วงเปิดเทอม – สอบไฟนอล แค่อ่านหนังสือเตรียมสอบก็จะตายละค่า จะเอาเวลาไปอ่านที่ไหนเนี่ย) แล้วก็จะมีให้ทำ Quiz กับ Interactive Exercises เรื่อยๆ (มีงานทุกสัปดาห์) แต่ deadline ค่อนข้างโอเคคือไม่เบียดเกินไป ให้เวลาทำประมาณ 1-2 อาทิตย์ แต่ภาระงานก็เยอะเอาเรื่องเหมือนกัน ต้องทำแบบฝึกหัดเยอะ ทำควิซเยอะ ซึ่งหมายความว่าต้องทุ่มเทกับมันเยอะเหมือนกัน วิดีโอจะมีประมาณอาทิตย์ละ 2 ชั่วโมง ส่วนควิซกับแบบฝึกหัดจะใช้เวลาประมาณ 1-2 ชั่วโมงเหมือนกัน

วิดีโอก็มีซับไตเติ้ลเป็นภาษาอังกฤษด้วยนะ แต่บางตอนก็ไม่มี (เป็นส่วนน้อย)

Syllabus ก็เป็นเรื่อง database ล้วนๆ เลย

  1. Introduction เป็นการเกริ่นนำวิชานี้คร่าวๆ ยังไม่มีอะไรหนักมาก
  2. Relational Databases เป็นการพูดถึง Relational Databases ว่ามีลักษณะยังไง
  3. XML Data การเก็บข้อมูลแบบ XML เป็นพวก DTD ได้ความรู้อะไรใหม่ๆ ที่หาเรียนไม่ได้ง่ายๆ เยอะเลย
  4. JSON Data ลักษณะคล้ายๆ กับ XML
  5. Relational Algebra เป็นการเขียน query โดยใช้สัญลักษณ์พีชคณิต สนุกดีเหมือนกัน
  6. SQL ตามชื่อเลย เรียนเรื่องการ query แบบใช้ภาษา SQL บทนี้แบบฝึกหัดเพียบ!
  7. Relational Design Theory อันนี้ยากมากกก คุยกับพี่ๆ ปีสามก็ยังบอกเลยว่ายาก พวก Normal Form ต่างๆ อะเฮือกก
  8. Querying XML ได้เรียน xpath กับ xquery ซึ่งแปลกใหม่และสนุกดี (แต่ challenge exercise ก็ยากเอาเรื่องเหมือนกัน T_T)
  9. UML ได้เรียนเรื่องการเขียนแผงผัง database (UML นั่นแหละ) มีพวกการให้ความสัมพันธ์ บลาๆ ได้ความรู้เพียบอะ เรื่องนี้ชอบเหมือนกัน
  10. Indexes เรียนเรื่องการสร้าง index ข้อมูลใน database (พูดยากแฮะ)
  11. Transactions อันนี้ค่อนข้างคลุมเครือมาก พูดถึงเรื่องการ concurrent, การกำหนด isolation level มันไม่ค่อยได้เอาไปใช้เท่าไหร่ เลยมึนๆ
  12. Constraints and Triggers เป็นเรื่องโปรดเลย เรื่องนี้สนุกมากและมีประโยชน์มากที่สุด เวลาเราผูกข้อมูลด้วยกันเยอะๆ แล้วถ้าจะลบอะไรออกไปชิ้นหนึ่ง จะต้องมีข้อมูลส่วนไหนที่ถูกเปลี่ยนแปลงไปบ้าง?
  13. Views อันนี้ก็มีประโยชน์มากๆ เหมือนกัน สองเรื่องนี้ได้เอาไปใช้จริงๆ ด้วยนะ 🙂
  14. Authorization พูดถึงเรื่องการ grant access ให้ user ใน database แล้วการเรียกคืน, การส่งต่อสิทธิในการสร้าง แก้ไข ลบข้อมูล บลาๆๆ
  15. Recursion ใครจะรู้ว่าเราสามารถเขียน recursive ใน sql ได้ด้วย!!!
  16. On-Line Analytical Processing (OLAP) เรื่องนี้งงมากไม่เข้าใจเบย เป็น cube เป็นไรไม่รู้ T_T
  17. NoSQL การเก็บข้อมูลแบบไม่ใช้ SQL 5555 อาจารย์พูดแบบผิวเผินไม่ได้ลงรายละเอียดมาก (เพราะมันยังเป็นเรื่องใหม่ๆ อยู่)

นอกจาก Interactive Exercise แล้ว ยังมี Challenge Interactive Exercise คือเป็นแบบฝึกหัดแบบยาก ที่ต้องคิดเยอะๆ ปิ๊งเยอะๆ อันนี้ก็ยากเอาเรื่องเหมือนกัน

เกณฑ์การให้คะแนน คือ จะผ่านเกณฑ์เมื่อได้คะแนนรวมๆ 50% และได้คะแนนยอดเยี่ยมเมื่อได้คะแนนรวมๆ เกิน 75% และต้องทำ Challenge ให้ได้ 50% (อันนี้ยากสุด T_T)

แม้ว่าระหว่างตอนเรียนจะแบบแทบลากเลือด แต่ในที่สุดก็เรียนจบมาได้ด้วย Distinction (คะแนนดีเด่น) เย่ๆๆๆ

Scores:
Challenge Exercises: 29/46
Core Exercises: 54/54
Exams: 31/38
Quizzes: 69/71
Scaled Total: 270/293

ได้ statement ที่บอกว่าเรียนจบคอร์สจาก stanford ด้วย แต่ขอไม่โชว์ในบล็อกนะ

พอเรียนจบแล้วก็รู้สึกว่าเออ เราก็มี self-motivated เยอะเหมือนกันนะ (5555) คือถ้าไม่ชอบจริงนี่ไม่สามารถเรียนจบได้จริงๆ มันแอบโหดและต้องการความทุ่มเทพอๆ กับการเรียนคอร์สในมหาลัยปกติ ใครบอกว่า Online Course เรียนจบได้ง่ายๆ! พอเรียนจบแล้วก็รู้สึกว่า เออ เรายังไม่ได้เกลียด database เนี่ยนะ แล้วก็รู้สึกชอบมันมากขึ้นไปอีก อยากรู้อะไรเกี่ยวกับมันเยอะๆ (ในแง่ของการนำไปใช้ ไม่ใช่แง่ของ Data Structure นะ T_T) แล้วรู้สึกว่าเออที่เรียนจบมาได้อะ เพราะว่าเราอยากรู้ส่วนนึง และเราก็อยากทำให้สำเร็จอีกอย่างนึงเหมือนกัน

ออนไลน์คอร์สแรกที่เรียนจบคือ Computer Science 101 โดยสแตนฟอร์ดเหมือนกัน (บังเอิญมาก) แต่เรียนที่ Coursera อันนั้นระดับความยากคนละชั้นเลย ถ้าเป็น CS101 จะให้ระดับ Beginner แต่ถ้าเป็น Intro. to Databases จะเป็นระดับ Intermediate

จำนวนคนที่เรียนจบในคลาส

Number of students registered by end of course: 64127 (จำนวนคนที่ลงทะเบียนเรียน)
Number of students turning in some work: 20836 (จำนวนคนที่ส่งงานไปบ้าง)
Number of students receiving a Statement of Accomplishment (regular or With Distinction): 4854 (จำนวนคนที่ผ่านคอร์ส)
Number of students receiving a Statement of Accomplishment With Distinction: 1927 (จำนวนคนที่ผ่านคอร์สแบบคะแนนดีเด่น)

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

สู้ๆ นะคะ 🙂

coursera.org
.