Khoa học Máy tính - tại sao lại dạy?
“Lập trình không phải là thứ bạn biết. Đó là điều bạn có thể tìm ra.” Chris Pine, chuyên gia lập trình, tác giả sách và hướng dẫn. “Ở một khía cạnh nào đó, lập trình cũng giống như vẽ. Lúc đầu, bạn chỉ có một khung vẽ và vật liệu trống. Bạn cần sử dụng sự kết hợp giữa khoa học, nghệ thuật và thủ công để tìm ra cách giải quyết tất cả những điều này.” Andrew Hunt, tác giả cuốn sách bán chạy Lập trình viên thực dụng và đồng tác giả Tuyên ngôn Agile. Không khó để hiểu chúng ta đang hướng tới đâu. Để trở thành một lập trình viên thực sự giỏi, hoặc đơn giản là vượt lên trên một lập trình viên bình thường ít nhất một bước, bạn cần phải có kiến thức rộng nhất và đồng thời khá sâu về nhiều lĩnh vực khác nhau, ngoài bản thân các ngôn ngữ lập trình. Và việc nắm vững các nguyên tắc có trong khái niệm CS là một trong những vị trí đầu tiên ở đây.Các môn khoa học máy tính
Chúng ta hãy xem những môn học nào được bao gồm trong lĩnh vực khoa học máy tính. Để mô tả ngắn gọn các môn học kèm theo lý do nghiên cứu chúng, chúng tôi sẽ thêm các đề xuất về cuốn sách hay nhất và loạt bài giảng video miễn phí hay nhất về chủ đề này, có lẽ là hướng dẫn bằng tiếng Anh tốt nhất về khoa học máy tính, được viết bởi Oz Nova và Myles. Byrne, giáo viên tại Trường Khoa học Máy tính Bradfield ở San Francisco.-
Lập trình
Lập trình là nền tảng và nguyên tắc cơ bản của khoa học máy tính; hầu hết sinh viên bắt đầu học khóa học CS với nó. Các khóa học lập trình CS tốt nhất sẽ hữu ích không chỉ cho người mới bắt đầu mà còn cho những lập trình viên có kinh nghiệm, những người có thể đã bỏ lỡ một số khái niệm và mô hình lập trình nhất định khi học lần đầu.
Cuốn sách hay nhất: Cấu trúc và giải thích các chương trình máy tính. Tác giả: Gerald Sussman và Hal Abelson.
А на JavaRush, кстати говоря, всем желающим доступен для изучения легендарный гарвардский курс “CS50. Основы программирования”, fully переведенный на русский.
Лучшая видеолекция: Brian Harvey’s Berkeley CS 61A
-
Алгоритмы и структуры данных
Знание наиболее распространенных алгоритмов и структур данных помогает решать разного рода задачи, а это очень важно в любой из областей компьютерных наук, включая, конечно, и разработку программного обеспечения.
Лучшая книга: The Algorithm Design Manual. Author: Стивен Скьена (Steven Skiena).
Лучшая видеолекция: лекции Стивена Скьены
-
Компьютерная архитектура
Знание компьютерной архитектуры, то есть понимание того, How на самом деле работает компьютер, является еще одной важной частичкой пазла, без которой попытки построения программных конструкций и моделей часто оказываются неудачными.
Лучшая книга: “Архитектура компьютера и проектирование компьютерных систем” (Computer Organization and Design). Authorы: Дэвид Паттерсон (David Patterson) и Джон Хеннеси (John Hennessy).
Лучшая видеолекция: Berkeley CS 61C
-
Операционные системы
Практически весь code, написанный программистом, будет выполняться операционной системой, поэтому знание принципов работы ОС также является важным элементом.
Лучшая книга: “Введение в операционные системы” (Operating Systems: Three Easy Pieces). Authorы: Андреа Арпачи-Дюссо (Andrea Arpaci-Dusseau) и Ремзи Арпачи-Дюссо (Remzi Arpaci-Dusseau).
Лучшая видеолекция: Berkeley CS 162
-
Компьютерные сети
Мало что в современном ИТ может обойтись без использования Интернета, поэтому ИТ-специалистам важно понимать, How Всемирная сеть работает, чтобы использовать ее потенциал по полной.
Лучшая книга: Computer Networking: A Top-Down Approach. Authorы: Джеймс Куросе (James Kurose), Кит Росс ( Keith Ross).
Лучшая видеолекция: Stanford CS 144
-
Математика для computer science
Поскольку компьютерные науки, по сути, являются ответвлением прикладной математики, знание этого предмета тоже будет очень полезным практически в любой профессии, связанной с программированием. А также даст вам конкурентное преимущество перед теми, кто этой дисциплиной не владеет.
Лучшая книга: Mathematics for Computer Science. Authorы: Альберт Р. Мейер (Albert R. Meyer), Эрик Леман (Eric Lehman) и Фрэнк Томсон Лейтон (Frank Thomson Leighton).
Лучшая видеолекция: Tom Leighton’s MIT 6.042J
-
Базы данных
Базы данных — относительно новая область компьютерных наук, и экспертов в ней по-прежнему не так уж много. Данные — еще один ключевой элемент CS, потому что они лежат в основе большинства значимых программ, но мало кто понимает, How на самом деле работают системы баз данных.
Cuốn sách hay nhất: Bài đọc trong hệ thống cơ sở dữ liệu. Tác giả: Joseph M. Hellerstein và Michael Stonebraker.
Video bài giảng hay nhất: Berkeley CS 186 của Joe Hellerstein
-
Ngôn ngữ và trình biên dịch
Hiểu cách các ngôn ngữ lập trình và trình biên dịch hoạt động về mặt kỹ thuật cho phép bạn cải thiện kỹ năng lập trình và mã của mình. Nó cũng giúp việc học ngôn ngữ mới trở nên dễ dàng hơn, điều này cũng cực kỳ quan trọng đối với bất kỳ nhà phát triển nào về lâu dài.
Cuốn sách hay nhất: Trình biên dịch: Nguyên tắc, Kỹ thuật và Công cụ. Tác giả: Alfred Aho, Monica S. Lam, Ravi Sethi, Jeffrey Ullman.
Video bài giảng hay nhất: Khóa học của Alex Aiken về Lagunita
-
Hệ thống phân phối
Ngày nay, hầu hết các hệ thống đều được phân phối. Máy tính và các chương trình đang trở nên phức tạp hơn và kiến thức về hệ thống phân tán sẽ hữu ích để đảm bảo phần mềm của bạn chạy chính xác và trơn tru.
Cuốn sách hay nhất: Hệ thống phân tán, tái bản lần thứ 3. Tác giả: Maarten van Steen và Andrew S. Tanenbaum.
Bài giảng video hay nhất: CS 436: Hệ thống máy tính phân tán
Lời khuyên khi học Khoa học Máy tính
Và cuối cùng là một số lời khuyên dành cho những ai đang có ý định bắt đầu học các ngành CS.-
Phát triển kỹ năng thực hành trong các môn CS
Một trong những ưu điểm của CS, giống như các khóa học CNTT khác, là những kỹ năng lý thuyết bạn vừa học được có thể áp dụng ngay vào thực tế. Đừng quên điều này và xen kẽ lý thuyết với thực hành để đạt được kết quả tốt nhất.
-
Đừng trì hoãn
Khoa học máy tính là một môn học khá phức tạp, rất ít người có thể nghiên cứu nó, đặc biệt là những người mới bắt đầu học. Đó là lý do tại sao khi bắt đầu học các bộ môn CS, bạn cần tránh trì hoãn - đừng trì hoãn việc nắm vững lý thuyết, giải quyết vấn đề và thực hành sau này, vì điều này không những khiến việc học rất lâu mà rất có thể sẽ không hiệu quả bằng.
-
Đừng giới hạn bản thân trong một khóa học
Đừng mong đợi có thể thu được tất cả kiến thức bạn cần về một môn học chỉ từ một khóa học, cho dù nó tốt đến đâu. Tốt nhất bạn nên tham khảo ít nhất một số nguồn thông tin để hiểu rõ hơn về chủ đề này.
-
Tìm người cùng chí hướng
Nghe có vẻ hơi ngô nghê nhưng học tập hiệu quả, cũng như làm nhiều việc khác trong cuộc sống, được thực hiện tốt nhất khi là thành viên của một nhóm những người cùng chí hướng. Tìm một nhóm để nghiên cứu CS có thể mang lại lợi ích vì một số lý do. Điều này sẽ giúp bạn học hiệu quả hơn, cùng nhau giải quyết các nhiệm vụ và vấn đề, so sánh tiến độ học tập và kỹ năng áp dụng kiến thức mới của bạn với người khác.
-
Học cách viết từ, không chỉ viết mã
Một lời khuyên phổ biến khác từ nhiều chuyên gia dành cho những lập trình viên học CS để nâng cao kỹ năng và nâng cao trình độ chuyên môn: học viết (không phải code), tức là ghép từ thành câu và soạn văn bản từ câu. Kỹ năng này khá quan trọng đối với bất kỳ nhà phát triển nào và sự vắng mặt của nó sẽ cản trở sự tiến bộ không chỉ trong nghiên cứu khoa học máy tính mà còn trong các khía cạnh khác của lập trình như một nghề.
GO TO FULL VERSION