|  |  |
| --- | --- |
| large capital lambda | Mô tả thuật toán quicksort |
| Utah teapot representing computer graphics | Microsoft Tastenmaus mouse representing human-computer interaction |

Khoa học máy tính nghiên cứu các cơ sở lý thuyết của thông tin và tính toán, cùng với các kỹ thuật thực tiễn để thực hiện và áp dụng các cơ sở này.

**Khoa học máy tính** (tiếng Anh: *computer science*) là ngành nghiên cứu các cơ sở lý thuyết về thông tin và tính toán cùng sự thực hiện và ứng dụng của chúng trong các hệ thống máy tính. Khoa học máy tính là cách tiếp cận khoa học và thực tiễn để tính toán và các ứng dụng của nó và nghiên cứu có hệ thống về tính khả thi, cấu trúc, biểu hiện và cơ giới hóa các thủ tục (hoặc các thuật toán) cơ bản làm cơ sở cho việc thu thập, đại diện, xử lý, lưu trữ, truyền thông và truy cập thông tin. Một định nghĩa thay thế, gọn gàng hơn về khoa học máy tính là nghiên cứu về các quy trình thuật toán tự động hóa mà có thể nhân rộng trên quy mô lớn. Một nhà khoa học máy tính là chuyên gia về lý thuyết tính toán và thiết kế các hệ thống tính toán.

Khoa học máy tính gồm nhiều ngành hẹp; một số ngành tập trung vào các ứng dụng thực tiễn cụ thể chẳng hạn như đồ họa máy tính, trong khi một số ngành khác lại tập trung nghiên cứu đến tính chất cơ bản của các bài toán tính toán như lý thuyết độ phức tạp tính toán). Ngoài ra còn có những ngành khác nghiên cứu các vấn đề trong việc thực thi các phương pháp tính toán. Ví dụ, ngành lý thuyết ngôn ngữ lập trình nghiên cứu những phương thức mô tả cách tính toán khác nhau, trong khi ngành lập trình nghiên cứu cách sử dụng các ngôn ngữ lập trình và các hệ thống phức tạp, và ngành tương tác người-máy tập trung vào những thách thức trong việc làm cho máy tính và công việc tính toán hữu ích, và dễ sử dụng đối với mọi người dùng.

Lịch sử
-------

Bài chi tiết: Lịch sử khoa học máy tính
Lịch sử của khoa học máy tính đã bắt đầu từ nhiều năm trước phát minh ra máy tính hiện đại. Các máy móc dành cho việc tính toán các bài toán số học đã tồn tại từ thời cổ đại, chẳng hạn như bàn tính. Hơn nữa, các thuật toán để thực hiện tính toán đã có kể từ thời cổ đại, ngay cả trước khi phát triển các thiết bị tính toán phức tạp.

Wilhelm Schickard đã thiết kế và hoàn thành chiếc máy tính cơ học đầu tiên năm 1623. Năm 1673, Gottfried Leibniz trình diễn một máy tính cơ học số, được gọi là Stepped Reckoner. Ông có thể được coi là nhà khoa học máy tính đầu tiên và nhà lý thuyết thông tin mà đã ghi lại hệ thống số nhị phân.

Blaise Pascal thiết kế và xây dựng máy tính cơ học hoạt động được mang tên Pascaline, năm 1642. Charles Babbage đã thiết kế một máy tính theo hiệu (*difference engine*) vào thời Victoria, và Ada Lovelace đã viết bản hướng dẫn sử dụng máy. Nhờ công trình này, ngày nay, bà được coi là lập trình viên đầu tiên trên thế giới. Vào khoảng năm 1900, tập đoàn IBM đã bán những chiếc máy tính dùng thẻ đục lỗ. Tuy nhiên, tất cả những chiếc máy này đều chỉ thực hiện một nhiệm vụ đơn, hoặc cùng lắm là một tập nhỏ các nhiệm vụ.

Trước năm 1920, công việc tính toán được thực hiện chủ yếu bởi những nhân viên chuyên nghiệp. Những nhà nghiên cứu đầu tiên về ngành mà sau này được gọi là khoa học máy tính, chẳng hạn Kurt Gödel, Alonzo Church và Alan Turing, đã quan tâm đến câu hỏi về khả năng tính toán: những gì có thể được tính toán bởi một người thủ quỹ - người chỉ đơn giản dùng giấy và bút chì để làm một danh sách các bước tính toán, cho đến khi nào xong việc mà không cần đến trí thông minh hay hiểu biết? Một phần của động cơ này là ước muốn phát triển các *máy tính* có khả năng tự động hóa các công việc tính toán thường là buồn tẻ và dễ sai của một *người tính toán*. Vấn đề then chốt là xây dựng các hệ thống tính toán phổ dụng có khả năng (về lý thuyết) thực hiện mọi nhiệm vụ tính toán có thể cần đến, và nhờ đó tổng quát hóa tất cả các máy tính chuyên biệt trước kia thành một khái niệm đơn nhất về chiếc máy tính phổ dụng.

