มโนทัศน์ภาษาโปรแกรม ภาคต้น 2552

ประกาศ

  • เนื้อหาที่ออก: สัปดาห์ที่ 6 (function call, storage), 9 (C++), 10-11 (Java). อาจมีเนื้อหาสัปดาห์ที่ 2 (Modularity, OOP, Simula, Smalltalk) และเนื้อหาส่วนอื่น ๆ ได้ด้วย
  • สามารถเปิดเอกสารในการสอบปลายภาคได้ ไม่อนุญาตให้เปิดเครื่องคอมพิวเตอร์โน้ตบุ๊ค
  • ข้อสอบปลายภาคเก่า 49, 50 มีเนื้อหาบางส่วนอยู่ในข้อสอบกลางภาคเก่าด้วย อย่าลืมศึกษาด้วย
  • สามารถนำเอกสารต่าง ๆ เข้าในการสอบกลางภาคได้ สามารถเปิดเอกสารที่เป็นอิเล็กทรอนิกส์ได้ในเครื่องส่วนตัว แต่ไม่อนุญาตให้ทดลองเขียนโปรแกรมและหรือทำอย่างอื่น
  • ข้อสอบกลางภาคเก่า 49, 50 (เนื้อหาอาจมากกว่าที่สอบในครั้งนี้)
  • งดเรียนวันจันทร์ที่ 24 ส.ค. 52
  • เลื่อนสอบกลางภาคจากวันจันทร์ที่ 24 ส.ค. 52 เป็นจันทร์ที่ 31 ส.ค. 52
  • ประชุมเรื่องตารางเรียน วันจันทร์ที่ 15 มิ.ย. เวลา 16:10 ห้อง 507
  • ยินดีต้อนรับเข้าสู่เว็บรายวิชา 204435

การเตรียมตัวก่อนเข้าเรียน

  • จันทร์ที่ 20 ก.ค. : ติดตั้ง Scala มาก่อน
  • จันทร์ที่ 29 มิ.ย. : ติดตั้ง The Glasgow Haskell Compiler มาก่อน
  • จันทร์ที่ 22 มิ.ย. : ติดตั้งโปรแกรม Squeak มาก่อน

การบ้าน

  • การบ้าน 1
    • ทฤษฎี: แบบฝึกหัด 3.2, 3.6, 3.7.
    • โปรแกรม: Programming Exercise 1 (ส่งทาง e-mail ใส่หัวเรื่องว่า 204435: homework 1)
  • การบ้าน 2
    • ทฤษฎี: แบบฝึกหัด 5.1, 5.2, 5.3
      • หมายเหตุ: ในการพิจารณาข้อ 5.3 ให้พิจารณาเป็นภาษา Haskell ก็ได้
  • การบ้าน 3
    • โปรแกรม: Erlang

รายละเอียดวิชา

ในมุมมองที่กว้างที่สุด ภาษาโปรแกรมเป็นเครื่องมือสำหรับอธิบายการคำนวณ (computation) อย่างไรก็ตามมุมมองของการคำนวณนั้นมีได้หลากหลาย เป็นจุดกำเนิดที่ทำให้เกิดภาษาโปรแกรมที่วางอยู่บนกระบวนทัศน์ (paradigm) ที่แตกต่างกันจำนวนมากมาย

วิชานี้ มีเป้าหมายที่จะศึกษาแนวคิดต่าง ๆ ที่มีใช้ในภาษาโปรแกรมสมัยใหม่ เพื่อให้เข้าใจกระบวนการทำงาน ขีดจำกัด และผลกระทบที่มีต่อกระบวนการคิดวิเคราะห์ของผู้ใช้ เราจะสนใจแนวคิดพื้นฐาน พร้อมกับเน้นกระบวนทัศน์ภาษาโปรแกรมที่สำคัญได้แก่การโปรแกรมเชิงฟังก์ชัน และการโปรแกรมเชิงวัตถุ นอกจากนี้ยังจะให้ความสำคัญเกี่ยวกับแนวคิดของภาษาเชิงพลวัติที่ทวีความ สำคัญมากขึ้นเรื่อย ๆ และอาจรวมไปถึงแนวคิดของการ implement ภาษาบนระบบ run-time ต่าง ๆ เช่น บน JVM หรือบน CLR

นอกจากจะศึกษาแนวคิดที่สำคัญแล้ว ในวิชานี้จะมีการให้นิสิตได้ทดลองเขียนโปรแกรมด้วยภาษาและกรอบงาน (framework) ต่าง ๆ เพื่อเพิ่มความเข้าใจอีกด้วย

ตัวอย่างกระบวนทัศน์ของภาษาจะได้ทดลองในวิชานี้: Functional (ตัวอย่างภาษาที่อาจได้ทดลอง เช่น Scheme, Haskell, ML, ocaml, F#), Object-oriented (ตัวอย่างภาษา เช่น Smalltalk, Objective C, C++, Java, C#, Ruby), Multi-paradigm (เช่น Scala)

ตารางเรียนและเอกสารประกอบ

เอกสารส่วนมากจะใช้จากวิชา CS424 สอนโดย John Mitchell และ Kathleen Fisher

  • สัปดาห์ที่ 1: แนะนำวิชา, แนะนำแนวคิดการเขียนโปรแกรมเชิงวัตถุ ผ่านทาง C#, ทดลองและเปรียบเทียบ C# และ Java, แนวคิดพื้นฐานเกี่ยวกับภาษาโปรแกรม: แนวคิดเบื้องต้นของแบบชนิดข้อมูล (type system), โครงสร้างควบคุม
    • เบื้องหลัง1): นิสิตจำนวนมากคุ้นเคยกับ C# แต่อาจจะยังไม่เคยพัฒนาโปรแกรมเชิงวัตถุบน C# เนื้อหาในวันแรกจะแนะนำให้เห็นการ implement แนวคิดเชิงวัตถุลงในโครงสร้างของภาษา C# จากนั้นเราจะเริ่มเปรียบเทียบ C# กับ Java ซึ่งคล้ายคลึงกันมาก เราจะเปรียบเทียบบางคุณลักษณะของภาษาทั้งสอง และแสดงให้เห็นผลกระทบต่อลักษณะการโปรแกรม โดยเฉพาะการโปรแกรม GUI หลังจากนั้นเราจะทดลองคุณลักษณะใหม่ของ C# 3.0 เราจะจบด้วยการเกริ่นนำให้เห็นแนวคิดสำคัญต่าง ๆ ของภาษาโปรแกรม
  • สัปดาห์ที่ 2: ภาษาโปรแกรมเชิงวัตถุ 1 (Simula, Smalltalk, และ Ruby)
    • เอกสารประกอบ Slides หัวข้อ Modules and objects และ Simula and Smalltalk
  • สัปดาห์ที่ 4: ภาษาที่มีโครงสร้างแบบบล็อคและโครงสร้างควบคุม
  • สัปดาห์ที่ 6: ขอบเขต การเรียกฟังก์ชัน และการจัดการหน่วยความจำ
  • สัปดาห์ที่ 8: Erlang
1)
สำหรับอธิบายที่มาที่ไปของเนื้อหา
204435-52.txt · Last modified: 2009/09/26 08:33 by jittat
 
 
©2008 Another cool website by 80KV