====== 204112 การเขียนโปรแกรมเชิงโครงสร้าง ====== ====== Structured Programming ====== ==== 2015 S2 ==== ===== วิชาที่ต้องผ่านก่อน (prerequisites) ===== * 204__111__ ===== ข่าวประกาศ ===== * ผลงานของนักศึกษา [[:2015:poster|poster]] * [May 07] สัดส่วนหัวข้อที่ออกสอบ {{ :2015:final_2015_breakdown.jpg?300 |}} * [May 03] หัวข้อที่ออกสอบนะครับ อัตราส่วนคะแนนเป็นไปตามการบ้านและชั่วโมงสอน ลักษณะข้อสอบคล้ายที่ผ่านมา มี choice, จับคู่, short answer, เติมบางส่วนของ code, เขียนเองทั้งหมด, ไล่ code {{:2015:112breakdown_-_3.png?direct&300|}} * [Apr 06] Lab12's grader is online at http://bit.ly/1RDKu8M (permanent move) * [Apr 02] Week 11's grader is online * [Mar 26] Week 10's homework is online * [Mar 24] ตรวจสอบคะแนนสอบกลางภาคได้ที่อีเมล @cmu {{ :2015:histogram.png?200 |}} * [Mar 21] ทั้ง 3 Sec ให้ทำ ใบงาน Recursion แล้วมาตรวจคำตอบโดยการ code ใน Lab พรุ่งนี้ (Mar 22) ครับ * [Mar 16] ลงรายชื่อกลุ่มที่นี https://goo.gl/EE9WfD ภายใน 23:59 วันที่ 16 มีนาคมครับ * [Mar 09] Week 8's homework and grader is online * [Feb 27] [[http://www.piazza.com/class_profile/get_resource/iit6ndqf5cp53v/il57biit1e04cz|Midterm Breakdown]] อนุญาตกระดาษสรุปขนาดไม่เกิน F4 หนึ่งแผ่นครับ * [Feb 19] Week 7's grader is online * [Feb 16] {{::2015:lab07_array_15s2_labsheet.docx|Week07 - Labsheet}} ไม่อนุญาตให้ใช้ string.h ในข้อ Lab07_2 * [Feb 12] Week 6's homework is online * [Feb 09] การบ้านทุกงานที่ clone จาก GitHub ให้ push ขึ้น repo ด้วยครับเมื่อทำเสร็จแล้ว ไม่อย่างนั้นเสีย 20% นะครับ * [Feb 09] {{::2015:lab06_pointers_15s2_labsheet.docx|Week06 - Labsheet}} {{::2015:lab06_pointers_15s2.pdf|assgn sheet}} {{::2015:lab06_1.zip|Lab06_1}} {{::2015:w04_b_lab_2_minmax.pdf|204111 - MinMax}} {{::2015:test.zip|test.c}} * [Feb 02] {{::2015:lab05_debug_15s2.docx|Week05 - Labsheet}} * [Jan 31] HW04_2 test case {{::2015:hw04_2.zip|5}} {{::2015:testcase007.zip|7}} * [Jan 28] การบ้าน {{https://piazza.com/chiang_mai_university/spring2016/204112/resources | HW04 }} เพิ่มเติมรายละเอียดในโจทย์ข้อ HW04_3 ครับ * [Jan 28] Week 4's homework is online * [Jan 26] Reminder: เรามี quiz Lab กันวันที่ 27 เวลา 10:30 ที่ห้อง 301 ครับ * [Jan 25] {{::2015:hw03_1_testcase1.zip| HW03_1 test case 1}} * [Jan 22] Sec003 วันที่ 22 เวลา 14:30 ย้ายไปเรียนที่ห้อง CSB303 * [Jan 21] Week 3's homework is online * [Jan 20] Lab03_1's grader is online * [Jan 18] ให้ศึกษาการทำงานของฟังก์ชัน rand() และการใช้งาน (ลอง หาตัวอย่าง code แล้วลอง run) จาก Library ก่อนเข้าเรียน Lab วันที่ 19 ครับ * [Jan 16] Week 2's Grader is online * [Jan 16] Reminder: สอบ Lab วันที่ 20 เป็น closed book, closed notes นะครับ มีให้แค่ C reference Card 1 แผ่น สุ่มการบ้าน (HW + Lab) มาออก แล้วแต่ดวงนะครับใครได้ข้อไหน * [Jan 13] Week 2's Assignment is online * [Jan 10] ให้ นศ เข้าร่วมอบรม Git and Version Control workshop วันที่ 13 มกราคม ที่ห้อง CSB301 เวลา 9:30 * [Jan 08] Grader for Assignment 1 is online * [Jan 05] Week 1's Assignment is online * [Jan 05] ให้ นศ เข้าร่วมอบรม Linux workshop วันที่ 6 มกราคม ที่ห้อง CSB301 เวลา 9:30 TODO - ให้นักศึกษา Download และ install Cygwin Pack * http://www.cs.science.cmu.ac.th/course/204112/IDE/CygwinETCx86_112_v1_1.zip - ให้นักศึกษาลงทะเบียน Piazza ของรายวิชา * http://piazza.com/chiang_mai_university/spring2016/204112 * Access code: MacAlistair - ให้นักศึกษาสมัคร Git Hub: Student Developer Pack โดยให้ username เป็น firstname_last เหมือน CMU mail * https://education.github.com/pack * แล้วให้ลง cmu mail และ github ID ที่นี่ https://goo.gl/70L0hT (เพื่อรับ password ส่งงาน) ===== วัตถุประสงค์กระบวนวิชา ===== - นักศึกษาจะได้รับความรู้และความเข้าใจเกี่ยวกับการเขียนโปรแกรมคอมพิวเตอร์แบบโครงสร้าง และวิธีพัฒนาโปรแกรม - นักศึกษาจะมีทักษะในการออกแบบและพัฒนาโปรแกรม ตลอดทั้งการแก้ปัญหาด้วยคอมพิวเตอร์ ===== เวลาเรียน ===== **Section 001:** * **Lec:** Fr 9:30 - 11:30 (room CSB207) * **Lab:** Tu 9:30 - 11:30 (room CSB307) * **Instructor:** ผู้ช่วยศาสตราจารย์ ดร.วัชรี จำปามูล * Office: CSB110 * Office hours: TBA * Assignment Checklist: https://goo.gl/Xvpx25 **Section 002:** * **Lec:** Fr 9:30 - 11:30 (room CSB210) * **Lab:** Tu 9:30 - 11:30 (room CSB303) * **Instructor:** อาจารย์ ดร.รัศมีทิพย์ วิตา * Office: CSB107 * Office hours: TBA * Assignment Checklist: https://goo.gl/wbJzNQ **Section 003:** * **Lec:** Fr 14:30 - 16:30 (room CSB207) * **Lab:** Tu 14:30 - 16:30 (room CSB308) * **Instructor:** อาจารย์ กิตติพิชญ์ คุปตะวาณิช * Office: CSB107 * Office hours: TBA * Assignment Checklist: https://goo.gl/VfbRH1 **Facebook Group:** http://www.facebook.com/groups/15S2.204112 ===== วันสอบ ===== * **สอบย่อยครั้งที่ 1:** (Algorithm Design and Testing) วันพุธที่ 27 มกราคม เวลา 10:30 - 11:30 น. * **สอบย่อยครั้งที่ 2:** (Pointers and 1D Array) วันพุธที่ 10 กุมภาพันธ์ เวลา 10:30 - 11:30 น. * **สอบย่อยครั้งที่ 3:** (Recursion) วันพุธที่ 23 มีนาคม เวลา 10:30 - 11:30 น. * **สอบปฏิบัติการ:** วันพุธ เวลา 10:30 - 12:00 (พุธที่ 20 มกราคม, 3 กุมภาพันธ์, 17 กุมภาพันธ์, 9 มีนาคม, 30 มีนาคม, 20 เมษายน) * **สอบข้อเขียนกลางภาค :** วันที่ 3 มีนาคม 2559 เวลา 12:00 - 15:00 น. * **สอบข้อเขียนปลายภาค :** วันที่ 8 พฤษภาคม 2559 เวลา 12:00 - 15:00 น. **__หมายเหตุ__ เสนอหัวข้อโครงงาน** วันพุธที่ 16 มีนาคม เวลา 10:30 น. ===== หลักเกณฑ์การให้คะแนน =====
  • คะแนนเข้าชั้นเรียน, ปฏิบัติการ, และการบ้าน
  • 15%
  • สอบย่อย (Quiz)
  • 05%
  • สอบปฏิบัติการ
  • 15%
  • สอบกลางภาค
  • 25%
  • สอบปลายภาค
  • 30%
  • โครงงาน
  • 10%
    **//การ__ลอก__การบ้าน แบบฝึกหัดหรืองานที่ได้รับมอบหมาย ถือเป็น__การทุจริต__// โดยจะ__ไม่ได้__รับการพิจารณาให้__คะแนน__ในงานนั้นๆ __ทั้งผู้ลอก__ __และผู้ให้ลอก__** ==== ข้อตกลงพิเศษของกระบวนวิชา ==== * นักศึกษาทุกคนต้องมีเวลาเข้าเรียน __ไม่น้อยกว่า 80 %__ จึงจะมีสิทธิ์เข้าสอบ * นักศึกษาต้องลงลายมือชื่อเข้าชั้นเรียน ภายในช่วงเวลาที่กำหนด คือ 9.30 - 9.50 น.สำหรับ ตอน 001 และตอน 002 และ 14.30-14.50 น. สำหรับตอน 003 เท่านั้น หากเลยเวลาที่กำหนด จะถือว่าขาดเรียน แต่อนุญาตให้เข้าเรียนได้ ===== เนื้อหาวิชาและแผนการสอน ===== ====Schedule==== |< 100% 4% 40% 8% 8% 40% >| ^ Week ^ Lab ^^ Lec ^^ | 01 | **การพัฒนาโปรแกรมภาษาซี โดยใช้ gcc** * กระบวนการสร้างแอพพลิเคชันภาษาซี\\ (C compiling and Linking) | 5 ม.ค. | 8 ม.ค. | **หลักการออกแบบโปรแกรมที่ดี ** | | 02 | **การพัฒนาโปรแกรมภาษาซี โดยใช้ gcc** * การแปลงผังงานโปรแกรมเป็นชุดคำสั่งภาษาซีและคำสั่งในการรับ/ แสดงผลอย่างง่าย | 12 ม.ค. | 15 ม.ค. | **ภาพรวมการเขียนโปรแกรมภาษาซี** - การแก้ปัญหา (เน้นการวิเคราะห์ปัญหา) {{:w01_02_lec_1_ch01reviewprobsolv_2x2.pdf|pdf}} - การเขียนอัลกอริทึม (การออกแบบแนวทางการแก้ปัญหา) - โครงสร้างควบคุมแบบเงื่อนไขและทำซ้ำ {{:w02_03_lec_2_ch01controlstm_2x2.pdf|pdf}} - ฟังก์ชันและการส่งผ่านค่าพารามิเตอร์ * {{:w02_03_lec_1_ch01_printf_scanf_2x2.pdf| printf() - scanf()}} * {{:w02_03_lec_3_ch01elementofc_2x2.pdf| Elements of C}} **การทดสอบและการแก้จุดบกพร่อง** - กลยุทธ์การทดสอบและการแก้จุดบกพร่อง - การออกแบบกรณีทดสอบ - Blackbox Testing - Whitebox Testing | | 03 | **gcc common errors and warnings** | 19 ม.ค. | 22 ม.ค. | ::: | | 04 | **การทดสอบและการแก้จุดบกพร่อง** | 26 ม.ค. | 29 ม.ค. | **โครงสร้างข้อมูล** * พอยน์เตอร์และการอ้างถึง (รวมถึงฟังก์ชันแบบ Called by Reference) | | 05 | **โครงสร้างข้อมูล** * พอยน์เตอร์และการอ้างถึง (รวมถึงฟังก์ชันแบบ Called by Reference) | 2 ก.พ. | 5 ก.พ. | **โครงสร้างข้อมูล** * ตัวแปรชุด 1 มิติ * สายอักขระและการประมวลผล * การดำเนินการระดับบิต | | 06 | **โครงสร้างข้อมูล** * ตัวแปรชุด 1 มิติ * สายอักขระและการประมวลผล * การดำเนินการระดับบิต | 9 ก.พ. | 12 ก.พ. | **โครงสร้างข้อมูล** * ตัวแปรชุดหลายมิติ * สายอักขระและการประมวลผล * ฟังก์ชันสายอักขระ | | 07 | **โครงสร้างข้อมูล** * ตัวแปรชุดหลายมิติ * สายอักขระและการประมวลผล * ฟังก์ชันสายอักขระ | 16 ก.พ. | 19 ก.พ. | **โครงสร้างข้อมูล** * ตัวแปรชุดของพอยน์เตอร์ | | 08 | **โครงสร้างข้อมูล** * ตัวแปรชุดของพอยน์เตอร์ * Command Line Argument Array | 23 ก.พ. | 26 ม.ค. | **Algorithm and Programming Practice** **Exam Review** | | **สอบข้อเขียนกลางภาค วันพฤหัสบดีที่ 3 มีนาคม เวลา 12:00 - 15:00 น.** ||||| | 09 | **การจัดดำเนินการแฟ้มข้อมูล** * การจัดระเบียบแฟ้ม * แฟ้มแบบข้อความและแบบไบนารี | 8 มี.ค. | 11 มี.ค. | **ฟังก์ชันแบบเวียนบังเกิด ** * แนวคิดของการเวียนบังเกิด * การโปรแกรมแบบเวียนบังเกิด | | 10 | **ฟังก์ชันแบบเวียนบังเกิด ** * แนวคิดของการเวียนบังเกิด * การโปรแกรมแบบเวียนบังเกิด | 15 มี.ค. | 18 มี.ค. | **การจัดดำเนินการแฟ้มข้อมูล** * การจัดระเบียบแฟ้ม * แฟ้มแบบข้อความและแบบไบนารี **โครงสร้างข้อมูล** * เรคอร์ด * ยูเนียน * Enumeration Type | | 11 | **โครงสร้างข้อมูล** * เรคอร์ด * ยูเนียน * Enumeration Type | 22 มี.ค. | 25 มี.ค. | **โครงสร้างข้อมูล** - เรคอร์ดและ ตัวแปรชุดของเรคอร์ด | | 12 | **โครงสร้างข้อมูล** - เรคอร์ดและ ตัวแปรชุดของเรคอร์ด | 29 มี.ค. | 1 เม.ย. | **โครงสร้างข้อมูล** - โครงสร้างแบบลิสต์ | | 13 | **โครงสร้างข้อมูล** - โครงสร้างแบบลิสต์ | 5 เม.ย. | 8 เม.ย. | **โครงสร้างข้อมูล** - โครงสร้างแบบลิสต์ และการเวียนเกิด | | 14 | **โครงสร้างข้อมูล** - โครงสร้างแบบลิสต์ และการเวียนเกิด | 19 เม.ย. | 22 เม.ย. | **การดำเนินการแฟ้มข้อมูลด้วยการเข้าถึงแบบสุ่ม** | | 15 | **Algorithm and Programming Practice** | 26 เม.ย. | 29 เม.ย. | **Algorithm and Programming Practice** **Exam Review** | | **สอบข้อเขียนปลายภาค วันอาทิตย์ที่ 8 พฤษภาคม เวลา 12:00 - 15:00 น.** ||||| ===== การส่งงานผ่านเว็บไซต์ (เฉพาะการบ้านที่กําหนด) ===== [[http://hw.cs.science.cmu.ac.th/CS_HW/p204112.html]] หรือที่เว็บไซต์ของภาควิชา http://www.cs.science.cmu.ac.th->คลิกหัวข้อเว็บเพจส่งการบ้านโดยให้คลิก Link เพื่อ Login ตามรหัสวิชา และตอนเรียน (Section) ที่ลงทะเบียนเรียน ** จะมีการแจก User name และรหัสผ่าน ในชั่วโมงปฏิบัติการ** **ให้นักศึกษาจดบันทึก User name และรหัสผ่านให้ดี อย่าทําหาย** หากส่งงานช้ากว่ากำหนด จะคิดคะแนน **80%** จากคะแนนเต็ม และไม่อนุญาตให้ส่งงานช้าเกิน **3** วัน \\ งานที่ตั้งชื่อไฟล์ไม่ตรงกับที่กำหนดในใบงาน **จะไม่ได้รับการตรวจ** * ไฟล์งานทุกไฟล์ที่ส่ง online จะต้องมีการแทรก comment ที่บรรทัดบนสุด ในรูปแบบดังนี้ /* ชื่อ นามสกุล * 5XXXXXXXX * Lab (หรือ HW) YY * Problem Z * 204112 Sec 00A */ * งานที่ส่งเป็นกระดาษ หรือ MS Word Documents ให้เขียนที่หัวกระดาษ**__ด้านขวา__**ดังนี้ |< 100% >| | **ชื่อ นามสกุล ลำดับที่ ##**\\ **5XXXXXXXX**\\ **Lab** (หรือ **Lec**)** YY**\\ **Problem Z**\\ **204112 Sec 00A**| ==== กำหนดส่งงาน (Online)==== * ไม่รับงานส่งสายหลังจากวันที่ที่ระบุในวงเล็บ (เกิน 3 วันจากกำหนดส่ง) |<100%>| ^ Assignment ^ Assignment Sheet ^ File Naming Format ^ Due Date ^ Globbing\\ (สำหรับ TA) ^ |Lab01_1 | {{https://piazza.com/chiang_mai_university/spring2016/204112/resources|Lab01}} | Lab01_1_5XXXXXXXX.c | TBA\\ (TBA) | Lab01_1_5????????.c | |Lab01_2 | ::: | Lab01_2_5XXXXXXXX.c | ::: | Lab01_2_5????????.c | |HW01_1 |{{https://piazza.com/chiang_mai_university/spring2016/204112/resources|HW01}} | HW01_1_5XXXXXXXX.c | @#FFFFCC:TBA\\ (TBA) | HW01_1_5????????.c | |HW01_2 | ::: | HW01_2_5XXXXXXXX.c | ::: | HW01_2_5????????.c | |HW01_3 | ::: | HW01_3_5XXXXXXXX.c | ::: | HW01_3_5????????.c | ===== Development Environment ===== Software หลักที่ใช้หลักที่ใช้ในภาคเรียนนี้ คือ gcc compiler และ text editor ตามที่นักศึกษาเลือก * Windows * install software bundle ของรายวิชา (cygwin etc) [[http://www.cs.science.cmu.ac.th/course/204112/IDE/CygwinETCx86_112_v1_1.zip|link1]] [[http://goo.gl/WvI03n|วิธีติดตั้ง]] * หรือสามารถติดตั้งเอง [[http://www2.warwick.ac.uk/fac/sci/moac/people/students/peter_cock/cygwin/part1|install cygwin]] และ install [[http://www2.warwick.ac.uk/fac/sci/moac/people/students/peter_cock/cygwin/part2/|Development Tools]] * Sublime-3 config for Windows (ติตตั้งด้วยคำสั่ง install.bat) {{::sublime_text3_win.zip|download}} * OSX [[https://developer.apple.com/xcode/downloads/|install Xcode]] * Linux * Ubuntu: install build-essential * Fedora: install "Development Tools" * Sublime-3 config for Linux (ติตตั้งด้วยคำสั่ง ./install.sh) {{::sublime-text-3.zip|download}} ===== Software อื่นๆ ===== * Visual Programming Tools * [[http://www.flowgorithm.org/| flowgorithm]] (Windows) * Free Diagram Drawing Tools * [[http://www.draw.io|draw.io]] (Web Application) * [[https://www.lucidchart.com/|Lucid Chart]] (Web Application) * [[http://www.yworks.com/en/products_yed_about.html|yED]] (Windows, Mac OS X, Linux, java) * [[http://dia-installer.de/|Dia Diagram Editor]] (Windows, Mac OS X, Linux) ===== หนังสือ/วารสารประกอบการเรียน ===== [1] Alfred V. Aho and Jeffrey D. Ullman. Foundations of Computer Science : C edition, W.H. Freeman & Company, New York, 1995. \\ [2] Harold Abelson, Gerald J. Sussman and Julie Sussman. Structure and Interpretation of Computer Programs, 2nd edition, Mc-Graw Hill Co., 1998. \\ [3] Robert W. Sebesta. Concepts of Programming Languages, 6th edition. Addison Wesley, 2003 ===== เอกสารเพิ่มเติม ===== [1] //[[http://bookboon.com/uk/student/it/gentle-introduction-to-mathematics-for-computer|Mathematics for Computer Scientists]]// by Janacek and Close \\ [2] //[[http://www.iups.org/media/meeting_minutes/C.pdf|The C Programming Language (ANSI C Version)]]// 2nd Edition by Ritchie and Kernighan \\ [3] //[[https://www.google.co.th/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=a+first+book+of+ansi+c|A First Book of ANSI C]]//, 4th Edition by Gary J. Bronson \\ [4] //[[http://csapp.cs.cmu.edu/|Computer Systems: A Programmer's Perspective]]// 2nd Edition by Bryan and O'Hallaron \\ [5] //[[http://www.cs.science.cmu.ac.th/course/204112/13S2/Lecture2012|เอกสารประกอบปีการศึกษา 2555]]// โดย อาจารย์ ดร.อารีรัตน์ ตรงรัศมีทอง \\ [6] //[[http://www.cs.science.cmu.ac.th/course/204112/13S2/Matinee|เอกสารเพิ่มเติม]]// โดย อาจารย์ ดร. เมทินี เขียวกันยะ \\ [7] //[[http://www.cs.science.cmu.ac.th/course/204112/doku.php?id=%E0%B9%80%E0%B8%AD%E0%B8%81%E0%B8%AA%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1%E0%B9%80%E0%B8%95%E0%B8%B4%E0%B8%A1|เอกสารเพิ่มเติม]]// โดย อาจารย์ กิตติพิชญ์ คุปตะวาณิช ===== ภาคการศึกษาก่อน ===== * [[http://www.cs.science.cmu.ac.th/course/204112/13S2/index.html|ปีการศึกษา 2556]] * [[ปีการศึกษา 2557]]