Trang chủ segvn Xin chào Guest  |  Đăng ký  |  Đăng nhập
Tên đăng nhập Mật khẩu
  Tìm kiếm  
  Trang chủ  | Những mạch mới  | Mạch chưa trả lời  | Người dùng trực tuyến  | Thành viên  | Giúp đỡ


Chuyển nhanh tới »

Không có thành viên nào đang xem mạch
Trạng thái mạch: Bình thường
Tổng số bài viết trong mạch này: 1
Tạo mạch mới
Tác giả
mạch trước đó mạch này đã được xem 775 lần và có 0 bài trả lời mạch kế tiếp
Nam JohnVu
Prof.




Tham gia: 29-12-2008
Tổng số bài đã viết: 849
Trạng thái: Offline
Trả lời bài viết  Trả lời với trích dẫn 
Nghề máy tính

Đây là giới thiệu ngắn gọn cho học sinh trung học sẽ được tuyển vào CMU. Họ tới thăm CMU và dự thính lớp của tôi:

Vậy là các bạn quan tâm tới khoa học máy tính, kĩ nghệ phần mềm và quản lí hệ thông tin. Xin chào mừng các bạn tới với chương trình CMU và tới với tương lai rất tươi sáng của các bạn. Là một giáo sư và nhà chuyên nghiệp phần mềm, tôi đón chào tất cả các bạn tới lớp tôi. Trong phần giới thiệu, một số trong các bạn đã hỏi tôi về tiêu đề bài giảng hôm nay “Qui trình phần mềm và tư duy tính toán.” Nó có vẻ không quen thuộc lắm, đúng không? Qui trình là gì và tư duy tính toán là gì? Để tôi giải thích cho các bạn.

Có nhiều định nghĩa về qui trình phần mềm và bằng cách nào đó nó tạo ra nhiều lẫn lộn cho nên tôi muốn giải thích nó dưới dạng đơn giản để mọi sinh viên có thể hiểu được. Qui trình có thể được định nghĩa là tập các hoạt động và những nhiệm vụ liên quan lẫn nhau cùng thực hiện một mục đích riêng. Trong phát triển phần mềm, mục đích có thể là sản phẩm phần mềm, thiết kế hệ thống, kiến trúc hệ thống, hay bản thân chương trình phần mềm. Để hiểu qui trình, chúng ta có thể bắt đầu bằng một phương pháp đơn giản của tư duy tính toán (Bạn nghĩ như máy tính thực hiện một tập lệnh hay một chương trình).

Tư duy tính toán là kĩ năng nền tảng cho mọi người, không chỉ các nhà khoa học máy tính hay kĩ sư phần mềm. Tư duy tính toán bao gồm giải quyết vấn đề, thiết kế hệ thống, và hiểu hành vi con người, bằng việc rút ra các khái niệm nền tảng của khoa học máy tính. Tư duy tính toán bao gồm một miền các mô hình trí tuệ phản ánh việc hiểu của khoa học máy tính. Bằng việc giải quyết vấn đề, chúng ta hỏi: Giải quyết khó thế nào? Cách tốt nhất để giải nó là gì? Chúng ta giải quyết vấn đề bằng logic chứ không bằng trực giác sao? Bằng việc hỏi một số câu hỏi và "tiến dần từng bước" chúng ta đi tới lời giải chính xác. Cùng điều đó có thể được áp dụng khi chúng ta tiếp cận tới qui trình bằng việc tự hỏi mình: Mình bắt đầu thế nào? Bước đầu tiên là gì? Bước thứ hai là gì? Làm sao chúng ta biết rằng mình đang làm điều đúng? Điều này có làm việc không? Chúng ta có thể làm được điều này không? Chúng ta đo nó thế nào? Cuối cùng bằng việc hỏi các câu hỏi chúng ta có một “tập các bước” hay qui trình để giải quyết vấn đề hay hoàn thành một mục đích. Như máy tính phải xét tới tập lệnh máy, các ràng buộc tài nguyên của nó, và môi trường vận hành của nó để thực hiện một nhiệm vụ, trong qui trình phần mềm, chúng ta phải nghĩ về dự án, ngân sách, tài nguyên nhân lực và lịch biểu. Đây là nơi con người (tài nguyên), phương pháp (cách tiếp cận) và công nghệ (công cụ) trở thành nhân tố chính trong qui trình phần mềm.

