Lê Bá Dũng’s Blog

Tổng quan về Java: Lập trình hướng đối tượng

Bài viết này giới thiệu tổng quan về đặc điểm hướng đối tượng trong ngôn ngữ lập trình Java.
Tài liệu tham khảo:
Chapter 2, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.

———————————————————

Lập trình hướng đối tượng là cốt lõi của Java. Trên thực tế tất cả các chương trình viết bằng Java đều là hướng đối tượng chứ không phải là một tùy chọn như trong C++.

Hai mô hình lập trình
Tất cả các chương trình máy tính đều bao gồm hai thành phần: mã lệnhdữ liệu. Một vài chương trình được viết theo hướng quan tâm đến mã lệnh, nghĩa là quan tâm đến “Cái gì đang xảy ra”, và các chương trình khác có thể được viết theo hướng quan tâm đến dữ liệu, nghĩa là quan tâm đến “Cái gì đang bị tác động đến”. Hai mô hình này ảnh hưởng đến cách xây dựng chương trình. Cách đầu tiên gọi là mô hình hướng thủ tục. Theo cách tiếp cận này một chương trình được xem như là một dãy là bước tuần tự. Các ngôn ngữ lập trình cấu trúc như C sử dụng mô hình này. Tuy nhiên, vấn đề đối với cách tiếp cận này là kích thước lớn và tính phức tạp của chương trình. Cách tiếp cận thứ hai được gọi là lập trình hướng đối tượng. Lập trình hướng đối tượng tổ chức một chương trình theo xoay quanh dữ liệu của nó và một tập các giao tiếp được định nghĩa tác động đến dữ liệu đó.

Sự trừu tượng hóa
Một thành phần cơ bản của lập trình hướng đối tượng là sự trừu tượng hóa. Con người quản lý tính phức tạp thông qua sự trừu tượng hóa. Ví dụ, ta không nghĩ về chiếc xe hơi như là một tập gồm hàng ngàn chi tiết riêng biệt. Ta xem nó là một đối tượng cụ thể với các đặc điểm riêng của nó. Sự trừu tượng hóa này cho phép ta sử dụng chiếc xe hơi mà không bị rối rắm bởi sự phức tạp của các phần tạo nên chiếc xe.
Một cách hữu hiệu để quản lý sự trừu tượng hóa là sử dụng sự phân lớp. Điều này cho phép ta phân tầng sự phức tạp của hệ thống, chia nhỏ thành các phần có thể quản lý được. Ví dụ, xe hơi được xem là một đối tượng. Chi tiết hơn, xe hơi bao gồm nhiều hệ thống con như: tay lái, ghế ngồi, dàn âm thanh. Giàn âm thanh bao gồm máy nghe CD, băng đĩa …

Ba yếu tố cơ bản của lập trình hướng đối tượng
Tất cả các ngôn ngữ lập trình hướng đối tượng đều cung cấp các cơ chế cho phép bạn cài đặt mô hình hướng đối tượng. Đó là tính đóng gói, tính kế thừatính đa hình.

Tính đóng gói
Đây là cơ chế kết hợp giữa mã lệnh với dữ liệu mà nó xử lý, và tránh bị ảnh hưởng bởi sự can thiệp từ bên ngoài. Tính đóng gói được xem như là một lớp vỏ bọc bảo vệ mã lệnh và dữ liệu tránh khỏi sự truy cập tùy tiện từ các mã lệnh khác. Việc truy cập được điều khiển một cách chặt chẽ thông các các thủ tục đã được định nghĩa.

Tính kế thừa
Tính kế thừa là quá trình mà một đối tượng nhận được các tính chất từ một đối tượng khác. Thông thường, mỗi đối tượng cần được định nghĩa tất cả các tính chất của nó. Tuy nhiên, bằng cách sử dụng sự kế thừa, mỗi đối tượng chỉ cần được định nghĩa các tính chất riêng biệt của nó, các tính chất chung được định nghĩa ở trong đối tượng mà nó kế thừa.

Tính đa hình
Đây là đặc điểm cho phép một hình thức giao tiếp có thể được sử dụng cho nhiều hành động có tính chất giống nhau. Việc thực thi hành động cụ thể nào đó tùy thuộc vào tình huống xảy ra. Điều này làm giảm tính phức tạp của chương trình.

Kết hợp tính đóng gói, tính kế thừa và tính đa hình
Sự kết hợp các yếu tố này tạo ra một môi trường lập trình tốt hơn so với mô hình lập trình hướng thủ tục. Tính kế thừa giúp cho việc sử dụng lại mã lệnh đã được cài đặt và kiểm tra trước đó. Tính đóng gói cho phép bạn thay đổi sự cài đặt mà không phải quan tâm nhiều đến mã lệnh, bạn chỉ cần quan tâm đến sự giao tiếp với các lớp đã có. Tính đa hình cho phép bạn viết các chương trình rõ ràng, hợp lý, và linh hoạt.

