วิทยาการคอมพิวเตอร์ - ทำไมต้องสอน?
“การเขียนโปรแกรมไม่ใช่สิ่งที่คุณรู้ มันเป็นสิ่งที่คุณคิดออกได้” Chris Pine ผู้เชี่ยวชาญด้านการเขียนโปรแกรม ผู้แต่งหนังสือและบทช่วยสอน “ในบางแง่ การเขียนโปรแกรมก็เหมือนกับการวาดภาพ ในตอนแรกคุณมีเพียงผืนผ้าใบเปล่าและวัสดุเท่านั้น คุณต้องใช้วิทยาศาสตร์ ศิลปะ และงานฝีมือผสมผสานกันเพื่อค้นหาว่าจะทำอย่างไรกับเรื่องทั้งหมดนี้” Andrew Hunt ผู้แต่งหนังสือขายดี The Pragmatic Programmer และผู้ร่วมเขียน Agile Manifesto ไม่ยากที่จะเข้าใจว่าเรากำลังมุ่งหน้าไปทางไหน ในการเป็นโปรแกรมเมอร์ที่เก่งจริงๆ หรือเพียงแค่ต้องอยู่เหนือโค้ดเดอร์ธรรมดาอย่างน้อยหนึ่งขั้น คุณต้องมีความรู้ที่กว้างที่สุดและในเวลาเดียวกันก็ค่อนข้างลึกซึ้งในด้านต่างๆ นอกเหนือจากภาษาการเขียนโปรแกรมด้วยตัวมันเอง และความชำนาญในสาขาวิชาที่รวมอยู่ในแนวคิดของ CS ก็เป็นหนึ่งในสถานที่แรกๆ ที่นี่สาขาวิชาวิทยาการคอมพิวเตอร์
มาดูกันว่าสาขาวิชาใดบ้างที่รวมอยู่ในสาขาวิทยาการคอมพิวเตอร์ หากต้องการคำอธิบายสั้น ๆ เกี่ยวกับสาขาวิชาพร้อมเหตุผลในการศึกษาเราจะเพิ่มคำแนะนำสำหรับหนังสือที่ดีที่สุดและชุดวิดีโอบรรยายฟรีที่ดีที่สุดเกี่ยวกับเรื่องนี้จากบางทีคู่มือภาษาอังกฤษ ที่ดีที่สุด สำหรับวิทยาการคอมพิวเตอร์ที่เขียนโดย Oz Nova และ Myles Byrne อาจารย์ที่ School of Computer Science Bradfield ในซานฟรานซิสโก-
การเขียนโปรแกรม
การเขียนโปรแกรมเป็นพื้นฐานและวินัยพื้นฐานของวิทยาการคอมพิวเตอร์ นักเรียนส่วนใหญ่เริ่มเรียนหลักสูตร CS ด้วยหลักสูตรนี้ หลักสูตรการเขียนโปรแกรม CS ที่ดีที่สุดจะมีประโยชน์ไม่เพียงแต่สำหรับผู้เริ่มต้นเท่านั้น แต่ยังสำหรับผู้เขียนโค้ดที่มีประสบการณ์ที่อาจพลาดแนวคิดและโมเดลการเขียนโปรแกรมบางอย่างเมื่อเรียนรู้เป็นครั้งแรก
หนังสือที่ดีที่สุด:โครงสร้างและการตีความโปรแกรมคอมพิวเตอร์ ผู้เขียน: เจอรัลด์ ซัสแมน และฮัล อาเบลสัน
А на 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 на самом деле работают системы баз данных.
หนังสือที่ดีที่สุด:การอ่านในระบบฐานข้อมูล ผู้เขียน: โจเซฟ เอ็ม. เฮลเลอร์สไตน์ และไมเคิล สโตนเบรกเกอร์
วิดีโอบรรยายยอดเยี่ยม: Berkeley CS 186 ของ Joe Hellerstein
-
ภาษาและคอมไพเลอร์
การทำความเข้าใจวิธีการทำงานของภาษาโปรแกรมและคอมไพเลอร์ในทางเทคนิคช่วยให้คุณสามารถพัฒนาโค้ดและทักษะการเขียนโปรแกรมของคุณได้ นอกจากนี้ยังทำให้การเรียนรู้ภาษาใหม่ๆ ง่ายขึ้น ซึ่งมีความสำคัญอย่างยิ่งสำหรับนักพัฒนาในระยะยาวอีกด้วย
หนังสือที่ดีที่สุด:คอมไพเลอร์: หลักการ เทคนิค และเครื่องมือ ผู้แต่ง: Alfred Aho, Monica S. Lam, Ravi Sethi, Jeffrey Ullman
วิดีโอบรรยายที่ดีที่สุด:หลักสูตรของ Alex Aiken เรื่อง Lagunita
-
ระบบแบบกระจาย
ทุกวันนี้ระบบส่วนใหญ่มีการกระจายตัว คอมพิวเตอร์และโปรแกรมมีความซับซ้อนมากขึ้น และความรู้เกี่ยวกับระบบแบบกระจายจะมีประโยชน์เพื่อให้แน่ใจว่าซอฟต์แวร์ของคุณทำงานได้อย่างถูกต้องและราบรื่น
หนังสือที่ดีที่สุด: Distributed Systems ฉบับที่ 3 ผู้เขียน: Maarten van Steen และ Andrew S. Tanenbaum
วิดีโอบรรยายที่ดีที่สุด: CS 436: ระบบคอมพิวเตอร์แบบกระจาย
เคล็ดลับการเรียนวิทยาการคอมพิวเตอร์
และสุดท้ายนี้ คำแนะนำสำหรับผู้ที่กำลังวางแผนจะเริ่มเรียนสาขาวิชาวิทยาการคอมพิวเตอร์
-
พัฒนาทักษะการปฏิบัติในสาขาวิชา CS
ข้อดีประการหนึ่งของ CS เช่นเดียวกับหลักสูตรไอทีอื่นๆ คือทักษะทางทฤษฎีที่คุณเพิ่งได้รับสามารถนำไปใช้ในทางปฏิบัติได้ทันที อย่าลืมเรื่องนี้และสลับทฤษฎีกับการฝึกฝนเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
-
อย่าผัดวันประกันพรุ่ง
วิทยาการคอมพิวเตอร์เป็นวิชาที่ค่อนข้างซับซ้อน ซึ่งการศึกษาเป็นเรื่องง่ายสำหรับบางคน โดยเฉพาะในช่วงแรกๆ นั่นคือเหตุผลที่เมื่อเริ่มศึกษาสาขาวิชา CS คุณต้องหลีกเลี่ยงการผัดวันประกันพรุ่ง - อย่าละทิ้งทฤษฎีการเรียนรู้ การแก้ปัญหา และการฝึกฝนไปในภายหลัง เพราะไม่เพียงแต่จะทำให้การเรียนรู้ยาวนานมากเท่านั้น แต่ยังมักจะไม่มีประสิทธิภาพเท่าที่ควร
-
อย่าจำกัดตัวเองอยู่เพียงหลักสูตรเดียว
อย่าคาดหวังว่าจะได้รับความรู้ทั้งหมดที่คุณต้องการในวิชาใดวิชาหนึ่งจากหลักสูตรเดียว ไม่ว่ามันจะดีแค่ไหนก็ตาม เป็นการดีที่สุดเสมอที่จะปรึกษาแหล่งข้อมูลอย่างน้อยหลายแหล่งเพื่อทำความเข้าใจในหัวข้อนี้ให้กว้างขึ้น
-
หาคนที่มีใจเดียวกัน
อาจฟังดูเล็กน้อย แต่การเรียนรู้อย่างมีประสิทธิผล เช่นเดียวกับการทำสิ่งอื่นๆ ในชีวิต ทำได้ดีที่สุดเมื่อเป็นส่วนหนึ่งของกลุ่มคนที่มีความคิดเหมือนกัน การหากลุ่มเพื่อศึกษา CS อาจมีประโยชน์หลายประการ สิ่งนี้จะช่วยให้คุณเรียนรู้ได้อย่างมีประสิทธิภาพมากขึ้น แก้ปัญหางานและปัญหาร่วมกัน เปรียบเทียบความก้าวหน้าในการเรียนรู้และทักษะในการประยุกต์ความรู้ใหม่กับผู้อื่น
-
เรียนรู้การเขียนคำ ไม่ใช่แค่โค้ด
คำแนะนำทั่วไปอีกประการหนึ่งจากผู้เชี่ยวชาญหลายคนสำหรับโปรแกรมเมอร์ที่เรียน CS เพื่อพัฒนาทักษะและพัฒนาระดับมืออาชีพ: เรียนรู้การเขียน (ไม่ใช่โค้ด) นั่นคือใส่คำศัพท์ลงในประโยคและเขียนข้อความจากประโยค ทักษะนี้ค่อนข้างสำคัญสำหรับนักพัฒนาทุกคน และการไม่มีทักษะดังกล่าวจะเป็นอุปสรรคต่อความก้าวหน้าไม่เพียงแต่ในการศึกษาวิทยาการคอมพิวเตอร์เท่านั้น แต่ยังรวมถึงด้านอื่น ๆ ของการเขียนโปรแกรมในฐานะวิชาชีพด้วย
GO TO FULL VERSION