Trong giải quyết vấn đề, chúng ta có thể hỏi thêm liệu một điều kiện là đủ tốt chưa, liệu chúng ta có thể dùng nó bây giờ hay sửa nó cho hiệu quả hơn. Tư duy tính toán phát biểu lại vấn đề phức tạp thành những nhiệm vụ đơn giản mà chúng ta biết cách giải quyết, có lẽ bằng qui nạp, biến đổi, hay mô phỏng. Tư duy tính toán là suy nghĩ kiểu đệ qui. Nó là xử lí song song. Nó diễn giải mã như dữ liệu và dữ liệu như mã. Nó là kiểm tra kiểu khi tổng quát hoá phân tích chiều. Nó thừa nhận cả chi phí và năng lực đánh địa chỉ gián tiếp và lời gọi thủ tục. Nó đánh giá chương trình về tính đúng đắn và tính hiệu quả và thiết kế cho đơn giản và thanh nhã. Nó dùng trừu tượng hoá và phân rã khi giải quyết với hệ thống phức tạp lớn. Nó chọn cách biểu diễn thích hợp cho vấn đề hay mô hình hoá các khía cạnh liên quan của vấn đề để làm cho vấn đề thành theo dõi được. Nó làm đơn thể hoá cái gì đó trong việc thấy trước về đa người dùng và sử dụng tương lai. Tư duy tính toán là suy nghĩ dưới dạng phòng ngừa, bảo vệ, và phục hồi từ những kịch bản tồi nhất qua dư thừa, hàm chứa hỏng, và sửa lỗi.

Để tôi nêu cho các bạn vài ví dụ đơn giản: Khi du hành, bạn cho vào hành lí của mình những thứ bạn cần cho cuộc hành trình; đó là “lấy trước và trữ” theo tư duy tính toán. Khi bạn đánh rơi khoá trong xưởng, bạn dõi lại các bước của mình để xem chỗ bạn làm mất khoá; đó là “lần ngược” theo tư duy tính toán. Khi bạn nghĩ rằng bạn nên mua sách giáo khoa hay mượn nó từ bạn bè? Đó là “thuật toán” theo tư duy tính toán. Khi bạn lái xe, bạn tự hỏi mình phải đi hướng nào, rẽ trái hay phải. Đó là “mô hình hiệu năng cho hệ thống đa nguồn phục vụ” theo tư duy tính toán. Bạn đã bao giờ hỏi tại sao điện thoại của bạn vẫn làm việc khi mất nguồn không? Đó là “độc lập hỏng hóc và dư thừa trong thiết kế” của tư duy tính toán. Đừng nghĩ khoa học máy tính là khó. Đừng nghĩ kĩ nghệ phần mềm là gay go. Nó không khó như bạn nghĩ đâu. Thực tế lập trình máy tính chỉ là phản chiếu cách nghĩ của bạn. Tư duy tính toán đã ăn sâu trong cuộc sống mọi người khi thuật ngữ như “thuật toán” và “tiền điều kiện” là một phần của từ vựng mọi người. Khi tôi còn là sinh viên, quãng bốn mươi năm trước, tôi chưa bao giờ thấy máy tính cả. Mọi điều tôi biết là máy đục lỗ bìa nơi chúng ta gõ chương trình và trao nó cẩn thận cho thao tác viên máy tính để họ chạy chương trình cho chúng ta. Các thuật ngữ như CPU, bộ nhớ, đệm ẩn (Cache), và ổ băng từ chẳng có nghĩa gì với tôi bởi vì tôi đã không biết chúng là gì. Với tôi máy tính là thứ rất kì bí. Ngày nay gần như mọi người đều biết máy tính là gì; sinh viên đem laptop tới trường và dùng chúng cho nhiều mục đích, nhiều hơn chỉ lập trình. Một số người có thể tháo máy tính ra rồi lắp lại chẳng khó khăn gì. Phần cứng không còn là điều bí ẩn nữa. Nhưng phần mềm thì sao? Phần mềm vẫn là thứ mới mà chúng ta không thể sờ được, không thể cảm được cho nên nó dường như phức tạp thế, đúng không? Thực tế điều bạn nghĩ trong đầu mình đã là "phần mềm" rồi trước khi bạn tuân theo một tập các qui trình để đặt nó lên giấy hay bàn phím máy tính. Cho nên qui trình thực tế là tập các hoạt động mà bạn biến đổi tư duy tính toán của mình thành chương trình, thành thiết kế, thành kiến trúc và thành sản phẩm.

