Kompüter Elmləri və Proqram Təminatı Mühəndisliyi: Hansı əsas sizin üçün ən yaxşısıdır?

Stress etməyin, hamısı məna verəcəkdir

Hər kəsə salam! Adım YK-dir və mən hazırda 200,000+ abunəçisi olan bir proqramlaşdırma təhsili YouTube kanalı olan CS Dojo-nu çalışıram. Mən əvvəllər də Google-da bir proqram tərtibatçısı idim.

İzləyicilərimdən ən çox verilən suallardan ikisi bunlardır:

"Kompüter elmləri və proqram mühəndisliyi ixtisasları arasında fərq nədir?"

Və:

"Bir proqram mühəndisi olmaq istəyirsinizsə, kompüter elmləri və ya proqram mühəndisliyi seçməliyəm?"

Bu yazıda bu suallara cavab verəcəm və bu iki ixtisas üzrə öz tez təhlilimi verəcəyəm.

Bu iki əsasın qısa icmalı

  • Kompüter Elmləri, əsasən nəzəri və riyazi baxımdan kompüterlərin necə işlədiyini araşdırır.
  • Riyaziyyat, məntiq sevirsinizsə və ya CS-də süni intellekt, maşın öyrənməsi, təhlükəsizlik və ya qrafika kimi ixtisaslaşmış bir sahəyə daxil olmaq istəyirsinizsə kompüter elmlərini seçməlisiniz.
  • Proqram mühəndisliyi proqram sistemlərinin necə qurulduğunu, o cümlədən layihənin idarə edilməsi, keyfiyyətə zəmanət və proqram sınağı kimi mövzuların öyrənilməsidir.
  • Tətbiq olunan bir yanaşma ilə maraqlanırsınızsa, proqram mühəndisliyini seçməlisiniz və proqramın necə qurulduğunu və saxlanıldığını öyrənmək istəyirsiniz.
  • Həm kompüter elmləri, həm də proqram mühəndisliyi proqramlaşdırma və kompüter elmlərinin əsaslarını öyrədir, buna görə də proqram təminatçısı olmaq üçün birini seçə bilərsiniz.

Kompüter elmləri və proqram mühəndisliyi ixtisasları arasındakı fərqi anlamaq üçün, Şimali Amerikada ən yaxşı kompüter elmləri proqramlarından biri olan Kanadadakı Waterloo Universitetindəki müvafiq tədris planlarına nəzər salaq.

İş perspektivləri

Hər proqramdan keçə biləcəyiniz iş və təcrübə növlərini müqayisə edək. Waterloo Universitetinin veb saytı bir neçə nümunə təqdim edir.

İş yerləri və kompüter elmləri məzunlarının şirkətlərindən bəziləri:

  • Veb Tərtibatçısı / Memar, Steele Qrupu
  • Proqramçı, Harry Rosen Inc.
  • Mobil / Bulud Geliştiricisi, Clearbridge Associates Limited
  • Proqram Mühəndisliyi, General Dynamics Canada
  • Proqram İnkişafı Mühəndisliyi, Microsoft
  • Çevik Mühəndis, Kütləvi Laboratoriyalar
  • Biznes analitiki, Kanadalı Şin Korporasiyası
  • İnkişafçı vəkil, Google
  • Məhsul meneceri, Dropbox

Və proqram mühəndisliyi məzunlarının bəzi iş adları və şirkətləri:

  • Proqram İnkişafı, Tagged Inc
  • Proqram təminatçısı, IBM Kanada
  • Proqram meneceri, Arius Software Corporation
  • Proqram Mühəndisi, VistaPrint USA
  • Proqram Mühəndisi, Harris Corporation
  • Proqram təminatçısı, Accenture Inc.
  • Texniki məhsul meneceri - Proqram Dizayn və İnkişafı, NexJ Systems Inc
  • Məsləhətçi, PureFacts Maliyyə Həllləri
  • İcra Məsləhətçisi, Desire2Learn

Gördüyünüz kimi, əldə edə biləcəyiniz iş növləri arasında böyük bir fərq yoxdur. Məzunların hər iki ixtisası üçün aldıqları ən çox iş proqram təminatçısı və ya proqram mühəndisidir.

Digər əlaqəli variantlar var: məhsul meneceri, QA analitiki və texnologiya məsləhətçisi. Seçimləriniz xüsusi bacarıq dəstinizdən asılı olacaq.

Birinci kurslar

İndi hər bir proqramın tələb olunan kurslarına nəzər salaq. Əvvəlcə birinci ilinizdə etməli olduğunuz bəzi kursları müqayisə edək.

Kompyuter elmləri

  • CS 135 - Funksional proqramların tərtibatı
  • CS 136 - Alqoritm Dizayn və Məlumat Abstraksiyası
  • MATH 135 - Cəbr
  • MATH 136 - Xətti Cəbr 1
  • MATH 137 - Hesablama 1
  • MATH 138 - Hesablama 2
  • Üstəlik bir neçə seçmə

