วิทยาการคอมพิวเตอร์

วิชาที่ศึกษาเกี่ยวกับทฤษฎีการคำนวณสำหรับคอมพิวเตอร์

วิทยาการคอมพิวเตอร์ หรือ วิทยาศาสตร์คอมพิวเตอร์ (อังกฤษ: computer science หรือ informatics) เป็นศาสตร์เกี่ยวกับการศึกษาค้นคว้า....ทฤษฎีการคำนวณสำหรับคอมพิวเตอร์ และทฤษฎีการประมวลผลสารสนเทศข้อมูล ทั้งด้านซอฟต์แวร์ ฮาร์ดแวร์ และ เครือข่าย วิทยาการคอมพิวเตอร์มีความเกี่ยวโยงกับทฤษฎีการคำนวณ อัลกอริทึม ปัญหาด้านการคำนวณ การออกแบบฮาร์ดแวร์ ซอฟต์แวร์ และ แอปพลิเคชัน วิทยาการคอมพิวเตอร์ศึกษาเกี่ยวกับกระบวนการประมวลผลข้อมูล ทั้งในสิ่งมีชีวิตตามกระบวนการธรรมชาติ และ ระบบคอมพิวเตอร์ที่มนุษย์สร้างขึ้น เช่น การสื่อสาร การควบคุม การรับรู้ การเรียนรู้ และ สติปัญญา โดยเฉพาะในคอมพิวเตอร์

Expression for Church numerals in lambda calculus Plot of a quicksort algorithm
Example of Computer animation produced using Motion capture Half-adder circuit
วิทยาการคอมพิวเตอร์ศึกษาเกี่ยวกับโครงสร้างพื้นฐานทางทฤษฎีของข้อมูล การคำนวณข้อมูล และ เทคนิคการประยุกต์ใช้ข้อมูลในทางปฏิบัติ

สาขาวิชาวิทยาการคอมพิวเตอร์ สามารถแบ่งออกเป็น 2 ภาค ได้แก่ ภาคทฤษฎี ซึ่งมีความเป็นนามธรรมสูง เช่น การวิเคราะห์และสังเคราะห์ขั้นตอนวิธี ทฤษฎีความซับซ้อนของการคำนวณ ไปจนถึงภาคปฏิบัติ ที่เน้นการใช้งานที่เป็นรูปธรรม เช่น ทฤษฎีภาษาโปรแกรม ทฤษฎีการพัฒนาซอฟต์แวร์ ทฤษฎีฮาร์ดแวร์คอมพิวเตอร์ คอมพิวเตอร์กราฟิก และ ทฤษฎีเครือข่าย

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

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

ประวัติของชื่อ แก้

คำว่า วิทยาการคอมพิวเตอร์ มีความหมายเทียบเท่ากับคำในภาษาอังกฤษ คือ computer science (หรือในสหราชอาณาจักร นิยมใช้คำว่า computing science โดยมีความหมายต่างกันเล็กน้อย)

คำที่ใช้ในภาษาฝรั่งเศสคือ Informatique จาก "information" (สารสนเทศ) และ "automatique" (อัตโนมัติ) บัญญัติโดย Philippe Dreyfus ในปี พ.ศ. 2505 (ค.ศ. 1962) ซึ่งคำในภาษาอิตาลี Informatica และภาษาสเปน Informática ก็มีที่มาจากคำในภาษาฝรั่งเศสคำนี้ ส่วนคำที่ใช้ในภาษาเยอรมันคือ Informatik ซึ่งก็ดูคล้ายกัน และมีรากจากคำทั้งสองเหมือนกัน แต่ได้ถูกบัญญัติใช้ในเยอรมันมาตั้งแต่ปี พ.ศ. 2500 (ค.ศ. 1957) และเมื่อไม่นานมานี้ ในภาษาอังกฤษเอง ก็ได้มีการใช้คำว่า informatics ซึ่งก็มาจากรากเดียวกัน แต่มักใช้หมายความถึง information science (สารสนเทศศาสตร์) หรือในบางครั้งใช้แทนคำว่า computer science (หรือ computing science) แต่กินความหมายที่กว้างไปกว่าคอมพิวเตอร์หรือเครื่องจักร โดยรวมถึงการคำนวณและสารสนเทศในธรรมชาติด้วย

ชื่อในภาษาไทย แก้

คำว่า "computer science" แต่เดิมในภาษาไทยเรียกทับศัพท์ว่า "คอมพิวเตอร์ไซแอนส์" [1] โดยเป็นชื่อของหน่วยงานหนึ่งของจุฬาลงกรณ์มหาวิทยาลัย ซึ่งเป็นหน่วยงานแรกในประเทศไทยที่สอนวิชาวิทยาศาสตร์คอมพิวเตอร์ ต่อมาได้ย้ายมาเป็นภาควิชาวิศวกรรมคอมพิวเตอร์ สังกัดคณะวิศวกรรมศาสตร์ และยังคงหลักสูตรวิทยาศาสตร์คอมพิวเตอร์มหาบัณฑิตไว้ ซึ่งเป็นหลักสูตรเดียวในประเทศที่ใช้คำว่า "วิทยาศาสตร์คอมพิวเตอร์" ส่วนหน่วยงานที่เปิดสอนวิชานี้ในระดับปริญญาตรีแห่งแรกในประเทศไทยคือ สาขาศาสตร์คอมพิวเตอร์ (ชื่อเดิม) คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์ ซึ่งสาเหตุที่เดิมเรียกว่า "ศาสตร์คอมพิวเตอร์" เนื่องจากคำว่า "ไซน์" ในความหมายนี้คือ "ศาสตร์" เช่นเดียวกับใน สังคมศาสตร์ หรือ โซเชียลไซน์ (social science)

ประวัติศาสตร์ แก้

รากฐานที่เก่าแก่ที่สุดของสิ่งที่จะกลายมาเป็นวิทยาศาสตร์คอมพิวเตอร์ มีมาก่อนการประดิษฐ์คอมพิวเตอร์ดิจิทัลเสียอีก เครื่องมือสำหรับคำนวณงานที่เป็นตัวเลขคงที่ เช่น ลูกคิด มีมาตั้งแต่สมัยจีนโบราณเพื่อช่วยในการคำนวณ เช่น การคูณและการหาร อัลกอริทึมสำหรับการคำนวณมีมาตั้งแต่สมัยโบราณก่อนที่จะมีการพัฒนาอุปกรณ์คอมพิวเตอร์ที่มีความซับซ้อน นายวิลแฮม ชิคคาร์ด (Wilhelm92 Schickard) ได้ออกแบบและสร้างเครื่องคำนวณเชิงกลที่ใช้งานได้เครื่องแรกในปี ค.ศ. 1623