Ngày nay chúng ta có thể thấy ảnh hưởng của tư duy tính toán trên nhiều miền khác. Chẳng hạn, học máy đã làm thay đổi lĩnh vực thống kê. Thống kê vẫn được dùng để phân tích vấn đề trên qui mô lớn, dưới dạng cả kích cỡ và chiều hướng dữ liệu, rất phức tạp và yêu cầu nhiều toán học. Ngày nay bộ môn thống kê đang thuê các nhà khoa học máy tính viết chương trình để phân tích những dữ liệu khổng lồ này cho họ bởi vì máy tính có thể làm việc nhanh hơn và tốt hơn nhiều người. Công nghệ sinh học là điều mới ngày nay nhưng nó thực tế dựa trên cách nhìn rằng nhiều miền trong sinh học có thể được lợi từ tư duy tính toán. Đóng góp của khoa học máy tính cho sinh học đi vượt ra ngoài khả năng tìm kiếm trong khối lượng mênh mông các dữ liệu tuần tự để tìm các hình mẫu. Niềm hi vọng là các cấu trúc dữ liệu và thuật toán của tư duy tính toán có thể biểu diễn được cấu trúc của protein theo cách làm sáng tỏ chức năng của chúng. Sinh học tính toán hay công nghệ sinh học đang làm thay đổi cách các nhà sinh học nghĩ và làm việc. Ngày nay ứng dụng của khoa học máy tính và kĩ nghệ phần mềm đã làm thay đổi mọi thứ, từ kinh tế tới kinh doanh, từ chính phủ tới không gian. Ứng dụng của tư duy tính toán trong thế giới các hạt rất nhỏ như công nghệ nano hay tính toán nano, giúp thay đổi cách các nhà hoá học nghĩ và làm việc. Ứng dụng của tư duy tính toán trong vật lí hay tính toán lượng tử cũng làm thay đổi cách các nhà vật lí suy nghĩ. Ứng dụng của tư duy tính toán vào chính phủ hay chính phủ điện tử làm cho công việc với chính phủ hiệu quả và hiệu lực hơn nhiều. Vào thời xưa, để áp dụng cái gì đó bạn phải đợi xếp hàng để xin được văn bản tài liệu của chính phủ, điền vào nó rồi lại đứng xếp hàng để đệ trình nó. Với chính phủ điện tử bạn có thể truy nhập vào website của chính phủ, tải xuống tài liệu, điền vào nó trực tuyến và đệ trình nó trực tuyến trong vài phút thay vì vài giờ. Gần như mọi lĩnh vực và mọi thứ sẽ dùng máy tính và với toàn cầu hoá, nhu cầu của mọi người có kĩ năng về máy tính đang tăng lên rất nhanh chóng. Dựa trên nghiên cứu mới nhất của chính phủ, thế giới cần 1 triệu người có kĩ năng máy tính trước năm 2010 và 5 triệu nhà khoa học máy tính trước năm 2020. Tôi nghĩ điều đó vẫn bị ước lượng thiếu bởi vì nó chỉ tính những người làm việc trong ngành công nghiệp phần mềm chứ không tính các ngành công nghiệp khác như công nghệ sinh học, tính toán lượng tử, tính toán nano, kinh doanh điện tử, chính phủ điện tử và nhiều miền khác. Tôi mạnh mẽ tin tưởng là việc có kĩ năng tính toán và tư duy tính toán là quan trọng thế cho gần như mọi việc, mọi nghề. Thế giới trong tương lai sẽ yêu cầu loại tri thức này trong mọi lĩnh vực cho nên bằng việc tới Carnegie Mellon, và học tập ở đây các bạn đang làm quyết định đúng, chọn lựa đúng, dù nó là khoa học máy tính, kĩ sư phần mềm hay quản lí hệ thông tin. Bất kì cái gì bạn quan tâm, có cái gì đó liên quan tới máy tính thì cũng đều là chọn lựa đúng và việc chọn trường đại học tốt nhất ở Mĩ là chọn lựa đúng.

