01204435-56
ไปยังการนำทาง
ไปยังการค้นหา
หน้านี้เป็นหน้าของรายวิชา 01204435 มโนทัศน์ภาษาโปรแกรม (Programming language concepts) ในปีการศึกษา 2556
เนื้อหา
ประกาศ
- วันที่ 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
- อังคารที่ 11 มิ.ย.: Introduction, Javascript
- เอกสารอ้างอิงเกี่ยวกับ javascript: หน้า JavaScript จาก MDN
- รวม e-book JavaScript
- พฤหัสบดีที่ 13 มิ.ย.: ทดลอง Node.js
- การติดตั้ง node.js อ่านจาก node.js wiki
- คลิปสำหรับดูเล่นก่อนเรียน: Introduction of Node JS by Ryan Dahl (Creator of Node Js)
- การทดลอง javascript/node.js
สัปดาห์ที่ 2
- อังคารที่ 18 มิ.ย.: ทดลอง Haskell
- อ่านประกอบ: Real World 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