ในปี ค.ศ.1673 นายก็อทฟรายด์ ไลบ์นิซ (Gottfried Leibniz) ได้แสดงเครื่องคำนวณเชิงกลแบบดิจิทัลที่เรียกว่า "Stepped Reckoner" ไลบ์นิซอาจถือได้ว่าเป็นนักวิทยาศาสตร์คอมพิวเตอร์และนักทฤษฎีสารสนเทศคนแรก โดยเฉพาะการที่เขาได้จัดทำเอกสารทางวิชาการเกี่ยวกับระบบเลขฐานสอง [2]

ในปี ค.ศ.1820 นายโทมัส เดอ กอลมาร์ (Thomas de Colmar)ได้เปิดตัวอุตสาหกรรมเครื่องคิดเลขเชิงกล เมื่อเขาประดิษฐ์เครื่องวัดเลขคณิตแบบง่าย เครื่องคำนวณเครื่องแรกที่แข็งแกร่งเพียงพอและเชื่อถือได้เพียงพอที่จะใช้งานได้ทุกวันในสภาพแวดล้อมของสำนักงาน [3]

นายชาร์ลส์ แบ็บเบจ (Charles Babbage) เริ่มออกแบบเครื่องคิดเลขเชิงกลอัตโนมัติเครื่องแรกชื่อ "Difference Engine" ของเขาในปี ค.ศ.1822 ซึ่งในที่สุดเขาก็มีแนวคิดเกี่ยวกับเครื่องคำนวณเชิงกลที่ตั้งโปรแกรมได้เครื่องแรกชื่อ Analytical Engine [4] โดยเขาเริ่มพัฒนาเครื่องนี้ในปี ค.ศ.1834 และในเวลาไม่ถึงสองปี เขาได้ร่างคุณลักษณะเด่น ๆ ของคอมพิวเตอร์สมัยใหม่ขึ้น [5] ขั้นตอนสำคัญคือการสร้างระบบบัตรเจาะรูที่ได้มาจากเครื่องทอผ้า Jacquard [6] ทำให้สามารถตั้งโปรแกรมได้อย่างไม่สิ้นสุดในการทอผ้า

 
ชาร์ลส์ แบบเบจ Charles Babbage บิดาแห่งวิทยาการคอมพิวเตอร์".[7]
 
เอดา เลิฟเลซ (Ada Lovelace) สตรีชาวฝรั่งเศส ผู้เขียนเรื่องอัลกอริทึมสำหรับคอมพิวเตอร์ขึ้นครั้งแรกของโลก ในปี ค.ศ.1843

ในปี ค.ศ.1843 ระหว่างการแปลบทความภาษาฝรั่งเศส เรื่องเครื่องมือวิเคราะห์ เอดา เลิฟเลซ (Ada Lovelace) ได้เขียนอัลกอริทึมในการคำนวณจำนวนแบร์นูลลี ซึ่งถือเป็นอัลกอริทึมที่เผยแพร่ครั้งแรกที่ได้รับการออกแบบมาโดยเฉพาะสำหรับการใช้งานบนคอมพิวเตอร์ [8]

ประมาณปี ค.ศ.1885 นายเฮอร์แมน ฮอลเลอริธ (Herman Hollerith) ได้ประดิษฐ์ตัวเลื่อนซึ่งใช้บัตรเจาะรูเพื่อประมวลผลข้อมูลทางสถิติ ในที่สุด บริษัท ของเขาก็กลายเป็นส่วนหนึ่งของ IBM

นายเพอร์ซี ลุจเกต (Percy Ludgate) ในปี ค.ศ.1909 ได้ตีพิมพ์ [9] แบบสำหรับประดิษฐ์เครื่องยนต์วิเคราะห์เชิงกลเป็นครั้งที่ 2 ในประวัติศาสตร์ ตามรอยของนายชาร์ลส์ แบ็บเบจ (Charles Babbage) แม้ว่าลุจเกตจะไม่รู้ถึงผลงานก่อนหน้านี้ของแบ็บเบจมาก่อนก็ตาม

ในปี ค.ศ.1937 100 ปีหลังจากความฝันที่เป็นไปไม่ได้ของนายชาลส์ แบบเบจ (Charles Babbage) นายโฮวาร์ด ไอเค็น (Howard Aiken) ได้โน้มน้าวให้ IBM พัฒนาเครื่องคิดเลขที่ตั้งโปรแกรมได้ขนาดยักษ์ของเขา ที่มีชื่อว่า ASCC / Harvard Mark I ตามรอยเครื่องมือวิเคราะห์ของแบ็บเบจ ซึ่งใช้การ์ดและหน่วยประมวลผลกลาง เมื่อเครื่องนี้สร้างเสร็จ ได้มีการยกย่องเครื่องนี้ว่าเป็น "ความฝันที่เป็นจริงของแบ็บเบจ" [10]

ในช่วงทศวรรษที่ 1940 ด้วยการพัฒนาเครื่องคอมพิวเตอร์รุ่นใหม่และมีประสิทธิภาพมากขึ้น เช่น คอมพิวเตอร์ Atanasoff – Berry และ ENIAC คำว่าคอมพิวเตอร์ ได้เปลี่ยนความหมายไป กลายเป็นหมายถึง เครื่องจักรที่ใช้ในการคำนวณ มากกว่าอาชีพนักคำนวณของมนุษย์ ที่เคยแพร่หลายก่อนยุคของคอมพิวเตอร์ [11] เมื่อเห็นได้ชัดว่าคอมพิวเตอร์สามารถใช้เพื่อการคำนวณทางคณิตศาสตร์ได้มากกว่าศักยภาพของมนุษย์ สาขาวิทยาศาสตร์คอมพิวเตอร์จึงได้เกิดการศึกษาอย่างเป็นวงกว้าง เพื่อศึกษาการคำนวณโดยทั่วไป

ในปีพ. ศ. 2488 IBMได้ก่อตั้งห้องปฏิบัติการคอมพิวเตอร์วิทยาศาสตร์วัตสัน ที่มหาวิทยาลัยโคลัมเบีย ในกรุงนิวยอร์ก เป็นห้องปฏิบัติการแรกของ IBM ที่อุทิศให้กับวิทยาศาสตร์บริสุทธิ์ ห้องปฏิบัติการนี้เป็นผู้บุกเบิกแผนกวิจัยของไอบีเอ็มซึ่งปัจจุบันดำเนินงานด้านการวิจัยทั่วโลก [12]