Proqram mühəndisliyi

  • CS 137 - Proqramlaşdırma prinsipləri
  • CS 138 - Məlumatların alınması və tətbiqi
  • MATH 115 - Mühəndislik üçün xətti cəbr
  • MATH 117 - Mühəndislik üçün hesablama 1
  • MATH 119 - Mühəndislik üçün hesablama 2
  • MATH 135 - Fəxri Riyaziyyat üçün cəbr
  • ECE 105 - Elektrik Mühəndisliyi Fiziki 1
  • ECE 106 - Elektrik və Maqnetizm
  • ECE 124 - Rəqəmsal Dövrlər və Sistemlər
  • ECE 140 - Xətti Dövrlər
  • SE 101 - Proqram mühəndisliyi metodları

Gördüyünüz kimi birinci kurs kursları da kifayət qədər oxşardır. Hər ikisi bir neçə fundamental kompüter elmləri kursunu və xətti cəbr və hesablama üzrə bir neçə riyaziyyat kursunu əhatə edir.

Yeganə böyük fərq proqram mühəndisliyinin əlavə fizika və elektrik mühəndisliyi komponentlərinə sahib olmasıdır, kompüter elmində isə daha bir neçə seçmə var.

Birinci kursdan sonra kurslar

Birinci kursdan sonra tələb olunan və seçmə kursları necə olacaq? Bir neçə nümunəyə nəzər salaq.

Kompyuter elmləri

  • MATH 239 Kombinatorikaya giriş
  • STAT 230 Ehtimal
  • STAT 231 Statistika
  • CS 240 Məlumat Strukturları və Məlumat İdarəetmə
  • CS 241 ardıcıl proqramların təməlləri
  • CS 245 Məntiq və Hesablama
  • CS 246 Obyekt yönümlü Proqram İnkişafı <- Proqram Mühəndisliyi ixtisasları üçün tələb olunmur
  • CS 251 Kompüter Təşkilatı və Dizayn
  • CS 341 alqoritmləri
  • CS 350 Əməliyyat Sistemləri
  • Üstəlik, bir neçə Kompüter Elmi seçimi

Proqram mühəndisliyi:

  • CHE 102 Mühəndislər üçün Kimya
  • ECE 222 Rəqəmsal Kompüterlər (montaj dili daxildir)
  • ECE 358 Kompüter Şəbəkələri
  • Proqram Mühəndisləri üçün MATH 213 Ətraflı Riyaziyyat
  • MATH 239 Kombinatorikaya giriş
  • Proqram mühəndisliyi üçün STAT 206 statistikası
  • MSCI 261 Mühəndislik İqtisadiyyatı: Mühəndislər üçün maliyyə idarəetməsi
  • CS 241 ardıcıl proqramların təməlləri
  • CS 240 Məlumat Strukturları və Məlumat İdarəetmə
  • CS 247 Proqram Mühəndisliyi Prinsipləri <- Kompüter Elmləri ixtisasları üçün tələb olunmur
  • CS 341 alqoritmləri
  • CS 349 istifadəçi interfeysi <- Kompüter elmləri ixtisasları üçün tələb olunmur
  • CS 343 Paralel və Paralel Proqramlaşdırma <- Kompüter Elmləri ixtisasları üçün tələb olunmur
  • CS 348 Verilənlər bazasının idarə edilməsinə giriş
  • SE 212 Məntiq və Hesablama
  • SE 350 Əməliyyat Sistemləri
  • SE 465 Proqram Təminatı və Keyfiyyət Zəmanəti
  • SE 464 Proqram Dizayn və Memarlıq
  • SE 463 Proqram Tələbləri Xüsusiyyətləri və Təhlili
  • SE 490 Dizayn Layihəsi
  • Üstəlik, bir neçə kompüter elmi və elektrik mühəndisliyi seçimi

Burada həzm etmək üçün çox məlumat verdim. Ancaq mənim xülasəm budur

Riyaziyyat və statistika sahəsindəki tələblərə gəldikdə, kompüter elmləri və proqram mühəndisliyi demək olar ki, eynidır. Bunlar kombinatorika, ehtimal və statistikanı əhatə edir.

Əsas kompüter elmləri tələbləri alqoritmlər, məlumat quruluşları və əməliyyat sistemlərinə görə oxşardır.

Ancaq bəzi əsas fərqlər var:

  • Proqram mühəndisliyi, elektrik mühəndisliyi və proqram mühəndisliyi əsaslarına, məsələn, proqram təminatı, dizayn və proqram tələblərinin spesifikasiyası baxımından daha çox tələblərə malikdir.
  • Kompüter Elmləri, daha yüksək səviyyəli kompüter elmləri kurslarında daha çox seçmə imkan verir. Təhlükəsizlik, proqram mühəndisliyi əsasları, kompüter görmə, maşın öyrənmə və verilənlər bazası idarəetməsi kimi geniş mövzulardan birini seçə bilərsiniz.

Beləliklə, hansını seçməlisiniz?