Ngày nay máy tính và ứng dụng công nghệ thông tin đã là một phần của cuộc sống hàng ngày. Nó không còn là kĩ năng của nhà khoa học máy tính mà là của mọi người khác. Để thành công trong thế giới toàn cầu chúng ta phải biết máy tính bởi vì nó ở mọi nơi và mọi thứ. Nó thay đổi cách mọi người làm việc và mọi người nghĩ. Tôi mạnh mẽ tin tưởng rằng khoa học máy tính, kĩ nghệ phần mềm và quản lí hệ thông tin là nghề tốt nhất hôm nay và ngày mai.

----English version----

This is a short introduction to high school students who will be enrolled at CMU. They are visiting CMU and audit my class:

So you are interest in computer science, software engineering and managing information system. Welcome to CMU programs and to your very bright future. As a professor and a software professional, I welcome you all to my class. During the introduction, some of you asked me about the title of today lecture “Software Process and Computational thinking”. It sounds unfamiliar, is it? What are Process and computational thinking? Let me explain to you.

There are many definitions about software process and somehow it creates a lot of confusions so I would like to explain it in the simple term so every student can understand. A process can be defined as a set of activities and interrelated tasks which accomplish a particular goal. In software development, the goal could be a software product, a system design, system architecture, or a software program itself. To understand a process, we can start with a simple method of computational thinking (You think like a computer executes a set of instruction or a program).

Computational thinking is a fundamental skill for everyone, not just for computer scientists or software engineers. Computational thinking involves solving problems, designing systems, and understanding human behavior, by drawing on the concepts fundamental to computer science. Computational thinking includes a range of intellectual models that reflect the understanding of computer science. By solving problem, we ask: How difficult is it to solve? What's the best way to solve it? We solve problem by logic not by intuition? By asking a number of questions and “step by step” we come to a solution precisely. The same thing can be applied when we approach the process by asking ourselves: How do I start? What is the first step? What is the second step? How do we know that we do the right thing? Is this working? Can we do this? How do we measure it? Eventually by asking questions we have a “set of steps” or process to solve problem or accomplish a goal. As a computer that must consider the machine's instruction set, its resource constraints, and its operating environment to execute a task, in the software process, we must think about the project, the budget, the resource and the schedule. This is where people (Resource), method (approach) and technology (tools) become the main factors in the software process.

In solving problem, we might further ask whether a solution is good enough, whether we can use it now or modify it for more efficiency. Computational thinking is reformulating a complex problem into simple tasks that we know how to solve, perhaps by reduction, transformation, or simulation. Computational thinking is thinking recursively. It is parallel processing. It is interpreting code as data and data as code. It is type checking as the generalization of dimensional analysis. It is recognizing both the cost and power of indirect addressing and procedure call. It is judging a program for correctness and efficiency and a design for simplicity and elegance. It is using abstraction and decomposition when solving a large complex system. It is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable. It is modularizing something in anticipation of multiple users and future use. Computational thinking is thinking in terms of prevention, protection, and recovery from worst-case scenarios through redundancy, damage containment, and error correction.