ในที่สุดความสัมพันธ์ที่ใกล้ชิดระหว่างไอบีเอ็มและมหาวิทยาลัยก็มีส่วนสำคัญในการเกิดระเบียบทางวิทยาศาสตร์ขึ้นใหม่ โดยมหาวิทยาลัยโคลัมเบีย เปิดสอนหลักสูตรวิชาการครั้งแรกในสาขาวิทยาการคอมพิวเตอร์ เมื่อปี ค.ศ.1946 [13] วิทยาการคอมพิวเตอร์เริ่มได้รับการยอมรับให้เป็นสาขาวิชาการที่แตกออกมาจากวิทยาศาสตร์และคณิตศาสตร์ทั่วไป ในช่วงทศวรรษที่ 1950 และต้นทศวรรษที่ 1960 [14][15] หลักสูตรปริญญาวิทยาการคอมพิวเตอร์ หลักสูตรแรกของโลก คือ "Cambridge Diploma in Computer Science" เริ่มต้นที่ห้องปฏิบัติการคอมพิวเตอร์ของมหาวิทยาลัยเคมบริดจ์ ในปี ค.ศ.1953 แผนกวิทยาการคอมพิวเตอร์แห่งแรกในสหรัฐอเมริกาก่อตั้งขึ้นที่มหาวิทยาลัยเพอร์ดู ในปี ค.ศ.1962 [16] นับตั้งแต่คอมพิวเตอร์สามารถใช้งานได้อย่างสะดวกแพร่หลาย การใช้งานคอมพิวเตอร์ในแต่ละสาขา กลายเป็นศาสตร์ลึกซึ้งเฉพาะตัว

แม้ว่าในตอนแรก หลายคนเชื่อว่ามันเป็นไปไม่ได้เลยที่คอมพิวเตอร์จะสามารถเป็นสาขาการศึกษาทางวิทยาศาสตร์ได้ แต่ในช่วงปลายทศวรรษที่ 50 การศึกษาเกี่ยวกับคอมพิวเตอร์ ก็ค่อย ๆ เป็นที่ยอมรับในหมู่นักวิชาการจำนวนมาก[17] [18] ปัจจุบันเป็นแบรนด์ IBM ที่รู้จักกันดี และยังคงเป็นส่วนหนึ่งของการปฏิวัติวิทยาการคอมพิวเตอร์ในช่วงเวลานี้ IBM (ย่อมาจาก International Business Machines) เปิดตัว IBM 704[19] และ ต่อมาคอมพิวเตอร์ IBM 709 [20] ซึ่งใช้กันอย่างแพร่หลายในยุคแห่งการสำรวจทางเทคโนโลยี ในช่วงปลายทศวรรษที่ 50 สาขาวิชาวิทยาการคอมพิวเตอร์ยังคงอยู่ในขั้นตอนของการพัฒนาอย่างมากและมีการพบปัญหาต่าง ๆ อยู่บ่อยครั้ง[21]

จูเลียส เอ็ดการ์ ลิเลียนเฟลด์ (Julius Edgar Lilienfeld) นักฟิสิกส์ชาวออสเตรีย-ฮังการี ได้เสนอแนวคิดเกี่ยวกับ ทรานซิสเตอร์สนามไฟฟ้า ในปี ค.ศ.1925 และต่อมา จอห์น บาร์ดีน (John Bardeen) และ วอลเตอร์ แบรเทน (Walter Brattain) ได้สร้างทรานซิสเตอร์ที่ใช้งานได้ตัวแรกซึ่งเป็นทรานซิสเตอร์แบบจุดสัมผัส ในปี ค.ศ.1947 ในขณะที่ทำงานภายใต้ วิลเลียม ช็อกลีย์ (William Shockley) ที่ Bell Labs [22][23]

ในปี ค.ศ.1953 มหาวิทยาลัยแมนเชสเตอร์ได้สร้างคอมพิวเตอร์ทรานซิสเตอร์เครื่องแรก เรียกว่า Transistor Computer [24] อย่างไรก็ตามทรานซิสเตอร์ในยุคแรกเป็นอุปกรณ์ที่ค่อนข้างเทอะทะ ซึ่งยากต่อการผลิตเป็นจำนวนมาก [25] ทรานซิสเตอร์สนามเอฟเฟกต์โลหะ - ออกไซด์ - ซิลิคอน (MOSFET หรือ MOS) ถูกประดิษฐ์ขึ้นโดย โมฮัมเม็ด อาตัลลา (Mohamed Atalla) และ เดวอน คัง (Dawon Kahng) ที่ Bell Labs ในปี ค.ศ.1959 [26][27] เป็นทรานซิสเตอร์ขนาดกะทัดรัดตัวแรกที่สามารถย่อส่วนและผลิตจำนวนมากเพื่อการใช้งานที่หลากหลาย [33] MOSFET ช่วยให้สามารถสร้างชิปวงจรรวมที่มีความหนาแน่นสูงได้ [28][29] ซึ่งนำไปสู่สิ่งที่เรียกว่า การปฏิวัติคอมพิวเตอร์ [30] หรือการปฏิวัติไมโครคอมพิวเตอร์[31] เป็นช่วงเวลาที่ได้เห็นการปรับปรุงอย่างมีนัยสำคัญในการใช้งานและประสิทธิผลของเทคโนโลยีคอมพิวเตอร์ [32] สังคมสมัยใหม่ได้เห็นการเปลี่ยนแปลงอย่างมีนัยสำคัญในด้านประชากรที่ใช้เทคโนโลยีคอมพิวเตอร์ การใช้งานได้เปลี่ยนจากการใช้เฉพาะผู้เชี่ยวชาญเป็นส่วนใหญ่ ไปสู่ฐานผู้ใช้ที่แพร่หลายในวงกว้าง ในขั้นต้นคอมพิวเตอร์มีค่าใช้จ่ายค่อนข้างสูงและจำเป็นต้องได้รับความช่วยเหลือด้วยมนุษย์ในระดับหนึ่ง เพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ เนื่องจากการใช้คอมพิวเตอร์แพร่หลายมากขึ้นและราคาไม่แพง ความช่วยเหลือจากมนุษย์ในการใช้งานคอมพิวเตอร์จึงจำเป็นน้อยลงอย่างมากสำหรับการใช้งานทั่วไป

สาขาหลัก แก้