Trong những năm 1940, khi các máy tính mới hơn và mạnh hơn được phát triển, người ta thấy rõ ràng hơn rằng máy tính có thể được sử dụng cho nhiều mục đích khác ngoài các tính toán toán học, lĩnh vực khoa học máy tính được mở rộng thành ngành nghiên cứu tính toán nói chung. Từ thập kỷ 1960, khoa học máy tính bắt đầu được thiết lập như là một ngành học riêng biệt, với sự ra đời của các khoa Khoa học máy tính đầu tiên và các chương trình đào tạo đại học chuyên ngành Khoa học máy tính. Từ khi các máy tính được sử dụng trong thực tiễn, nhiều ứng dụng của tính toán đã trở thành các lĩnh vực nghiên cứu riêng biệt.

Những thành tựu đáng kể
-----------------------

Quân đội Đức Quốc Xã sử dụng máy Enigma trong Chiến tranh thế giới thứ hai để mã hóa tin tức bí mật. Máy giải mã tầm cỡ tại Công Viên Bletchley, được xây dựng để giải mã của máy Enigma, đã đóng góp một vai trò quan trọng trong chiến thắng của quân Đồng Minh trong cuộc chiến tranh thế giới lần thứ Hai.
.
Tuy được trở thành một bộ môn giáo dục chính thức với một quãng thời gian lịch sử ngắn ngủi, khoa học máy tính đã có một số cống hiến quan trọng đối với khoa học và xã hội. Những cống hiến này bao gồm:

Ứng dụng trong ngành khoa học máy tính
* Đã định nghĩa được một cách chính thức về tính toán (*computation*) và khả năng tính toán (*computability*), đồng thời đưa ra bằng chứng rằng có những vấn đề bất khả tính toán (*computationally unsolvable*) và những vẫn đề rất khó tính toán (*intractable*).
* Đã đưa ra khái niệm về ngôn ngữ lập trình, một dụng cụ dùng để biểu đạt thông tin đã được trật tự hóa một cách chính xác trong nhiều tầng lớp trừu tượng khác nhau.

Ứng dụng bên ngoài
* Làm tiền đề cho cuộc cách mạng kỹ thuật số (*Digital Revolution*) là cái dẫn đến thời đại thông tin (*Information Age*) và internet hiện nay.
* Trong mật mã học (*cryptography*), sự phá mã của máy Enigma là một đóng góp quan trọng trong chiến thắng của quân Đồng minh trong Đại Chiến Thế giới lần thứ II.
* Tính toán khoa học (*Scientific computing*) cho phép việc nghiên cứu bộ não con người, đồ thị hóa cấu hình của GEN (*mapping the human genome*) như Dự án bản đồ gen người (*Human Genome Project*) ở mức độ uyên thâm. Những đề án tính toán phân tán như Folding@home khám phá quá trình gấp cuộn của chất đạm (*protein folding*).
* Giao dịch bằng thuật toán làm tăng hiệu quả và tính thanh khoản của thị trường tài chính bằng cách sử dụng trí tuệ nhân tạo, học máy và các kĩ thuật thống kê/giải tích số khác trên quy mô lớn.

Các lĩnh vực của khoa học máy tính
----------------------------------

### Cơ sở toán học

Lôgic toán (*Mathematical logic*)
Lôgic Bool và các phương pháp tương ứng dùng để mô hình hóa các truy vấn lôgic; Sự sử dụng các phương pháp chứng minh hình thức (*formal proof*) cùng những hạn chế của chúng.
Lý thuyết số (*Number theory*)
Lý thuyết về chứng minh và các khảo nghiệm trong việc lùng tìm những chứng minh trong giới hạn các số nguyên. Lý thuyết số được sử dụng trong mật mã học và đồng thời được dùng như một phương thức kiểm thử trong trí tuệ nhân tạo.
Lý thuyết đồ thị (*Graph theory*)
Cơ sở cho cấu trúc dữ liệu và các thuật toán tìm kiếm.
Lý thuyết kiểu (*Type Theory*)
Phân tích quy chính các kiểu dữ liệu, cùng sự sử dụng các kiểu dữ liệu nhằm giảng giải tính chất của các chương trình phần mềm - đặc biệt là tính an toàn của chương trình.
Lý thuyết phạm trù (*Category theory*)
Lý thuyết phân loại cho phép tổng quát các phương pháp toán học và các phương thức tính toán thành một ước thể.
Hình học tính toán (*Computational geometry*)
Chuyên tâm vào việc nghiên cứu các thuật toán nhằm giải quyết những vẫn đề được đề bạt trên phương diện hình học.
Giải tích số (*Numerical analysis*)
Nền tảng của các thuật toán trong toán học rời rạc, đồng thời cũng dùng để nghiên cứu những giới hạn trong các tính toán dùng số thập phân (1.0E-3), bao gồm những sai số xảy ra trong phương pháp làm tròn số (*round-off errors*).
### Lý thuyết tính toán