Let me give you few simple examples: When travel, you put in your luggage the things you need for the trip; that's “pre-fetching and caching” in computational thinking. When you drop your key in the yard, you retrace your steps to see where you lost the key; that's “backtracking” in computational thinking. When you think that should you buy a textbook or borrow it from a friend? That's “algorithms” in computational thinking. When driving your car, you ask yourself which direction should you go, left or right. That's “performance modeling for multi-server systems” in computational thinking. Have you ever ask why does your telephone still work during a power outage? That's “independence of failure and redundancy in design” of computational thinking. Do not think computer science is difficult. Do not think software engineering is hard. It is not too difficult as you think. Actually computer programming is only a refection of your thinking. Computational thinking is already ingrained in everyone's lives when the terminology like “algorithm” and “precondition” are part of everyone's vocabulary. When I was a student, over forty years ago, I never saw the computer. All I know is the Punch card machine where we type our program and carefully handled it to the computer operator to run the program for us. The terms like CPU, Memory, Cache, and Tape Drive have no meaning to me because I did not know what they are. To me the computer is a very mysterious thing. Today almost everybody knows what a computer is; students bring laptops to school and using them for many purposes, more than just programming. Some can take the computer apart and put it back with no difficulty. Hardware is no longer a mysterious thing anymore. But what is about software? Software is still a new thing that we can not touch, can not feel so it seems complex, is it? Actually what you think in your mind is already “software” before you follow a set of process to put it on paper or computer key board. So process is actually a set of activities that you transform your computational thinking into program, into design, into architecture and into products.

Today we can see the influence of computational thinking on many other areas. For example, machine learning has changed the field of statistics. Statistic is being used for analyze problems on a large scale, in terms of both data size and dimension, very complex and require a lot of mathematics. Today statistics departments are hiring computer scientists to write program to analyze these huge data for them because computer can work faster and better than many people. Biotechnology is a new thing today but it is actually based on a view that many area in biology can benefit from computational thinking. Computer science's contribution to biology goes beyond the ability to search through vast amounts of sequence data looking for patterns. The hope is that data structures and algorithms of computational thinking can represent the structure of proteins in ways that elucidate their function. Computational biology or Biotechnology is changing the way biologists think and works. Today the application of computer science and software engineering already changed everything, from economy to business, from government to space. The application of computational thinking in the world of very small particles such as nanotechnology or nanocomputing, help change the way chemists think and work. The application of computational thinking in physics or quantum computing also change the way physicists think. The application of computational thinking in government or e-government makes working with government much more effective and efficient. In the old day, to apply for something you have to wait in line to obtain a government document, fill it out then standing in line again to submit it. With e-government you can access a government website, download the document, fill it on line and submit it online in few minutes rather than few hours. Almost every fields and everything will use computer and with globalization, the demand for people with the skills in computer is rising very fast. Based on the latest government studies, the world needs 1 million people with computer skills by 2010 and 5 million computer scientists by 2020. I think that is underestimated because it only show people who work in the software industry but not the other industries such as Biotechnology, Quantum Computing, Nano computing, E-business, E-government and so many other areas. I strongly believe having computing skill and computing thinking are so important that almost every jobs, every careers. The world in the future will demand this kind of knowledge in every field so by coming to Carnegie Mellon, and study here you are making the right decision, the right choice. Be it computer science, software engineer or Managing Information System. What ever your interest is, having something to do with computer is the right choice and having select the best university in the U.S is the right choice.

Today computer and the application of information technology already are part of everyday life. It is no longer the skill of computer scientists but of everyone else. To succeed in the global world we must know computer because it is everywhere and everything. It changes the way people works and people thinks. I strongly believe that computer science, software engineering and managing information system are the best careers today and tomorrow.
----------------------------------------
Prof. Vu
Carnegie Mellon University
[02:01:40 27-02-2009] Xem bản để in của bài viết    Xem thông tin cá nhân của thành viên    Gửi thông điệp cá nhân [Liên kết của bài] Thông báo bài gửi có nội dung xấu: mời bạn đăng nhập trước  Chuyển về đầu trang 
Xem bản để in  Tạo mạch mới