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

วิทยาการคอมพิวเตอร์หรือวิทยาศาสตร์คอมพิวเตอร์(อังกฤษ:computer science) เป็นศาสตร์เกี่ยวกับการศึกษาค้นคว้าทฤษฎีการคำนวณสำหรับคอมพิวเตอร์ และทฤษฎีการประมวลผลสารสนเทศข้อมูลทั้งด้านซอฟต์แวร์ฮาร์ดแวร์และเครือข่ายวิทยาการคอมพิวเตอร์มีความเกี่ยวโยงกับทฤษฎีการคำนวณอัลกอริทึมปัญหาด้านการคำนวณ การออกแบบฮาร์ดแวร์ซอฟต์แวร์และแอปพลิเคชันวิทยาการคอมพิวเตอร์ศึกษาเกี่ยวกับกระบวนการประมวลผลข้อมูล ทั้งในสิ่งมีชีวิตตามกระบวนการธรรมชาติ และระบบคอมพิวเตอร์ที่มนุษย์สร้างขึ้น เช่น การสื่อสาร การควบคุม การรับรู้ การเรียนรู้ และสติปัญญา โดยเฉพาะในคอมพิวเตอร์
สาขาวิชาวิทยาการคอมพิวเตอร์ สามารถแบ่งออกเป็น 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" แต่เดิมในภาษาไทยเรียกทับศัพท์ว่า "คอมพิวเตอร์ไซแอนส์"โดยเป็นชื่อของหน่วยงานหนึ่งของจุฬาลงกรณ์มหาวิทยาลัยซึ่งเป็นหน่วยงานแรกในประเทศไทยที่สอนวิชาวิทยาศาสตร์คอมพิวเตอร์ ต่อมาได้ย้ายมาเป็นภาควิชาวิศวกรรมคอมพิวเตอร์ สังกัดคณะวิศวกรรมศาสตร์ และยังคงหลักสูตรวิทยาศาสตร์คอมพิวเตอร์มหาบัณฑิตไว้ ซึ่งเป็นหลักสูตรเดียวในประเทศที่ใช้คำว่า "วิทยาศาสตร์คอมพิวเตอร์" ส่วนหน่วยงานที่เปิดสอนวิชานี้ในระดับปริญญาตรีแห่งแรกในประเทศไทยคือ สาขาศาสตร์คอมพิวเตอร์ (ชื่อเดิม) คณะวิทยาศาสตร์และเทคโนโลยีมหาวิทยาลัยธรรมศาสตร์ซึ่งสาเหตุที่เดิมเรียกว่า "ศาสตร์คอมพิวเตอร์" เนื่องจากคำว่า "ไซน์" ในความหมายนี้คือ "ศาสตร์" เช่นเดียวกับใน
สังคมศาสตร์ หรือ โซเชียลไซน์ (social science)
รากฐานที่เก่าแก่ที่สุดของสิ่งที่จะกลายมาเป็นวิทยาศาสตร์คอมพิวเตอร์ มีมาก่อนการประดิษฐ์คอมพิวเตอร์ดิจิทัลเสียอีก เครื่องมือสำหรับคำนวณงานที่เป็นตัวเลขคงที่ เช่น ลูกคิด มีมาตั้งแต่สมัยจีนโบราณเพื่อช่วยในการคำนวณ เช่น การคูณและการหาร อัลกอริทึมสำหรับการคำนวณมีมาตั้งแต่สมัยโบราณก่อนที่จะมีการพัฒนาอุปกรณ์คอมพิวเตอร์ที่มีความซับซ้อน นายวิลแฮม ชิคคาร์ด (Wilhelm92 Schickard) ได้ออกแบบและสร้างเครื่องคำนวณเชิงกลที่ใช้งานได้เครื่องแรกในปี ค.ศ. 1623
ในปี ค.ศ. 1673 นายก็อทฟรายด์ ไลบ์นิซ (Gottfried Leibniz) ได้แสดงเครื่องคำนวณเชิงกลแบบดิจิทัลที่เรียกว่า "Stepped Reckoner" ไลบ์นิซอาจถือได้ว่าเป็นนักวิทยาศาสตร์คอมพิวเตอร์และนักทฤษฎีสารสนเทศคนแรก โดยเฉพาะการที่เขาได้จัดทำเอกสารทางวิชาการเกี่ยวกับระบบเลขฐานสอง
ในปี ค.ศ. 1820 นายโทมัส เดอ กอลมาร์ (Thomas de Colmar) ได้เปิดตัวอุตสาหกรรมเครื่องคิดเลขเชิงกล เมื่อเขาประดิษฐ์เครื่องวัดเลขคณิตแบบง่าย เครื่องคำนวณเครื่องแรกที่แข็งแกร่งเพียงพอและเชื่อถือได้เพียงพอที่จะใช้งานได้ทุกวันในสภาพแวดล้อมของสำนักงาน
นายชาร์ลส์ แบ็บเบจ (Charles Babbage) เริ่มออกแบบเครื่องคิดเลขเชิงกลอัตโนมัติเครื่องแรกชื่อ "Difference Engine" ของเขาในปี ค.ศ. 1822 ซึ่งในที่สุดเขาก็มีแนวคิดเกี่ยวกับเครื่องคำนวณเชิงกลที่ตั้งโปรแกรมได้เครื่องแรกชื่อ Analytical Engineโดยเขาเริ่มพัฒนาเครื่องนี้ในปี ค.ศ. 1834 และในเวลาไม่ถึงสองปี เขาได้ร่างคุณลักษณะเด่น ๆ ของคอมพิวเตอร์สมัยใหม่ขึ้นขั้นตอนสำคัญคือการสร้างระบบบัตรเจาะรูที่ได้มาจากเครื่องทอผ้า Jacquardทำให้สามารถตั้งโปรแกรมได้อย่างไม่สิ้นสุดในการทอผ้า
ในปี ค.ศ. 1843 ระหว่างการแปลบทความภาษาฝรั่งเศส เรื่องเครื่องมือวิเคราะห์เอดา เลิฟเลซ(Ada Lovelace) ได้เขียนอัลกอริทึมในการคำนวณจำนวนแบร์นูลลีซึ่งถือเป็นอัลกอริทึมที่เผยแพร่ครั้งแรกที่ได้รับการออกแบบมาโดยเฉพาะสำหรับการใช้งานบนคอมพิวเตอร์
ประมาณปี ค.ศ. 1885 นายเฮอร์แมน ฮอลเลอริธ (Herman Hollerith) ได้ประดิษฐ์ตัวเลื่อนซึ่งใช้บัตรเจาะรูเพื่อประมวลผลข้อมูลทางสถิติ ในที่สุด บริษัท ของเขาก็กลายเป็นส่วนหนึ่งของ IBM
นายเพอร์ซี ลุจเกต (Percy Ludgate) ในปี ค.ศ. 1909 ได้ตีพิมพ์แบบสำหรับประดิษฐ์เครื่องยนต์วิเคราะห์เชิงกลเป็นครั้งที่ 2 ในประวัติศาสตร์ ตามรอยของนายชาร์ลส์ แบ็บเบจ (Charles Babbage) แม้ว่าลุจเกตจะไม่รู้ถึงผลงานก่อนหน้านี้ของแบ็บเบจมาก่อนก็ตาม
ในปี ค.ศ. 1937 100 ปีหลังจากความฝันที่เป็นไปไม่ได้ของนายชาลส์ แบบเบจ (Charles Babbage) นายโฮวาร์ด ไอเค็น (Howard Aiken) ได้โน้มน้าวให้ IBM พัฒนาเครื่องคิดเลขที่ตั้งโปรแกรมได้ขนาดยักษ์ของเขา ที่มีชื่อว่า ASCC / Harvard Mark I ตามรอยเครื่องมือวิเคราะห์ของแบ็บเบจ ซึ่งใช้การ์ดและหน่วยประมวลผลกลาง เมื่อเครื่องนี้สร้างเสร็จ ได้มีการยกย่องเครื่องนี้ว่าเป็น "ความฝันที่เป็นจริงของแบ็บเบจ"
ในช่วงทศวรรษที่ 1940 ด้วยการพัฒนาเครื่องคอมพิวเตอร์รุ่นใหม่และมีประสิทธิภาพมากขึ้น เช่น คอมพิวเตอร์ Atanasoff – Berry และ ENIAC คำว่าคอมพิวเตอร์ ได้เปลี่ยนความหมายไป กลายเป็นหมายถึง เครื่องจักรที่ใช้ในการคำนวณ มากกว่าอาชีพนักคำนวณของมนุษย์ ที่เคยแพร่หลายก่อนยุคของคอมพิวเตอร์เมื่อเห็นได้ชัดว่าคอมพิวเตอร์สามารถใช้เพื่อการคำนวณทางคณิตศาสตร์ได้มากกว่าศักยภาพของมนุษย์ สาขาวิทยาศาสตร์คอมพิวเตอร์จึงได้เกิดการศึกษาอย่างเป็นวงกว้าง เพื่อศึกษาการคำนวณโดยทั่วไป
ในปีพ.ศ. 2488 IBMได้ก่อตั้งห้องปฏิบัติการคอมพิวเตอร์วิทยาศาสตร์วัตสัน ที่มหาวิทยาลัยโคลัมเบีย ในกรุงนิวยอร์ก เป็นห้องปฏิบัติการแรกของ IBM ที่อุทิศให้กับวิทยาศาสตร์บริสุทธิ์ ห้องปฏิบัติการนี้เป็นผู้บุกเบิกแผนกวิจัยของไอบีเอ็มซึ่งปัจจุบันดำเนินงานด้านการวิจัยทั่วโลก
ในที่สุดความสัมพันธ์ที่ใกล้ชิดระหว่างไอบีเอ็มและมหาวิทยาลัยก็มีส่วนสำคัญในการเกิดระเบียบทางวิทยาศาสตร์ขึ้นใหม่ โดยมหาวิทยาลัยโคลัมเบีย เปิดสอนหลักสูตรวิชาการครั้งแรกในสาขาวิทยาการคอมพิวเตอร์ เมื่อปี ค.ศ. 1946วิทยาการคอมพิวเตอร์เริ่มได้รับการยอมรับให้เป็นสาขาวิชาการที่แตกออกมาจากวิทยาศาสตร์และคณิตศาสตร์ทั่วไป ในช่วงทศวรรษที่ 1950 และต้นทศวรรษที่ 1960หลักสูตรปริญญาวิทยาการคอมพิวเตอร์ หลักสูตรแรกของโลก คือ "Cambridge Diploma in Computer Science" เริ่มต้นที่ห้องปฏิบัติการคอมพิวเตอร์ของมหาวิทยาลัยเคมบริดจ์ ในปี ค.ศ. 1953 แผนกวิทยาการคอมพิวเตอร์แห่งแรกในสหรัฐอเมริกาก่อตั้งขึ้นที่มหาวิทยาลัยเพอร์ดู ในปี ค.ศ. 1962นับตั้งแต่คอมพิวเตอร์สามารถใช้งานได้อย่างสะดวกแพร่หลาย การใช้งานคอมพิวเตอร์ในแต่ละสาขา กลายเป็นศาสตร์ลึกซึ้งเฉพาะตัว
แม้ว่าในตอนแรก หลายคนเชื่อว่ามันเป็นไปไม่ได้เลยที่คอมพิวเตอร์จะสามารถเป็นสาขาการศึกษาทางวิทยาศาสตร์ได้ แต่ในช่วงปลายทศวรรษที่ 50 การศึกษาเกี่ยวกับคอมพิวเตอร์ ก็ค่อย ๆ เป็นที่ยอมรับในหมู่นักวิชาการจำนวนมากปัจจุบันเป็นแบรนด์ IBM ที่รู้จักกันดี และยังคงเป็นส่วนหนึ่งของการปฏิวัติวิทยาการคอมพิวเตอร์ในช่วงเวลานี้ IBM (ย่อมาจาก International Business Machines) เปิดตัว IBM 704และต่อมาคอมพิวเตอร์ IBM 709ซึ่งใช้กันอย่างแพร่หลายในยุคแห่งการสำรวจทางเทคโนโลยี ในช่วงปลายทศวรรษที่ 50 สาขาวิชาวิทยาการคอมพิวเตอร์ยังคงอยู่ในขั้นตอนของการพัฒนาอย่างมากและมีการพบปัญหาต่าง ๆ อยู่บ่อยครั้ง
จูเลียส เอ็ดการ์ ลิเลียนเฟลด์ (Julius Edgar Lilienfeld) นักฟิสิกส์ชาวออสเตรีย-ฮังการี ได้เสนอแนวคิดเกี่ยวกับ ทรานซิสเตอร์สนามไฟฟ้า ในปี ค.ศ. 1925 และต่อมา จอห์น บาร์ดีน (John Bardeen) และวอลเตอร์ แบรเทน (Walter Brattain) ได้สร้างทรานซิสเตอร์ที่ใช้งานได้ตัวแรกซึ่งเป็นทรานซิสเตอร์แบบจุดสัมผัส ในปี ค.ศ. 1947 ในขณะที่ทำงานภายใต้ วิลเลียม ช็อกลีย์ (William Shockley) ที่ Bell Labs
ในปี ค.ศ. 1953 มหาวิทยาลัยแมนเชสเตอร์ได้สร้างคอมพิวเตอร์ทรานซิสเตอร์เครื่องแรก เรียกว่า Transistor Computerอย่างไรก็ตามทรานซิสเตอร์ในยุคแรกเป็นอุปกรณ์ที่ค่อนข้างเทอะทะ ซึ่งยากต่อการผลิตเป็นจำนวนมากทรานซิสเตอร์สนามเอฟเฟกต์โลหะ - ออกไซด์ - ซิลิคอน (MOSFET หรือ MOS) ถูกประดิษฐ์ขึ้นโดย โมฮัมเม็ด อาตัลลา (Mohamed Atalla) และ เดวอน คัง (Dawon Kahng) ที่ Bell Labs ในปี ค.ศ. 1959เป็นทรานซิสเตอร์ขนาดกะทัดรัดตัวแรกที่สามารถย่อส่วนและผลิตจำนวนมากเพื่อการใช้งานที่หลากหลาย [33] MOSFET ช่วยให้สามารถสร้างชิปวงจรรวมที่มีความหนาแน่นสูงได้ซึ่งนำไปสู่สิ่งที่เรียกว่า การปฏิวัติคอมพิวเตอร์หรือการปฏิวัติไมโครคอมพิวเตอร์เป็นช่วงเวลาที่ได้เห็นการปรับปรุงอย่างมีนัยสำคัญในการใช้งานและประสิทธิผลของเทคโนโลยีคอมพิวเตอร์สังคมสมัยใหม่ได้เห็นการเปลี่ยนแปลงอย่างมีนัยสำคัญในด้านประชากรที่ใช้เทคโนโลยีคอมพิวเตอร์ การใช้งานได้เปลี่ยนจากการใช้เฉพาะผู้เชี่ยวชาญเป็นส่วนใหญ่ ไปสู่ฐานผู้ใช้ที่แพร่หลายในวงกว้าง ในขั้นต้นคอมพิวเตอร์มีค่าใช้จ่ายค่อนข้างสูงและจำเป็นต้องได้รับความช่วยเหลือด้วยมนุษย์ในระดับหนึ่ง เพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ เนื่องจากการใช้คอมพิวเตอร์แพร่หลายมากขึ้นและราคาไม่แพง ความช่วยเหลือจากมนุษย์ในการใช้งานคอมพิวเตอร์จึงจำเป็นน้อยลงอย่างมากสำหรับการใช้งานทั่วไป
วิทยาการคอมพิวเตอร์ครอบคลุมหัวข้อต่าง ๆ ตั้งแต่การศึกษาทางทฤษฎีของอัลกอริทึม และขีดจำกัดของการคำนวณ ไปจนถึงประเด็นทางปฏิบัติของการนำระบบคอมพิวเตอร์มาใช้ในฮาร์ดแวร์และซอฟต์แวร์โดยองค์กรCSAB(เดิมเรียกว่า Computing Sciences Accreditation Board ซึ่งประกอบด้วยตัวแทนของ Association for Computing Machinery (ACM) และ IEEE Computer Society (IEEE CS))ระบุว่ามี 4 สาขา ที่สำคัญในสาขาวิทยาการคอมพิวเตอร์ ประกอบด้วย: ทฤษฎีการคำนวณอัลกอริทึม, โครงสร้างข้อมูลและอัลกอริทึม, ระเบียบวิธีการเขียนโปรแกรมและภาษาโปรแกรม, องค์ประกอบและสถาปัตยกรรมของคอมพิวเตอร์ นอกเหนือจากสี่ด้านนี้แล้ว CSAB ยังระบุสาขาต่าง ๆ เพิ่มเติม เช่น วิศวกรรมซอฟต์แวร์, ปัญญาประดิษฐ์, ระบบเครือข่ายคอมพิวเตอร์และการสื่อสาร, ระบบฐานข้อมูล, การคำนวณแบบขนาน, การคำนวณแบบกระจาย, ปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์, กราฟิกคอมพิวเตอร์. ระบบปฏิบัติการ และการคำนวณเชิงตัวเลขและสัญลักษณ์ ซึ่งถือเป็นพื้นที่สำคัญของวิทยาการคอมพิวเตอร์
ทฤษฎีวิทยาการคอมพิวเตอร์เป็นการศึกษาทางคณิตศาสตร์เชิงทฤษฎี มีความเป็นนามธรรมสูง แต่มีต้นกำเนิดมาจากการคำนวณเชิงปฏิบัติในชีวิตประจำวัน จุดมุ่งหมายคือ การเข้าใจธรรมชาติของการคำนวณ เพื่อทำให้มีวิธีการคำนวณที่มีประสิทธิภาพมากขึ้น การศึกษาเชิงคณิตศาสตร์ทั้งหมดที่เกี่ยวข้องกับตรรกศาสตร์ และวิธีการทางคณิตศาสตร์ อาจถือได้ว่าเป็นทฤษฎีวิทยาการคอมพิวเตอร์ โดยมีเงื่อนไขว่าจุดประสงค์ของการศึกษานั้นมีขึ้นเพื่อการศึกษาวิทยาการคอมพิวเตอร์อย่างชัดเจน
จากข้อมูลของPeter Denningคำถามพื้นฐานที่แฝงอยู่ในวิทยาการคอมพิวเตอร์คือ "อะไรบ้างที่ทำให้เป็นอัตโนมัติได้"ทฤษฎีการคำนวณมุ่งเน้นไปที่การตอบคำถามพื้นฐานเกี่ยวกับสิ่งที่สามารถคำนวณได้และจำนวนทรัพยากรที่ต้องใช้ในการคำนวณเหล่านั้น ในความพยายามที่จะตอบคำถามแรกนั้น ทฤษฎีความสามารถในการคำนวณ (computability theory) จะตรวจสอบว่าปัญหาการคำนวณใดที่สามารถแก้ไขได้บนแบบจำลองการคำนวณ (models of computation) ทางทฤษฎีต่าง ๆ คำถามที่สองได้รับการแก้ไขโดย ทฤษฎีความซับซ้อนในการคำนวณ (computational complexity theory) ซึ่งศึกษาต้นทุนด้านเวลาและพื้นที่ ที่เกี่ยวข้องกับแนวทางที่หลากหลายในการแก้ปัญหาด้านการคำนวณที่หลากหลาย
สมการปัญหาP = NP?ที่มีชื่อเสียง เป็นสมการปัญหาหนึ่งใน"ปัญหารางวัลแห่งสหัสวรรษ (Millennium Prize Problems) เป็นปัญหาที่เปิดกว้างในทฤษฎีการคำนวณ
ทฤษฎีสารสนเทศ(Information theory) เกี่ยวข้องกับความน่าจะเป็นการหาปริมาณข้อมูล และสถิติพัฒนาขึ้นโดยคล็อด แชนนอน(Claude Shannon) เพื่อค้นหาขีดจำกัดพื้นฐานในการประมวลผลสัญญาณ(signal processing)  เช่น การบีบอัดข้อมูล และการจัดเก็บและสื่อสารข้อมูลที่เชื่อถือได้
ทฤษฎีการเขียนโค้ด(Coding theory) คือการศึกษาคุณสมบัติของรหัส (ระบบสำหรับการแปลงข้อมูลจากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง) และความเหมาะสมของรหัสสำหรับการใช้งานเฉพาะ รหัสใช้สำหรับการบีบอัดข้อมูล (data compression), การเข้ารหัส (cryptography), การตรวจจับและแก้ไขข้อผิดพลาด (error detection and correction) และ การเข้ารหัสเครือข่าย (network coding)  การศึกษารหัสมีเป้าหมายเพื่อการออกแบบวิธีการส่งข้อมูล (data transmission) ที่มีประสิทธิภาพและเชื่อถือได้
โครงสร้างข้อมูล และอัลกอริทึม เป็นการศึกษาวิธีการคำนวณทั่วไป และประสิทธิภาพในการคำนวณของแต่ละวิธีการ
ทฤษฎีภาษาโปรแกรม (Programming language theory) เป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบ การใช้งาน การวิเคราะห์ การระบุลักษณะ และการจัดประเภทของภาษาโปรแกรม(programming languages) เป็นแขนงหนึ่งของวิทยาศาสตร์คอมพิวเตอร์ที่มีความเกี่ยวโยงอย่างลึกซึ้งกับคณิตศาสตร์ วิศวกรรมซอฟต์แวร์ และภาษาศาสตร์ เป็นแขนงศึกษาในวิทยาศาสตร์คอมพิวเตอร์ที่มีผู้วิจัยศึกษาจำนวนมาก
วิธีรูปนัย (Formal method) เป็นเทคนิคเฉพาะทางคณิตศาสตร์สำหรับการกำหนดคุณลักษณะ (specification), การพัฒนา (development) และการตรวจสอบระบบซอฟต์แวร์ และฮาร์ดแวร์ (verification) การใช้วิธีรูปนัยในการออกแบบซอฟต์แวร์และฮาร์ดแวร์นั้น มาจากความคาดหวังว่า การวิเคราะห์ทางคณิตศาสตร์ที่เหมาะสม จะสามารถสร้างระบบคอมพิวเตอร์ที่มีความประสิทธิภาพสูง ความคาดหวังนี้เป็นรากฐานทางทฤษฎีที่สำคัญสำหรับวิศวกรรมซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวข้องกับความปลอดภัยทางไซเบอร์(cybersecurity) วิธีรูปนัยเป็นส่วนเสริมที่มีประโยชน์ในการทดสอบซอฟต์แวร์ เนื่องจากช่วยหลีกเลี่ยงข้อผิดพลาดและยังสร้างกรอบสำหรับการทดสอบ สำหรับการใช้งานในอุตสาหกรรม จำเป็นต้องมีการสนับสนุนด้วยเครื่องมือ (tool support) อย่างไรก็ตามค่าใช้จ่ายที่สูงในการใช้วิธีรูปนัย ทำให้โดยส่วนใหญ่ จะใช้วิธีรูปนัยในการพัฒนาระบบที่มีความสมบูรณ์สูงและมีความสำคัญต่อชีวิตเท่านั้น เน้นความปลอดภัย หรือ การรักษาความปลอดภัย วิธีรูปนัยเป็นการประยุกต์ใช้พื้นฐานวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎีที่หลากหลาย โดยเฉพาะอย่างยิ่งแคลคูลัสเชิงตรรกะ (logic calculi), ภาษาแบบแผน (formal languages), ทฤษฎีออโตมาตา (automata theory), อรรถศาสตร์ของโปรแกรม (program semantics), ระบบชนิดข้อมูล (type systems) และประเภทข้อมูลเชิงพีชคณิต (algebraic data types)
สถาปัตยกรรมคอมพิวเตอร์ คือ การออกแบบโครงสร้างการดำเนินงานพื้นฐานของระบบคอมพิวเตอร์ โดยมุ่งเน้นไปที่หน่วยประมวลผลกลาง (CPU) ซึ่งดำเนินการอยู่ภายในคอมพิวเตอร์และเข้าถึงแอดเดรสในหน่วยความจำสาขาสถาปัตยกรรมคอมพิวเตอร์ เกี่ยวข้องกับสาขาวิชาวิศวกรรมคอมพิวเตอร์ และสาขาวิศวกรรมไฟฟ้า โดยเน้นเชื่อมต่อส่วนประกอบฮาร์ดแวร์ต่าง ๆ เพื่อสร้างคอมพิวเตอร์ที่มีฟังก์ชันการทำงาน ประสิทธิผล และต้นทุนตามเป้าที่วางไว้
การวิเคราะห์ประสิทธิภาพของคอมพิวเตอร์ คือ การศึกษางานที่ไหลผ่านคอมพิวเตอร์ โดยมีเป้าหมายทั่วไปในการปรับปรุงปริมาณงาน (throughput) การควบคุมเวลาตอบสนอง (response time) การใช้ทรัพยากรอย่างมีประสิทธิภาพ การขจัดปัญหาคอขวด (bottlenecks) และการทำนายประสิทธิภาพภายใต้ปริมาณงานสูงสุดที่คาดการณ์ไว้การวัดเปรียบเทียบสมรรถนะของคอมพิวเตอร์(Benchmark) ใคือการเปรียบเทียบประสิทธิภาพของระบบคอมพิวเตอร์ที่มีใช้ชิป หรือ มีสถาปัตยกรรมระบบที่แตกต่างกัน
การประมวลผลพร้อมกัน (concurrency) คือ คุณสมบัติของระบบที่มีการประมวลผลหลายอย่างพร้อมกันและอาจมีการโต้ตอบซึ่งกันและกัน แบบจำลองทางคณิตศาสตร์จำนวนมากได้รับการพัฒนาสำหรับการคำนวณพร้อมกันทั่วไป อาทิPetri nets,แคลคูลัสกระบวนการและแบบจำลอง Parallel Random Access Machineเมื่อคอมพิวเตอร์หลายเครื่องเชื่อมต่อในเครือข่ายในขณะที่ใช้งานพร้อมกันสิ่งนี้เรียกว่า ระบบกระจาย (distributed system) คอมพิวเตอร์ภายในระบบกระจายนั้นมีหน่วยความจำส่วนตัวของตัวเองและสามารถแลกเปลี่ยนข้อมูลเพื่อบรรลุเป้าหมายร่วมกันได้
เครือข่ายคอมพิวเตอร์ (computer network) มีเป้าหมายในการจัดการเครือข่ายคอมพิวเตอร์ทีเขื่อมต่อกันอยู่ทั่วทั้งโลก
ความปลอดภัยทางไซเบอร์ (Cybersecurity) เป็นสาขาหนึ่งของเทคโนโลยีคอมพิวเตอร์ที่มีวัตถุประสงค์เพื่อปกป้องข้อมูลจากการเข้าถึงโดยไม่ได้รับอนุญาต
วิทยาการรหัสลับ (Cryptography) เป็นการศึกษาเกี่ยวกับการซ่อนข้อมูล (การเข้ารหัส) และการเปิดเผยข้อมูล (ถอดรหัส) การเข้ารหัสสมัยใหม่เกี่ยวข้องกับวิทยาศาสตร์คอมพิวเตอร์เป็นส่วนใหญ่ อัลกอริทึมการเข้ารหัสและการถอดรหัสขึ้นอยู่กับความซับซ้อนในการคำนวณ
ฐานข้อมูล (database) มีหน้าที่ในการจัดการ กักเก็บ และกู้คืนข้อมูลจำนวนมาก ด้วยความสะดวกรวดเร็ว ฐานข้อมูลดิจิทัลมีการจัดการโดยใช้ระบบการจัดการฐานข้อมูล เพื่อการกักเก็บ สร้าง รักษา และค้นหาข้อมูล ด้วยโมเดลฐานข้อมูล (database models) และภาษาสอบถาม (query languages)
คอมพิวเตอร์กราฟิก คือ การศึกษาเนื้อหาภาพดิจิทัลแลการสังเคราะห์และการจัดการข้อมูลภาพดิจิทัล สาขานี้เชื่อมต่อกับสาขาอื่น ๆ ในวิทยาการคอมพิวเตอร์ ตั้งแต่คอมพิวเตอร์วิทัศน์(computer vision)การประมวลผลภาพ(image processing) และเรขาคณิตเชิงคำนวณ (computational geometry) และถูกนำไปใช้อย่างมากในสาขาเทคนิคพิเศษ และการผลิตวิดีโอเกม
HCIคือ การวิจัยที่พัฒนาทฤษฎี หลักการ และแนวทางสำหรับนักออกแบบอินเทอร์เฟซผู้ใช้ (UI) เพื่อให้สามารถสร้างประสบการณ์ผู้ใช้ที่น่าพอใจด้วยเดสก์ท็อป แล็ปท็อป และอุปกรณ์เคลื่อนที่ ที่สะดวกต่อการใช้งาน
ดูบทความหลัก (ภาษาอังกฤษ) ที่:Computational science
วิทยาศาสตร์เชิงคอมพิวเตอร์(Scientific computingหรือComputational science) เป็นสาขาวิชาที่เกี่ยวข้องกับการสร้างแบบจำลองทางคณิตศาสตร์ (mathematical models) และเทคนิคการวิเคราะห์เชิงปริมาณ (quantitative analysis) โดยประยุกต์ใช้คอมพิวเตอร์เพื่อการวิเคราะห์และแก้ปัญหาทางวิทยาศาสตร์ โดยมักใช้จำลองกระบวนการและปรากฏการณ์ต่าง ๆ เช่น พลวัตของไหล วงจรไฟฟ้า การเคลื่อนที่ทางกลศาสตร์ การวิเคราะห์ปรากฏการณ์ทางดาราศาสตร์ ตลอดจนถึงการวิเคราะห์และทำนายด้านสังคมศาตร์ เช่น ประชากร แนวโน้มสงคราม และการเจริญเติบโตของเศรษฐกิจ
คอมพิวเตอร์สมัยใหม่ช่วยเพิ่มประสิทธิภาพของการออกแบบระบบเครื่องกลที่ซับซ้อน เช่น การออกแบบอากาศยาน หุ่นยนต์ เครื่องกล วงจรอิเล็กทรอนิกส์ โดยโปรแกรมการออกแบบวงจรไฟฟ้าและอิเล็กทรอนิกส์ที่โดดเด่นในปัจจุบันได้แก่ SPICEวิทยาการคอมพิวเตอร์สมัยใหม่ ทำให้การทำงานในสาขาวิทยาศาสตร์และวิศวกรรมศาสตร์นั้นง่ายขึ้น เร็วขึ้น และมีประสิทธิภาพสูง เป็นส่วนสำคัญของการวิจัยทางวิทยาศาสตร์และวิศวกรรมศาสตร์ในศตวรรษที่ 21 นี้
ปัญญาประดิษฐ์ (Artificial intelligence) หรือ AI มีจุดประสงค์เพื่อสังเคราะห์กระบวนการที่มีเป้าหมายเฉพาะเจาะจงในระบบคอมพิวเตอร์ อาทิ การแก้ปัญหา การตัดสินใจ การปรับตัวเข้ากับสิ่งแวดล้อม การเรียนรู้ และการสื่อสาร ที่พบในมนุษย์และสัตว์
จากจุดเริ่มต้นในไซเบอร์เนติกส์ และในการประชุมดาร์ทเมาท์ (Dartmouth Conference) ค.ศ. 1956 การวิจัยปัญญาประดิษฐ์จำเป็นต้องมีการข้ามสาขาวิชาโดยอาศัยความเชี่ยวชาญที่หลากหลาย เช่น คณิตศาสตร์ประยุกต์ ตรรกะสัญลักษณ์ สัญศาสตร์ วิศวกรรมไฟฟ้า ปรัชญา จิตประสาท สรีรวิทยา และ สังคมศาสตร์ ปัญญาประดิษฐ์มีความเกี่ยวข้องกับการพัฒนาหุ่นยนต์แต่การประยุกต์ใช้ AI ในทางปฏิบัติ มักใช้ในด้านการพัฒนาซอฟต์แวร์ ซึ่งต้องใช้ความเข้าใจในการคำนวณชั้นสูง จุดเริ่มต้นของ AI อยู่ในช่วงปลายทศวรรษที่ 1940 จากคำถามของอลัน ทัวริง(Alan Turing) ว่า "คอมพิวเตอร์คิดเองได้ไหม" และเป็นคำถามยังคงไม่มีคำตอบอย่างมีประสิทธิภาพ ถึงแม้ว่าการทดสอบทัวริงจะยังคงมีการใช้งานเพื่อประเมินผลลัพธ์ของคอมพิวเตอร์โดยมีระดับสติปัญญาของมนุษย์เป็นบรรทัดฐาน แต่ในปัจจุบัน ระบบ AI อัตโนมัติ ประสบความสำเร็จในการประเมินผลและคาดการณ์ล่วงหน้าอย่างมาก สามารถแทนที่การตรวจสอบโดยมนุษย์ได้อย่างมีประสิทธิภาพ และมีการประยุกต์ใช้งาน AI กับข้อมูลขนาดใหญ่ที่มนุษย์ไม่สามารถทำได้
วิศวกรรมซอฟต์แวร์ คือการศึกษาเกี่ยวกับการออกแบบ การใช้งานและการปรับเปลี่ยนซอฟต์แวร์ เพื่อให้แน่ใจว่าซอฟต์แวร์ที่ออกมานั้นมีคุณภาพสูง ราคาไม่แพง บำรุงรักษาได้ และสร้างได้อย่างรวดเร็ว เป็นแนวทางที่เป็นระบบในการออกแบบซอฟต์แวร์ เกี่ยวข้องกับการประยุกต์ใช้แนวทางปฏิบัติทางวิศวกรรมกับตัวซอฟต์แวร์ นักวิศวกรซอฟต์แวร์จัดระเบียบ วิเคราะห์ สร้าง ผลิต และบำรุงรักษาซอฟต์แวร์
กระบวนทัศน์การเขียนโปรแกรม(อังกฤษ:กระบวนทัศน์การเขียนโปรแกรม) เป็นวิธีการพื้นฐานของการเขียนโปรแกรมคอมพิวเตอร์กระบวนทัศน์การเขียนโปรแกรมมี 4 กระบวนทัศน์หลัก ได้แก่
นอกจากกระบวนทัศน์หลักทั้ง 4 แล้ว ยังมีอีกกระบวนทัศน์หนึ่งซึ่งขยายความสามารถของโมดูลโปรแกรม โดยใช้วิธีการตัดแทรกโค้ด กระบวนทัศน์นี้คือการโปรแกรมเชิงหน่วยย่อย(aspect-oriented programming)
วิทยาการคอมพิวเตอร์ หรือศาสตร์คอมพิวเตอร์มีความสัมพันธ์กับสาขาอื่น ๆ อีกหลายศาสตร์ ถึงแม้ว่าในแต่ละศาสตร์ จะครอบคลุมเนื้อหาที่เหมือนกันอยู่อย่างเห็นได้ชัด แต่ว่าแต่ละศาสตร์ หรือสาขาก็จะมีลักษณะสำคัญ และระดับของการศึกษ การวิจัย และการประยุกต์ใช้แตกต่างกันไปจากสาขาอื่น ๆ