Хичээлийг заах болсон шалтгаан
Их сургуулийн уламжлалт компьютерийн ухааны сургалтаар үйлдлийн систем, програмчлалын хэл, машин сургалт зэрэг CS-ийн гүнзгийрүүлсэн олон сэдвийг заадаг. Гэвч ихэнх сургуулиудад орхигддог, оюутнуудыг өөрсдөө бие даан сур гэж даатгадаг нэгэн чухал сэдэв бий. Энэ бол компьютерийн орчны хэрэгслүүдийг чадварлаг ашиглах явдал юм.
Бид олон жилийн турш MIT-д хэд хэдэн хичээл заахад тусалж ирсэн бөгөөд суралцагчид өөрт байгаа боломжит хэрэгслүүдийн талаар хязгаарлагдмал мэдлэгтэй байхыг олон удаа харсан. Компьютерийг гар ажиллагааг автоматжуулахын тулд бүтээсэн байтал оюутнууд давтагддаг үйлдлүүдийг гараар хийж, хувилбар хяналтын систем болон текст засварлагч зэрэг хүчирхэг хэрэгслүүдийн давуу талыг бүрэн ашиглаж чаддаггүй. Энэ нь хамгийн наад зах нь цаг алдах, бүтээмж буурахад хүргэдэг бол хамгийн муу тохиолдолд өгөгдөл алдах эсвэл даалгавраа гүйцээж чадахгүйд хүрэх зэрэг асуудлуудыг дагуулдаг.
Эдгээр сэдвийг их сургуулийн хөтөлбөрт заадаггүй тул оюутнууд эдгээр хэрэгслийг хэрхэн үр дүнтэй ашиглахыг мэддэггүй бөгөөд үүний улмаас уг нь маш энгийн байх ёстой ажлуудад цаг хугацаа, хүч хөдөлмөрөө дэмий үрдэг. Компьютерийн ухааны стандарт хөтөлбөрт оюутнуудын амьдралыг харилцан адилгүй хөнгөвчлөх боломжтой компьютерийн орчны чухал сэдвүүд орхигдсон байдаг.
Компьютерийн ухааны боловсролын орхигдсон семестр
Үүнийг засахын тулд бид компьютерийн ухааны чадварлаг мэргэжилтэн, програмчлагч болоход зайлшгүй шаардлагатай гэж үзсэн сэдвүүдээ багтаасан хичээл бэлтгэсэн. Энэхүү хичээл нь практикт суурилсан бөгөөд таны өдөр тутамд тулгарах олон төрлийн нөхцөл байдалд шууд ашиглаж болох хэрэгсэл, арга техникийг бодитоор заах болно. Сүүлийн үеийн шинэчилсэн агуулга бүхий энэхүү хичээл нь 2026 оны 1-р сард MIT-ийн IAP (Independent Activities Period) буюу оюутнууд өөрсдөө богино хэмжээний хичээл заадаг нэг сарын хугацаатай семестрээр явагдсан. Лекцүүд нь зөвхөн MIT-ийн оюутнуудад зориулагдсан боловч бид лекцийн бүх материал болон видео бичлэгүүдийг олон нийтэд нээлттэй хүргэж байна.
Хэрэв энэ хичээл танд хэрэгтэй гэж бодогдож байвал эндээс заах сэдвүүдийн тодорхой жишээнүүдтэй танилцана уу:
Command shell
Алиас, скрипт болон бүтээх систем (build system) ашиглан нийтлэг, давтагддаг үйлдлүүдийг хэрхэн автоматжуулах тухай. Текст файлаас тушаалуудыг хуулж буулгах, “эдгээр 15 тушаалыг ар араас нь ажиллуул”, “үүнийг ажиллуулахаа мартчихаж”, “энэ аргументыг дамжуулахаа орхичихож” гэх мэт асуудлууд дахин гарахгүй.
Жишээлбэл, shell-ийн түүх дундаас хурдан хайлт хийх нь маш их цаг хэмнэдэг. Доорх жишээнд бид convert тушаалуудыг хайх, shell-ийн түүхээр шилжих хэд хэдэн аргыг харууллаа.
Хувилбар хяналт
Хувилбар хяналтын системийг хэрхэн зөв ашиглах, түүний давуу талыг ашиглаж алдаанаас сэргийлэх, бусадтай хамтран ажиллах, кодын өөрчлөлтүүдээс алдааг хурдан хайж олох тухай. rm -rf; git clone хийх шаардлагагүй болж, merge conflict бараг үүсэхгүй. Тайлбар болгож хаасан асар том кодын хэсгүүд, “ямар өөрчлөлт кодонд алдаа оруулсныг яаж олох вэ”, “ажиллаж байсан кодоо устгачихсан юм болов уу” гэж санаа зовох зүйлгүй болно. Түүнчлэн pull request илгээн бусдын төсөлд хэрхэн хувь нэмэр оруулахыг заах болно!
Доорх жишээнд бид git bisect ашиглан аль коммит тест дээр алдаа гаргасныг олж, улмаар git revert ашиглан засаж буйг харууллаа.
Текст засварлах
Локал болон алсын сервер дээрх файлуудыг командын мөрөөс хэрхэн үр дүнтэй засварлах, засварлагчийн ахисан түвшний боломжуудыг хэрхэн ашиглах тухай. Файлуудыг нааш цааш хуулж зөөхгүй, нэгэн хэвийн үйлдлүүдийг давтан хийх шаардлагагүй болно.
Vim макро нь түүний хамгийн шилдэг боломжуудын нэг бөгөөд доорх жишээнд бид давхарласан (nested) Vim макро ашиглан HTML хүснэгтийг CSV формат руу хурдан хөрвүүлж байна.
Алсын машинаар ажиллах
SSH түлхүүр болон терминал үржүүлэгч (terminal multiplexer) ашиглан алсын серверүүдтэй хэрхэн аюулгүй, саадгүй ажиллах тухай. Хоёр тушаал зэрэг ажиллуулах гэж олон терминал нээхгүй, холбогдох бүрдээ нууц үг бичихгүй, интернэт тасрах эсвэл компьютер унтрахад хийж байсан бүх зүйлээ алдаж алга болгохгүй.
Доорх жишээнд бид tmux ашиглан алсын сервер дээрх сессийг идэвхтэй хадгалж, сүлжээ тасрахад mosh ашиглан холболтоо хэрхэн хэвийн үргэлжлүүлж байгааг харууллаа.
Файл хайх
Хайж буй файлаа хэрхэн хурдан олох тухай. Төслийн хавтаснуудаар хайж буй кодоо олох гэж хавтас бүрийг нэг бүрчлэн ухаж товших шаардлагагүй болно.
Доорх жишээнд бид fd ашиглан файлуудыг, rg ашиглан кодын хэсгүүдийг хурдан хайж байна. Мөн fasd ашиглан хамгийн сүүлд болон хамгийн их ашигласан файл, хавтас руу хурдан cd хийж, vim-ээр нээж байна.
Өгөгдөл боловсруулах
Командын мөрөөс өгөгдөл болон файлуудыг хэрхэн хурдан өөрчлөх, харах, задлах, графикжуулах болон тооцоолох тухай. Лог файлаас мэдээллийг нааш цааш хуулж буулгах шаардлагагүй, статистик мэдээллийг гараар бодохгүй, Excel хүснэгт ашиглаж график хийх шаардлагагүй болно.
Кодын чанар ба тасралтгүй интеграци
Кодыг автомат форматлагч, линтер, тест болон code coverage хэрэгслүүдийг ашиглан кодын чанарыг хэрхэн сайжруулах тухай. Эрээвэр хураавар, уншихад хэцүү код бичихээ больж, өмнө нь ажиллаж байсан код дахин эвдрэхээс сэргийлнэ. “Миний компьютер дээр зүгээр ажиллаж байсан” мөртлөө бусдынх дээр унадаг асуудлыг бүрмөсөн шийднэ.
Кодоос гадна
Хэрхэн сайн баримт бичиг (documentation) бэлтгэх, нээлттэй эхийн хөгжүүлэгчидтэй тодорхой харилцах, асуудлыг (issue) оновчтой мэдээлэх, зөвшөөрөгдөх pull request хэрхэн илгээх тухай. Таны програмыг хэрхэн ажиллуулахаа мэдэхгүй будилж буй хэрээгчдэд заавар болохын зэрэгцээ нээлттэй эхийн төслийн удирдагчдын зүгээс хариу өгөхгүй удах асуудал үүсэхгүй.
Дүгнэлт
Эдгээр болон бусад олон сэдвийг 9 лекцийн турш үзэх бөгөөд лекц бүр өөрөө бие даан ажиллах дасгалуудтай байна. Хэрэв та 2026 оны 1-р сар хүртэл хүлээж чадахгүй бол үүнтэй төсөөтэй олон сэдвийг хамарсан өмнөх оны хичээлүүд-ийг үзэх боломжтой.
Тантай 1-р сард биечлэн болон цахимаар уулзана гэж найдаж байна!