Bài chi tiết: Lý thuyết tính toán
Lý thuyết Ôtômat (*Automata theory*)
Các cấu trúc lôgic khác nhau có thể sử dụng để giải quyết các bài toán.
Lý thuyết khả năng tính toán (*Computability theory*)
Những gì có thể tính toán được bằng các mô hình máy tính hiện tại. Các chứng minh của Alan Turing và những người khác bày tỏ cho chúng ta biết được khả năng những gì có thể tính toán được và những gì không thể.
Lý thuyết độ phức tạp tính toán (*Computational complexity theory*)
Các giới hạn căn bản (cụ thể là thời gian và dung lượng bộ nhớ đòi hỏi) đối với các hạng loại bài toán khác nhau.
Lý thuyết tính toán lượng tử (*Quantum computing*)
Phương thức biểu hiện và chuyển hóa dữ liệu sử dụng những đặc tính của vật chất cùng cơ chế lượng tử.
### Cấu trúc dữ liệu và giải thuật

Phân tích thuật toán (*Analysis of algorithms*)
Độ phức tạp về thời gian và không gian của các thuật toán.
Thuật toán (*Algorithms*)
Các quá trình lôgic trên nguyên tắc được sử dụng cho việc tính toán và tính hiệu quả của các quá trình này.
Cấu trúc dữ liệu (*Data structures*)
Tổ chức của dữ liệu và các quy tắc thao tác dữ liệu.
### Ngôn ngữ lập trình và trình biên dịch

Trình biên dịch (*Compilers*)
Dịch toàn bộ mã nguồn của ngôn ngữ lập trình thành chương trình đích rồi sau đó mới thực hiện, thường là từ các ngôn ngữ lập trình bậc cao sang các ngôn ngữ lập trình bậc thấp, hay dịch sang mã máy. Các ngôn ngữ sử dụng trình biên dịch như Pascal, C,...
Trình thông dịch (*Interpreter*)
Là cách dịch từng lệnh một, dịch tới đâu thực hiện tới đó. Chẳng hạn ngôn ngữ LISP sử dụng trình thông dịch.
Ngôn ngữ lập trình (*Programming languages*)
Ngôn ngữ lập trình là một ngôn ngữ được thiết kế và tạo ra để viết chương trình cho máy tính. Những ngôn ngữ này còn đồng thời biểu hiện những đặc tính không giống nhau giữa các ngôn ngữ khác nhau (ví dụ, chúng thích hợp cho việc giải các bài toán thuộc dạng nào).
### Hệ thống phân tán, song song, tương tranh

Tương tranh (*Concurrency*)
Lý thuyết và thực tiễn của tính toán đồng thời; an toàn dữ liệu trong môi trường đa nhiệm hay đa luồng bất kỳ.
Tính toán phân tán (*Distributed computing*)
Tính toán sử dụng nhiều thiết bị tính toán trên một mạng để thực hiện một nhiệm vụ hoặc một mục tiêu chung.
Tính toán song song (*Parallel computing*)
Tính toán sử dụng nhiều luồng thực thi đồng thời.
### Kỹ nghệ phần mềm

Thiết kế thuật toán (*Algorithm design*)
Lấy ý tưởng từ lý thuyết thuật toán để năng động kiến tạo các giải pháp đối với những nhiệm vụ trên thực tế.
Lập trình máy tính (*Computer programming*)
Dùng ngôn ngữ lập trình để thực thi các thuật toán.
Các phương pháp hình thức (*Formal methods*)
Sử dụng toán học để miêu tả và lập luận đối với các thiết kế phần mềm.
Kỹ nghệ đảo ngược (*Reverse engineering*)
Ứng dụng phương pháp khoa học vào việc phân tích và lý giải một phần mềm tùy thích vốn có.
Kỹ nghệ phần mềm (*Software development*)
Những nguyên lý và thực hành trong việc thiết kế, phát triển và kiểm thử các chương trình, cùng những phương pháp thực hành kỹ nghệ đúng đắn.
### Kiến trúc máy tính

Kiến trúc máy tính (*Computer architecture*)
Việc thiết kế, tổ chức, tối ưu hóa và kiểm định một hệ thống máy tính, chủ yếu về CPU và tiểu hệ bộ nhớ máy tính (và hệ thống bus nối giữa chúng).
Tổ chức máy tính (*Computer organization*)
Nghiên cứu các kiến trúc máy tính trên cơ sở các mô tả mạch điện, bộ xử lý trung tâm, bọ xử lý tín hiệu số của máy tính.
Hệ điều hành
Những hệ thống dùng để quản lý các chương trình máy tính và cung cấp nền tảng cơ bản cho một hệ thống khả dụng.
### Truyền thông - Viễn thông

