Здравей, Хабр!
На кого да се учите? Да изберете компютърни науки или да усвоите умения в софтуерното инженерство? Тези въпроси са много актуални в нашето време.
А какво ще изберете вие?
Хората, които току-що започват пътя си в ИТ сферата и планират да кандидатстват в техническо висше учебно заведение или просто търсят обучителни програми по програмиране, често се сблъскват с огромно количество направления. Същността е, че по тези направления предметите са сходни, особено през първите две години.
За по-голяма яснота, нека разделим всички направления на два лагера - това са компютърните науки и софтуерното инженерство. Основната разлика е, че първото направление е по-гъвкаво и включва по-добро изучаване на фундаментални неща, докато второто е насочено към по-практически умения за създаване на софтуер за пазара. Каквото и направление да изберете, в крайна сметка ще станете програмист. Вероятно ще започнете работа след или по време на обучението, а секторът на разработка, в който ще попаднете и за какво ще можете да се кандидатирате, ще зависи от избраното направление.
В двата лагера в първите 2-4 семестъра се изучават сходни предмети, като линейна алгебра, математически анализ, дискретна математика и диференциални уравнения. Обикновено всеки от лагерите изучава тази математика, но в компютърните науки се добавя по един курс по дискретна математика и диференциални уравнения. Общото за всички направления е въведението в общите компютърни науки, а именно тук започват разликите. В направление компютърни науки се разглеждат архитектурата на ЕВМ, теорията на изчисленията, структурата на данните и тяхното анализиране, как работят програмите и как могат да се пишат, използвайки класически конструкции, операционни системи, компилатори и така нататък. Тоест, тук се обхваща по-широк фундамент. От своя страна, в софтуерното инженерство се разглеждат концепции за ООП дизайн, тестване на софтуер, основи на операционните системи и така нататък. С други думи, обхваща се изучаването на техники, за да може студентът да научи как да използва готови решения и с тях да решава различни бизнес задачи. Обикновено всичко това се изучава през първата година на обучението.
След това, вече на 2-ри курс и в двете направления започват да изучават предмети като архитектура на компютърни системи и устройството на операционни системи, но Software Engineering изучава тези предмети по-повърхностно. Това е свързано с факта, че там подготвят хора, които ще имат малко общо с тези предмети. От 2-ри курс нататък, в Computer Science се набляга повече на устройството на микроархитектурите и ядрото на операционните системи, а в разработката на софтуер акцентът е поставен върху потребителските интерфейси, тестването, анализа на софтуера, различни управленски методи и т.н. По-специално ООП се изучава в двете направления дълбочинно, тъй като тази парадигма на програмиране е много популярна в наши дни и просто трябва да се знае.
На 3-ти курс обучението в Computer Science е посветено на изучаване на комбинаторика, криптография, изкуствен интелект, основи на разработка на софтуер, 3D графика и теория на компилаторите. А в Software Engineering изучават системна сигурност, мрежи и интернет, управление на софтуер и управление в общ план. Въпреки това, в зависимост от университета, предметите и задълбочаването в тях могат да варират.
Вероятно най-важният въпрос на тази статия остава въпросът накъде е най-добре да се тръгне. Тук всичко зависи от вашите предпочитания. Ако искате да бъдете много гъвкав и универсален инженер, тогава трябва да изберете Computer Science. А ако искате да свържете живота си с разработка на софтуер и да можете да създавате полезни програми за крайни потребители, то Software Engineering е точно за вас.

В заключение, искам да кажа, че в Computer Science ще ви научат да решавате проблеми и да измисляте елегантни начини за решаване на тези проблеми, а в Software Engineering от вас ще стане бизнес програмист, който може да управлява проекти, хора и да създава актуален софтуер.
Източник: habr.com