วิทยาการคอมพิวเตอร์ครอบคลุมหัวข้อต่างๆ ตั้งแต่การศึกษาทางทฤษฎีของอัลกอริทึม และ ขีดจำกัดของการคำนวณ ไปจนถึงประเด็นทางปฏิบัติของการนำระบบคอมพิวเตอร์มาใช้ในฮาร์ดแวร์และซอฟต์แวร์[33][34] โดยองค์กร CSAB (เดิมเรียกว่า Computing Sciences Accreditation Board ซึ่งประกอบด้วยตัวแทนของ Association for Computing Machinery (ACM) และ IEEE Computer Society (IEEE CS)) [35] ระบุว่ามี 4 สาขา ที่สำคัญในสาขาวิทยาการคอมพิวเตอร์ ประกอบด้วย: ทฤษฎีการคำนวณอัลกอริทึม, โครงสร้างข้อมูลและอัลกอริทึม, ระเบียบวิธีการเขียนโปรแกรมและภาษาโปรแกรม, องค์ประกอบและสถาปัตยกรรมของคอมพิวเตอร์ นอกเหนือจากสี่ด้านนี้แล้ว CSAB ยังระบุสาขาต่าง ๆ เพิ่มเติม เช่น วิศวกรรมซอฟต์แวร์, ปัญญาประดิษฐ์, ระบบเครือข่ายคอมพิวเตอร์และการสื่อสาร, ระบบฐานข้อมูล, การคำนวณแบบขนาน, การคำนวณแบบกระจาย, ปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์, กราฟิกคอมพิวเตอร์. ระบบปฏิบัติการ และ การคำนวณเชิงตัวเลขและสัญลักษณ์ ซึ่งถือเป็นพื้นที่สำคัญของวิทยาการคอมพิวเตอร์ [36]

ทฤษฎีวิทยาการคอมพิวเตอร์ แก้

ทฤษฎีวิทยาการคอมพิวเตอร์ เป็นการศึกษาทางคณิตศาสตร์เชิงทฤษฎี มีความเป็นนามธรรมสูง แต่มีต้นกำเนิดมาจากการคำนวณเชิงปฏิบัติในชีวิตประจำวัน จุดมุ่งหมายคือ การเข้าใจธรรมชาติของการคำนวณ เพื่อทำให้มีวิธีการคำนวณที่มีประสิทธิภาพมากขึ้น การศึกษาเชิงคณิตศาสตร์ทั้งหมดที่เกี่ยวข้องกับตรรกศาสตร์ และ วิธีการทางคณิตศาสตร์ อาจถือได้ว่าเป็นทฤษฎีวิทยาการคอมพิวเตอร์ โดยมีเงื่อนไขว่าจุดประสงค์ของการศึกษานั้นมีขึ้นเพื่อการศึกษาวิทยาการคอมพิวเตอร์อย่างชัดเจน

ทฤษฎีการคำนวณ แก้

จากข้อมูลของ Peter Denning คำถามพื้นฐานที่แฝงอยู่ในวิทยาการคอมพิวเตอร์คือ "อะไรบ้างที่ทำให้เป็นอัตโนมัติได้"[37] ทฤษฎีการคำนวณมุ่งเน้นไปที่การตอบคำถามพื้นฐานเกี่ยวกับสิ่งที่สามารถคำนวณได้และจำนวนทรัพยากรที่ต้องใช้ในการคำนวณเหล่านั้น ในความพยายามที่จะตอบคำถามแรกนั้น ทฤษฎีความสามารถในการคำนวณ (computability theory) จะตรวจสอบว่าปัญหาการคำนวณใดที่สามารถแก้ไขได้บนแบบจำลองการคำนวณ (models of computation) ทางทฤษฎีต่าง ๆ คำถามที่สองได้รับการแก้ไขโดย ทฤษฎีความซับซ้อนในการคำนวณ (computational complexity theory)ซึ่งศึกษาต้นทุนด้านเวลาและพื้นที่ ที่เกี่ยวข้องกับแนวทางที่หลากหลายในการแก้ปัญหาด้านการคำนวณที่หลากหลาย

สมการปัญหา P = NP? ที่มีชื่อเสียง เป็นสมการปัญหาหนึ่งใน[38] "ปัญหารางวัลแห่งสหัสวรรษ (Millennium Prize Problems) เป็นปัญหาที่เปิดกว้างในทฤษฎีการคำนวณ

     
ทฤษฎีออโตมาตา

(Automata theory)

ทฤษฎีการคำนวณได้

(Computability theory)

ทฤษฎีความซับซ้อนในการคำนวณ

(Computational complexity theory)

GNITIRW-TERCES  
วิทยาการเข้ารหัสลับ

(Cryptography)

ทฤษฎีการประมวลผลควอนตัม

(Quantum computing theory)

ทฤษฏีสารสนเทศ และ ทฤษฎีการเข้ารหัส แก้

ทฤษฎีสารสนเทศ (Information theory) เกี่ยวข้องกับความน่าจะเป็น การหาปริมาณข้อมูล และ สถิติ พัฒนาขึ้นโดย คล็อด แชนนอน (Claude Shannon) เพื่อค้นหาขีดจำกัดพื้นฐานในการประมวลผลสัญญาณ ( signal processing) เช่น การบีบอัดข้อมูล และ การจัดเก็บและสื่อสารข้อมูลที่เชื่อถือได้

ทฤษฎีการเขียนโค้ด (Coding theory) คือการศึกษาคุณสมบัติของรหัส (ระบบสำหรับการแปลงข้อมูลจากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง) และความเหมาะสมของรหัสสำหรับการใช้งานเฉพาะ รหัสใช้สำหรับการบีบอัดข้อมูล (data compression), การเข้ารหัส (cryptography), การตรวจจับและแก้ไขข้อผิดพลาด (error detection and correction) และ การเข้ารหัสเครือข่าย (network coding) การศึกษารหัสมีเป้าหมายเพื่อการออกแบบวิธีการส่งข้อมูล ( data transmission) ที่มีประสิทธิภาพและเชื่อถือได้[39]

 
ทฤษฎีสารสนเทศ

(Information theory)

     
การบีบอัดข้อมูล

(Source coding)

ความจุช่องสัญญาณ

(Channel capacity)

ทฤษฎีการตรวจจับสัญญาณ

(Signal detection theory)

gcc -Os foo.c    
ทฤษฎีสารสนเทศเชิงขั้นตอนวิธี

(Algorithmic information theory)

เรขาคณิตสารสนเทศ

(Information geometry)

ทฤษฎีการประมาณการณ์

(Estimation theory)

โครงสร้างข้อมูล และ อัลกอริทึม แก้

โครงสร้างข้อมูล และ อัลกอริทึม เป็นการศึกษาวิธีการคำนวณทั่วไป และ ประสิทธิภาพในการคำนวณของแต่ละวิธีการ

O(n2)        
การวิเคราะห์ขั้นตอนวิธี

(Analysis of algorithms)

อัลกอริทึม

(Algorithms)

โครงสร้างข้อมูล

(Data structures)

การหาค่าที่เหมาะสมที่สุด