Xử lý âm thanh trong máy tính (*Computer audio*)
Những thuật toán và cấu trúc dữ liệu dùng để kiến tạo, thao tác, lưu trữ, và truyền thanh các bản ghi âm thanh kỹ thuật số (*digital audio*). Ngành này còn đóng vai trò quan trọng đối với các ứng dụng nhận dạng tiếng nói (*speech recognition*) nữa.
Mạng máy tính (*Computer networking*)
Các thuật toán và giao thức dành cho việc truyền thông dữ liệu một cách đáng tin cậy qua các môi trường truyền thông chuyên dụng hoặc chia sẻ khác nhau. Thường khi bao gồm cả việc sửa lỗi(*error correction*) trong truyền thông.
Mật mã học (*Cryptography*)
Áp dụng kết quả của các lý thuyết độ phức tạp tính toán, lý thuyết xác suất, và lý thuyết số để kiến tạo và phá mật mã.
### Cơ sở dữ liệu

Khai phá dữ liệu (*Data mining*)
Nghiên cứu các phương pháp sàng lọc, rút ra những thông tin cần thiết từ các nguồn dữ liệu khác nhau.
Cơ sở dữ liệu quan hệ (*Relational databases*)
Nghiên cứu các thuật toán tìm kiếm và xử lý thông tin trong các tài liệu và cơ sở dữ liệu; có quan hệ gần gũi với ngành thu thập thông tin (*information retrieval*).
### Trí tuệ nhân tạo

Trí tuệ nhân tạo (*Artificial intelligence*)
Sự nghiên cứu và thực thi các hệ thống có khả năng tự thể hiện trí thông minh hoặc tự biểu đạt những hành vi của chính bản thân mình.
Sự sống nhân tạo (*Artificial life*)
Sự nghiên cứu các sinh thể kỹ thuật số (*digital organisms*) để hiểu biết thêm về các hệ thống sinh học (*biological systems*) và quá trình tiến hóa.
Lập luận tự động (*Automated reasoning*)
Nghiên cứu các động cơ giải quyết bài toán, chẳng hạn như được sử dụng trong Prolog, các động cơ này tạo ra các bước dẫn đến một kết quả nếu cho trước một truy vấn về một sự kiện và một cơ sở dữ liệu gồm các luật (*rule database*).
Thị giác máy tính (*Computer vision*)
Các thuật toán nhận dạng các đối tượng ba chiều từ một hoặc nhiều hình ảnh hai chiều.
Học máy (*Machine learning*)
Nghiên cứu việc tự động tạo nhóm các luật và tiên đề dựa trên những dữ liệu cho trước.
Xử lý ngôn ngữ tự nhiên/Ngôn ngữ học Tính toán (*Natural language processing/Computational linguistics*)
Tự động hóa việc tiếp thu và kiến tạo ngôn ngữ loài người.
Rôbô học (*Robotics*)
Các thuật toán điều khiển hành vi của rôbô.
### Tính toán mềm

Bài chi tiết: Tính toán mềm
Một thuật ngữ tổng hợp dành cho các kỹ thuật được sử dụng để giải các bài toán cụ thể, xem bài chính.

### Đồ họa máy tính

Đồ họa máy tính (*Computer graphics*)
Những thuật toán sử dụng trong cả hai trường hợp, kiến tạo hình ảnh một cách nhân tạo mà người thường có thể xem được bằng mắt, đồng thời kết hợp và thay đổi các dữ liệu về không gian và thị giác thu được từ môi trường sống bên ngoài.
Xử lý ảnh (*Image processing*)
Dùng tính toán để lấy thông tin từ một hình ảnh.
### Tương tác người-máy

Tương tác người-máy (*Human computer interaction*)
Nghiên cứu phương pháp làm cho máy tính và sự tính toán của chúng trở nên hữu dụng, có thể tiếp cận và sử dụng bởi bất cứ ai trên thế giới là người dùng, bao gồm cả việc nghiên cứu và thiết kế giao diện người dùng.
### Tính toán khoa học

Tin sinh học (*Bioinformatics*)
Sử dụng khoa học máy tính để bảo trì, phân tích, lưu trữ dữ liệu sinh học (*biological data*) và để hỗ trợ việc giải các bài toán sinh học chẳng hạn như quá trình gấp cuộn của chất đạm (*protein folding*), dự đoán chức năng của cấu trúc chất đạm (*function prediction*), và phát sinh chủng loại (*phylogeny*).
Khoa học nhận thức (*Cognitive Science*)
Sử dụng kỹ thuật máy tính để kiến tạo các mô hình của trí tuệ con người.
Hóa học tính toán (*Computational chemistry*)
Mô hình hóa tổ chức của chất hóa học trên lý thuyết bằng tính toán, hòng xác định cấu trúc và đặc tính của chúng.
Thần kinh học tính toán (*Computational neuroscience*)
Mô hình hóa bộ não con người bằng tính toán.
Vật lý tính toán (*Computational physics*)
Sử dụng số học để mô phỏng những hệ thống lớn bất khả phân tích (*large non-analytic systems*).
Phân tích số (*Numerical analysis*) hoặc (*Numerical algorithms*)
Dùng các thuật toán để giải các đề toán của toán học, chẳng hạn như thuật toán tìm ẩn số của hàm (*Root-finding algorithm*), integration, the solution of ordinary differential equations and the approximation/evaluation of special functions.
Toán học ký hiệu
Manipulation and solution of expressions in symbolic form, also known as Đại số máy tính.