Tháng Một 30, 2007 Đăng bởi dungleba | Lập trình Java, Máy tính/Công nghệ | , , | 14 phản hồi

Sự ra đời của Java

Bài viết này giới thiệu về sự ra đời của ngôn ngữ lập trình Java.
Tài liệu tham khảo:
Chapter 1, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
—————————————————————–
Nền tảng được thiết lập cho Java
Vào cuối thập niên 80 và đầu thập niên 90, ngôn ngữ lập trình hướng đối tượng C++ được sử dụng phổ biến. Dường như các lập trình viên đã tìm được một ngôn ngữ lập trình hoàn hảo. Bởi vì C++ pha trộn tính hiệu quả cao và các yếu tố phong cách C với mô hình hướng đối tượng. Tuy nhiên, cũng như trong quá khứ, một lần nữa đã thay đổi sự phát triển của ngôn ngữ máy tính. Chỉ trong vòng vài năm, World Wide Web và Internet đã đến với số đông. Điều này chuẩn bị cho một cuộc cách mạng trong ngôn ngữ lập trình.

Sự ra đời của Java
Java được hình thành bởi James Gosling, Patrick Naughton, Chris Warth, Ed Frank, và Mike Sheridan tại Sun Microsystems năm 1991. Sau hơn 18 tháng để phát triển phiên bản đầu tiên. Ngôn ngữ này lúc đầu được gọi là “Oak” nhưng sau đó được đổi tên thành Java vào năm 1995. Ở giữa khoảng thời gian của phiên bản đầu tiên năm 1992 và thông báo công khai của Java vào năm 1995, nhiều người đã đóng góp vào sự thiết kế và tiến hóa của ngôn ngữ này.
Đáng ngạc nhiên là sự thúc đẩy ban đầu của Java không phải là Internet. Thay vào đó động cơ chính là sự cần thiết của một ngôn ngữ có nền tảng độc lập (hay là kiến trúc trung lập) có thể được dùng để tạo ra phần mềm được nhúng trong nhiều thiết bị tiêu dùng điện tử khác nhau. Ta có thể đoán được, nhiều kiểu CPU được dùng như là bộ điều khiển. Vấn đề rắc rối đối với C và C++ (hay hầu hết các ngôn ngữ khác) là chúng được thiết kế để được biên dịch cho một đối tượng nhất định. Mặc dù có thể biên dịch một chương trình C++ cho bất cứ loại CPU nào, để làm điều đó đòi hỏi một trình biên dịch C++ đầy đủ cho CPU đó. Vấn đề là trình biên dịch đó rất đắt đỏ và mất nhiều thời gian để tạo ra nó. Vì vậy cần một giải pháp dễ dàng và hiệu quả hơn. Trong nỗ lực để tìm ra giải pháp đó, Gosling và các đồng nghiệp bắt đầu làm việc trên một ngôn ngữ linh động và độc lập với nền tảng, nó có thể được dùng để sinh ra mã có thể thực thi được trên các CPU khác nhau dưới các môi trường khác nhau. Sự cố gắng này cơ bản dẫn đến sự ra đời của Java.
Nhiều đặc điểm của Java bắt nguồn từ C và C++. Những người thiết kế Java biết rằng sử dụng cú pháp tương tự C sử dụng đặc trưng hướng đối tượng của C++ sẽ làm cho ngôn ngữ này lôi cuốn được nhiều các lập trình viên C/C++ có kinh nghiệm. Thêm vào đó, Java chia sẻ một vài tính chất khác làm cho C và C++ thành công.
Trước hết, Java được thiết kế, thử nghiệm và cải tiến bởi thực tế của các lập trình viên. Nó là một ngôn ngữ dựa vào sự cần thiết và kinh nghiệm của những người đã nghĩ ra nó. Vì thế Java cũng là một ngôn ngữ của các lập trình viên. Thứ hai, Java có tính liên kết và logic nhất quán. Thứ ba, không kể đến hạn chế bắt buộc của môi trường Internet, Java mang đến cho lập trình viên khả năng điều khiển đầy đủ. Nếu một chương trình làm việc tốt hay tồi, chương trình đó phản ánh đúng chính nó. Java không phải là một ngôn ngữ lập trình để tập tập dượt mà là một ngôn ngữ dành cho các lập trình viên chuyên nghiệp
Bởi vì những đặc điểm tương tự giữa Java và C++, người ta có thể nghĩ đơn giản Java là phiên bản Internet của C++. Tuy nhiên, không hoàn toàn phải vậy. Java có ý nghĩa thực thực tế và nguyên lý khác. Trong khi Java chịu ảnh hưởng của C++ nhưng nó không phải là một phiên bản nâng cao của C++. Ví dụ, Java không tương thích với bất cứ phiên bản nào của C++. Dĩ nhiên, sự tương đồng với C++ có ý nghĩa là nếu bạn là lập trình viên C++, bạn sẽ cảm thấy dễ dàng khi làm việc với Java. Một điểm khác: Java không phải được thiết kế để thay thế cho C++. Java được thiết kế để giải quyết các vấn đề đang tồn tại. C++ được thiết kế để giải quyết các vấn đề dạng khác. Cả hai sẽ cùng tồn tại trong nhiều năm nữa.