(Combinatorial optimization)

เรขาคณิตการคำนวณ

(Computational geometry)

ทฤษฎีภาษาโปรแกรม แก้

ทฤษฎีภาษาโปรแกรม (Programming language theory) เป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบ การใช้งาน การวิเคราะห์ การระบุลักษณะ และ การจัดประเภทของภาษาโปรแกรม (programming languages) เป็นแขนงหนึ่งของวิทยาศาสตร์คอมพิวเตอร์ที่มีความเกี่ยวโยงอย่างลึกซึ้งกับคณิตศาสตร์ วิศวกรรมซอฟต์แวร์ และ ภาษาศาสตร์ เป็นแขนงศึกษาในวิทยาศาสตร์คอมพิวเตอร์ที่มีผู้วิจัยศึกษาจำนวนมาก

       
ภาษาแบบแผน

(Formal languages)

อรรถศาสตร์เชิงรูปนัย

(Formal semantics)

ทฤษฎีรูปแบบ

(Type theory)

การออกแบบคอมไพเลอร์

(Compiler design)

ภาษาโปรแกรม

(Programming languages)

วิธีรูปนัย แก้

วิธีรูปนัย (Formal method) เป็นเทคนิคเฉพาะทางคณิตศาสตร์สำหรับการกำหนดคุณลักษณะ (specification), การพัฒนา (development) และ การตรวจสอบระบบซอฟต์แวร์ และ ฮาร์ดแวร์ (verification) การใช้วิธีรูปนัยในการออกแบบซอฟต์แวร์และฮาร์ดแวร์นั้น มาจากความคาดหวังว่า การวิเคราะห์ทางคณิตศาสตร์ที่เหมาะสม จะสามารถสร้างระบบคอมพิวเตอร์ที่มีความประสิทธิภาพสูง ความคาดหวังนี้เป็นรากฐานทางทฤษฎีที่สำคัญสำหรับวิศวกรรมซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวข้องกับความปลอดภัยทางไซเบอร์ (cybersecurity) วิธีรูปนัยเป็นส่วนเสริมที่มีประโยชน์ในการทดสอบซอฟต์แวร์ เนื่องจากช่วยหลีกเลี่ยงข้อผิดพลาดและยังสร้างกรอบสำหรับการทดสอบ สำหรับการใช้งานในอุตสาหกรรม จำเป็นต้องมีการสนับสนุนด้วยเครื่องมือ (tool support) อย่างไรก็ตามค่าใช้จ่ายที่สูงในการใช้วิธีรูปนัย ทำให้โดยส่วนใหญ่ จะใช้วิธีรูปนัยในการพัฒนาระบบที่มีความสมบูรณ์สูงและมีความสำคัญต่อชีวิตเท่านั้น เน้นความปลอดภัย หรือ การรักษาความปลอดภัย วิธีรูปนัยเป็นการประยุกต์ใช้พื้นฐานวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎีที่หลากหลาย โดยเฉพาะอย่างยิ่งแคลคูลัสเชิงตรรกะ (logic calculi), ภาษาแบบแผน (formal languages), ทฤษฎีออโตมาตา (automata theory), อรรถศาสตร์ของโปรแกรม (program semantics), ระบบชนิดข้อมูล (type systems) และ ประเภทข้อมูลเชิงพีชคณิต (algebraic data types)

   
การทวนสอบเชิงรูปนัย

Formal verification

อรรถศาสตร์เชิงรูปนัย

Formal semantics

การพิสูจน์ทฤษฎีบทด้วยคอมพิวเตอร์

Automated theorem proving

ระบบคอมพิวเตอร์ แก้

สถาปัตยกรรมคอมพิวเตอร์ และ วิศวกรรมคอมพิวเตอร์ แก้

สถาปัตยกรรมคอมพิวเตอร์ คือ การออกแบบโครงสร้างการดำเนินงานพื้นฐานของระบบคอมพิวเตอร์ โดยมุ่งเน้นไปที่หน่วยประมวลผลกลาง (CPU) ซึ่งดำเนินการอยู่ภายในคอมพิวเตอร์ และ เข้าถึงแอดเดรสในหน่วยความจำ[40] สาขาสถาปัตยกรรมคอมพิวเตอร์ เกี่ยวข้องกับสาขาวิชาวิศวกรรมคอมพิวเตอร์ และ สาขาวิศวกรรมไฟฟ้า โดยเน้นเชื่อมต่อส่วนประกอบฮาร์ดแวร์ต่าง ๆ เพื่อสร้างคอมพิวเตอร์ที่มีฟังก์ชันการทำงาน ประสิทธิผล และ ต้นทุน ตามเป้าที่วางไว้

     
พีชคณิตแบบบูล

(Digital logic)

สถาปัตยกรรมไมโคร

(Microarchitecture)

มัลติโพรเซสซิง

(Multiprocessing)

     
ยูบิควิตัสคอมพิวติง

(Ubiquitous computing)

สถาปัตยกรรมระบบ

(Systems architecture)

ระบบปฏิบัติการ

(Operating systems)

การวิเคราะห์ประสิทธิภาพของคอมพิวเตอร์ แก้

การวิเคราะห์ประสิทธิภาพของคอมพิวเตอร์ คือ การศึกษางานที่ไหลผ่านคอมพิวเตอร์ โดยมีเป้าหมายทั่วไปในการปรับปรุงปริมาณงาน (throughput) การควบคุมเวลาตอบสนอง (response time) การใช้ทรัพยากรอย่างมีประสิทธิภาพ การขจัดปัญหาคอขวด (bottlenecks) และการทำนายประสิทธิภาพภายใต้ปริมาณงานสูงสุดที่คาดการณ์ไว้[41] การวัดเปรียบเทียบสมรรถนะของคอมพิวเตอร์ (Benchmark) ใคือการเปรียบเทียบประสิทธิภาพของระบบคอมพิวเตอร์ที่มีใช้ชิป หรือ มีสถาปัตยกรรมระบบที่แตกต่างกัน[42]

ระบบคอมพิวเตอร์แบบคอนเคอร์แรนต์ พาราเรล และ ดิสตริบิวต์ แก้

การประมวลผลพร้อมกัน (concurrency) คือ คุณสมบัติของระบบที่มีการประมวลผลหลายอย่างพร้อมกันและอาจมีการโต้ตอบซึ่งกันและกัน แบบจำลองทางคณิตศาสตร์จำนวนมากได้รับการพัฒนาสำหรับการคำนวณพร้อมกันทั่วไป อาทิ Petri nets, แคลคูลัสกระบวนการ และ แบบจำลอง Parallel Random Access Machine เมื่อคอมพิวเตอร์หลายเครื่องเชื่อมต่อในเครือข่ายในขณะที่ใช้งานพร้อมกันสิ่งนี้เรียกว่า ระบบกระจาย (distributed system) คอมพิวเตอร์ภายในระบบกระจายนั้นมีหน่วยความจำส่วนตัวของตัวเองและสามารถแลกเปลี่ยนข้อมูลเพื่อบรรลุเป้าหมายร่วมกันได้[43]

