ผลต่างระหว่างรุ่นของ "วิทยาการคอมพิวเตอร์"

จากวิกิพีเดีย สารานุกรมเสรี
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Wittawin Panta (คุย | ส่วนร่วม)
ไม่มีความย่อการแก้ไข
Wittawin Panta (คุย | ส่วนร่วม)
ไม่มีความย่อการแก้ไข
ป้ายระบุ: เพิ่มยูอาร์แอล wikipedia.org การแก้ไขแบบเห็นภาพ
บรรทัด 128: บรรทัด 128:
([[:en:Estimation_theory|Estimation theory]])
([[:en:Estimation_theory|Estimation theory]])
|}
|}

=== โครงสร้างข้อมูล และ อัลกอริทึม ===
{{main|โครงสร้างข้อมูล|อัลกอริทึม}}Data structures and algorithms are the studies of commonly used computational methods and their computational efficiency.

โครงสร้างข้อมูล และ อัลกอริทึม เป็นการศึกษาวิธีการคำนวณทั่วไป และ ประสิทธิภาพในการคำนวณของแต่ละวิธีการ
{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|{{math|''O''(''n''<sup>2</sup>)}}
|[[File:Sorting_quicksort_anim.gif|link=https://en.wikipedia.org/wiki/File:Sorting_quicksort_anim.gif|96x96px]]
|[[File:Singly_linked_list.png|link=https://en.wikipedia.org/wiki/File:Singly_linked_list.png|96x96px]]
|[[File:TSP_Deutschland_3.png|link=https://en.wikipedia.org/wiki/File:TSP_Deutschland_3.png|103x103px]]
|[[File:SimplexRangeSearching.svg|link=https://en.wikipedia.org/wiki/File:SimplexRangeSearching.svg|104x104px]]
|-
|[[การวิเคราะห์ขั้นตอนวิธี]]
([[:en:Analysis_of_algorithms|Analysis of algorithms]])
|[[อัลกอริทึม]]
([[:en:Algorithm|Algorithms]])
|[[โครงสร้างข้อมูล]]
([[:en:Data_structures|Data structures]])
|การหาค่าที่เหมาะสมที่สุด
([[:en:Combinatorial_optimization|Combinatorial optimization]])
|เรขาคณิตการคำนวณ
([[:en:Computational_geometry|Computational geometry]])
|}

==== ทฤษฎีภาษาโปรแกรม ====
{{main|ทฤษฎีภาษาโปรแกรม}}ทฤษฎีภาษาโปรแกรม ([[:en:Programming_language_theory|Programming language theory]]) เป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบ การใช้งาน การวิเคราะห์ การระบุลักษณะ และ การจัดประเภทของ[[ภาษาโปรแกรม]] ([[:en:Programming_language|programming languages]]) เป็นแขนงหนึ่งของวิทยาศาสตร์คอมพิวเตอร์ที่มีความเกี่ยวโยงอย่างลึกซึ้งกับคณิตศาสตร์ วิศวกรรมซอฟต์แวร์ และ ภาษาศาสตร์ เป็นแขนงศึกษาในวิทยาศาสตร์คอมพิวเตอร์ที่มีผู้วิจัยศึกษาจำนวนมาก
{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|[[File:Syntax_tree.svg|link=https://en.wikipedia.org/wiki/File:Syntax_tree.svg|96x96px]]
|
|<math>\Gamma\vdash x: \text{Int}</math>
|[[File:Compiler.svg|link=https://en.wikipedia.org/wiki/File:Compiler.svg|108x108px]]
|[[File:Python_add5_syntax.svg|link=https://en.wikipedia.org/wiki/File:Python_add5_syntax.svg|96x96px]]
|-
|ภาษาแบบแผน
([[:en:Formal_language|Formal languages]])
|อรรถศาสตร์แบบมีแบบแผน
([[:en:Semantics_(computer_science)|Formal semantics]])
|ทฤษฎีรูปแบบ
([[:en:Type_theory|Type theory]])
|[[คอมไพเลอร์|การออกแบบคอมไพเลอร์]]
([[:en:Compiler_construction|Compiler design]])
|[[ภาษาโปรแกรม]]
([[:en:Programming_language|Programming languages]])
|}

==== Formal methods ====
{{main|Formal methods}}Formal methods are a particular kind of [[:en:Mathematics|mathematically]] based technique for the [[:en:Formal_specification|specification]], development and [[:en:Formal_verification|verification]] of software and [[:en:Computer_hardware|hardware]] systems.<ref>Phillip A. Laplante, 2010. Encyclopedia of Software Engineering Three-Volume Set (Print). CRC Press. p. 309. {{ISBN|978-1-351-24926-3}}.</ref> The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. They form an important theoretical underpinning for software engineering, especially where safety or security is involved. Formal methods are a useful adjunct to software testing since they help avoid errors and can also give a framework for testing. For industrial use, tool support is required. However, the high cost of using formal methods means that they are usually only used in the development of high-integrity and [[:en:Life-critical_system|life-critical systems]], where safety or [[:en:Computer_security|security]] is of utmost importance. Formal methods are best described as the application of a fairly broad variety of [[:en:Theoretical_computer_science|theoretical computer science]] fundamentals, in particular [[:en:Logic_in_computer_science|logic]] calculi, [[:en:Formal_language|formal languages]], [[:en:Automata_theory|automata theory]], and [[:en:Program_semantics|program semantics]], but also [[:en:Type_systems|type systems]] and [[:en:Algebraic_data_types|algebraic data types]] to problems in software and hardware specification and verification.
{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|[[File:Prop-tableau-1.svg|link=https://en.wikipedia.org/wiki/File:Prop-tableau-1.svg|115x115px]]
|
|[[File:Coq_plus_comm_screenshot.jpg|link=https://en.wikipedia.org/wiki/File:Coq_plus_comm_screenshot.jpg|96x96px]]
|-
|[[:en:Formal_verification|Formal verification]]
|[[:en:Semantics_(computer_science)|Formal semantics]]
|[[:en:Automated_theorem_proving|Automated theorem proving]]
|}

=== Computer systems ===

==== Computer architecture and computer engineering ====
{{main|Computer architecture|Computer engineering}}Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory.<ref>{{cite web|last=A. Thisted|first=Ronald|title=Computer Architecture|url=http://galton.uchicago.edu/~thisted/Distribute/comparch.pdf|publisher=The University of Chicago|date=April 7, 1997}}</ref> The field often involves disciplines of computer engineering and electrical engineering, selecting and interconnecting hardware components to create computers that meet functional, performance, and cost goals.
{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|[[File:NOR_ANSI.svg|link=https://en.wikipedia.org/wiki/File:NOR_ANSI.svg|96x96px]]
|[[File:Fivestagespipeline.png|link=https://en.wikipedia.org/wiki/File:Fivestagespipeline.png|96x96px]]
|[[File:SIMD.svg|link=https://en.wikipedia.org/wiki/File:SIMD.svg|96x96px]]
|-
|[[:en:Boolean_algebra|Digital logic]]
|[[:en:Microarchitecture|Microarchitecture]]
|[[:en:Multiprocessing|Multiprocessing]]
|-
|[[File:Roomba_original.jpg|link=https://en.wikipedia.org/wiki/File:Roomba_original.jpg|96x96px]]
|[[File:Flowchart.png|link=https://en.wikipedia.org/wiki/File:Flowchart.png|96x96px]]
|[[File:Operating_system_placement.svg|link=https://en.wikipedia.org/wiki/File:Operating_system_placement.svg|142x142px]]
|-
|[[:en:Ubiquitous_computing|Ubiquitous computing]]
|[[:en:Systems_architecture|Systems architecture]]
|[[:en:Operating_system|Operating systems]]
|}

==== Computer performance analysis ====
{{main|Computer performance|Benchmark (computing)}}Computer performance analysis is the study of work flowing through computers with the general goals of improving [[:en:Throughput|throughput]], controlling [[:en:Response_time_(technology)|response time]], using resources efficiently, eliminating [[:en:Bottleneck_(software)|bottlenecks]], and predicting performance under anticipated peak loads.<ref>{{cite book|last=Wescott|first=Bob|title=The Every Computer Performance Book, Chapter 3: Useful laws|publisher=[[CreateSpace]]|date=2013|isbn=978-1-4826-5775-3}}</ref> [[:en:Benchmark_(computing)|Benchmarks]] are used to compare the performance of systems carrying different chips and/or system architectures.<ref>Lawrence A. Tomei, 2009. Lexicon of Online and Distance Learning. R&L Education. p. 29. {{ISBN|978-1-60709-285-8}}.</ref>

==== Concurrent, parallel and distributed systems ====
{{main|Concurrency (computer science)|Distributed computing}}Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other.<ref>Jiacun Wang, 2017. Real-Time Embedded Systems. Wiley. p. 12. {{ISBN|978-1-119-42070-5}}.</ref> A number of mathematical models have been developed for general concurrent computation including [[:en:Petri_net|Petri nets]], [[:en:Process_calculus|process calculi]] and the [[:en:Parallel_random-access_machine|Parallel Random Access Machine]] model.<ref>Gordana Dodig-Crnkovic; Raffaela Giovagnoli; 2013. Computing Nature: Turing Centenary Perspective. Springer Science & Business Media. p. 247. {{ISBN|978-3-642-37225-4}}.</ref> When multiple computers are connected in a network while using concurrency, this is known as a distributed system. Computers within that distributed system have their own private memory, and information can be exchanged to achieve common goals.<ref>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}}.</ref>

==== Computer networks ====
{{main|Computer network}}This branch of computer science aims to manage networks between computers worldwide.

==== Computer security and cryptography ====
{{main|Computer security|Cryptography}}Computer security is a branch of computer technology with an objective of protecting information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users. [[:en:Cryptography|Cryptography]] is the practice and study of hiding (encryption) and therefore deciphering (decryption) information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.

==== Databases ====
{{main|Database}}{{Missing information|a structured set of data held in a computer, especially one that is accessible in various ways.|date=September 2018}}A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through [[:en:Database_model|database models]] and [[:en:Query_language|query languages]].

=== Computer applications ===

==== Computer graphics and visualization ====
{{main|Computer graphics (computer science)}}Computer graphics is the study of digital visual contents and involves the synthesis and manipulation of image data. The study is connected to many other fields in computer science, including [[:en:Computer_vision|computer vision]], [[:en:Image_processing|image processing]], and [[:en:Computational_geometry|computational geometry]], and is heavily applied in the fields of special effects and [[:en:Video_game|video games]].

==== Human–computer interaction ====
{{main|Human–computer interaction}}Research that develops theories, principles, and guidelines for user interface designers, so they can create satisfactory user experiences with desktop, laptop, and mobile devices.

==== Scientific computing and simulation ====
''Main article: [[:en:Computational_science|Computational science]]''

[[:en:Scientific_computing|Scientific computing]] (or [[:en:Computational_science|computational science]]) is the field of study concerned with constructing [[:en:Scientific_modelling|mathematical models]] and [[:en:Numerical_analysis|quantitative analysis]] techniques and using computers to analyze and solve [[:en:Science|scientific]] problems. A major usage of scientific computing is [[:en:Simulation|simulation]] of various processes, including computational [[:en:Fluid_dynamics|fluid dynamics]], physical, electrical, and electronic systems and circuits, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE,<ref>Muhammad H. Rashid, 2016. SPICE for Power Electronics and Electric Power. CRC Press. p. 6. {{ISBN|978-1-4398-6047-2}}.</ref> as well as software for physical realization of new (or modified) designs. The latter includes essential design software for [[:en:Integrated_circuit|integrated circuits]].{{Citation needed|date=October 2010}}

{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|[[File:Lorenz_attractor_yb.svg|link=https://en.wikipedia.org/wiki/File:Lorenz_attractor_yb.svg|96x96px]]
|[[File:Quark_wiki.jpg|link=https://en.wikipedia.org/wiki/File:Quark_wiki.jpg|96x96px]]
|[[File:Naphthalene-3D-balls.png|link=https://en.wikipedia.org/wiki/File:Naphthalene-3D-balls.png|96x96px]]
|[[File:1u04-argonaute.png|link=https://en.wikipedia.org/wiki/File:1u04-argonaute.png|96x96px]]
|[[File:DTI-sagittal-fibers.jpg|link=https://en.wikipedia.org/wiki/File:DTI-sagittal-fibers.jpg|96x96px]]
|-
|[[:en:Numerical_analysis|Numerical analysis]]
|[[:en:Computational_physics|Computational physics]]
|[[:en:Computational_chemistry|Computational chemistry]]
|[[:en:Bioinformatics|Bioinformatics]]
|[[:en:Computational_neuroscience|Computational neuroscience]]
|}

==== Artificial intelligence ====
{{main|Artificial intelligence}}Artificial intelligence (AI) aims to or is required to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning, and communication found in humans and animals. From its origins in [[:en:Cybernetics|cybernetics]] and in the [[:en:History_of_artificial_intelligence|Dartmouth Conference]] (1956), artificial intelligence research has been necessarily cross-disciplinary, drawing on areas of expertise such as [[:en:Applied_mathematics|applied mathematics]], [[:en:Mathematical_logic|symbolic logic]], [[:en:Semiotics|semiotics]], [[:en:Electrical_engineering|electrical engineering]], [[:en:Philosophy_of_mind|philosophy of mind]], [[:en:Neurophysiology|neurophysiology]], and [[:en:Social_intelligence|social intelligence]]. AI is associated in the popular mind with [[:en:Robotics|robotic development]], but the main field of practical application has been as an embedded component in areas of [[:en:Software_development|software development]], which require computational understanding. The starting point in the late 1940s was [[:en:Alan_Turing|Alan Turing]]'s question "Can computers think?", and the question remains effectively unanswered, although the [[:en:Turing_test|Turing test]] is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex real-world data.
{| cellspacing="15" style="border:1px solid #ccc; text-align:center; margin:auto;"
|[[File:Nicolas_P._Rougier's_rendering_of_the_human_brain.png|link=https://en.wikipedia.org/wiki/File:Nicolas_P._Rougier's_rendering_of_the_human_brain.png|96x96px]]
|[[File:Human_eye,_rendered_from_Eye.png|link=https://en.wikipedia.org/wiki/File:Human_eye,_rendered_from_Eye.png|96x96px]]
|[[File:Corner.png|link=https://en.wikipedia.org/wiki/File:Corner.png|96x96px]]
|-
|[[:en:Machine_learning|Machine learning]]
|[[:en:Computer_vision|Computer vision]]
|[[:en:Image_processing|Image processing]]
|-
|[[File:KnnClassification.svg|link=https://en.wikipedia.org/wiki/File:KnnClassification.svg|96x96px]]
|[[File:Julia_iteration_data.png|link=https://en.wikipedia.org/wiki/File:Julia_iteration_data.png|96x96px]]
|[[File:Sky.png|link=https://en.wikipedia.org/wiki/File:Sky.png|96x96px]]
|-
|[[:en:Pattern_recognition|Pattern recognition]]
|[[:en:Data_mining|Data mining]]
|[[:en:Evolutionary_computation|Evolutionary computation]]
|-
|[[File:Neuron.svg|link=https://en.wikipedia.org/wiki/File:Neuron.svg|96x96px]]
|[[File:English.png|link=https://en.wikipedia.org/wiki/File:English.png|96x96px]]
|[[File:HONDA_ASIMO.jpg|link=https://en.wikipedia.org/wiki/File:HONDA_ASIMO.jpg|85x85px]]
|-
|[[:en:Knowledge_representation_and_reasoning|Knowledge representation and reasoning]]
|[[:en:Natural_language_processing|Natural language processing]]
|[[:en:Robotics|Robotics]]
|}

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

=== วิทยาการคำนวณ ===
'''วิทยาการคำนวณ''' (Computational Science) เป็นศาสตร์ด้านวิทยาการคอมพิวเตอร์ผสมผสานกับการนำ[[คณิตศาสตร์]]ไปใช้จำลองและแก้ปัญหาอย่างมีประสิทธิภาพ การคำนวณที่แม่นยำและรวดเร็วทำให้สามารถนำผลลัพธ์ไปใช้ประโยชน์ได้ทันการในการพัฒนาเศรษฐกิจ สังคม และสิ่งแวดล้อมที่ต้องการเทคโนโลยีขั้นสูง


== สาขาที่เกี่ยวข้อง ==
== สาขาที่เกี่ยวข้อง ==
บรรทัด 232: บรรทัด 386:
** โครงสร้างแบบ [[ทีซีพี/ไอพี]] (TCP/IP Model)
** โครงสร้างแบบ [[ทีซีพี/ไอพี]] (TCP/IP Model)
**[[โลกไซเบอร์]] (Cyberworlds)
**[[โลกไซเบอร์]] (Cyberworlds)
=== วิทยาการคำนวณ ===
'''วิทยาการคำนวณ''' (Computational Science) เป็นศาสตร์ด้านวิทยาการคอมพิวเตอร์ผสมผสานกับการนำ[[คณิตศาสตร์]]ไปใช้จำลองและแก้ปัญหาอย่างมีประสิทธิภาพ การคำนวณที่แม่นยำและรวดเร็วทำให้สามารถนำผลลัพธ์ไปใช้ประโยชน์ได้ทันการในการพัฒนาเศรษฐกิจ สังคม และสิ่งแวดล้อมที่ต้องการเทคโนโลยีขั้นสูง

== รางวัลทางด้านคอมพิวเตอร์ ==
== รางวัลทางด้านคอมพิวเตอร์ ==
*[[รางวัลทัวริง]] (Turing Award) รางวัลที่ได้รับการยกย่องสูงสุดในวงการวิทยาการคอมพิวเตอร์
*[[รางวัลทัวริง]] (Turing Award) รางวัลที่ได้รับการยกย่องสูงสุดในวงการวิทยาการคอมพิวเตอร์

รุ่นแก้ไขเมื่อ 23:33, 13 สิงหาคม 2563

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

วิทยาการคอมพิวเตอร์ หรือ วิทยาศาสตร์คอมพิวเตอร์ (อังกฤษ: 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" แต่เดิมในภาษาไทยเรียกทับศัพท์ว่า "คอมพิวเตอร์ไซแอนส์" [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)

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

Data structures and algorithms are the studies of commonly used computational methods and their computational efficiency.

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

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 methods

Formal methods are a particular kind of mathematically based technique for the specification, development and verification of software and hardware systems.[40] The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. They form an important theoretical underpinning for software engineering, especially where safety or security is involved. Formal methods are a useful adjunct to software testing since they help avoid errors and can also give a framework for testing. For industrial use, tool support is required. However, the high cost of using formal methods means that they are usually only used in the development of high-integrity and life-critical systems, where safety or security is of utmost importance. Formal methods are best described as the application of a fairly broad variety of theoretical computer science fundamentals, in particular logic calculi, formal languages, automata theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.

Formal verification Formal semantics Automated theorem proving

Computer systems

Computer architecture and computer engineering

Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory.[41] The field often involves disciplines of computer engineering and electrical engineering, selecting and interconnecting hardware components to create computers that meet functional, performance, and cost goals.

Digital logic Microarchitecture Multiprocessing
Ubiquitous computing Systems architecture Operating systems

Computer performance analysis

Computer performance analysis is the study of work flowing through computers with the general goals of improving throughput, controlling response time, using resources efficiently, eliminating bottlenecks, and predicting performance under anticipated peak loads.[42] Benchmarks are used to compare the performance of systems carrying different chips and/or system architectures.[43]

Concurrent, parallel and distributed systems

Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other.[44] A number of mathematical models have been developed for general concurrent computation including Petri nets, process calculi and the Parallel Random Access Machine model.[45] When multiple computers are connected in a network while using concurrency, this is known as a distributed system. Computers within that distributed system have their own private memory, and information can be exchanged to achieve common goals.[46]

Computer networks

This branch of computer science aims to manage networks between computers worldwide.

Computer security and cryptography

Computer security is a branch of computer technology with an objective of protecting information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users. Cryptography is the practice and study of hiding (encryption) and therefore deciphering (decryption) information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.

Databases

A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through database models and query languages.

Computer applications

Computer graphics and visualization

Computer graphics is the study of digital visual contents and involves the synthesis and manipulation of image data. The study is connected to many other fields in computer science, including computer vision, image processing, and computational geometry, and is heavily applied in the fields of special effects and video games.

Human–computer interaction

Research that develops theories, principles, and guidelines for user interface designers, so they can create satisfactory user experiences with desktop, laptop, and mobile devices.

Scientific computing and simulation

Main article: Computational science

Scientific computing (or computational science) is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems. A major usage of scientific computing is simulation of various processes, including computational fluid dynamics, physical, electrical, and electronic systems and circuits, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE,[47] as well as software for physical realization of new (or modified) designs. The latter includes essential design software for integrated circuits.[ต้องการอ้างอิง]

Numerical analysis Computational physics Computational chemistry Bioinformatics Computational neuroscience

Artificial intelligence

Artificial intelligence (AI) aims to or is required to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning, and communication found in humans and animals. From its origins in cybernetics and in the Dartmouth Conference (1956), artificial intelligence research has been necessarily cross-disciplinary, drawing on areas of expertise such as applied mathematics, symbolic logic, semiotics, electrical engineering, philosophy of mind, neurophysiology, and social intelligence. AI is associated in the popular mind with robotic development, but the main field of practical application has been as an embedded component in areas of software development, which require computational understanding. The starting point in the late 1940s was Alan Turing's question "Can computers think?", and the question remains effectively unanswered, although the Turing test is still used to assess computer output on the scale of human intelligence. But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex real-world data.

Machine learning Computer vision Image processing
Pattern recognition Data mining Evolutionary computation
Knowledge representation and reasoning Natural language processing Robotics

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

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

วิทยาการคำนวณ

วิทยาการคำนวณ (Computational Science) เป็นศาสตร์ด้านวิทยาการคอมพิวเตอร์ผสมผสานกับการนำคณิตศาสตร์ไปใช้จำลองและแก้ปัญหาอย่างมีประสิทธิภาพ การคำนวณที่แม่นยำและรวดเร็วทำให้สามารถนำผลลัพธ์ไปใช้ประโยชน์ได้ทันการในการพัฒนาเศรษฐกิจ สังคม และสิ่งแวดล้อมที่ต้องการเทคโนโลยีขั้นสูง

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

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

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

ผู้บุกเบิก

ดูเพิ่ม

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

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

ฮาร์ดแวร์

ซอฟต์แวร์

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

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

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

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

อ้างอิง

  1. ประวัติ และความเป็นมาของภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย
  2. "Wilhelm Schickard – Ein Computerpionier" (PDF) (ภาษาGerman).{{cite web}}: CS1 maint: unrecognized language (ลิงก์)
  3. Keates, Fiona (25 June 2012). "A Brief History of Computing". The Repository. The Royal Society.
  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.
  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. Phillip A. Laplante, 2010. Encyclopedia of Software Engineering Three-Volume Set (Print). CRC Press. p. 309. ISBN 978-1-351-24926-3.
  41. A. Thisted, Ronald (April 7, 1997). "Computer Architecture" (PDF). The University of Chicago.
  42. Wescott, Bob (2013). The Every Computer Performance Book, Chapter 3: Useful laws. CreateSpace. ISBN 978-1-4826-5775-3.
  43. Lawrence A. Tomei, 2009. Lexicon of Online and Distance Learning. R&L Education. p. 29. ISBN 978-1-60709-285-8.
  44. Jiacun Wang, 2017. Real-Time Embedded Systems. Wiley. p. 12. ISBN 978-1-119-42070-5.
  45. Gordana Dodig-Crnkovic; Raffaela Giovagnoli; 2013. Computing Nature: Turing Centenary Perspective. Springer Science & Business Media. p. 247. ISBN 978-3-642-37225-4.
  46. 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.
  47. Muhammad H. Rashid, 2016. SPICE for Power Electronics and Electric Power. CRC Press. p. 6. ISBN 978-1-4398-6047-2.

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