ผลต่างระหว่างรุ่นของ "204435 มโนทัศน์ภาษาโปรแกรม 2550"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
(สร้างหน้าใหม่: หน้านี้เป็นหน้ารายวิชาของวิชามโนทัศน์ภาษาโปรแกรม ผู้...)
 
แถว 3: แถว 3:
 
ผู้สอน: [http://www.cpe.ku.ac.th/~jtf จิตร์ทัศน์ ฝักเจริญผล]
 
ผู้สอน: [http://www.cpe.ku.ac.th/~jtf จิตร์ทัศน์ ฝักเจริญผล]
  
==ประกาศ==
+
That's the perfect iisgnht in a thread like this.
* เกรดและคะแนนดูได้ที่หน้าห้องครับ
 
* ข้อสอบปลายภาค
 
** อนุญาตให้เปิดเอกสารได้
 
** จะเน้นมโนทัศน์ (concept) ที่เรียนหลังสอบกลางภาค เช่น แนวคิดเกี่ยวกับโมดูล, การโปรแกรมเชิงวัตถุ, การเปรียบเทียบภาษาเชิงวัตถุต่าง ๆ การโปรแกรมแบบทำงานพร้อมกัน เป็นต้น
 
** อย่างไรก็ตามในข้อสอบอาจกล่าวถึง หรืออ้างถึง หรือให้วิเคราะห์ แนวคิดที่เรียนมาทั้งหมดได้
 
** ข้อสอบปลายภาคจะไม่เน้นให้เขียนโปรแกรม และไม่เน้นภาษาโปรแกรมที่ทดลอง เช่น Ruby หรือ Python อย่างไรก็ตาม อาจมีการถามแนวคิดต่าง ๆ โดยยกตัวอย่างจากภาษาเหล่านี้ด้วย ยกตัวอย่างเช่น ข้อสอบอาจถาม
 
จงพิจารณาโปรแกรมภาษา Ruby ที่หาผลรวมของตัวเลขใน array (หรือเรียกว่า list ในภาษาอื่น) ต่อไปนี้
 
  l = [1,2,3,4,5,6]
 
  sum = 0
 
  l.each do |x|
 
    sum += x
 
  end
 
โครงสร้าง do .. end เรียกว่า block ในโปรแกรมข้างต้น ใน block ดังกล่าวเราประกาศให้รับค่าเข้ามาทางตัวแปร x
 
แล้วนำมาบวกกับตัวแปร sum โดย method each ของคลาส array จะนำข้อมูลแต่ละตัวมาป้อนให้กับ block นี้
 
จากตัวอย่างดังกล่าว จงอธิบายว่า เพราะเหตุใด block จึงต้องเป็น closure
 
* '''ข้อสอบเก่า:''' [http://theory.cpe.ku.ac.th/wiki/images/204435Final49.pdf  204435Final29.pdf]
 
  
 
==การเตรียมตัวก่อนเข้าเรียน==
 
==การเตรียมตัวก่อนเข้าเรียน==

รุ่นแก้ไขเมื่อ 08:20, 14 กุมภาพันธ์ 2555

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

ผู้สอน: จิตร์ทัศน์ ฝักเจริญผล

That's the perfect iisgnht in a thread like this.

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

ในส่วนนี้จะระบุรายละเอียดของซอฟต์แวร์ที่นิสิตต้องติดตั้งก่อนเข้าเรียนแต่ละครั้ง โดยแยกเป็นหมู่เรียนที่วิทยาเขตบางเขน และวิทยาเขตศรีราชา

  • สัปดาห์ที่ 13
    • จะทดลองเขียนโปรแกรมแบบทำงานพร้อมกัน ด้วย Stackless Python ให้ติดตั้งมาก่อน เพื่อความสะดวกแนะนำให้ใช้ ตัวติดตั้งสำเร็จรูป ที่มีให้เฉพาะบน Windows ในกรณีของ Linux ต้องคอมไพล์เอง

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

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

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

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

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

การบ้าน

การส่งการบ้านที่เป็นโปรแกรม ให้ส่งเป็นจดหมายอิเล็กทรอนิกส์ ไปที่ e-mail ของอาจารย์ผู้สอน (ดูจาก [1])

  • การบ้าน 1: ให้ทำแบบฝึกหัดในเอกสาร Scheme ข้อที่ 1, 2, 6, 8, 10 และ 11 (กำหนดส่ง. บางเขน: 12 พ.ย. ศรีราชา: 28 พ.ย.) (เฉลย)
  • การบ้าน 2: pdf (กำหนดส่ง: บางเขน: 30 พ.ย. ศรีราชา: 12 ธ.ค.)
  • การบ้าน 3: pdf (กำหนดส่ง: บางเขน: 11 ธ.ค. ศรีราชา: 12 ธ.ค.)
  • การบ้าน 4: pdf (กำหนดส่ง: บางเขน: 17 ธ.ค. ศรีราชา: 19 ธ.ค.)
  • การบ้านโปรแกรม 3: จะประกาศเร็ว ๆ นี้ ส่งหลังสอบกลางภาค

คำบรรยายและแผ่นใส

เอกสารหลักจะใช้บันทึกคำบรรยายที่เตรียมโดยผู้สอน ประกอบกับสไลด์วิชา Programming Languages ของ John C. Mitchell

  • แนะนำวิชา (pdf)
  • แนะนำภาษาโปรแกรมเชิงฟังก์ชัน: Scheme (slides ของ JCM: Lisp) (เอกสารประกอบคำบรรยาย (ไม่สมบูรณ์): pdf)
  • พื้นฐาน: การแปลภาษาโปรแกรม แลมบ์ดาแคลคูลัส (slides ของ JCM: ppt, pdf) (เอกสารประกอบคำบรรยาย (ไม่สมบูรณ์): pdf)
  • ภาษาตระกูล Algo และ ML (slides ของ JCM)
  • ระบบแบบชนิดข้อมูล (type system) และการอนุมานแบบชนิดข้อมูล (slides ของ JCM)
  • ขอบเขตตัวแปรและการจัดการ (slides ของ JCM) (เอกสารประกอบคำบรรยาย (ไม่สมบูรณ์): pdf)
  • โครงสร้างควบคุม (slides ของ JCM)
  • โมดูลและการโปรแกรมเชิงวัตถุ (slides ของ JCM)
  • การโปรแกรมเชิงวัตถุ: Simula, Smalltalk (slides ของ JCM)
  • การโปรแกรมเชิงวัตถุ: C++, Java, C# (slides ของ JCM)
  • ภาษาเชิงพลวัติ (dynamic languages): Ruby และ Python
  • กรอบงานการโปรแกรม: Ruby on Rails, (Seaside)
  • Meta-programming
  • การทำงานพร้อมกัน: Java และ Erlang
  • การวิเคราะห์เชิงสถิตย์และเครื่องมือ (static analysis)

ซอฟต์แวร์และเอกสารเพิ่มเติม

Scheme

ML

Python

Ruby

Smalltalk

ลิงก์ที่เกี่ยวข้อง