Егер де сіз өзін-өзі оқытатын инженер болсаңыз, сіздің келесі мақсатыңыз - информатика пәнің меңгеру. Бақытымызға орай, сіз дипломдық бағдарламаға көп жылдар және ақша жұмсамай-ақ өзіңізге әлемдік деңгейдегі CS (Computer Science) білімін бере аласыз (тегін) 💸
Ғаламторда ресурстар көп, бірақ олардың кейбіреулері басқаларға қарағанда жақсы. Сізге тағы бір "200-ден астам тегін онлайн курстар" тізімі қажет емес. Сізге осы сұрақтарға жауап беру қажет:
- Қандай пәндерді оқу керек және қандай мақсатпен?
- Әр пән бойынша ең жақсы кітап немесе бейне дәрістер қандай?
Осы нұсқаулықта біз осы сұрақтарға нақты жауап беруге тырысамыз.
Төмендегі тоғыз пәнді ұсынылған ретпен оқыңыз (кітап және бейне дәрістер арқылы). Мәтін және бейне ақпараттың екеуінде қолдануға тырысыңыз. Әр тақырыпқа 100-ден 200 сағатқа дейін уақыт бөліп, зерттеуге мақсат қойыңыз. Содан кейін бүкіл мансабыңыздағы таңдаулыларға оралыңыз 🚀
Тақырып | Не үшін оқимыз? | Үздік кітап | Үздік бейне дәріс |
---|---|---|---|
Бағдарламалау | Рекурсия сияқты тақырыпты "толық түсінбеген" адам болмаңыз. | Structure and Interpretation of Computer Programs | Brian Harvey’s Berkeley CS 61A |
Компьютер архитектурасы | Егер сіз компьютердің қалай жұмыс істейтіні туралы нақты білмесеңіз, сіздің барлық жоғары деңгейдегі білімдеріңіз нәзік болады. | Computer Organization and Design | Berkeley CS 61C |
Алгоритмдер және деректер құрылымдары | Егер сіз стектер, кезектер және графиктер сияқты деректер құрылымдарын қалай пайдалану керектігін білмесеңіз, сіз күрделі есептерді шеше алмайсыз. | The Algorithm Design Manual | Steven Skiena’s lectures |
Информатика саласындағы математика | CS негізінен қолданбалы математиканың кең таралған саласы болып табылады, сондықтан математиканы үйрену сізге бәсекелестік артықшылық береді. | Mathematics for Computer Science | Tom Leighton’s MIT 6.042J |
Операциялық жүйелер | Сіз жазған кодтың көп бөлігі операциялық жүйемен жұмыс істейді, сондықтан олардың өзара әрекеттесуін білуіңіз керек. | Operating Systems: Three Easy Pieces | Berkeley CS 162 |
Компьютерлік желілер | Интернеттін әлеуетін толық ашу үшін оның қалай жұмыс істейтінін түсініңіз. | Computer Networking: A Top-Down Approach | Stanford CS 144 |
Дерекқор жүйелері | Деректер бағдарламалардың жүрегінде жатыр, бірақ дерекқор жүйелерінің қалай жұмыс істейтінін түсінетіндер аз. | Readings in Database Systems | Joe Hellerstein’s Berkeley CS 186 |
Тілдер және компиляторлар | Егер сіз бағдарламалау тілдер мен компиляторлардың қалай жұмыс істейтінін түсінсеңіз, кодты жақсырақ жазып, жаңа бағдарламалау тілдерің үйрену оңайырақ болады. | Compilers: Principles, Techniques and Tools | Alex Aiken’s course on Lagunita |
Таратылған жүйелер | Бұл күндері көптеген жүйелер таратылған ақпараттық жүйелер болып табылады. | Distributed Systems, 3rd Edition by Maarten van Steen | MIT 6.824 |
Егер бірнеше жыл ішінде 9 тақырыпты өз бетінше зерттеу идеясы басым болып көрінсе, біз сізге тек осы екі кітапқа назар аударуды ұсынамыз: Computer Systems: A Programmer's Perspective және Designing Data-Intensive Applications. Бұл екі кітап өзін-өзі оқытатын инженерлер үшін инвестицияланған уақыт бойынша өте жоғары кірісті болып келеді. Олар сондай-ақ жоғарыда аталған басқа тақырыптарды және ресурстарды бастап оқу үшін әсер ете алады.
Инженерлердің 2 түрі бар: күрделі, инновациялық жұмыстарды орындау үшін информатиканы жақсы түсінетіндер және бірнеше жоғары деңгейлі құралдармен таныс болып жатқандар.
Екеуі де өздерін инженерлер деп атайды және екеуі де мансабының басында ұқсас жалақы алуға бейім. Бірақ 1-ші типті инженерлер уақыт өте келе сапалы және жақсы төленетін жұмысқа, мейлі ол құнды коммерциялық жұмыс немесе ашық бастапқы жобалар, техникалық көшбасшылық жұмыс орындарында жұмыс үстеуге мақсат қояды.
The global SMS system does around 20bn messages a day. WhatsApp is now doing 42bn. With 57 engineers. pic.twitter.com/zZrtSIzhlR
— Benedict Evans (@BenedictEvans) February 2, 2016
1-ші типті инженерлер информатиканы тереңдетіп оқытудың жолдарын табады, мейлі ол кәдімгі құралдар арқылы болсын, мейлі мансап бойы тынымсыз оқу арқылы болсын. Type 2 engineers typically stay at the surface, learning specific tools and technologies rather than their underlying foundations, only picking up new skills when the winds of technical fashion change.
Қазіргі уақытта салаға кіретін адамдардың саны тез өсуде, бірақ CS түлектерінің саны салыстырмалы түрде тұрақты. 2-ші типті инженерлер кез келген технологиялар мен құралдардың аспаптық таратуларын білмей, тек техникалық тенденциялардың күйілісі кезінде жаңа дағдыларды қарайды.
Бакалавриат CS бағдарламаларының көпшілігі компьютерлік бағдарламалауды "кіріспеден" бастайды. Бұл курстардың ең жақсы нұсқалары жаңадан бастаушыларға ғана емес, сонымен қатар код жазуды алғаш үйрену кезінде пайдалы тұжырымдамалар мен бағдарламалау үлгілерін жіберіп алғандарға да арналған.
Осыған біздің стандартты ұсынымыз Structure and Interpretation of Computer Programs болып табылады. Ол кітап және MIT бейне-лекциялар арқылы қолжетімді. Бұл лекциялар керемет болғанымен, біздін бейне-лекциялар ұсынысымыз ол Brian Harvey’s SICP lectures (for the 61A course at Berkeley). Бұл MIT лекцияларына қарағанда, жаңа студенттерге неғұрлым нақты және жақсырақ бағытталған.
Біз SICP бейне-лекциялардын кем дегенде алғашқы үш тарауын оқып, жаттығуларды орындауды ұсынамыз. Қосымша тәжірибе алу үшін бағдарламалаудың кішігірім есептерінің exercism жиынтығымен жұмыс жасаңыз.
Бұл нұсқаулық алғаш рет 2016 жылы жарияланғаннан бері, ең жиі қойылатын сұрақтардың бірі ол Джон Денеро үйреткен 61а соңғы нұсқасының жазбаларын және/немесе сәйкес кітапты Composing Programs ұсынамыз ба деген сұрақ болды. Ол "SICP дәстүрінде" бірақ Python қолданады. Біздің ойымызша, DeNero ресурстары да тамаша және кейбір студенттер оларды ұнатуы мүмкін, бірақ біз әлі де SICP, Scheme және Брайан Харвидің дәрістерін бірінші рет қолданып көруге болатын ресурстар жиынтығы ретінде ұсынамыз.
Неге? Себебі SICP компьютерлер мен бағдарламалауға деген негізгі сенімдеріңізді өзгерту қабілетімен, кем дегенде, әлеуетімен ерекше. Мұны бәрі бірдей сезіне бермейді. Кейбіреулер бұл кітапты жек көреді, ал басқалары алғашқы бірнеше беттен өте алмайды. Бірақ ықтимал сыйақы оны сынап көруге тұрарлық етеді.
Егер сізге SICP ұнамаса, Composing Programs қолданып көріңіз. Егер бұл әлі де сізге сәйкес келмесе, How to Design Programs оқып көріңіз. Егер бұлардың ешқайсысы сіздің күш-жігеріңізді ақтамайтын сияқты болса, бұл сіздің басқа тақырыптарға біраз уақыт назар аударып, тағы бір-екі жылдан кейін бағдарламалау пәніне қайта оралуыңыздың белгісі болуы мүмкін.
Соңында, нақтылау нүктесі: бұл нұсқаулық бағдарламалауға мүлдем жаңадан келгендерге АРНАЛМАҒАН. Біз сізді информатикадағы кейбір білімдерің толтырғысы келетін сауатты бағдарламашы деп есептейміз. Біз "бағдарламалау" бөлімін қосқанымыз - бұл әлі де көп нәрсені үйренуге болатынын еске салады. Бұрын-соңды код жазбаған, бірақ код жазғысы келетіндер үшін сізге келесі нұсқаулық ұнауы мүмкін.
Hardware is the platform
— Mike Acton, Engine Director at Insomniac Games (watch his CppCon talk)
Компьютерлік Архитектура - кейде "компьютерлік жүйелер" немесе "компьютерлік ұйым" деп аталады. Бағдармалардың жүйелермен әрекеттесуі - инженерге білу маңызды. Біздің тәжірибемізде бұл өзін-өзі оқытатын инженерлер арасында ең назардан тыс қалған тақырып.
Біздің сүйікті кіріспе кітабымыз Computer Systems: A Programmer's Perspective, және кітапты қолдана отырып, компьютерлік архитектураның әдеттегі кіріспе курсы 1-6 тараулардың көпшілігін қамтуы мүмкін.
Біз CS:APP-ты практикалық жағы үшін жақсы көреміз. Компьютерлік архитектурада кітапта көрсетілгеннен әлдеқайда көп нәрсе бар болса да, ол компьютерлік жүйелерді, ең алдымен, тезірек, тиімдірек бағдарламаларды жазу үшін түсінгісі келетіндер үшін тамаша бастау нүктесі ретінде қызмет етеді.
Тақырыпқа онай кіріспені де, аппараттық және бағдарламалық қамтамасыз ету мәселелерінің тепе-теңдігін де қалайтындар үшін біз "Nand2tetris" деп те аталатын The Elements of Computing Systems ұсынамыз. Бұл компьютердегі барлық нәрсенің қалай жұмыс істейтіні туралы біртұтас түсінік беруге тырысатын кітап. Әрбір тарау қарапайым логикалық қақпаларды HDL форматында жазудан бастап, процессор мен ассемблер арқылы Tetris ойынының көлеміндей бағдарламаға дейін жалпы жүйенің шағын бөлігін құруды қамтиды.
Кітаптың алғашқы алты тарауын оқып, онымен байланысты жобаларды аяқтауды ұсынамыз. Бұл машинаның архитектурасы мен онда жұмыс істейтін бағдарламалық жасақтама арасындағы байланыс туралы түсінігіңізді дамытады.
Кітаптың бірінші жартысы және оның барлық жобалары Nand2Tetris веб-сайтынан тегін қол жетімді. Ол сондай-ақ Ілеспе бейнелері бар Coursera курсы түрінде қол жетімді.
Қарапайымдылық пен ұйымшылдыққа ұмтыла отырып, Nand2Tetris тереңдіктен бас тартады. Атап айтқанда, қазіргі уақыттағы компьютерлік архитектурадағы өте маңызды екі ұғым-бұл құбырлар мен жад иерархиясы, бірақ екеуі де мәтінде жоқ.
Nand2tetris-ты оқуға ыңғайлы болғаннан кейін, біз сізге CS:APP материалына қайта оралуды немесе Паттерсон мен Хеннессидің Computer Organization and Design, тамаша және қазіргі уакытта классикалық мәтінің ұсынамыз. Кітаптың әрбір бөлімі маңызды емес; сонымен қатар нақты оқулар үшін біз Берклидің "Компьютер Архитектурасындағы Тамаша Идеялар" CS61C курсын ұсынамыз. Дәріс жазбалары мен зертханалар онлайн режимінде қол жетімді, ал өткен дәрістерді Internet Archive сайтында табуға болады.
I have only one method that I recommend extensively—it’s called think before you write.
- Richard Hamming
Алгоритмдермен және деректер түрлерімен танысу - информатика саласындағы білім берудің ең шабыттандыратын аспектілерінің бірі болып табылатындығына келісеміз. Бұл сонымен қатар оқудың кез келген басқа саласында жалпы мәселелерді шешу қабілеттерін үйрету үшін тамаша пән болып келеді.
Осы пәнге байланысты жүздеген кітаптар бар, бірақ біздің сүйіктіміз Стивен Скиенаның The Algorithm Design Manual кітабы. Ол алгоритмдік есептерді шешуді жақсы көретіні анық және әдетте студенттері мен оқырмандары арасында осындай ынта-жігерді оята алады. Біздің ойымызша, жиі ұсынылатын екі мәтін (CLRS және Sedgewick), ең алдымен, практикалық мәселелерді шешуге көмектесу үшін материалды меңгергендер үшін тым көп дәлелдерге ие.
Бейне дәрістерді қалайтындар үшін Скиена өзінің бейне-көріністерін жүктейді. Біз cондай-ақ Тим Рафгарденнің Coursera-да қол жетімді курсын жақсы көреміз және басқа жерде. Сіз Скиена немесе Рафгарденнің дәрістерінің стилін қалайсыз ба, бұл жеке қалауыңызға байланысты болады. Шынымен айтқанда, ғаламторда ондаған жақсы балама нұсқалар бар, сондықтан егер сіз өзіңізге ұнайтын басқа нұсқаны тапсаңыз, біз сізге оны ұстануға кеңес береміз!
Тәжірибе үшін біз студенттерге Leetcode бойынша есептерді шешуге кеңес береміз. Бұл, әдетте, лайықты ілеспе шешімдері бар қызықты есептер. Олар сондай-ақ бәсекеге қабілетті бағдарламалар жасайтын компанияларда техникалық сұхбаттарда жиі қолданылады. Біз сіздің оқуыңыздың бір бөлігі ретінде 100-ге жуық кездейсоқ leetcode есептерін шешуді ұсынамыз.
Соңында, біз How to Solve It есептерді шешуге арналған тамаша және бірегей нұсқаулық ретінде ұсына аламыз; ол математика сияқты информатикаға да қатысты.
If people do not believe that mathematics is simple, it is only because they do not realize how complicated life is.
- Джон фон Нейман
Белгілі бір мағынада информатика математиканың өсіп келе жатқан саласы болып табылады. Көптеген бағдарлама жасайтын инженерлер мұны елемеуге тырысса да, біз сізге оны тікелей оқу арқылы қабылдауға кеңес береміз. Мұны үйрені сізге жасамайтындарға қарағанда үлкен бәсекелестік артықшылық береді.
CS үшін математиканың ең өзекті саласы "дискретті математика" болады, мұнда "дискретті" "үздіксіз" сөзіне қарама-қарсы және математикадан тыс қызықты тақырыптардың жиынтығы болып табылады. Given the vague definition, it’s not meaningful to try to cover the entire breadth of “discrete mathematics”. Неғұрлым нақты логика, комбинаторика, ықтималдық, жиынтық, графиктер және сандар теориясы мен оған байланысты криптографияны оқып, олардың түсінігін қалыптастыру шынайы мақсат болып келеді. Сызықтық алгебра компьютерлік графика мен машиналық оқытудағы маңыздылығын ескере отырып, қосымша құнды зерттеу саласы болып табылады.
Дискретті математиканы зерттеуге ұсынылатын бастапқы нүкте - ол Ласло Ловаштың дәріс жазбалар жиынтығы. Профессор Ловас мазмұнды қол жетімді және интуитивті ету үшін жақсы жұмыс жасады, сондықтан бұл ресми мәтіндерге қарағанда жақсы бастама ретінде қызмет етеді.
Жетілдірілген оқу үшін біз Mathematics for Computer Science, MIT курсына арналған кітап көлеміндегі дәріс жазбаларды ұсынамыз. Бұл курстың бейне дәрістері де ашық, және біз дискретті математикаға арналған бейне дәрістерді көруге ұсынамыз.
Сызықтық алгебра үшін біз Essence of linear algebra бейне-дәрестерден бастап, одан кейін Гилберт Странгтың кітабің және бейне дәрістерің ұсынамыз.
- Operating System Concepts* ("Динозаврлар кітабы") және Modern Operating Systems операциялық жүйелер туралы "классикалық" кітаптар. Екеуі де айқындықтың жоқтығы үшін сынға ұшырады.
Operating Systems: Three Easy Pieces - бұл интернетте еркін қол жетімді жақсы балама. бізге кітаптың құрылымы мен оқылымдылығы ерекше ұнайды және жаттығулардың пайдалы екеніне сезінеміз.
OSTEP-тен кейін [Lion's commentary on Unix] сияқты "{OS name} Internals" стиліндегі кітаптар арқылы белгілі бір операциялық жүйелердің дизайн шешімдерін зерттеуге шақырамыз. (https://www.amazon.com/Lions-Commentary-Unix-John/dp/1573980137/), The Design and Implementation of the FreeBSD Operating System, және Mac OS X Internals. Linux үшін Біз Роберт Лавтың Linux Kernel Development фантастикалық нұсқасын ұсынамыз.
Операциялық жүйелер туралы түсінігіңізді нығайтудың тамаша тәсілі-шағын ядроның кодын оқып, мүмкіндіктерді қосу. Варианттардың бірі ол - xv6, порты Unix v6 ДЕЙІН ANSI C ЖӘНЕ x86, MIT курсы үшін сақталған. OSTEP has an appendix of potential xv6 labs full of great ideas for potential projects.
You can’t gaze in the crystal ball and see the future. What the Internet is going to be in the future is what society makes it.
- Bob Kahn
Бағдарламардың көп бөлігі веб-серверлер мен клиенттерде болатынын ескерсек, информатиканың бірден-бір құнды салаларының бірі бұл компьютерлік желілер. Желілік байланысты әдістемелік тұрғыдан зерттейтін біздің өзін-өзі оқытатын студенттеріміз көптеген жылдар бойы қоршалған терминдерді, тұжырымдамаларды және хаттамаларды түсінетіндіктерін анықтайды.
Тақырып бойынша біздің сүйікті кітабымыз Computer Networking: A Top-Down Approach. Осы кітаптағы шағын жобалар мен жаттығуларды орындауға қажет деп ойлаймыз және бізге әсіресе олардың Wireshark зертханалары ұнайды.
Бейне дәрістерді ұнататындар үшін біз Стэнфордтың Introduction to Computer Networking курсын ұсынамыз. Олар Стэнфордтың LAGUNITA MOOC платформасында қол жетімді болған, бірақ, өкінішке орай, қазір тек youtube-та бейне-материалдар ретінде қол жетімді.
Дерекқор жүйелері туралы өз бетінше үйреніп алу басқа тақырыптарға қарағанда көбірек жұмыс қажет етеді. Бұл сала салыстырмалы түрде жаңа (яғни 1970-ші жылдардан кейінгі) күшті коммерциялық ынталандырулары бар зерттеу саласы. Сонымен қатар, көптеген оқулық авторлары компанияларға қосылуды немесе оларды ашуды осы салада жөн көрді.
Бәрін ескере отырып, біз өз бетінше оқитындарды оқулықтардан аулақ болып және біріншіден CS 186 жазбаларынан Джо Хеллерштейннің Берклидегі мәліметтерін оқып бастауға шақырамыз. Содан кейін оқу кітаптарға оқуға көшуге ұсынамыз.
Жаңа студенттер үшін ерекше атап өтуге тұрарлық ақпарат - "Architecture of a Database System", бұл реляциялық дерекқорды басқару жүйелерінің (RDBMS) қалай жұмыс істейтіні туралы жоғары деңгейлі көріністі бірегей түрде қамтамасыз етеді. Бұл әрі қарай зерттеу үшін пайдалы мәлемет болып келеді.
Readings in Database Systems, жақсырақ "Қызыл Кітап" дерекқорлары ретінде белгілі, Питер Бэйлис, Джо Хеллерштейн және Майкл Стоунбрейкер құрастырған және өңдеген мақалалар жинағы. CS 186 мазмұнының деңгейінен асып кеткендер үшін Қызыл Кітап сіздің келесі аялдамаңыз болуы керек.
Егер сіз мәтіндік ақпаратты қолдануға табанды болсаңыз, біз Рамакришнанның және Геркенің Database Management Systems ұсынамыз. Озық студенттер үшін джим Грейдің Transaction Processing: Concepts and Techniques классикасын ұсынамыз, бірақ біз оны бірінші ресурс ретінде пайдалануды ұсынбаймыз.
Сонымен, деректерді модельдеу-бұл мәліметтер базасымен жұмыс істеудің ескерілмеген және нашар оқытылатын аспектісі. Осы тақырып бойынша біздің ұсынылған кітабымыз: Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World..
Don’t be a boilerplate programmer. Instead, build tools for users and other programmers. Take historical note of textile and steel industries: do you want to build machines and tools, or do you want to operate those machines?
- Ras Bodik at the start of his compilers course
Бағдарламашылардың көпшілігі тілдерді үйренеді, ал информатиктердің көпшілігі тілдер туралы үйренеді. Бұл информатикке бағдарламалаушыдан, тіпті бағдарламалау саласында да айқын артықшылық береді! Олардың білімі жалпыланады; олар белгілі бір тілдерді жаңа ғана меңгергендерге қарағанда жаңа тілдің әрекетін тереңірек және жылдамырақ түсіне алады.
Біздің кіріспе ретінде ұсынылған Боб Нистромның Crafting Interpreters ұсынысымыз өте жақсы және де ғаламторда тегін қол жетімді. Бұл жақсы ұйымдастырылған, өте қызықты және негізгі мақсаты өз тілдері мен тілдік құралдарын жақсырақ түсіну үшін өте қолайлы. Біз осы материалға уақыт бөлуді, сізді қызықтыратын кез келген "қиындықтарды" шешуге тырысуды ұсынамыз.
Келесі дәстүрлі ұсыныс-бұл Compilers: Principles, Techniques & Tools, әдетте "Айдаһар Кітабы" деп аталады. Өкінішке орай, ол өз бетінше оқуға арналмаған, керісінше нұсқаушыларға өз курстары үшін 1-2 семестрлік тақырыптарды таңдауға мүмкіндік береді.
Егер Сіз "Айдаһар Кітабын" пайдалануды шешсеңіз, тақырыптарды мұқият таңдау өте маңызды, ең дұрысы тәлімгердің көмегімен. Шын мәнінде, Айдаһар Кітабын пайдаланудың ұсынылған тәсілі, егер сіз қаласаңыз, бейне дәрістер сериясына қосымша сілтеме ретінде. Біздің ұсынысымыз - Алекс Айкеннің edX-тегі жұмысы.
Компьютерлер саны көбейген сайын олар да таралды. Бұрын кәсіпорындар үлкенірек және үлкенірек машиналарды сатып алатын болса, қазір тіпті өте кішкентай қолданбалардың бірнеше машиналарда жұмыс істеуі әдеттегідей. Таратылған жүйелер - бұл осыған байланысты артықшылар және кемшіліктер туралы қалай ойлау керектігін зерттеу.
Өзін-өзі зерттеуге арналған біздің ұсынылған кітабымыз - Мартин Клеппманның Designing Data-Intensive Applications кітабы. Дәстүрлі оқулықтан әлдеқайда жақсы, DDIA - бұл тәжірибешілерге арналған кітап.
Дәстүрлі мәтінді іздейтіндер немесе онлайн режимінде тегін қол жетімді мәтінді қалайтындар үшін біз Мартен ван Стин мен Эндрю Таненбаумның Distributed Systems, 3rd Edition мәтінін ұсынамыз.
Бейнені ұнататындар үшін интернетте қол жетімді бейнелері бар MIT's 6.824 тамаша курсы және Роберт Моррис оқытатын магистратура курсы мұнда бар.
Оқулықты немесе басқа қосымша ресурстарды таңдауға қарамастан, үлестірілген жүйелерді зерттеу міндетті түрде қағаз оқуды міндеттейді. Жақсы тізім мұнда, және біз сізге Papers We Love көруді ұсынамыз.
Біз сізді өзін-өзі оқытатын инженер-бағдарламашы, bootcamp түлегі немесе мерзімінен бұрын орта мектеп оқушысы немесе формалды біліміңізді кейбір өзін-өзі оқытумен толықтырғысы келетін колледж студенті деп айтамыз. Бұл саяхатты қашан бастау туралы сұрақ толығымен жеке болып табылады, бірақ көптеген адамдар CS теориясына тереңнен батпастан бұрын кейбір кәсіби тәжірибеден пайда көреді. Мысалы, студенттер дерекқор жүйелерін * үйренуді ұнататынын байқаймыз, егер олар дерекқорлармен кәсіби түрде жұмыс істесе, немесе компьютерлік желілер, егер олар веб-жобамен немесе екеуімен жұмыс істесе.
Біз өз тізімімізді информатика тақырыптарымен шектеуге тырыстық, біздің ойымызша, мамандығына немесе саласына қарамастан, бірақ жүйелерге назар аудара отырып, әрбір тәжірибелі инженер-бағдарламашы білуі тиіс. Біздің тәжірибеміз бойынша, бұл өзін-өзі оқытатын инженерлер мен bootcamp түлектерінің басым көпшілігі үшін ең жоғары ROI тақырыптары болады және олар одан әрі зерттеу үшін берік негіз қамтамасыз етеді. Кейіннен сіз оқулықтарды немесе құжаттарды алып, ерекше басшылықсыз негізгі тұжырымдамаларды зерделеу үшін әлдеқайда жақсы жағдайда боласыз. Жалпы “факультативтер“ жұбы үшін біздің ұсынылатын бастапқы нүктелеріміз:
- Жасанды интеллект үшін: Беркли AI курсына кіріспе жасау, бейнені қарап және Pacman тамаша жобаларын аяқтау. Оқулық ретінде Рассел мен Норвиг кітабын пайдаланыңыз Жасанды интеллект: заманауи тәсіл.
- Машина оқыту үшін: Эндрю Нг Coursera курсын жасау. Шыдамды болыңыз және терең оқыту сияқты жарқын жаңа тақырыптарға көшуден бұрын негіздерді түсінетініңізге көз жеткізіңіз.
- Компьютерлік графика үшін: Беркли CS 184 арқылы жұмыс істеу және Компьютерлік графика: Қағидаттар мен практика оқулық ретінде пайдалану.
Шын мәнінде, бұл заттардың барлығы біршама сәйкес келеді және бір-біріне циклдік түрде қарайды. Мысалы, дискретті математика мен алгоритмдердің өзара байланысын алайық: математиканы үйрену ең алдымен сіздің алгоритмдеріңізді терең талдауға және түсінуге көмектеседі, бірақ оқыту алгоритмдері ең алдымен дискретті математика үшін үлкен уәждеме мен контекстті қамтамасыз етеді. Ең дұрысы, сіз осы тақырыптардың екеуін де мансабыңыз бойы бірнеше рет қараған болар едіңіз.
Осылайша, біздің ұсынылатын тізбектер негізінен сізге көмектесу үшін бар жай ғана бастау үшін... егер сізде басқа бірізділікті таңдауға дәлелді себеп болса, онда соған барыңыз. Біздің ойымызша, неғұрлым маңызды «алғышарттар» мыналар болып табылады: операциялық жүйелердің немесе деректер базасының алдындағы компьютердің архитектурасы және бөлінген жүйелердің алдындағы желілік және операциялық жүйелер.
Бұл нұсқау 2016 жылы алғаш рет жазылғанда, Open Source Society нұсқауында заттар тым көп болды, олардың көбі үшін нашар ресурстар ұсынылды, сондай-ақ нақты курстардың қандай аспектілері құнды екендігіне қатысты ешқандай негіздеме немесе ұсыныстар болған жоқ. Біз сіздің мамандығыңызға қарамастан, бағдарламалық жасақтама инженері ретінде шынымен білуге тиіс курстардың тізімін шектеуге және әрбір курстың неге қосылғанын түсінуге көмектесуге тырыстық. Келесі жылдары Open Source Society жөніндегі нұсқау жақсарды, бірақ біз әлі де бұл анағұрлым нақты және біріктірілген жолды қамтамасыз етеді деп есептейміз.
freeCodeCamp негізінен компьютерлік ғылымға емес, бағдарламалауға бағытталған. Неге информатиканы үйренгіңіз келетіні туралы жоғарыдағы қараңыз. Егер сіз бағдарламалауда жаңа болсаңыз, біз басымдықтарды белгілеп, бір-екі жылдан кейін осы нұсқауға оралуды ұсынамыз.
Бағдарламалаудың нақты тілін үйрену компьютерлік ғылым саласын үйренуден мүлде басқаша жоспарда тұр - тілді үйрену әлдеқайда оңай және әлдеқайда арзан. Егер сіз бірнеше тілді білсеңіз, біз тек қана біздің нұсқаулықты ұстанып, тілді үйренуді бос орындарға енгізуді немесе кейінге қалдыруды ұсынамыз. Егер сіз бағдарламалауды жақсы меңгерген болсаңыз (мысалы, компьютерлік бағдарламалардың құрылымы мен интерпретациясы арқылы), және әсіресе компиляторларды білсеңіз, бұл жаңа тілдің негіздерін үйрену үшін демалыс күндерінен сәл артық уақытты алуы тиіс, содан кейін сіз кітапханалар/құралдар/жұмыстағы экожүйе туралы біле аласыз.
Ешбір технология оны пайдалануға үйрету сіздің біліміңіздің негізгі бөлігіне айналатындай маңызды болып табылмайды. Екінші жағынан, бұл туралы білгеніңізге қуаныштымын. Қулық - нақты технологиядан негізгі салаға немесе тұжырымдамаға кері бағытта жұмыс істеу және сән технологиясының жалпы картинаға қалай сәйкес келетінін көруден бұрын оны терең білу.
Тыңдап көр. Кейбіреулер SICP-ті ақыл-ой, мінездеме деп табады. Егер бұл сізге ұнамайтын болса, сіз әрқашан басқа нәрсені байқап көре аласыз және кейінірек SICP-ге орала аласыз.
Айдаһар кітабы бұрынғысынша компиляторлар үшін ең толық бірыңғай ресурс болып табылады. Ол нашар рэп алады, әдетте, белгілі бір тақырыптарды қайта бағалағаны үшін, оларды қазіргі уақытта парсинг сияқты толық жариялау сәнді емес. Мәселе мынада, кітап ешқашан оқуға арналмаған, тек нұсқаушыға курсты құруға жеткілікті материал беру үшін ғана. Сол сияқты өзін-өзі үйренуші кітап арқылы өз оқиғасын таңдай алады немесе одан да жақсысы, курс оқытушыларының өздерінің курстық нобайларына енгізген ұсыныстарын қолдана алады.
Біз ұсынып отырған көптеген оқулықтар олардың авторларының кең пейілінің арқасында Интернетте еркін қолжетімді. Мұны жасамайтындар үшін біз ескі басылымдардың қолданылған көшірмелерін сатып алуды ұсынамыз. Әдетте, егер оқулықтың бірнеше басылымы көп болса, ескі басылым өте ыңғайлы болуы әбден мүмкін. Әрине, бағадағы айырмашылық болса да, жаңа нұсқаның ескіге қарағанда 10 есе жақсы болуы екіталай!
Бұл нұсқаулық бастапқыда Оз Нова және Майлс Бирн жазылған, Оз. Ол Сан-Францискода шағын топтық жағдайларда 1000-нан астам инженер-өзін-өзі оқытушылар мен bootcamp түлектерін іргелі информатикаға оқыту тәжірибесіне негізделген және онлайн режимінде өмір сүреді. Барлық студенттерімізге өз бетінше оқуға арналған ресурстар туралы тұрақты пікірлеріңіз үшін рахмет.
Уақыт пен уәждемені ескере отырып, сіз өзіңізді жоғарыдан үйрете аласыз деп сенеміз. Бірақ егер сіз нұсқаушының басшылығымен қарқынды, құрылымдалған бағдарламаны қаласаңыз, біздің Интенсивті компьютерлік ғылым сізді қызықтыруы мүмкін. Біз магистр дәрежесін алуды ҰСЫНАМЫЗ.
Осы нұсқаулықтың жаңартуларын және компьютерлік ғылымның жаңалықтары мен ресурстарын алу үшін Bradfield тарату тізіміне қосыла аласыз: [жазылу үшін https://teachyourselfcs.com/ кіріңіз]