Tháng Một 30, 2007 Đăng bởi dungleba | Lập trình Java | | No Comments Yet

Sự ra đời của C và C++

Bài viết này giới thiệu về sự ra đời của ngôn ngữ lập trình C và C++.
Tài liệu tham khảo:
Chapter 1, Patrick Naughton and Herbertz Schidt, “Java –2 The Complete Reference” , Fifth edition, Tata McGraw-Hill Publishing Company Limited.
—————————————————————–

Trong lịch sử ra đời của các ngôn ngữ lập trình, người ta nói rằng ngôn ngữ lập trình B đã dẫn đến ngôn ngữ lập trình C, Ngôn ngữ lập trình C tiến hóa thành ngôn ngữ lập trình C++, và Ngôn ngữ lập trình C++ thiết lập nền tảng cho ngôn ngữ lập trình Java. Hiểu được Java nghĩa là hiểu những nguyên nhân dẫn đến sự hình thành của nó và những gì mà nó kế thừa. Java là sự pha trộn của những thành phần tốt nhất mà nó kế thừa kết hợp với những khái niệm mới được đòi hỏi bởi môi trường đặc trưng của nó.

Sự ra đời của lập trình hiện đại: Ngôn ngữ lập trình C
Ngôn ngữ lập trình C đã làm thay đổi thế giới máy tính. Sự tác động của nó nhiều khi không được đánh giá đúng mức. Nó thay đổi cách tiếp cận và nhìn nhận về lập trình một cách cơ bản. Sự ra đời của C là kết quả trực tiếp của sự cần thiết phải thay đổi về cấu trúc, hiệu quả, ngôn ngữ bậc cao thay thế cho mã máy khi viết các chương trình hệ thống. Như chúng ta biết, khi thiết kế một ngôn ngữ lập trình, sự cân nhắc luôn được xem xét giữa:
- Tính dễ dàng sử dụng và sức mạnh
- Sự an toàn và hiệu quả
- Sự chặt chẽ và khả năng mở rộng
Trước khi có C, lập trình viên thường xuyên phải chọn giữa các ngôn ngữ đã thu gọn một tập các đặc điểm. Ví dụ, mặc dù FORTRAN có thể được dùng để viết các chương trình hiệu quả cho các ứng dụng khoa học, nhưng nó không tốt lắm cho viết mã hệ thống. Trong khi BASIC dễ dàng cho người học thì nó lại không đủ mạnh và thiếu các cấu trúc cho các chương trình lớn. Ngôn ngữ Assembly có thể được dùng để viết các chương trình hiệu quả cao nhất nhưng không dễ dàng để sử dụng cũng như gỡ rối rất khó khăn.
Một vấn đề khác là các ngôn ngữ lập trình như BASIC, COBOL, và FORTRAN không được thiết kế dựa trên các yếu tố cấu trúc. Chúng dựa trên lệnh GOTO để điều khiển chương trình. Vì vậy mà các chương trình được viết bởi các ngôn ngữ này hướng tới việc sinh ra mã spagheti – một khối lộn xộn các lệnh nhảy và rẽ nhánh làm cho chương trình không thể hiểu được. Trong khi ngôn ngữ như Pascal là ngôn ngữ cấu trúc, nó không được thiết kế để đạt hiệu quả cao, và thiếu các đặc điểm cần thiết để ứng dụng cho những chương trình lớn. Vì thế, trước khi có ngôn ngữ C, không có ngôn ngữ nào có thể dung hòa được sự xung đột đã tồn tại trước đó.
C được phát minh và được cài đặt đầu tiên bởi Dennis Ritchie trên một máy DEC PDP-11 sử dụng hệ điều hành UNIX. C là kết quả của quá trình phát triển từ một ngôn ngữ trước đó được gọi là BCPL, phát triển bởi Martin Richards. BCPL chịu ảnh hưởng của một ngôn ngữ lập trình gọi là B, phát minh bởi Ken Thompson, đã dẫn đến sự ra đời của C và những năm 70. Trong nhiều năm, chuẩn không chính thức C được hỗ trợ bởi hệ điều hành UNIX và được mô tả trong cuốn “The C Programming Language” của Brian Kerninghan và Dennis Ritchie. C trở thành chuẩn phổ biến vào tháng Mười hai năm 1989, khi tổ chức ANSI công nhận.
Sự ra đời của C đã đánh dấu một thời kỳ mới của ngôn ngữ máy tính. Nó đã giải quyết được các xung đột tồn tại trong các ngôn ngữ trước đó. Kết quả là sự mạnh mẽ, hiệu quả và ngôn ngữ cấu trúc dễ học. Nó cũng là một ngôn ngữ của lập trình viên. Trước đó, các ngôn ngữ lập trình thường được thiết kế như là bài tập có tính chất học thuật nhưng C thì khác. Nó được thiết kế và cài đặt bởi thực tế, bởi các lập trình viên, phản ánh cách họ tiếp cận với công việc lập trình. Các đặc điểm của nó được trau chuốt, kiểm tra, và cân nhắc bởi chính những người sử dụng ngôn ngữ. Kết quả là một ngôn ngữ được các lập trình viên ưa thích.

