Thống kê cho thấy, tuy kiến thức nền tảng ngành Computer Science (CS Foundation) thường được dạy trong các tín chỉ tại các trường Đại học, Cao đẳng, nhưng có đến hơn 90% ứng viên đã từng “fail” Got It vì chưa nắm chắc CS Foundation.
Nguyên nhân lớn nhất được các Engineer của Got It chỉ ra là do sự thiếu tìm tòi, đào sâu, nghiên cứu về CS Foundation của các bạn ứng viên.
Phần đông các bạn chỉ trả lời được định nghĩa, tính chất của sáu yếu tố trong CS Foundation, nhưng lại chưa thể hiểu rõ căn nguyên vấn đề để trả lời tốt các câu hỏi “tại sao” mà các Engineer Got It đưa ra. Một số ít lại chưa được học về các yếu tố ở trường bởi một số môn như Mạng máy tính (Networking), Hệ điều hành (Operating Systems),… là môn không bắt buộc.
Để hỗ trợ các bạn sinh viên CNTT tự tin vượt qua vòng kiểm tra CS Foundation ở các công ty công nghệ nói chung và ở Got It nói riêng, các Engineer của chúng mình đã tổng hợp và chia sẻ một số khoá học, tài liệu giúp bạn học, nghiên cứu và ôn tập để nâng cao CS Foundation.
Hãy cùng Got It tìm hiểu về các nguồn tài liệu tham khảo CS Foundation trong bài viết hôm nay nhé!
Mục lục
1. Khóa học tổng quan về CS Foundation miễn phí
Để học và ôn lại kiến thức tổng quan về CS Foundation, một trong những khoá học bạn nên tham khảo là khoá học CS50’s Introduction to Computer Science. Khóa học này được thiết kế và giảng dạy bởi các giáo sư thuộc Đại học Harvard.
Khóa học CS50 bắt đầu bằng những bài giảng mang lại hiểu biết khái quát về khoa học máy tính. Sau đó, bạn sẽ tiếp cận với một loạt các bài giảng về cấu trúc dữ liệu (data structures), thuật toán (algorithms), quản lý tài nguyên (resource management), lập trình web (web development) hay bảo mật thông tin (information security system).
Điểm đặc biệt của CS50 là bạn sẽ được dạy cách tư duy sử dụng thuật toán và cách áp dụng thuật toán để giải quyết các vấn đề khi lập trình một cách hiệu quả.
Ngoài ra, cuối khóa CS50, bạn được giao thực hiện một final project (dự án cuối khoá). Final project là nơi bạn có thể vận dụng những kiến thức đã học để tự mình phát triển một phần mềm hữu ích. Tech stack của khoá học này cũng rất đa dạng, trải dài từ C, Python, SQL, Javascript, HTML đến CSS. Do vậy, bạn có thể yên tâm học ngôn ngữ phù hợp với mục tiêu tương lai của mình.
Harvard CS50 là khoá học được đánh giá rất cao trong giới chuyên môn, với gần 3,000,000 bạn đã tham gia học. Bên cạnh đó, đây cũng là một khoá học vô cùng hữu ích nếu bạn đang phân vân về con đường tương lai của mình.
Thông qua các bài học và dự án thực chiến, CS50 sẽ giúp bạn trả lời câu hỏi: Liệu lập trình viên có phải con đường sự nghiệp thực sự dành cho bạn không? Bởi nếu không thực sự hứng thú và đam mê với nội dung, bài tập của CS50, bạn có thể cân nhắc chuyển sang các ngành nghề dùng đến kiến thức tech khác phù hợp với bạn hơn như Quality Assurance, thay vì làm Software Engineer.
2. Tài liệu tham khảo về từng yếu tố trong CS Foundation
Nếu bạn đã nắm chắc các kiến thức chung về CS Foundation và chỉ quan tâm một số yếu tố nhất định, bạn có thể tham khảo thêm các cuốn sách và các trang web tham khảo hữu ích được Got It tổng hợp dưới đây.
Cả 6 yếu tố trong CS Foundation đều có những nguồn tài liệu tham khảo hay, giúp bạn đào sâu và nâng cao hiểu biết của mình đó!
2.1. Ngôn ngữ lập trình
Như đã đề cập ở bài CS Foundation 101 (Phần 1), hiện có rất nhiều ngôn ngữ lập trình như Python, Java, C, C++,… Mỗi ngôn ngữ đều có những điểm mạnh, yếu riêng. Bạn sẽ là người lựa chọn học ngôn ngữ lập trình nào phù hợp với định hướng ngành nghề của mình.
Ở Got It, chúng mình sử dụng hai ngôn ngữ chính là Python và JavaScript. Vì vậy, những tài liệu, trang web tham khảo được chia sẻ dưới đây sẽ xoay quanh hai ngôn ngữ này.
2.1.1 Python
Complete Python Bootcamp From Zero to Hero in Python là một trong những khoá học online phổ biến và được đánh giá cao về ngôn ngữ Python dành cho người mới bắt đầu (beginners).
Khoá học được giảng dạy trên nền tảng Udemy bởi Jose Portilla, một chuyên gia về Data Science. Hiện, Complete Python Bootcamp đã nhận được điểm 4.6/5 cho hơn 360,000 lượt đánh giá và có hơn 1 triệu người lựa chọn theo học.
Điểm mạnh của khóa học này nằm ở chương trình giảng dạy thực tế và dễ hiểu. Nội dung bài giảng đi từ các kiến thức cơ bản (ví dụ: các cú pháp và các khái niệm) cho đến các kiến thức nâng cao hơn (ví dụ: lập trình hướng đối tượng trong Python). Đồng thời, song song với lý thuyết sẽ có nhiều bài tập coding cho bạn thực luyện.
Tất cả giúp người học dễ “thấm” và nắm chắc các kiến thức Python. Bạn sẽ không cảm thấy các kiến thức mình học chỉ là trên sách vở. Ngoài ra, giống như CS50, ở cuối khóa học này của Udemy, bạn sẽ được làm một capstone project. Project này giúp bạn vận dụng kiến thức đã học, dùng ngôn ngữ lập trình Python tạo nên một phần mềm của riêng mình.
Bên cạnh khóa học của Udemy, nếu bạn đã có kiến thức cơ bản về Python, Fluent Python (2nd edition) sẽ là công cụ rất hữu ích hỗ trợ bạn thành thạo lập trình bằng ngôn ngữ siêu phổ biến này.
Cuốn sách 800 trang của Luciano Ramalho mang đến cho bạn những kiến thức nâng cao về python cùng những coding example cụ thể. Quan trọng hơn cả, sách cung cấp cho bạn những công cụ, libraries hữu ích, giúp bạn học cách viết code dễ hiểu dễ đọc và tối ưu hơn.
2.1.2. JavaScript
JavaScript, được ứng dụng trong cả lập trình frontend, backend, mobile hay cả desktop app, là ngôn ngữ phổ biến nhất thế giới trong vài năm trở lại đây.
The Complete JavaScript Course 2021: From Zero to Expert là một khoá học về JavaScript được đánh giá cao trên Udemy. Tuy chưa có độ phổ biến như khóa học Python của Jose Portilla, nhưng khóa học này đã thu hút hơn 400,000 học sinh và nhận được đánh giá 4.7 trên 5 sao.
Một điểm cộng lớn cho khóa học của Jonas Schmedtmann là chương trình học bắt đầu từ những concept cơ bản, rất thích hợp cho các bạn có một chút kiến thức về lập trình và mới “chập chững” tìm hiểu về JS. Đan xen giữa các bài giảng là các dự án, giúp bạn áp dụng ngay những nội dung đã được học vào lập trình project thực tế.
Đây là một cuốn sách cực hay đặc biệt dành cho các bạn beginner không thích học “online”. Bởi, bạn có thể “cày” cuốn sách này để nạp các kiến thức cơ bản về JavaScript thay cho việc học trực tuyến.
Cũng như khoá học của Udemy, cuốn sách chia sẻ các kiến thức lập trình JavaScript từ dễ đến khó. Một số nội dung nổi bật mà cuốn sách bao quát là:
- Syntax
- Control
- Data
- Cách dùng DOM để tương tác với browsers một cách hiệu quả
- Cách dùng OOP và functional programming để tổ chức code
Ngoài ra, tuy không thể thực hành trực quan như các khoá học online, cuốn sách vẫn giúp người đọc luyện tập cơ bản. Bạn sẽ được hướng dẫn tạo ra một Web application hoặc dùng Node.js để lập trình backend.
2.2. Lập trình hướng đối tượng (OOP)
Một trong các cuốn sách bạn nên tham khảo để học thêm về OOP là Design Patterns: Elements of Reusable Object-Oriented Software. Cuốn sách được chắp bút bởi 4 tác giả Erich Gamma, Richard Helm, Ralph Johnson, và John Vlissides. Họ đều là những người có kinh nghiệm lâu năm nghiên cứu về Computer Science.
Đây là một cuốn sách rất đầy đủ và đặc biệt dễ hiểu về khái niệm, ý nghĩa của OOP cũng như cách vận dụng các design patterns (mẫu thiết kế) khi lập trình hướng đối tượng.
Đặc biệt, ở chương hai, các tác giả sử dụng case study là một project thực tế làm ví dụ minh hoạ cho bạn. Từ project đó, cuốn sách chỉ ra chi tiết các cách giải quyết một số vấn đề trong lập trình hướng đối tượng bằng cách sử dụng các design patterns.
Design Patterns: Elements of Reusable Object-Oriented Software có thể làm cuốn sách gối đầu giường, giúp bạn nâng cấp kiến thức về OOP.
Ngoài ra, nếu bạn muốn tìm một địa chỉ để ôn tập nhanh các kiến thức về OOP, bạn có thể ghé phần OOP trong trang JavaTPoint. JavaTPoint là một website cung cấp kiến thức về lập trình, các ngôn ngữ lập trình khác nhau và tổng hợp một số câu hỏi cho các vị trí khác nhau của các công ty lớn như IBM, MS, Adobe,…
Việc tìm kiếm thông tin trên JavaTPoint rất dễ dàng do các kiến thức được phân loại thành các đề mục nhỏ, nên bạn có thể tra cứu và ôn tập các trường kiến thức mình còn thiếu rất nhanh chóng.
2.3. Hệ điều hành
Operating Systems: Three Easy Pieces sẽ là một lựa chọn phù hợp nếu mối quan tâm của bạn thiên nhiều hơn về Operating System. Cuốn sách xoay quanh ba khái niệm của hệ điều hành là virtualization (ảo hoá), concurrency và persistence với cách diễn đạt cực kỳ ngắn gọn và dễ hiểu.
Sau khi chia sẻ các khái niệm, cuốn sách của 2 tác giả Remzi Arpaci-Dusseau và Andrea Arpaci-Dusseau sẽ tập trung giải thích cách một hệ điều hành hoạt động dựa trên CPU scheduling, quản lý bộ nhớ (memory), và file storage. Với lối viết cô đọng và thực tế, nội dung cuốn sách chắc chắn sẽ giúp bạn “master” các kiến thức quan trọng về Operating System.
2.4. Mạng máy tính
Computer Networking: A Top Down Approach của Kurose và Ross là cuốn sách bao hàm các kiến thức xoay quanh các lớp của mạng máy tính, cùng các khái niệm liên quan đến network như: security, protocols,…
Được sử dụng làm textbook chính thức của khóa học Computer Networking tại Đại học Stanford, Computer Networking: A Top Down Approach là cuốn sách gối đầu của nhiều sinh viên Computer Science. Do vậy, nếu bạn không lựa chọn học Mạng máy tính trên giảng đường, hãy tham khảo cuốn sách này để chuẩn bị phỏng vấn thật tốt nhé!
2.5. Cấu trúc dữ liệu và Giải thuật
Cracking the Coding Interview là một trong những cuốn sách được “cày” nhiều nhất bởi các sinh viên năm cuối hoặc sinh viên mới ra trường để ứng tuyển vào các tập đoàn công nghệ hàng đầu thế giới. Cuốn sách chia ra các dạng bài và lời giải cho các câu hỏi liên quan đến Cấu trúc dữ liệu và Giải thuật.
Các câu hỏi trong cuốn sách thường gặp trong các buổi phỏng vấn với Google, Amazon, Facebook hay Microsoft. Do đó, bạn hãy lưu ý tìm đọc và luyện tập theo cuốn sách này nếu muốn nâng cao khả năng thành công trong vòng phỏng vấn với các công ty “mơ ước”.
Data Structures and Algorithms in Python là một cuốn sách được biên soạn cẩn thận với lối viết rất dễ hiểu. Python đang trở thành ngôn ngữ lập trình được ưa chuộng số một thế giới, gây tiếng vang bởi sự đơn giản trong syntax (cú pháp) và có một cộng đồng developer rất mạnh mẽ. Data Structures and Algorithms in Python sẽ giúp bạn tự học và luyện tập cách giải quyết các bài toán về dữ liệu và giải thuật bằng ngôn ngữ nổi bật này.
Điểm mạnh mà bạn không thể bỏ qua của cuốn sách chính là cách định nghĩa và giải thích các bài tập ví dụ chi tiết dễ hiểu. “Cày” xong cuốn sách, kiến thức và kỹ năng vận dụng của bạn sẽ được nâng cao đáng kể.
2.6. Cơ sở dữ liệu
Một cuốn sách về Database được đánh giá cao là Database System Concepts (7th edition) viết bởi Silberschatz, Korth và Sudarshan. Đây là cuốn sách phù hợp cả với những bạn mới bắt đầu tìm hiểu về cơ sở dữ liệu hay các bạn đã học qua, cần tra cứu, đọc thêm về một vài điểm quan trọng để ôn tập phỏng vấn.
Database System Concepts là cuốn sách được nhiều giảng viên, giáo sư đại học giới thiệu tìm đọc. Ngoài ra, đây cũng là sách giáo khoa của môn “CS101b – Introduction to Relational Databases” tại California Institute of Technology. Bởi vậy, nếu bạn đang muốn củng cố kiến thức về Database, đây sẽ là người “trợ lý” rất được việc của bạn.
- Website SQLZoo và HackerRank
Ngoài ra, một gợi ý giúp các bạn sinh viên công nghệ nâng cao kiến thức về Database của chúng mình là: Hãy dành thời gian luyện tập về SQL qua các quizzes trực tuyến.
Luyện tập với các quizzes là một trong những cách hiệu quả nhất để bạn thành thạo khả năng viết các câu lệnh query khi trả lời phỏng vấn. Bạn nên tham khảo các bài quizzes trên SQLZoo và HackerRank.
3. Lời kết
Trên đây là các khoá học và cuốn sách làm tài liệu tham khảo CS Foundation mà bạn nên tìm học và ôn tập. Got It mong rằng những chia sẻ trên sẽ giúp bạn phát triển hơn nữa trên con đường tương lai. Đồng thời, phần nào hỗ trợ bạn tăng tỷ lệ thành công trong các vòng phỏng vấn.
Hãy tiếp tục theo dõi blog của Got It để đón đọc “CS Foundation 101 (Phần 3): Cách ghi điểm trong vòng phỏng vấn Competency” (vòng phỏng vấn sử dụng kiến thức CS Foundation). Phần 3 của Series CS Foundation 101 sẽ bật mí một số câu hỏi mà Got It hay đặt ra cho các ứng viên về kiến thức CS đó. Đừng bỏ lỡ nhé!
Người viết: Mike – Got It
[…] phần 1 và phần 2 của series CS Foundation 101, bạn đã biết được các khái niệm, sáu yếu tố quan […]