29 Jan, 2021
Khoa học máy tính và toán học
Một người lập trình viết cho tôi: “Tại sao sinh viên khoa học máy tính phải dành nhiều năm học toán và ngôn ngữ lập trình? Tôi chỉ mất vài tháng ở trường lập trình máy tính, chả cần toán học nhưng tôi vẫn có thể lập trình và có khả năng làm việc như người lập trình.”
Đáp: Xin hiểu cho rằng Khoa học máy tính không phải là lập trình máy tính mặc dầu lập trình là một phần của nó. Tất nhiên, quyết định vào đại học hay trường hướng nghề là chọn lựa cá nhân. Mọi người có thể học cách lập trình trong vài tuần và tìm việc như người lập trình hoặc vào đại học để được giáp dục về những kĩ năng tính toán nào đó.
Có khác biệt giữa đào tạo hướng nghề vài tháng và đào tạo bốn năm đại học. Có khác biệt giữa chứng chỉ lập trình và bằng cấp máy tính. Khoa học máy tính là bộ môn kĩ nghệ nơi sinh viên học tri thức và kĩ năng để xây dựng phần mềm ứng dụng và hệ thống với chủ định được xác định rõ. Khoa học máy tính là toán học nơi sinh viên học về các năng lực và giới hạn của máy tính và cách mọi người có thể dùng chúng một cách hiệu quả.
Cả đại học và trường hướng nghề máy tính đều dạy ngôn ngữ lập trình. Phần lớn các chương trình chỉ có vài trăm dòng mã điều là dễ cho một người xây dựng với đào tạo nào đó. Tuy nhiên, trong công nghiệp phần lớn phần mềm là lớn hơn rất nhiều, một số có tới vài triệu dòng mã. Mọi người không làm việc một mình mà trong tổ, vài tổ có mười tới hai mươi người, vài tổ có hàng trăm và có thể lên tới hàng nghìn người. Phát triển và hiểu phần mềm phức tạp như vậy yêu cầu tri thức đặc biệt và bộ môn toán học. Đó là lí do tại sao sinh viên dành nhiều năm phát triển tri thức này để cho khi họ đi làm, họ có thể xây dựng các phần mềm lớn hơn và phức tạp hơn.
Hệ thống phần mềm thế giới thực cũng phải có chất lượng cao và tin cậy vì một số trong chúng kiểm soát hoạt động hàng ngày của chúng ta. Phần mềm doanh nghiệp kiểm soát tài khoản của bạn, thị trường chứng khoán, giao dịch kinh doanh v.v. Phần mềm kĩ nghệ kiểm soát giao thông, sân bay, máy bay, lưới điện, xưởng máy v.v. Bất kì hỏng hóc nào trong các hệ thống này đều có thể gây ra thiệt hại nghiêm trọng và rất tốn kém để sửa chữa. Đó là lí do tại sao những sản phẩm phần mềm này yêu cầu kỉ luật nghiêm ngặt và qui trình được xác định rõ để tránh lỗi.
Toán học cung cấp logic cho các hệ thống phần mềm này. Sinh viên cần học toán học để học về logic cũng như các kĩ thuật giải quyết vấn đề để cho họ có thể phát triển phần mềm theo cách hệ thống. Lập trình máy tính lớn hơn và phức tạp hơn yêu cầu rằng người phát triển phải tuân theo trình tự chính xác các bước để thực hiện một nhiệm vụ để cho nó có thể được đo và được kiểm một cách đầy đủ và chính xác. Toán học là nền tảng của phần mềm, nó là viên gạch để xây ngôi nhà phần mềm và không có logic, không có phần mềm. Vì khái niệm này là phức tạp, không dễ hiểu, sinh viên đại học phải học về suy luận dùng các thực thể và phép toán trừu tượng.
Toán học cung cấp ngôn ngữ mạnh cho mô tả chính xác các ý tưởng trừu tượng (logic, lí thuyết tập hợp, dãy, hàm, quan hệ), và phương pháp lập luận mạnh để dùng với các ý tưởng trừu tượng (kĩ thuật chứng minh, qui nạp, giải quyết vấn đề). Chẳng hạn: Tập hợp là tuyển tập các đối tượng, như tập tất cả các sinh viên trong phòng này, hay tập các số nguyên tố nhỏ hơn 100,000. Dãy là các tuyển tập có thứ tự các đối tượng, như bảng chữ cái (từ A tới Z) và dãy con các số nguyên (0,1,4,9.16 …). Khi bạn học khoa học máy tính, bạn học việc dùng các khái niệm và phương pháp toán học để tổ chức ý nghĩ của bạn và truyền chúng vào thiết kế và mã.
Sinh viên đại học học năng lực giải quyết vấn đề, nhận ra các mức trừu tượng trong phần mềm, phần cứng. Họ cũng học kĩ năng như xây dựng và dùng hệ quản trị cơ sở dữ liệu và công cụ phần mềm phức tạp để thực hiện đa dạng nhiệm vụ tính toán. Bên cạnh kĩ năng kĩ thuật, họ cũng học kĩ năng mềm như trao đổi, viết, trình bày hay trình diễn, là thành viên tổ và tham gia vào làm việc tổ v.v..
Ngày nay và trong tương lai, phần lớn việc làm tốt đều yêu cầu giáo dục đại học. Tuy nhiên, liệu bạn vào đại học hay đào tạo hướng nghề còn tuỳ thuộc vào nhiều yếu tố như tài chính, thời gian, nhu cầu, nghề nghiệp và việc làm v.v. Đó là chọn lựa mà mọi người phải làm. Nhân tiện, khi bạn chọn lựa, bạn phải làm một số tính toán trong đầu về nó cũng là toán học nữa.
—-English version—-
Computer science and math
A programmer wrote to me: “Why do computer science students have to spend several years learning mathematics and programming language? It only took me few months at a computer programming school, without any mathematics but I still can program and be able to work as a programmer.”
Answer: Please understand that Computer Science is NOT computer programming although programming is a part of it. Of course, the decision to go to college or vocation school is a personal choice. People can learn how to program in few weeks and find a job as a programmer or go to college to be educated in some computing skills.
There is a difference between a few months vocational training and a four years college training. There is a difference between a programming certificate and a computer degree. Computer Science is an engineering discipline where students learn the knowledge and skills to build application software and systems with a well defined purpose. Computer Science is a mathematical science where students study the capabilities and limitations of computers and how people can use them effectively.
Both college and computer vocational schools teach programming languages. Most programs have only a few hundred lines of code which is easy for one person to build with some trainings. However, in the industry most software are much larger, some have several millions lines of code. People do not work alone but in team, some have ten or twenty people, some have hundred and could go as high as thousands people. Developing and understanding such complicated software requires special knowledge and mathematical discipline. That is why college students spend several years developing this special knowledge so when they go to work, they can build larger and more complex software.
Real-world software systems also must be of high quality and reliable as some of them control our daily activities. Business software controls your bank account, the stock market, business transactions etc. Engineering software controls the traffic, the airport, the airplanes, the electric grids, the factories etc. Any failure in these systems can cause serious damage and very expensive to fix. That is why these software products require strict disciplines and well defined process to avoid errors.
Mathematics provides the logic for these software systems. Students need mathematics to learn about logic as well as problem solving techniques so they can develop software in a systematic fashion. Larger and complex computer programming requires that developers to follow the exact sequence of steps to perform a task so it can be measured and reviewed completely and precisely. Mathematics is the foundation of software, it is the brick to build the house of software and without logic, there is no software. Because the concept is complex, not easy to understand, college students must learn about reasoning using abstract entities and operations.
Mathematics provides a powerful language for precisely describing abstract ideas (logic, set theory, sequences, functions, relations), and powerful reasoning methods for use with abstract ideas (proof techniques, induction, problem solving). For example: Sets are collections of objects, such as the set of all students in this room, or the set of all prime numbers less than 100,000. Sequence are ordered collections of objects, such as the alphabet (From A to Z) and subsequences of the integer (O,1,4,9.16 …). When you study computer science, you learn to use mathematics concepts and methods to organize your thought and transfer them into design and code.
College students learn problem solving ability, recognizing levels of abstraction in software, hardware systems. They also learn skills such as building and using database management systems and sophisticated software tools to implement a variety of computing tasks. Beside technical skills, they also learn some soft-skills such as communication, writing, giving presentations or demonstrations. Being a team members and participate in teamwork etc.
Today and in the future, most good jobs require college education. However, whether you go to college or vocational training depends on several factors such as financial, time, needs, career and jobs etc. It is a choice that people have to make. By the way, when you make choice, you do some calculation in your head and it is mathematics too.