Sự cần thiết của C++
Trong suốt thập niên 70 và 80, C trở thành ngôn ngữ lập trình nổi trội, và nó vẫn còn được sử dụng cho đến ngày nay. C là một ngôn ngữ thành công và hữu ích, vậy tại sao chúng ta phải cần đển một ngôn ngữ mới. Câu trả lời là tính phức tạp của chương trình.
Trong lịch sử của lập trình, sự gia tăng tính phức tạp của các chương trình đã dẫn đến yêu cầu cần có một cách tốt hơn để quản lý nó. C++ đáp ứng sự cần thiết đó. Để hiểu rõ hơn tại sao quản lý tính phức tạp của chương trình là cơ sở cho sự ra đời của C++, ta xem những vấn đề sau:
Khi máy tính mới được phát minh, lập trình được thực hiện bởi việc đưa vào các chỉ dẫn máy nhị phân bằng cách sử dụng các front panel. Cách tiếp cận này làm việc với các chương trình nhỏ vài trăm chỉ dẫn. Sau đó, ngôn ngữ Assembly được phát minh, các lập trình viên có thể làm việc với chương trình lớn hơn, phức tạp hơn bằng cách sử dụng các biểu diễn ký hiệu của các chỉ dẫn máy. Tiếp tục, ngôn ngữ cấp cao được giới thiệu nhằm cung cấp cho lập trình viên các công cụ có thể quản lý được tính phức tạp của chương trình.
Ngôn ngữ phổ biến đầu tiên là FORTRAN. Trong khi FORTRAN là sự đột phá đầu tiên, nó không phải là ngôn ngữ dễ hiểu và dễ sử dụng. Những năm 60 đánh dấu sự ra đời của ngôn ngữ lập trình có cấu trúc. Sử dụng ngôn ngữ lập trình có cấu trúc cho phép lập trình viên viết các chương trình có tính phức tạp vừa phải một cách dễ dàng. Tuy nhiên, khi kích thước của dự án (project) đến một mức nào đó, tính phức tạp của nó vượt ra khỏi tầm kiểm soát của lập trình viên. Đầu những năm 80, nhiều dự án được tiếp cận theo cấu trúc đã vượt qua giới hạn của nó. Để giải quyết vấn đề này, một cách thức lập trình mới ra đời, được gọi là lập trình hướng đối tượng (OOP – Object Oriented Programming). Lập trình hướng đối tượng là phương thức lập trình giúp cho việc tổ chức các chương trình phức tạp thông qua sự kế thừa, sự gói gọn và đa dạng.
Cuối cùng, mặc dù C là một trong những ngôn ngữ lập trình vĩ đại của thế giới, nó có giới hạn về khả năng quản lý độ phức tạp. Khi một chương trình nhiều hơn từ 25.000 đến 100.000 dòng lệnh, nó trở nên quá khó khăn để hiểu được tổng thể. C++ cho phép vượt qua giới hạn này, giúp cho lập trình viên hiểu và quản lý được các chương trình lớn hơn.
C++ được phát minh bởi Bjarne Stroustrup vào năm 1979 khi đang làm cho Bell Laboratories. Stroustrup mới đầu gọi ngôn ngữ mới là “C with Classes”. Tuy nhiên, vào năm 1983, tên của nó được đổi thành C++. Ngôn ngữ C++ mở rộng C bằng cách thêm vào các đặc điểm hướng đối tượng. Bởi vì C++ được xây dựng dựa trên cở sở của C nên nó bao gồm tất cả các đặc điểm của C, tính chất và lợi ích mang lại. Đây là nguyên nhân cốt yếu làm nên sự thành công của ngôn ngữ C++. Sự phát minh ra C++ không phải là tạo ra một ngôn ngữ lập trình hoàn toàn mới mà nó được nâng cấp từ một ngôn ngữ đã thành công trước đó.