Düşünürəm ki, əsasən seçimlərinizdən asılıdır:

  • Riyaziyyat, məntiq sevirsinizsə və ya süni intellekt, maşın öyrənməsi, təhlükəsizlik və ya qrafika kimi ixtisaslaşmış bir sahəyə girmək istəyirsinizsə kompüter bilgiləri seçməlisiniz.
  • Tətbiq olunan yanaşma ilə daha çox maraqlanırsınızsa və proqramın necə qurulduğunu və saxlanılmasının ümumi ömrünü öyrənmək istəyirsinizsə proqram mühəndisliyini seçməlisiniz.

Ancaq gözləyin - bundan sonra nədir? Bir proqram mühəndisi olmaq istəyirsinizsə, hansı ixtisas daha yaxşıdır?

Bu fikrim budur: Bu xüsusi bir universitetdə (Waterloo Universiteti), bu proqram tələblərinə uyğun olaraq, bir proqram mühəndisi olmaq istəyirsinizsə Kompüter Elmləri daha yaxşı bir ixtisasdır.

Sadəlik üçün, deyək ki, Şimali Amerikada bir proqram mühəndisi olaraq ən yüksək maaş alan işlərdən (~ $ 100,000 USD / year) almağa ümid edirsiniz. Bu işlər, adətən, böyük proqram şirkətlərində (Microsoft, Google, Amazon və s.) Və ya orta ölçülü, yüksək inkişaf edən şirkətlərdə (düşünün Dropbox, Lyft, Snapchat, Pinterest və s.) Olur.

Tipik olaraq, bir proqram mühəndisi namizədində nə axtardıqları, möhkəm kod yazmaq və maraqlı layihələr qurmaq bacarığı, həmçinin məlumat strukturları və alqoritmlər kimi kompüter elmləri əsaslarıdır.

Düşünürəm ki, bu bacarıq dəstini inkişaf etdirməyin ən yaxşı yolu kompüter elminin əsaslarını tez öyrənmək və problemlərin həllinə və kod yazmaq üçün vaxtınızı sərf etməkdir.

Proqram mühəndisliyi üzrə tədris planına və mühəndislik tələbələri nə qədər məşğul olmağa əsaslanaraq düşünürəm ki, bunu kompüter mühəndisliyi ilə proqram mühəndisliyi ilə etmək daha çətindir.

Bu kompüter elmləri proqramının digər bir faydası daha çox kompüter elmləri seçmə imkanlarının verilməsidir. Bu əladır, çünki iş bazarında tələb olunan şeylərə cavab olaraq kurslarınızı tənzimləyə bilərsiniz. Məsələn, mobil tətbiqetmənin inkişafı tələb olunursa, bunu öyrənə bilərsiniz; paralel hesablama tələb olunursa, bunun əvəzinə diqqət edə bilərsiniz.

Proqram mühəndisliyi əsaslarını (layihənin idarə edilməsi, dizaynı, testi və s.) Öyrənməyin bir sıra faydaları olduğuna əminəm. Ancaq şəxsən əvvəlcədən müəyyən edilmiş bacarıqlar dəsti üzərində rahatlıq götürərdim. Buna görə kompüter elmlərini bu xüsusi tədris proqramı ilə bir proqram mühəndisi olmaq üçün daha yaxşı bir ixtisas hesab edirəm.

Əlbəttə ki, bu sadəcə mənim fikrimdir və bu yalnız bir universitetdir. İstər kompüter elmləri, istərsə də proqram mühəndisliyi ixtisası üzrə təhsil alsanız, fikrinizi və təcrübənizin nə olduğunu öyrənmək istərdim. Xahiş edirəm mənə aşağıdakı şərhdə bildirin.

Bir neçə qeyd

Qeyd 1: Fərqli universitetlərin bu iki ixtisas üçün fərqli tələbləri var. Bu məqalə yaxşı bir başlanğıc nöqtəsi olmalıdır, amma iştirak etməkdə maraqlı olduğunuz universitetdəki proqram tələblərinə hələ də baxmalısınız.

Qeyd 2: Bəzi universitetlərdə bir proqram mühəndisliyi ixtisası belə yoxdur. Məsələn, Vankuverdəki British Columbia Universitetində kompüter elmləri və kompüter mühəndisliyi dərəcələri var, lakin proqram mühəndisliyi deyil. Lakin kompüter mühəndisliyi proqramı daxilində bir proqram mühəndisliyi konsentrasiyasına sahibdirlər.

Getmək istədiyiniz universitetdə bir proqram mühəndisliyi ixtisası yoxdursa, bir proqram tərtibçisi olmaq istəyirsinizsə kompüter bilgisi ilə gedərdim. Kompüter mühəndisliyi kompüter elmindən və ya proqram mühəndisliyindən daha çox aparata yönəldilmişdir, buna görə adi bir proqram təminatçısının işi ilə daha az birbaşa əlaqəlidir.

Mənbələr

  • Waterloo-da Kompüter Elmləri
  • Waterloo-da proqram mühəndisliyi

Oxuduğunuz üçün təşəkkür edirəm və bir universitet və magistratura seçimində uğurlar!