Đào tạo về khoa học máy tính
----------------------------

Một số trường đại học đào tạo khoa học máy tính như là một ngành nghiên cứu lý thuyết về tính toán và lập luận thuật toán. Các chương trình đào tạo này thường bao gồm các môn lý thuyết tính toán, phân tích thuật toán, các phương pháp hình thức, lý thuyết tương tranh, cơ sở dữ liệu, đồ họa máy tính và phân tích hệ thống cùng các môn khác. Các chương trình này thường cũng dạy cả lập trình, nhưng coi đây chỉ là một phương tiện để hỗ trợ các lĩnh vực khác của khoa học máy tính chứ không phải là một trọng tâm của nghiên cứu ở mức độ cao.

Các trường cao đẳng và đại học khác, cũng như các trường trung học và những chương trình dạy nghề có giảng dạy về khoa học máy tính, lại nhấn mạnh thực hành lập trình cao cấp thay vì lý thuyết đối với các thuật toán và tính toán trong chương trình giáo dục của họ. Những chương trình này thường có xu hướng tập trung vào những kỹ năng quan trọng cho những người đi làm trong ngành công nghiệp phần mềm. Phương diện thực hành của việc lập trình thường được gọi là kỹ nghệ phần mềm. Tuy nhiên, có rất nhiều bất đồng xung quanh ý nghĩa thật của từ "kỹ nghệ phần mềm" (*software engineering*) và về việc nó với lập trình (*programming*) có phải là một hay không.

Xem Peter J. Denning, *Great principles in computing curricula*, Technical Symposium on Computer Science Education, 2004.

Xem thêm
--------

* Tính toán
* Tin học
* Khoa học thông tin
* Danh sách các chủ đề cơ bản của khoa học máy tính
* Danh sách các hội thảo khoa học máy tính
* Danh sách các bài toán mở trong khoa học máy tính
* Danh sách các ấn bản khoa học máy tính
* Danh sách các nhà tiên phong trong khoa học máy tính
* Danh sách các chủ đề kỹ nghệ phần mềm

Tham khảo
---------

1. ↑  "WordNet Search—3.1". Wordnetweb.princeton.edu. Truy cập ngày 14 tháng 5 năm 2012.
2. ↑  Nigel Tout (2006). "Calculator Timeline". *Vintage Calculator Web Museum*. Truy cập ngày 18 tháng 9 năm 2006.
3. ↑  "A Brief History of Computing". Bản gốc lưu trữ ngày 29 tháng 6 năm 2012. Truy cập ngày 13 tháng 3 năm 2018.
4. ↑  "Science Museum - Introduction to Babbage". Bản gốc lưu trữ ngày 8 tháng 9 năm 2006. Truy cập ngày 24 tháng 9 năm 2006.
5. ↑  "IBM Punch Cards in the U.S. Army". Truy cập ngày 24 tháng 9 năm 2006.
6. ↑  Denning, P.J. (2000). "Computer science:the discipline". *Encyclopedia of Computer Science*. Liên kết ngoài trong `|title=` (trợ giúp)
7. 1 2  David Kahn, The Codebreakers, 1967, ISBN 0-684-83130-9.
8. ↑  Constable, R.L. (tháng 3 năm 2000). "Computer Science: Achievements and Challenges circa 2000" (PDF). Chú thích journal cần `|journal=` (trợ giúp)
9. ↑  H. Abelson & G.J. Sussman with J.Sussman (1996). *Structure and Interpretation of Computer Programs* (ấn bản 2). MIT Press. ISBN 0-262-01153-0. Cách mạng khoa học tính toán được gọi là một cuộc cách mạng vì nó thay đổi cách suy nghĩ của chúng ta, và thay đổi cách chúng ta biểu đạt những suy nghĩ của mình. Khái niệm căn bản trong sự thay đổi này là sự xuất hiện của cái mà chúng ta có thể đặt tên cho là "Quan niệm tri thức trình tự" (*procedural epistemology*) - tức sự nghiên cứu cấu trúc của ngôn ngữ từ góc độ "mệnh lệnh" (*imperative*), thay vì góc độc "tường thuật" (*declarative*) mà những bộ môn toán học cổ truyền khác vẫn sử dụng Chú thích có tham số trống không rõ: `|1=` (trợ giúp)Quản lý CS1: sử dụng tham số tác giả (liên kết)
10. 1 2
11. ↑  "Black box traders are on the march". The Telegraph. 26 tháng 8 năm 2006.