Tháng Một 29, 2007 Đăng bởi dungleba | Lập trình Java | | No Comments Yet

Làm thế nào để viết tốt một luận văn

Prof. John W. Chinneck
Dept. of Systems and Computer Engineering
Carleton University
Ottawa, Canada
Email: chinneck at sce dot carleton dot ca

Latest Revision: September 29, 1999
(original document dates to 1988, and undergoes periodic minor revisions)

Home for this document is: http://www.sce.carleton.ca/faculty/chinneck/thesis.html

Được dịch ra tiếng Việt bởi Lê Bá Dũng (dungleba@gmail.com). Bản dịch này có thể còn nhiều thiếu sót. Nếu bạn có thể bổ sung tốt hơn, xin vui lòng gửi bản dịch của bạn đến tác giả để cập nhật lại.
Xem thêm tại http://www.sce.carleton.ca/faculty/chinneck/thesis/translations.html

Giới thiệu
Luận văn là kết quả chính của một quá trình học tập. Tài liệu này mô tả làm thế nào để viết tốt một luận văn. Để làm được điều đó, bạn phải hiểu rõ cấp độ kiến thức mà mình đang nghiên cứu. Ngoài ra, tài liệu này sẽ có ích ngay từ khi bạn bắt đầu quá trình học cũng như là sau này, khi bạn bắt đầu viết luận văn.

Nghiên cứu ở bậc sau đại học là gì?
Điểm khác biệt của nghiên cứu ở bậc sau đại học là sự đóng góp cơ bản vào tri thức nhân loại. Luận văn là một tài liệu chính thức với mục đích duy nhất là chỉ ra rằng bạn đã có đóng góp đó. Chứ không phải để chứng tỏ rằng bạn đã làm những việc mà thường không mang lại kết quả như mong muốn.
Vì vậy, luận văn của bạn phải chỉ ra được hai điểm quan trọng sau:
• Bạn phải xác định được một vấn đề hoặc câu hỏi đáng quan tâm mà chưa có lời giải trước đó.
• Bạn đã giải quyết hay tìm ra câu trả lời cho câu hỏi đó.

Thông thường sự đóng góp của bạn vào tri thức nằm trong giải pháp hay câu trả lời của bạn.

Luận văn sau đại học là gì?
Bởi vì mục đích của luận văn là chứng tỏ rằng bạn có sự đóng góp cơ bản và có ích vào tri thức nhân loại, người đánh giá sẽ đọc luận văn của bạn và tìm câu trả lời cho những câu hỏi sau:
• Vấn đề mà sinh viên này đang nghiên cứu là gì?
• Nó có phải là một vấn đề đáng quan tâm không? (Nó đã được giải quyết trước đó chưa, có mang lại lợi ích gì không?)
• Sinh viên có thuyết phục được rằng giải pháp hiện tại là chưa thỏa đáng không?
• Sinh viên có sự đóng góp thích đáng vào tri thức nhân loại không?

Để làm được những điều này, bạn phải nắm được một cách đầy đủ các tài liệu hiện có về vấn đề đó và những gì liên quan. Sau đó, căn cứ trực tiếp trên những tài liệu này, bạn phải chứng minh được vấn đề của bạn là:
a) Chưa có câu trả lời trước đó.
b) Nếu có thì câu trả lời chưa thỏa đáng. Hãy mô tả làm thế nào để giải quyết vấn đề đó.

Nếu luận văn của bạn không đưa ra được câu trả lời thỏa đáng với những câu hỏi trên, bạn gần như sẽ thất bại. Vì lý do này, một khung đề cương luận văn chung được đưa ra dưới đây nhằm trả lời những câu hỏi đó. Khung đề cương chung này có thể được sử dụng cho bất kỳ luận văn nào. Bạn cũng có thể tổ chức luận văn theo một kiểu khác, nhưng các thành phần chính yếu là như nhau.
Luôn nhớ rằng luận văn là một tài liệu chính thức: tất cả các mục phải được đặt ở vị trí thích hợp và không có sự lặp lại của cùng một nội dung ở những nơi khác nhau.