เครือข่ายคอมพิวเตอร์ แก้

เครือข่ายคอมพิวเตอร์ (computer network) มีเป้าหมายในการจัดการเครือข่ายคอมพิวเตอร์ทีเขื่อมต่อกันอยู่ทั่วทั้งโลก

ความปลอดภัยทางไซเบอร์ และ วิทยาการรหัสลับ แก้

ความปลอดภัยทางไซเบอร์ (Cybersecurity) เป็นสาขาหนึ่งของเทคโนโลยีคอมพิวเตอร์ที่มีวัตถุประสงค์เพื่อปกป้องข้อมูลจากการเข้าถึงโดยไม่ได้รับอนุญาต

วิทยาการรหัสลับ (Cryptography) เป็นการศึกษาเกี่ยวกับการซ่อนข้อมูล (การเข้ารหัส) และ การเปิดเผยข้อมูล (ถอดรหัส) การเข้ารหัสสมัยใหม่เกี่ยวข้องกับวิทยาศาสตร์คอมพิวเตอร์เป็นส่วนใหญ่ อัลกอริทึมการเข้ารหัสและการถอดรหัสขึ้นอยู่กับความซับซ้อนในการคำนวณ

ฐานข้อมูล แก้

ฐานข้อมูล (database) มีหน้าที่ในการจัดการ กักเก็บ และ กู้คืนข้อมูลจำนวนมาก ด้วยความสะดวกรวดเร็ว ฐานข้อมูลดิจิทัลมีการจัดการโดยใช้ระบบการจัดการฐานข้อมูล เพื่อการกักเก็บ สร้าง รักษา และ ค้นหาข้อมูล ด้วยโมเดลฐานข้อมูล (database models) และ ภาษาสอบถาม (query languages)

การประยุกต์ใช้คอมพิวเตอร์ แก้

คอมพิวเตอร์กราฟิกส์ แก้

คอมพิวเตอร์กราฟิก คือ การศึกษาเนื้อหาภาพดิจิทัลแลการสังเคราะห์และการจัดการข้อมูลภาพดิจิทัล สาขานี้เชื่อมต่อกับสาขาอื่น ๆ ในวิทยาการคอมพิวเตอร์ ตั้งแต่คอมพิวเตอร์วิทัศน์ (computer vision) การประมวลผลภาพ (image processing) และเรขาคณิตเชิงคำนวณ (computational geometry) และถูกนำไปใช้อย่างมากในสาขาเทคนิคพิเศษ และ การผลิตวิดีโอเกม

ปฏิสัมพันธ์ระหว่างมนุษย์และคอมพิวเตอร์ (HCI) แก้

HCI คือ การวิจัยที่พัฒนาทฤษฎี หลักการ และ แนวทางสำหรับนักออกแบบอินเทอร์เฟซผู้ใช้ (UI) เพื่อให้สามารถสร้างประสบการณ์ผู้ใช้ที่น่าพอใจด้วยเดสก์ท็อป แล็ปท็อป และ อุปกรณ์เคลื่อนที่ ที่สะดวกต่อการใช้งาน

การคำนวณและการจำลองทางวิทยาศาสตร์ แก้

ดูบทความหลัก (ภาษาอังกฤษ) ที่: Computational science

วิทยาศาสตร์เชิงคอมพิวเตอร์ (Scientific computing หรือ Computational science) เป็นสาขาวิชาที่เกี่ยวข้องกับการสร้างแบบจำลองทางคณิตศาสตร์ (mathematical models) และ เทคนิคการวิเคราะห์เชิงปริมาณ (quantitative analysis) โดยประยุกต์ใช้คอมพิวเตอร์เพื่อการวิเคราะห์และแก้ปัญหาทางวิทยาศาสตร์ โดยมักใช้จำลองกระบวนการและปรากฏการณ์ต่าง ๆ เช่น พลวัตของไหล วงจรไฟฟ้า การเคลื่อนที่ทางกลศาสตร์ การวิเคราะห์ปรากฏการณ์ทางดาราศาสตร์ ตลอดจนถึงการวิเคราะห์และทำนายด้านสังคมศาตร์ เช่น ประชากร แนวโน้มสงคราม และ การเจริญเติบโตของเศรษฐกิจ

คอมพิวเตอร์สมัยใหม่ช่วยเพิ่มประสิทธิภาพของการออกแบบระบบเครื่องกลที่ซับซ้อน เช่น การออกแบบอากาศยาน หุ่นยนต์ เครื่องกล วงจรอิเล็กทรอนิกส์ โดยโปรแกรมการออกแบบวงจรไฟฟ้าและอิเล็กทรอนิกส์ที่โดดเด่นในปัจจุบันได้แก่ SPICE[44] วิทยาการคอมพิวเตอร์สมัยใหม่ ทำให้การทำงานในสาขาวิทยาศาสตร์และวิศวกรรมศาสตร์นั้นง่ายขึ้น เร็วขึ้น และ มีประสิทธิภาพสูง เป็นส่วนสำคัญของการวิจัยทางวิทยาศาสตร์และวิศวกรรมศาสตร์ในศตวรรษที่ 21 นี้

         
การวิเคราะห์เชิงตัวเลข

(Numerical analysis)

ฟิสิกส์เชิงคอมพิวเตอร์

(Computational physics)

เคมีเชิงคอมพิวเตอร์

(Computational chemistry)

ชีวสารสนเทศ[45]

(Bioinformatics)

ประสาทวิทยาเชิงคอมพิวเตอร์

(Computational neuroscience)

ปัญญาประดิษฐ์ แก้

ปัญญาประดิษฐ์ (Artificial intelligence) หรือ AI มีจุดประสงค์เพื่อสังเคราะห์กระบวนการที่มีเป้าหมายเฉพาะเจาะจงในระบบคอมพิวเตอร์ อาทิ การแก้ปัญหา การตัดสินใจ การปรับตัวเข้ากับสิ่งแวดล้อม การเรียนรู้ และ การสื่อสาร ที่พบในมนุษย์และสัตว์

