01204435 มโนทัศน์ภาษาโปรแกรม

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

หน้านี้เป็นหน้าของรายวิชา 01204435 มโนทัศน์ภาษาโปรแกรม (Programming language concepts)

ประกาศ

  • วันที่ 19 ให้ติดตั้งภาษา Go มาด้วยครับ เราจะทดลองเขียนโปรแกรมแบบ concurrent กันครับ
  • เกณฑ์การให้คะแนน: สอบกลางภาค 30%, สอบปลายภาค 30%, การบ้าน 13%, นำเสนอภาษาโปรแกรม 13%, โครงงานเล็ก (จะอธิบายในคาบต่อไป) 14%
  • เนื้อหาที่ออกสอบกลางภาค: 1.เนื้อหาเกี่ยวกับภาษาโปรแกรมที่กล่าวถึงในห้องเรียน: javascript, haskell, scheme จะมีการเขียนบ้างและเปรียบเทียบบ้าง 2. Foundations, lambda calculus (ถามเกี่ยวกับ lambda expresion เช่นให้ evaluate และตัวแปรแบบ bind, free) 3. Scope and stack (ให้เขียนโครงสร้างของ activation records) 4. Type and type inference (ให้หา type ของ expression ต้องวาดต้นไม้และเขียนไล่เงื่อนไข) และ 5. Type classes
  • รวมข้อสอบเก่า
  • สำหรับการเรียนในวันที่ 18 ก.ย. ให้ติดตั้ง DrRacket มาด้วย
  • สำหรับการเรียนในวันที่ 18 มิ.ย. ให้ติดตั้ง Haskell มาด้วย โดยอาจจะติดตั้ง the Haskell Platform หรือจะติดตั้งเฉพาะ the Glasgow Haskell Compiler ก็ได้
  • สำหรับเนื้อหาภาคทฤษฎีเราจะใช้เนื้อหาจากวิชา CS242 Programming Languages จาก Stanford University
  • เจอกันใน facebook

การบ้าน

การส่งการบ้านโปรแกรมให้เมล์ไปที่อีเมล์ผู้สอน (เจ ไอ ที ที เอ ที แอต จีเมล์ ดอต คอม) โดยใช้ชื่อ subject ขึ้นต้นด้วย [01204435]

  • การบ้าน 1: (การบ้านโปรแกรม) ทำแบบฝึกหัด Haskell 1 ใน 01204435/haskell1 ในส่วน แบบฝึกหัด Recursion ข้อ 1-4
  • การบ้าน 2: (การบ้านทฤษฎี) ทำแบบฝึกหัดในเอกสารที่แจก: 3.2, 3.6, 6.1, 6.5, 6.6, 7.1, 7.7, 7.8, 7.12
    • หมายเหตุ: ใน ML fn y => f(y) จะเป็นการสร้าง anonymous function ซึ่งจะเหมือนกับ \y -> (f y) ใน Haskell

เนื้อหา

สัปดาห์ที่ 1

สัปดาห์ที่ 2

  • อังคารที่ 18 มิ.ย.: ทดลอง Haskell
  • พฤหัสบดีที่ 20 มิ.ย.: Introduction to Haskell (อ้างอิง slide จากวิชา cs242)

สัปดาห์ที่ 3

  • อังคารที่ 25 มิ.ย.: Foundations. (อ้างอิง slide จากวิชา cs242)
  • พฤหัสบดีที่ 27 มิ.ย.: Scope and stack (อ้างอิง slide จากวิชา cs242)

สัปดาห์ที่ 4

  • อังคารที่ 2 กค.: Scope and stack (ต่อ) (อ้างอิง slide จากวิชา cs242)
  • พฤหัสบดีที่ 4 กค.: ทดลอง Haskell 2

สัปดาห์ที่ 5

  • อังคารที่ 16 กค.: Types and type inference
  • พฤหัสบดีที่ 18 กค.: ทดลอง Racket (Scheme) เอกสาร

สัปดาห์ที่ 6

  • พฤหัส 25 ก.ค.: Type classes

สัปดาห์ที่ 7

  • อังคาร 6 ส.ค.: Monad I
  • พฤหัส 8 ส.ค.: ปฏิบัติการ: ค้นข้อมูลเกี่ยวกับภาษาโปรแกรม

สัปดาห์ที่ 8

  • อังคาร 20 ส.ค.: Control/exception
  • พฤหัส 22 ส.ค.: ปฏิบัติการ Smalltalk/Squeak

สัปดาห์ที่ 9

  • อังคาร 27 ส.ค.: Modularity, Objects
  • พฤหัส 29 ส.ค.: Objects (cont)

สัปดาห์ที่ 10

  • อังคาร 3 ก.ย.: (+Dart) Objects (cont)
  • พฤหัส 5 ก.ย.: (+Lua) เนื้อหาจากหัวข้อ Typed, class-based object-oriented languages: C++ and Java

สัปดาห์ที่ 11

  • อังคาร 10 ก.ย.: (+OCaml) เนื้อหาจากหัวข้อ Typed, class-based object-oriented languages: C++ and Java
  • พฤหัส 12 ก.ย.: (+Cyclone) เนื้อหาจากหัวข้อ Typed, class-based object-oriented languages: C++ and Java

สัปดาห์ที่ 12

  • อังคาร 17 ก.ย.: (+Go) เนื้อหาจากหัวข้อ Subtyping
  • พฤหัส 19 ก.ย.: (+Vala) เนื้อหาจากหัวข้อ Subtyping

สัปดาห์ที่ 13

  • อังคาร 24 ก.ย.: (+Zimbu) เนื้อหาจากหัวข้อ Java implementation, Templates and generics
  • พฤหัส 26 ก.ย.: (+Scratch) เนื้อหาจากหัวข้อ Designing a programming language for education: Alice

ซอฟต์แวร์

ลิงก์

  • หน้ารายวิชาเมื่อปีการศึกษาต่าง ๆ: 2553, 2552 2550, 2549