Một khung đề cương luận văn chung
1. Giới thiệu
Phần này giới thiệu tổng quan về luận văn của bạn. Nó không chỉ là mô tả các nội dung trong mỗi phần của luận văn. Tóm tắt vấn đề một cách ngắn gọn (bạn sẽ xem xét chi tiết vấn đề ở phần sau), một vài lý do tại sao nó là vấn đề đáng quan tâm, và có lẽ mang đến cái nhìn khái quát về kết quả chính của bạn.
2. Thông tin cơ bản (có thể có hoặc không)
Cũng cần có một phần ngắn gọn mang đến thông tin cơ bản, đặc biệt nếu công việc của bạn liên quan đến hai hay nhiều lĩnh vực truyền thống. Điều đó có nghĩa là người đọc luận văn của bạn có thể không có chút kinh nghiệp nào với một vài tài liệu cần thiết kèm theo luận văn của bạn, vì thế bạn cần mô tả nó với họ. Bạn cũng có thể đặt một tiêu đề khác tốt hơn so với tiêu đề đưa ra ở trên.
3. Điểm qua tình hình hiện tại
Ở phần này bạn điểm qua tình hình hiện tại có liên quan đến luận văn của bạn. Bạn cũng có thể đặt tiêu đề khác đi nếu thấy tốt hơn. Ý nghĩa ở đây là giới thiệu những sự hiểu biết chính đã có cho đến thời điểm hiện tại, nhưng không xen vào đó ý kiến riêng của bạn.
Bạn tổ chức phần này theo nội dung chứ không phải theo từng tác giả hoặc nhà xuất bản.
4. Trình bày vấn đề cần nghiên cứu
Phần này có ba nội dung chính sau:
1. Mô tả ngắn gọn vấn đề mà luận văn của bạn giải quyết.
2. Chứng minh rằng câu hỏi đặt ra chưa có câu trả lời thỏa đáng trước đó, bằng cách tham khảo đến phần 3 ở trên.
3. Thảo luận tại sao chúng ta cần bỏ công sức ra để tìm câu trả lời cho vấn đề này.

5. Mô tả bạn sẽ giải quyết vấn đề như thế nào
Phần này của luận văn có tính chất tự do hơn. Nó có thể có một hoặc vài phần nhỏ trong đó. Nhưng tất cả đều có chung một mục đích: thuyết phục người đánh giá rằng bạn đã giải quyết được vấn đề. Vì thế, chỉ ra những gì bạn đã làm có liên quan đến giải quyết vấn đề đó: nếu không có tính khả thi hoặc bị bế tắc thì không kèm theo vào đây trừ trường hợp đặc biệt.
6. Phần kết luận
Thông thường bao gồm ba nội dung, mỗi cái đặt trong một phần nhỏ riêng biệt:
1. Kết luận
2. Tóm tắt sự đóng góp của bạn
3. Hướng phát triển trong tương lai

Phần kết luận không phải là bản tóm tắt lan man của luận văn: đó là sự trình bày ngắn gọn súc tích những gì đạt được. Nó giúp cho việc tổ chức những nội dung này thành các đoạn được đánh số ngắn, theo thứ tự quan trọng giảm dần. Tất cả các kết luận nên liên quan trực tiếp đến vấn đề nghiên cứu được đưa ra trong phần 4. Ví dụ:
1. Vấn đề được đưa ra trong phần 4 đã được giải quyết như trình bày trong phần ? đến phần ??, phát triển được một thuật toán có khả năng giải quyết vấn đề Zylon với phạm vi lớn trong khoảng thời gian có thể chấp nhận.
2. Cơ chế chủ yếu cần thiết trong sự cải tiến thuật toán Zylon là cơ chế Grooty.
3. …
Bản tóm tắt sự đóng góp sẽ được người đánh giá quan tâm rất nhiều. Ở đây bạn liệt kê danh sách những sự đóng góp vào tri thức mới mà luận văn đạt được. Dĩ nhiên, bản thân luận văn phải chứng minh các khẳng định ở đây. Có thể sẽ có trùng lặp với những kết luận nhưng không sao. Tốt nhất là trình bày các đọan có đánh số ngắn gọn sắp xếp theo mức độ quan trọng giảm dần. Ví dụ:
1. Phát triển một thuật toán nhanh hơn nhiều cho vấn đề Zylon với phạm vi lớn.
2. Chứng tỏ lần đầu tiên sử dụng cơ chế Grooty cho sự tính toán Zylon.
3. …
Phần trình bày về hướng nghiên cứu trong tương lai được kèm theo, vì thế những người nghiên cứu vấn đề này trong tương lai có thể sử dụng kết quả mà bạn đã làm được. Bạn cũng nên đánh số các đoạn văn ngắn gọn.
7. Những tài liệu tham khảo
Danh sách những tài liệu tham khảo có liên quan mật thiết với đánh giá tình hiện hiện tại ở phần 3. Hầu hết những người đánh giá sẽ lướt qua danh sách tham khảo của bạn để tìm những công việc quan trọng trọng lĩnh vực, vì thế hãy chắc chắn rằng chúng được liệt kê và tham chiếu đến trong phần 3. Những người đánh giá cũng nhìn vào nhà xuất bản của các tài liệu đó nếu chúng nằm trong chủ đề của luận văn, vì thế cũng liệt kê ra. Bên cạnh đó, đọc các nhận xét của người đánh giá sẽ giúp bạn biết được kiểu câu hỏi mà họ quan tâm.
Tất cả các tài liệu tham khảo phải được tham chiếu đến trong phần chính của luận văn. Lưu ý là không giống như sách lịch sử có thể kèm theo các công việc mà không được tham khảo trực tiếp. Tổ chức danh sách các tài liệu tham khảo theo thứ tự Alphabet của tên tác giả hoặc theo thứ tự trích dẫn của luận văn.
8. Phụ lục
Phục là những tài liệu mà nếu đưa vào trong luận văn sẽ làm rối rắm nội dung muốn thể hiện, nhưng lại rất quan trọng để giải thích cho kết quả của luận văn. Thông thường phụ lục là những tài liệu ở mức rất chi tiết đối với các nội dung trong phần chính của luận văn, nên có để người đánh giá xem xét và thuyết phục họ một cách đầy đủ. Ví dụ như danh sách các chương trình hoặc bảng biểu phức tạp, các công thức toán học dài…
Ghi chú
Phần 3 và 4 chỉ ra rằng bạn đã chọn được một vấn đề tốt, và phần 5 chỉ ra rằng bạn đã giải quyết được nó. Phần 1 và phần 2 dẫn dắt người đọc vào vấn đề, và phần 6 nêu bật tri thức chính được rút ra từ toàn bộ luận văn.
Lưu ý là tất cả những gì người khác đã nghiên cứu khác biệt với những gì bạn làm được. Điều này rất quan trọng đối với người kiểm tra. Phần 4, diễn giải vấn đề, là một nội dung khác với những phần còn lại. Vì vậy nó được đặt ở giữa của luận văn.