* Association for Computing Machinery. 1998 ACM Computing Classification System Lưu trữ 2008-08-28 tại Wayback Machine. 1998.
* IEEE Computer Society and the Association for Computing Machinery. Computing Curricula 2001: Computer Science. 15 tháng 12 năm 2001.
* Peter J. Denning. *Is computer science science?*, Communications of the ACM, tháng 4 năm 2005.

Liên kết ngoài
--------------

|  |  |
| --- | --- |
|  | Wikibooks tiếng Anh có chủ đề về
***Computer science*** |

* Open Directory Project: Computer Science
* Collection of Computer Science Bibliographies Lưu trữ 2011-06-07 tại Wayback Machine

|  |  |
| --- | --- |
|  | Wikimedia Commons có thêm hình ảnh và phương tiện truyền tải về ***Khoa học máy tính***. |

| * x
* t
* s
Những lĩnh vực chính của khoa học máy tính |
| --- |
| Các nền tảng toán học | Logic toán học **·**  Lý thuyết tập hợp **·**  Lý thuyết số **·**  Lý thuyết đồ thị **·**  Lý thuyết kiểu **·**  Lý thuyết thể loại **·**  Giải tích số **·**  Lý thuyết thông tin **·**  Đại số **·**  Nhận dạng mẫu **·**  Nhận dạng tiếng nói **·**  Toán học tổ hợp **·**  Đại số Boole **·**  Toán rời rạc |
| Lý thuyết phép tính | Độ phức tạp Kolmogorov **·**  Lý thuyết Automat **·**  Lý thuyết tính được **·**  Lý thuyết độ phức tạp tính toán **·**  Lý thuyết điện toán lượng tử |
| Các cấu trúc dữ liệu và các giải thuật | Phân tích giải thuật **·**  Thiết kế giải thuật **·**  Hình học tính toán **·**  Tối ưu hóa tổ hợp |
| Các ngôn ngữ lập trình và Các trình biên dịch | Các bộ phân tích cú pháp **·**  Các trình thông dịch **·**  Lập trình cấu trúc **·**  Lập trình thủ tục **·**  Lập trình hướng đối tượng **·**  Lập trình hướng khía cạnh **·**  Lập trình hàm **·**  Lập trình logic **·**  Lập trình máy tính **·**  Lập trình mệnh lệnh **·**  Lập trình song song **·**  Lập trình tương tranh **·**  Các mô hình lập trình **·**  Prolog **·**  Tối ưu hóa trình biên dịch |
| Tính song hành, Song song, và các hệ thống phân tán | Đa xử lý **·**  Điện toán lưới **·**  Kiểm soát song hành **·**  Hiệu năng hệ thống **·**  Tính toán phân tán |
| Công nghệ phần mềm | Phân tích yêu cầu **·**  Thiết kế phần mềm **·**  Các phương pháp hình thức **·**  Kiểm thử phần mềm **·**  Quy trình phát triển phần mềm **·**  Các phép đo phần mềm **·**  Đặc tả chương trình **·**  LISP **·**  Mẫu thiết kế **·**  Tối ưu hóa phần mềm |
| Kiến trúc hệ thống | Kiến trúc máy tính **·**  Tổ chức máy tính **·**  Các hệ điều hành **·**  Các cấu trúc điều khiển **·**  Cấu trúc bộ nhớ lưu trữ **·**  Vi mạch **·**  Thiết kế ASIC **·**  Vi lập trình **·**  Vào/ra dữ liệu **·**  VLSI design **·**  Xử lý tín hiệu số |
| Viễn thông và Mạng máy tính | Audio máy tính **·**  Chọn tuyến **·**  Cấu trúc liên kết mạng **·**  Mật mã học |
| Các cơ sở dữ liệu và Các hệ thống thông tin | Hệ quản trị cơ sở dữ liệu **·**  Cơ sở dữ liệu quan hệ **·**  SQL **·**  Các giao dịch **·**  Các chỉ số cơ sở dữ liệu **·**  Khai phá dữ liệu **·**  Biểu diễn và giao diện thông tin **·**  Các hệ thống thông tin **·**  Khôi phục dữ liệu **·**  Lưu trữ thông tin **·**  Lý thuyết thông tin **·**  Mã hóa dữ liệu **·**  Nén dữ liệu **·**  Thu thập thông tin |
| Trí tuệ nhân tạo | Lập luận tự động **·**  Ngôn ngữ học tính toán **·**  Thị giác máy tính **·**  Tính toán tiến hóa **·**  Các hệ chuyên gia  **·**  Học máy **·**  Xử lý ngôn ngữ tự nhiên **·**  Robot học |
| Đồ họa máy tính | Trực quan hóa **·**  Hoạt họa máy tính **·**  Xử lý ảnh |
| Giao diện người-máy tính | Khả năng truy cập máy tính **·**  Giao diện người dùng **·**  Điện toán mang được **·**  Điện toán khắp mọi nơi **·**  Thực tế ảo |
| Khoa học tính toán | Cuộc sống nhân tạo **·**  Tin sinh học **·**  Khoa học nhận thức **·**  Hóa học tính toán **·**  Khoa học thần kinh tính toán **·**  Vật Lý học tính toán **·**  Các giải thuật số **·**  Toán học kí hiệu |
| Chú ý: khoa học máy tính còn có thể được chia thành nhiều chủ đề hay nhiều lĩnh vực khác dựa theo Hệ thống xếp loại điện toán ACM. |

