204435: homework 1
)ในมุมมองที่กว้างที่สุด ภาษาโปรแกรมเป็นเครื่องมือสำหรับอธิบายการคำนวณ (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