Bắt đầu
Cách tốt nhất để bắt đầu luận văn của bạn là chuẩn bị một phác thảo tổng quát. Bạn bắt đầu làm bảng mục lục, liệt kê các phần mà bạn dự định đưa vào. Với mỗi phần, viết một đoạn mô tả ngắn gọn về nội dung của nó. Phần phác thảo này khoảng từ 2 đến 5 trang. Bây giờ bạn và người hướng dẫn nên xem lại một cách cẩn thận bản phác thảo này: có chi tiết nào không cần thiết không (ví dụ những chi tiết không liên quan trực tiếp)? Nếu có thì bỏ đi. Có chi tiết nào còn thiếu không. Nếu có thì thêm vào. Sẽ đỡ tốn công và hiệu quả hơn nếu làm việc này từ sớm hơn là sau khi đã hoàn thành nhiều công việc mà lại phải bỏ đi.

Mất bao lâu để viết một luận văn?
Mất nhiều thời gian hơn so với bạn nghĩ. Thậm chí là sau khi đã nghiên cứu, xây dựng mô hình, và tính toán xong. Sẽ rất đúng đắn nếu dành ít nhất một khoảng thời gian đủ để viết luận văn của bạn. Nó không phải là việc ngồi gõ văn bản chiếm nhiều thời gian mà việc viết luận văn của bạn đòi hỏi một sự tổ chức đầy đủ các luận cứ và kết quả của bạn.
Đây cũng có thể là lần đầu người hướng dẫn của bạn được xem sự diễn đạt chính thức của các khái niệm mà trước đó nó chỉ được chấp nhận theo các thức không chính thức. Sẽ mất nhiều thời gian để sửa lại những điều này. Những sinh viên mà tiếng Anh không phải là tiếng mẹ đẻ sẽ gặp khó khăn để hiểu được những ý đó, vì thế cần được xem lại nhiều lần. Và thực tế là người hướng dẫn không phải lúc nào cũng xem và trả lại bản thảo nhanh.
Cuối cùng: hãy dành cho bạn đủ thời gian cần thiết. Một công việc gấp gáp sẽ mang lại nhiều khó khăn.