| * x
* t
* s
Chuyên ngành chính của Tin học |
| --- |
| Phần cứng •  Phần mềm |
| Công nghệ thông tin | 
* Cuộc sống nhân tạo
* Đa xử lý
* Điện toán lưới
* Đồ họa máy tính
* Hệ chuyên gia
* Hệ thống thông tin quản lý
* Hoạt họa máy tính
* Khoa học nhận thức
* Khoa học tính toán
* Khoa học thần kinh tính toán
* Khoa học thông tin
* Kiểm soát song hành
* Kiến trúc hệ thống
* Lập luận tự động
* Ngôn ngữ hình thức
* Ngôn ngữ học tính toán
* Người máy
* Robot học
* Thực tế ảo
* Tính toán song song
* Tối ưu hóa trình biên dịch
* Tổ chức máy tính
* Trí tuệ nhân tạo
* Từ điển học
* Tương tranh
* Vật lý học tính toán

 |
| Hệ thống thông tin | 
* An toàn thông tin
* Cơ sở dữ liệu đa phương tiện
* Cơ sở dữ liệu thông minh
* Dữ liệu lớn
* Hệ cơ sở tri thức
* Hệ dựa trên logic
* Hệ gợi ý
* Hệ thích nghi dựa trên ngữ cảnh
* Hệ thống hướng tác tử
* Hệ thống thông minh
* Hệ thống thông tin địa lý
* Hệ trợ giúp quyết định
* Kỹ nghệ dữ liệu
* Kỹ nghệ tri thức
* Logic mờ
* Phân tích dữ liệu
* Phân tích và thiết kế hệ thống
* Quản trị dự án
* Quản trị tri thức
* Thiết kế và quản trị dữ liệu
* Tích hợp dữ liệu
* Tính toán hiệu năng cao
* Web ngữ nghĩa
* Xử lý thông tin mờ

 |
| Khoa học máy tính | 
* Cơ sở dữ liệu phân tán
* Hệ quản trị cơ sở dữ liệu
* Hệ thống đa lõi
* Hệ thống truyền thông
* Hình học tính toán
* Hóa học tính toán
* Học máy
* Khai phá dữ liệu
* Lập trình song song
* Lý thuyết mã hóa
* Lý thuyết tính toán
* Ngôn ngữ và phương pháp dịch
* Nguyên lý ngôn ngữ lập trình
* Quy hoạch ràng buộc
* Sinh học tính toán (Tin sinh học)
* Thiết kế và phân tích thuật toán
* Tìm kiếm thông tin
* Tính toán khoa học
* Tính toán kí hiệu
* Tính toán phân tán
* Tính toán tiến hóa
* Tính toán tự nhiên
* Tối ưu hoá tổ hợp
* Xử lý song song

 |
| Kỹ thuật máy tính | 
* Đa phương tiện
* Định vị vệ tinh (GNSS)
* Giao diện người dùng
* Ghép nối máy tính
* Hệ nhúng
* Hệ thống thời gian thực
* Hiệu năng hệ thống
* Kiến trúc máy tính
* Lập trình đôi
* Lập trình đồ họa
* Lập trình hệ thống
* Lý thuyết nhận dạng
* Mạng nơ-ron
* Nhận dạng tiếng nói
* Phân tích tín hiệu
* Thị giác máy tính
* Thiết kế IC
* Thoại IP
* Tổng hợp giọng nói
* Tương tác người–máy tính
* Vi xử lý
* Xử lý ảnh
* Xử lý dữ liệu đa phương tiện
* Xử lý ngôn ngữ tự nhiên
* Xử lý tiếng nói
* Xử lý tín hiệu số

 |
| Kỹ nghệ phần mềm | 
* Bảo trì phần mềm
* Các phương pháp hình thức
* Chất lượng phần mềm
* Đảm bảo chất lượng phần mềm
* Đánh giá phần mềm
* Đo lường và quản trị phần mềm
* Độ tin cậy và chịu lỗi phần mềm
* Kiểm thử phần mềm
* Kiến trúc doanh nghiệp
* Kiến trúc phần mềm
* Kinh tế công nghệ phần mềm
* Kỹ nghệ hướng dịch vụ
* Lập trình linh hoạt
* Mẫu thiết kế
* Mô hình hóa phần mềm
* Phân tích hệ thống
* Phân tích thiết kế hướng đối tượng (UML)
* Phân tích yêu cầu phần mềm
* Phát triển phần mềm
* Quản lý cấu hình phần mềm
* Quản lý dự án phần mềm
* Quản lý kỹ thuật phần mềm
* Quy trình phát triển phần mềm (Vòng đời phát hành phần mềm)
* Thiết kế phần mềm
* Triển khai phần mềm
* Tối ưu hóa phần mềm

 |