จากจุดเริ่มต้นในไซเบอร์เนติกส์ และ ในการประชุมดาร์ทเมาท์ (Dartmouth Conference) ค.ศ.1956 การวิจัยปัญญาประดิษฐ์จำเป็นต้องมีการข้ามสาขาวิชาโดยอาศัยความเชี่ยวชาญที่หลากหลาย เช่น คณิตศาสตร์ประยุกต์ ตรรกะสัญลักษณ์ สัญศาสตร์ วิศวกรรมไฟฟ้า ปรัชญา จิตประสาท สรีรวิทยา และ สังคมศาสตร์ ปัญญาประดิษฐ์มีความเกี่ยวข้องกับการพัฒนาหุ่นยนต์ แต่การประยุกต์ใช้ AI ในทางปฏิบัติ มักใช้ในด้านการพัฒนาซอฟต์แวร์ ซึ่งต้องใช้ความเข้าใจในการคำนวณชั้นสูง จุดเริ่มต้นของ AI อยู่ในช่วงปลายทศวรรษที่ 1940 จากคำถามของอลัน ทัวริง (Alan Turing) ว่า "คอมพิวเตอร์คิดเองได้ไหม" และเป็นคำถามยังคงไม่มีคำตอบอย่างมีประสิทธิภาพ ถึงแม้ว่าการทดสอบทัวริงจะยังคงมีการใช้งานเพื่อประเมินผลลัพธ์ของคอมพิวเตอร์โดยมีระดับสติปัญญาของมนุษย์เป็นบรรทัดฐาน แต่ในปัจจุบัน ระบบ AI อัตโนมัติ ประสบความสำเร็จในการประเมินผลและคาดการณ์ล่วงหน้าอย่างมาก สามารถแทนที่การตรวจสอบโดยมนุษย์ได้อย่างมีประสิทธิภาพ และมีการประยุกต์ใช้งาน AI กับข้อมูลขนาดใหญ่ที่มนุษย์ไม่สามารถทำได้

     
การเรียนรู้ของเครื่อง

(Machine learning)

คอมพิวเตอร์วิทัศน์

(Computer vision)

การประมวลผลภาพ

(Image processing)

     
การรู้จำแบบ

(Pattern recognition)

การทำเหมืองข้อมูล

(Data mining)

การคำนวณแบบวิวัฒนาการ

(Evolutionary computation)

     
การแทนความรู้

(Knowledge representation and reasoning)

การประมวลภาษาธรรมชาติ

(Natural language processing)

วิทยาการหุ่นยนต์

(Robotics)

วิศวกรรมซอฟต์แวร์ แก้

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

กระบวนทัศน์การเขียนโปรแกรม แก้

กระบวนทัศน์การเขียนโปรแกรม (อังกฤษ: กระบวนทัศน์การเขียนโปรแกรม) เป็นวิธีการพื้นฐานของการเขียนโปรแกรมคอมพิวเตอร์ กระบวนทัศน์การเขียนโปรแกรมมี 4 กระบวนทัศน์หลัก ได้แก่

นอกจากกระบวนทัศน์หลักทั้ง 4 แล้ว ยังมีอีกกระบวนทัศน์หนึ่งซึ่งขยายความสามารถของโมดูลโปรแกรม โดยใช้วิธีการตัดแทรกโค้ด กระบวนทัศน์นี้คือ การโปรแกรมเชิงหน่วยย่อย (aspect-oriented programming)

สาขาที่เกี่ยวข้อง แก้

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

  • วิศวกรรมคอมพิวเตอร์ เป็นการศึกษาเกี่ยวกับ การใช้หลักการวิศวกรรม ซึ่งเริ่มตั้งแต่การเก็บความต้องการ การออกแบบ การสร้าง การทดสอบ วิเคราะห์ จนถึงการบำรุงรักษาอย่างมีประสิทธิภาพ สำหรับระบบคอมพิวเตอร์ หรือ ระบบอุปกรณ์ ซึ่งต้องใช้ความรู้ทั้งซอฟต์แวร์ ฮาร์ดแวร์ การสื่อสาร ควบคู่กับความรู้ทางด้านวิศวกรรม
  • วิศวกรรมซอฟต์แวร์ (วิศวกรรมส่วนชุดคำสั่ง) เน้นที่กระบวนการวิศวกรรมสำหรับระบบซอฟต์แวร์ขนาดใหญ่ โดยเริ่มด้วยการวิเคราะห์ความต้องการ, การออกแบบ, การพัฒนา, การทดสอบ ตลอดจนถึงการบำรุงรักษาระบบซอฟต์แวร์
  • วิทยาการสารสนเทศ (สารสนเทศศาสตร์) เป็นการศึกษาเกี่ยวกับภาคทฤษฎีสารสนเทศ เริ่มตั้งแต่การรับรู้, การทำความเข้าใจ, การวิเคราะห์, การจัดเก็บ, การสร้าง, การโต้ตอบ, การสื่อสาร, และ การจัดการข้อมูลและสารสนเทศ
  • เทคโนโลยีสารสนเทศ เน้นการประยุกต์ใช้สารสนเทศอย่างมีประสิทธิภาพสูงสุดกับสังคม ธุรกิจ องค์กร หรืออุตสาหกรรม
  • ระบบสารสนเทศ เป็นการศึกษาการใช้งานคอมพิวเตอร์ สำหรับระบบการทำงานที่อาศัยข้อมูลสารสนเทศ เพื่อจุดประสงค์ในการช่วยเหลือสนับสนุน การดำเนินงานต่าง ๆ ภายในองค์กร โดยคำประยุกต์ใช้งานนั้น จะมีความหมายครอบคลุมถึง การออกแบบ, ใช้งาน, การติดตั้ง, และการบำรุงรักษา ไม่ว่าจะเป็นคอมพิวเตอร์, ซอฟต์แวร์, เครือข่าย, บุคลากร หรือข้อมูล

ผู้บุกเบิก แก้

ดูเพิ่ม แก้

พื้นฐานคณิตศาสตร์ แก้

วิทยาการคอมพิวเตอร์เชิงทฤษฎี แก้

ฮาร์ดแวร์ แก้

ซอฟต์แวร์ แก้

ระบบข้อมูลและสารสนเทศ แก้

ระเบียบวิธีคำนวณด้วยคอมพิวเตอร์ แก้

ระบบเครือข่ายคอมพิวเตอร์และสารสนเทศ แก้

รางวัลทางด้านคอมพิวเตอร์ แก้