Một số mẹo
Luôn đặt mình vào vị trí của người đánh giá. Ai là độc giả của bạn? Bạn mong chờ họ biết đến chủ để này ở mức độ nào trước khi đọc luận văn của bạn? Thông thường họ hiểu biết về các vấn đề chung, nhưng thời gian qua họ không quan tâm nhiều đến chi tiết vấn đề đó như bạn: giải thích những khái niệm mới và khó một cách rõ ràng. Đôi khi có ích nếu hình dung ra người mà bạn biết đã có một hiểu biết nhất định, và tưởng tượng rằng bạn đang giải thích ý tưởng trực tiếp với người này.
Đừng làm cho người đọc cảm thấy phức tạp quá! Điều này rất quan trọng. Bạn biết rằng một vài câu hỏi người đánh giá cần câu trả lời. Chọn một tựa đề và viết rõ ràng để cho họ thấy. Họ càng khó khi tìm hiểu vấn đề của bạn thì họ càng ít thiện cảm, và cũng gần như luận văn của bạn cần phải sửa lại nhiều.
Rất khó để có thể thỏa mãn hết các yêu cầu trên! Đọc các nội dung thật kỹ, đánh dấu những phần quan trọng theo tiêu đề thích hợp. Một lượng rất lớn thông tin trong luận văn của bạn: hãy chắc chắn là bạn mang đến cho người đọc câu trả lời cho những câu hỏi quan trọng.
Luôn nhớ rằng luận văn không phải là một câu chuyện: nó thường không theo thứ tự thời gian mà bạn sắp xếp. Nó là một tài liệu chính thức để trả lời một vài câu hỏi quan trọng.
Tránh sử dụng các câu như “rõ ràng đây là trường hợp …” hoặc “hiển nhiên, nó theo sau …”; Nó có ý rằng người đọc không hiểu và như vậy là họ trở nên bị động. Họ có thể không hiểu được bởi vì bạn giải thích không được rõ ràng.
Tránh những trường hợp phát biểu ý kiến riêng của cá nhân hoặc những phát biểu chưa được chứng minh hoặc giải pháp bạn đã từng trình bày. Bởi vì người đánh giá sẽ lấy những câu đó và hỏi bạn những câu hỏi đại loại như, “Bạn có thể chứng minh được ý kiến đó không?”.

Lưu ý đối với chương trình máy tính
Mục đích luận văn của bạn là một tài liệu về sự đóng góp cơ bản vào tri thức. Bạn nên xây dựng một vài chương trình máy tính hoặc công cụ khác nhằm chứng tỏ những luận điểm của bạn, nhưng nhớ rằng, luận văn không phải là trình bày về công cụ mà là về sự đóng góp của bạn vào tri thức. Bạn phải dùng công cụ để minh họa điều đó.

Sự khác nhau giữa luận văn Cao học và luận văn Tiến sỹ
Có nhiều điểm khác nhau giữa luận văn Thạc sỹ và luận văn Tiến sỹ. Sự khác biệt này không có khuôn mẫu nhất định, nhưng cơ bản dựa trên ý nghĩa và mức độ khám phá của luận văn, nó khác nhau ở vấn đề đã được giải quyết và sự đóng góp vào tri thức. Một luận văn Tiến sỹ cần đòi hỏi vấn đề khó hơn và do vậy cần có nhiều đóng góp hơn.
Sự đóng góp vào tri thức của luận văn Thạc sỹ có thể nằm trong bản chất sự tăng lên của tri thức hoặc là ứng dụng của kỹ thuật đã biết trong một lĩnh vực mới. Luận văn Tiến sỹ phải có sự đóng góp đáng kể và có tính mới vào tri thức.

Tháng Một 15, 2007 Đăng bởi dungleba | Máy tính/Công nghệ | , , | 3 phản hồi

Khai trương Blog

Blog là gì nhỉ?
Blog, gọi tắt của weblog (tiếng Anh, “nhật ký web”), là một dạng nhật ký trực tuyến, bùng nổ từ cuối thập niên 1990. Các blogger (người viết blog), có thể là cá nhân hoặc nhóm, đưa thông tin lên mạng với mọi chủ đề, thông thường có liên quan tới kinh nghiệm hoặc ý kiến cá nhân, chủ yếu cung cấp thông tin đề cập tới những chủ đề chọn lọc.

Tại sao lại gọi là Blog?
Thuật ngữ “weblog” được tạo ra bởi Jorn Barger vào ngày 17 tháng Mười hai năm 1997. Dạng ngắn gọn, “blog,” được tạo ra bởi Peter Merholz, người đã ngắt chữ weblog thành cụm từ we blog một cách hài hước trong phần sidebar của blog mình vào khoảng tháng Bốn hoặc tháng Năm năm 1999. Nó được nhanh chóng đón nhận như là một danh từ lẫn động từ (”blog” có ý nghĩa là soạn thảo một weblog hoặc gửi bài vào một weblog của ai đó.

Một số dịch vụ blog miễn phí:
* Blogger của Google
* Facebook
* MySpace của News Corporation
* Opera Community của Opera
* Xanga
* Yahoo 360 của Yaho
* WordPress

We Blog! Chúng ta cùng blog nhé.

Tháng Một 1, 2007 Đăng bởi dungleba | Sổ tay | | No Comments Yet