| Mạng máy tính | 
* An ninh mạng
* An ninh trong giao dịch điện tử
* Đánh giá hiệu năng mạng (QoS)
* Điện toán đám mây
* Định tuyến
* Hệ phân tán
* Kỹ thuật truyền thông
* Lý thuyết thông tin
* Mạng không dây
* Mạng thế hệ mới
* Mạng thiết bị di động
* Mạng thông tin quang
* Mật mã học
* Mô phỏng mạng
* Nhận dạng
* Quản trị mạng
* Thiết bị truyền thông và mạng
* Thiết kế mạng
* Tính toán khắp nơi và di động
* Trung tâm dữ liệu
* Truyền thông di động
* Truyền thông đa phương tiện
* Truyền thông số
* Vệ tinh thông tin
* Viễn thông (Mạng viễn thông)
* Ước lượng tín hiệu và hệ thống
* Web thế hệ mới

 |
| Tin học kinh tế | 

| * x
* t
* s
Giám đốc công nghệ thông tin · Tin học kinh tế · Quản lý công nghệ thông tin |
| --- |
| Quản lý | 
* ITIL & ITSM
* Định hướng phát triển
* Phát triển nhân lực
* Quản lý bảo mật
* Quản lý chất lượng
* Quản lý công nghệ
* Quản lý dự án
* Quản lý mua sắm
* Quản lý ngân sách
* Quản lý nguồn lực
* Quản lý phát hành
* Quản lý rủi ro
* Quản lý tài sản
* Quản lý thay đổi
* Quản lý tích hợp
* Quản lý tổ chức
* Quản lý truyền thông
* Quản lý tuân thủ
* Quản lý vấn đề
* Thiết kế giải pháp
* Xây dựng chiến lược
* Xây dựng chính sách

 |
| Quản lý mạng | 
* Ảo hóa
* Mạng campus
* Mạng diện rộng
* Mạng nội bộ
* Mạng riêng ảo
* STP
* VLAN
* IVR
* VTP

 |
| Quản trị hệ thống | 

|  |  |
| --- | --- |
| Hoạt động vận hành | 
* Bảo trì thiết bị
* Bảo vệ hệ thống
* Đối phó sự cố
* Kế hoạch dự phòng

 |
| Hoạt động kỹ thuật | 
* Hỗ trợ kỹ thuật
* Kiểm soát truy cập
* Kiểm tra hệ thống
* Xác thực người dùng

 |
| Hoạt động an toàn | 
* An ninh nhân sự
* An ninh hệ thống
* Nhận thức an toàn
* Rủi ro hệ thống

 |

 |
| Quản lý hệ thống | 
* Bàn dịch vụ
* Quản lý cấu hình
* Quản lý công suất
* Quản lý dịch vụ
* Quản lý hạ tầng
* Quản lý khôi phục
* Quản lý người dùng
* Quản lý sự cố
* Quản lý tính liên tục
* Quản lý tính sẵn sàng
* Tổ chức công việc
* Tổ chức hỗ trợ

 |
| Kỹ năng lãnh đạo | 
* Kỹ năng cộng tác nhóm
* Kỹ năng đàm phán
* Kỹ năng giải quyết vấn đề
* Kỹ năng giao tiếp
* Kỹ năng gọi thoại
* Kỹ năng huấn luyện
* Kỹ năng lắng nghe
* Kỹ năng phân công ủy thác
* Kỹ năng phỏng vấn tuyển dụng
* Kỹ năng quản lý thời gian
* Kỹ năng tạo động lực
* Kỹ năng tư duy
* Kỹ năng thiết kế quy trình
* Kỹ năng thuyết trình
* Kỹ năng viết tài liệu kỹ thuật

 |
| Ứng dụng | 
* Chính phủ điện tử
* Giáo dục trực tuyến
* Hoạch định tài nguyên doanh nghiệp
* Kinh doanh điện tử (Mua sắm trực tuyến  **·**  Thương mại điện tử  **·**  Tiếp thị trực tuyến)
* Kinh doanh thông minh
* Quản lý quan hệ khách hàng
* Quản lý tri thức

 |
| Các lĩnh vực liên quan | 
* Kinh tế
* Luật pháp
* Tài chính
* Kế toán
* Kinh doanh
* Tổ chức
* Xã hội
* Quản lý

 |
| Quản trị kinh doanh |

 |