อ้างอิง แก้

  1. "ประวัติ และความเป็นมาของภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2007-11-14. สืบค้นเมื่อ 2007-11-07.
  2. "Wilhelm Schickard – Ein Computerpionier" (PDF) (ภาษาเยอรมัน). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2020-09-19. สืบค้นเมื่อ 2020-08-12.
  3. Keates, Fiona (25 June 2012). "A Brief History of Computing". The Repository. The Royal Society. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2012-06-29. สืบค้นเมื่อ 2020-08-12.
  4. "Science Museum, Babbage's Analytical Engine, 1834-1871 (Trial model)". สืบค้นเมื่อ 2020-05-11.{{cite web}}: CS1 maint: url-status (ลิงก์)
  5. Anthony Hyman (1982). Charles Babbage, pioneer of the computer.
  6. Anthony Hyman (1982). Charles Babbage, pioneer of the computer.
  7. "Charles Babbage Institute: Who Was Charles Babbage?". cbi.umn.edu. สืบค้นเมื่อ 28 December 2016.
  8. "A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," by Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ February 10, 2006. สืบค้นเมื่อ 4 May 2006.
  9. "The John Gabriel Byrne Computer Science Collection" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ April 16, 2019. สืบค้นเมื่อ August 8, 2019.
  10. Brian Randell, p. 187, 1975
  11. The Association for Computing Machinery (ACM) was founded in 1947.
  12. "IBM Archives: 1945". Ibm.com. สืบค้นเมื่อ 2019-03-19.
  13. "IBM100 – The Origins of Computer Science". Ibm.com. 1995-09-15. สืบค้นเมื่อ 2019-03-19.
  14. Denning, Peter J. (2000). "Computer Science: The Discipline" (PDF). Encyclopedia of Computer Science. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ May 25, 2006.
  15. "Some EDSAC statistics". University of Cambridge. สืบค้นเมื่อ 19 November 2011.
  16. "Computer science pioneer Samuel D. Conte dies at 85". Purdue Computer Science. July 1, 2002. สืบค้นเมื่อ December 12, 2014.
  17. Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press.
  18. Levy, Steven (1984). Hackers: Heroes of the Computer Revolution. Doubleday. ISBN 978-0-385-19195-1.
  19. "IBM 704 Electronic Data Processing System—CHM Revolution". Computerhistory.org. สืบค้นเมื่อ 7 July 2013.
  20. "IBM 709: a powerful new data processing system" (PDF). Computer History Museum. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ มีนาคม 4, 2016. สืบค้นเมื่อ ธันวาคม 12, 2014.
  21. Tedre, Matti (2014). The Science of Computing: Shaping a Discipline. Taylor and Francis / CRC Press.
  22. Puers, Robert; Baldi, Livio; Voorde, Marcel Van de; Nooten, Sebastiaan E. van (2017). Nanoelectronics: Materials, Devices, Applications, 2 Volumes. John Wiley & Sons. p. 14. ISBN 9783527340538.
  23. Lee, Thomas H. (2003). The Design of CMOS Radio-Frequency Integrated Circuits (PDF). Cambridge University Press. ISBN 9781139643771. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2019-12-09. สืบค้นเมื่อ 2020-08-13.
  24. Lavington, Simon (1998), A History of Manchester Computers (2 ed.), Swindon: The British Computer Society, pp. 34–35
  25. Moskowitz, Sanford L. (2016). Advanced Materials Innovation: Managing Global Technology in the 21st century. John Wiley & Sons. pp. 165–167. ISBN 9780470508923.
  26. Lojek, Bo (2007). History of Semiconductor Engineering. Springer Science & Business Media. pp. 321–3. ISBN 9783540342588.
  27. "1960 - Metal Oxide Semiconductor (MOS) Transistor Demonstrated". The Silicon Engine. Computer History Museum.
  28. "Who Invented the Transistor?". Computer History Museum. 4 December 2013. สืบค้นเมื่อ 20 July 2019.
  29. Hittinger, William C. (1973). "Metal-Oxide-Semiconductor Technology". Scientific American. 229 (2): 48–59. Bibcode:1973SciAm.229b..48H. doi:10.1038/scientificamerican0873-48. ISSN 0036-8733. JSTOR 24923169.
  30. Fossum, Jerry G.; Trivedi, Vishal P. (2013). Fundamentals of Ultra-Thin-Body MOSFETs and FinFETs. Cambridge University Press. p. vii. ISBN 9781107434493.
  31. Malmstadt, Howard V.; Enke, Christie G.; Crouch, Stanley R. (1994). Making the Right Connections: Microcomputers and Electronic Instrumentation. American Chemical Society. p. 389. ISBN 9780841228610. The relative simplicity and low power requirements of MOSFETs have fostered today's microcomputer revolution.
  32. "Timeline of Computer History". Computer History Museum. สืบค้นเมื่อ November 24, 2015.
  33. "Computer Science as a Profession". Computing Sciences Accreditation Board. May 28, 1997. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ June 17, 2008. สืบค้นเมื่อ 23 May 2010.
  34. Committee on the Fundamentals of Computer Science: Challenges and Opportunities, National Research Council (2004). Computer Science: Reflections on the Field, Reflections from the Field. National Academies Press. ISBN 978-0-309-09301-9.
  35. "CSAB Leading Computer Education". CSAB. August 3, 2011. สืบค้นเมื่อ 19 November 2011.
  36. "Computer Science as a Profession". Computing Sciences Accreditation Board. May 28, 1997. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ June 17, 2008. สืบค้นเมื่อ 23 May 2010.
  37. Denning, Peter J. (2000). "Computer Science: The Discipline" (PDF). Encyclopedia of Computer Science. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ May 25, 2006.
  38. Clay Mathematics Institute P = NP เก็บถาวร ตุลาคม 14, 2013 ที่ เวย์แบ็กแมชชีน
  39. Van-Nam Huynh; Vladik Kreinovich; Songsak Sriboonchitta; 2012. Uncertainty Analysis in Econometrics with Applications. Springer Science & Business Media. p. 63. ISBN 978-3-642-35443-4.
  40. A. Thisted, Ronald (April 7, 1997). "Computer Architecture" (PDF). The University of Chicago.
  41. Wescott, Bob (2013). The Every Computer Performance Book, Chapter 3: Useful laws. CreateSpace. ISBN 978-1-4826-5775-3.
  42. Lawrence A. Tomei, 2009. Lexicon of Online and Distance Learning. R&L Education. p. 29. ISBN 978-1-60709-285-8.
  43. Simon Elias Bibri; 2018. Smart Sustainable Cities of the Future: The Untapped Potential of Big Data Analytics and Context-Aware Computing for Advancing Sustainability. Springer. p. 74. ISBN 978-3-319-73981-6.
  44. Muhammad H. Rashid, 2016. SPICE for Power Electronics and Electric Power. CRC Press. p. 6. ISBN 978-1-4398-6047-2.
  45. http://www.student.chula.ac.th/~59370600/Page1.html

แหล่งข้อมูลอื่น แก้