CS 전공 전환자가 들어야 할 선수 과목
최근 CS로 전공을 전환하고 인턴십을 구하는 것에 대해 문의하는 학생들이 있었습니다. 그들의 학부 전공은 대개 Math/Statistics/EE이고, 대학원에서 CS로 전환하고 싶어 하며, 가능하면 CS 학위(MSCS, MCS 등)를 받으려는 경우였습니다.
이 글에서는 MSCS 프로그램에 지원하는 관점에서 어떤 선수 과목을 들어야 하는지 이야기합니다(UIUC 학부 커리큘럼을 예시로 사용).
프로그래밍 언어
모두가 알다시피 모든 CS 학생은 C++, C, Java 등 기계가 실행할 수 있는 프로그래밍 언어를 최소 하나는 배웁니다. CS로 전환할 때는 C++/Java 수업부터 시작할 수 있습니다. Java 수업: CS 125 - Intro to Computer Science
CS 핵심 과목
CS 학과에는 Databases, Computer Networks, Operating Systems, Computer Architecture, Data Structures, Parallel Computing, Software Engineering, Machine Learning 등 많은 과목이 있습니다. 아래에서는 지원 관점에서 어떤 과목이 필수이고 가장 유용한지 이야기합니다.
한 줄 요약: Databases + Computer Networks + Operating Systems + Data Structures/Algorithms
Data Structures: CS 225 - Data Structures (이 과목을 마치면 LeetCode를 편하게 풀 수 있어야 합니다) Databases: CS 411 - Database Systems (이 과목을 마치면 MySQL에 능숙하고 MySQL 인덱스 같은 개념을 이해하거나 처음부터 데이터베이스를 구축할 수 있어야 합니다) Computer Networks: CS 438 - Communication Networks (이 과목을 마치면 브라우저에서 URL로 이동할 때 뒤에서 무슨 일이 일어나는지 이해해야 합니다) Operating Systems: CS 423 - Operating Systems Design (이 과목을 마치면 프로세스와 스레드의 차이를 이해하고 C++ 메모리 관련 버그를 능숙하게 디버깅할 수 있어야 합니다)
여력이 있다면: (아래는 선택 사항입니다. 시간이 있으면 듣고 없으면 건너뛰세요) Computer Architecture: CS 233 - Computer Architecture (이 과목을 마치면 컴퓨터에서 CPU와 다른 구성 요소가 어떻게 상호작용하는지 이해해야 합니다) Software Engineering: CS 427 - Software Engineering I (실제 프로덕션 수준의 프로젝트를 구축) Compilers: CS 426 - Compiler Construction (간단한 컴파일러를 구축) CS 425 - Distributed Systems (분산 key-value store를 구현)