Dalam posting sebelumnya, kami berbicara tentang apa yang siswa lakukan pada magang: ilmiah (misalnya, dalam JetBrains Research ) dan industri . Dalam posting ini kami ingin membagikan bagaimana kami mengajarkan pemrograman industri.

Secara singkat: dalam empat kursus, seorang mantan siswa mencoba selusin atau dua teknologi dan bahasa, terus-menerus menulis dan menghapus banyak kode, melewati ulasan kode dari kawan-kawan yang lebih berpengalaman (tidak selalu upaya pertama), menyelidiki beberapa topik dan akhirnya mempertahankan diploma yang bermakna. Semua ini terjadi tepat di universitas dan memberikan ijazah negara. Dan di musim panas Anda dapat bersantai atau magang di Rusia di JetBrains, Yandex, dan JetBrains Research (jika Anda menginginkan lebih banyak ilmu) atau pergi ke luar negeri (Google, Facebook, dan lainnya). Sekarang lebih detail.
Tentang diri saya
Nama saya Yegor Suvorov, saya belajar di Sekolah Tinggi Ekonomi, diinternir dengan Google (dua kali), Asana, GSA Capital, berhasil berpartisipasi dalam Olimpiade pemrograman internasional ( pelajar dan sekolah ). Tahun lalu saya lulus dari gelar sarjana di Universitas Akademik, jadi saya melewati hampir semua yang dijelaskan dalam posting. Saya juga berpartisipasi dalam pengembangan program pelatihan rekayasa perangkat lunak dan melakukan latihan praktis dalam beberapa mata pelajaran (Paradigma dan bahasa pemrograman, C ++).
Komponen utama
Dalam posting ini, kami hanya akan mempertimbangkan subdireksi "Pemrograman Industri". Meskipun kami masih memiliki "Pembelajaran Mesin", "Bahasa Pemrograman" dan beberapa lainnya, program-program dalam arah saling tumpang tindih, terutama dalam dua kursus pertama.
Pelatihan terdiri dari tiga bagian utama. Pertama saya akan memberikan gambaran umum, dan kemudian saya akan menceritakan lebih detail tentang setiap bagian.
- Item dasar . Sejak semester pertama, anak-anak belajar bekerja dengan tangan mereka. Setiap enam bulan, semua "programmer industri" harus lulus 2-4 mata pelajaran dasar (dan beberapa mata pelajaran diperlukan untuk sub-arahan lainnya). Tujuan: untuk memompa siswa dalam kurang lebih semua bidang pemrograman, sehingga Anda dapat berjalan melewati level abstraksi ke atas dan ke bawah. Mulai dari menulis mainan OS Anda dengan ruang pengguna di C dengan sejumput assembler (untuk yang paling gigih) dan baris perintah, kemudian melalui semantik bergerak di C ++ dan hingga monad transformer. Ini diperlukan untuk membentuk cakrawala dan pengalaman pemrograman yang berbeda. Kami mengajarkan tidak hanya bahasa: pemrograman paralel, jaringan, basis data juga. Dan, tentu saja, beberapa subjek bukan tentang kode, tetapi semuanya sama dalam hal ini: misalnya, Rekayasa Perangkat Lunak (kursus tinjauan: mengapa kita memerlukan tim / manajer / proyek dan manajemen risiko) dan desain antarmuka (jika tidak mereka akan berpikir bahwa “cetakan terpaku - mudah. ") Ada juga matematika dan algoritma, tetapi ini adalah topik untuk pos terpisah.
- Latihan semester . Mereka harus selesai tentu, mulai dari semester kedua. Tujuan: memberi siswa untuk mencoba melakukan hal-hal berbeda yang lebih besar dari pekerjaan rumah dan memahami apa yang lebih disukai. Pada awal semester, sebuah proyek adil diadakan di mana para pemimpin penelitian potensial berbicara tentang apa yang dapat Anda lakukan dengan mereka. Sebuah gelar untuk seorang pemimpin, bagaimanapun, adalah pilihan - yang jauh lebih penting adalah apa yang dapat diberikan oleh orang dan praktik tertentu kepada siswa. Dalam satu semester, Anda dapat membuat aplikasi desktop + seluler di Qt dan memahami cara bekerja secara umum pada satu proyek untuk seluruh semester tanpa persyaratan teknis yang jelas (dengan kesulitan). Hal berikutnya adalah mencoba Android dan merasa seperti "membuat klien yang dapat diandalkan untuk jejaring sosial" - ternyata sulit, bahkan jika fungsinya sangat terbatas. Di yang lain, cobalah membuat semacam alat pembelajaran mesin dengan Python dan sadari bahwa Anda sama sekali tidak ingin berurusan dengan topik ini. Di keempat - pergi untuk menyelesaikan kompiler Haskell, menjadi ngeri dan kembali ke C ++ sayang ke diploma. Atau sebaliknya. Tergantung pada siswa - ini adalah arti dari latihan. Sebagai hasilnya, siswa tersebut membentuk arahan favorit (di mana Anda dapat bekerja dan melakukan diploma), atau mengalami di banyak arah yang berbeda. Menang-menang pula. Ngomong-ngomong, jika Anda tidak menyukai salah satu proyek, Anda dapat membuat sendiri. Tetapi dalam kasus ini, pertama-tama Anda perlu menarik perhatian penasihat ilmiah atau menemukan seseorang dari luar, dan kemudian meyakinkan kami bahwa sesuatu yang bermakna dan terlindungi dapat keluar dari proyek.
- Item opsional . Muncul di tahun ketiga. Alasan: tidak semua orang ingin mempelajari kernel Linux, sama seperti tidak semua orang ingin mempelajari desain Scala Collections dengan banyak yang implisit. Sehingga Anda dapat memilih topik mana yang akan dibahas. Sebagai contoh, jika seorang siswa tidak suka jumlah cara untuk menembak lutut di plus, dia dapat mengambil kursus tentang virtualisasi wadah di Linux, menulis dalam C murni dan bahagia. Dan sebaliknya: jika "manual 64 pengembang arsitektur perangkat lunak Intel 64 dan IA-32 volume masih ada mimpi buruk, Anda dapat pergi ke dunia indah Scala dengan abstraksi unicorn. Dalam setiap modul (setengah semester), sekitar 4 program ditawarkan, dua di antaranya harus dipilih.
Selain itu, kami ingin siswa menikmati belajar. Kapan saja, Anda dapat mengobrol dengan manajer program dan mengusulkan peningkatan di bidang apa pun. Kami mengumpulkan umpan balik empat kali setahun dan - perhatian - memperhitungkannya dan terus meningkatkan program. Kami tidak secara khusus merekrut banyak siswa sehingga kami memiliki kesempatan untuk berbicara secara pribadi dengan semua orang. Ada 30 siswa di tahun kedua dan ketiga, dan di tahun keempat - 15.
Kami juga terus-menerus menciptakan atau mencari kursus baru atas permintaan siswa, mencari guru yang baik yang memahami subjek dan mampu mengajar. Jadi, dalam modul ini, hanya dalam beberapa minggu, kursus rekayasa balik eksperimental dari SPbCTF berhasil muncul. Dan jika Anda tidak dapat menemukan program studi yang cocok, Anda dapat, dengan persetujuan, melalui sesuatu yang bermakna dengan Pusat Ilmu Komputer , ShAD atau Coursera.
Item dasar
Mata pelajaran pemrograman dasar: C ++, sistem mirip Unix, paradigma dan bahasa pemrograman, arsitektur komputer, Java, sistem operasi, pemrograman fungsional, basis data, Desain Perangkat Lunak, Rekayasa Perangkat Lunak, pemrograman paralel, teknologi jaringan komputer, desain antarmuka, pengembangan ponsel.
Bersama-sama, mata pelajaran ini mencakup hampir semua tugas yang mungkin terjadi dalam pekerjaan. Mereka juga melindungi dari berbagai kesalahan "klasik", seperti membandingkan angka floating point dengan ==, harapan kecukupan dari perilaku yang tidak terdefinisi, kondisi ras, dan berbicara tentang keberadaan pola desain dan tugas non-programmer dalam pengembangan produk.
Tentu saja, dalam proses pembelajaran, siswa terus-menerus "mendapatkan tangan mereka di laboratorium dan pekerjaan rumah." Ambil sesuatu yang klasik, misalnya, implementasi pengarsipan pada algoritma Huffman. Membuatnya "bekerja entah bagaimana" tidak begitu sulit. Tetapi untuk membuat arsitektur yang baik dari proyek (setidaknya untuk memisahkan input-output, kompresi bit dan algoritma itu sendiri), gunakan dengan benar kemampuan C ++ (aturan tiga atau lima tergantung pada setengah tahun) dan umumnya merancang kode sedemikian rupa sehingga menyenangkan untuk dibaca dan tidak sepenuhnya memalukan dimasukkan ke dalam open-source - seni terpisah yang diajarkan guru dalam kursus C ++, terus berkomunikasi dengan siswa dan menganalisis semua baris kode secara terperinci. Pada subjek yang tersisa serupa. Tidak ada program terbatas pada tes teoritis. Pada semua subjek dengan kode penulisan akan ada review kode dari programmer yang berpengalaman.
C ++ . Tahun pertama studi. Dimulai dengan C, berakhir dengan C ++ 14. Kami menunjukkan RAII, Valgrind, dan autotests, kami belajar menulis kedua perpustakaan (my_vector dengan jaminan pengecualian), dan aplikasi (pengarsipan yang sama). Mengapa: karena C ++ masih digunakan secara aktif dalam industri ini, ditambah lagi secara aktif beresonansi dengan pemrograman sistem (kurangnya pengumpulan sampah, Anda dapat menunjukkan tata letak data dalam memori ...).
Sistem seperti-unix . Semester pertama. Pejuang muda tentu saja bekerja dengan baris perintah dan sistem file tanpa C:\
dan D:\
. Contoh pekerjaan pengujian: pada pasangan, gambar Ubuntu diinstal sedikit rusak terdengar, perlu untuk memperbaikinya. Contoh pekerjaan rumah: buka file dalam folder di Bash dan panggil seseorang yang berguna dengan ekspresi reguler.
Paradigma dan bahasa pemrograman . Semester pertama. Selusin topik (setidaknya OOP, pemrograman fungsional, SQL, multithreading), dan setiap topik yang siswa dapat coba pada satu atau dua tugas pekerjaan rumah. Tentu saja, cukup dangkal, tetapi masih memberikan pemahaman tentang bagaimana pemrograman serbaguna dan hal-hal keren apa yang bisa dirakit menggunakan metode yang berbeda. Baik OOP, FP, dan SQL kemudian akan dijelaskan secara rinci, tetapi sudah di tahun pertama siswa tahu tentang keberadaan mereka dan dapat, katakanlah, mengatur pernyataan dalam kode atau menulis beberapa tes unit sederhana jika dia mau.
Arsitektur komputer . Tahun pertama Register, sebuah rakitan sesuatu seperti komputer dari gerbang logis, cache, pipa prosesor, representasi angka, dan teori lainnya. Mengapa: menyatukan potongan informasi tentang semua jenis hal tingkat rendah ke dalam satu gambar.
Jawa Tahun kedua studi. Itu berakhir dengan stream dan proyek kursus untuk Android (misalnya, memainkan tic-tac-toe rekursif dengan bot dan mode jaringan). Kami menunjukkan Maven, IDEA, JUnit, pekerjaan asinkron dengan jaringan. Mengapa: ada banyak hal yang berputar di JVM sekarang, ada banyak perpustakaan, itu baik untuk diketahui.
Sistem operasi . Tahun kedua Hardcore Tidak perlu repot dengan bootloader - siswa diberikan multiboot dalam prefab, beralih ke mode terlindungi, dan kemudian Anda dapat menulis pengalokasi memori, utas, proses, sistem file, partisi cincin perlindungan, dan bahkan ELF memuat di C. Mungkin tidak seluas "Sistem Operasi Modern" Tannenbaum, tetapi Anda dapat dengan jelas melihat apakah itu menarik untuk menyelidiki sama sekali atau ingin tinggal di ruang pengguna yang terisolasi. Jika tertarik, selamat datang di kursus pemrograman kernel Linux khusus. Omong-omong, versi yang sangat ringan tersedia di Stepik - tidak ada OS yang menulis di sana, tetapi ada teori yang diperlukan dan tugas verifikasi. Agar tidak terbang karena kinerja yang buruk, cukup lewati saja.
Pemrograman fungsional . Dua kelas pada kalkulus lambda dan kemudian pergi ke Haskell. Kami berakhir dengan transformer monad. Tentu saja, semuanya terperinci: monad bukan kotak, tetapi hanya abstraksi yang berguna dari template untuk menulis kode. Proyek-proyek antara, bagaimanapun, lebih teoretis daripada praktis - tulis inferensi tipe otomatis dalam kalkulus lambda. Tapi sekarang kelanjutan kursus sedang dipersiapkan (sebagai subjek tambahan dari program master), di mana multithreading dan server web direncanakan. Baca juga di Pusat Ilmu Komputer .
Basis data Kami berkenalan dengan DBMS relasional (pada contoh PostgreSQL), SQL. Kami merancang basis data untuk bidang mata pelajaran tertentu, dan kemudian mengatur peninjauan kode untuk satu sama lain berdasarkan bimbingan dari guru. Kemudian guru melakukan review kode review. Kontes dari formulir "tulis permintaan seperti itu untuk basis data ini". Pekerjaan Simple Profiling Query (EXPLAIN). Sekali lagi, gema kursus di Pusat Ilmu Komputer .
Rekayasa Perangkat Lunak . Dia berbicara tentang bagaimana pekerjaan seorang programmer dapat diatur, apa yang dilakukan orang lain di perusahaan, mengapa manajer yang baik masih berguna dan mengapa mengelola proyek juga sulit. Apa gunanya perencanaan, mengapa itu tidak selalu berhasil, mengapa tidak semua bug perlu diperbaiki ... Tujuannya adalah untuk memiliki pemahaman tentang apa yang dibutuhkan untuk proyek selain orang. Tentu saja, tidak realistis untuk mengungkapkan semuanya secara terperinci dalam satu semester, tetapi, misalnya, berguna untuk mengetahui bahwa setelah pengembangan proyek masih ada dukungan yang tidak kalah pentingnya.
Desain Perangkat Lunak . Segala macam cara pemodelan realitas dan (diagram UML), metode dekomposisi, pola desain. Sebagai contoh, pada akhir kursus, kami memahami GFS, BigTable, CMake ... Dalam praktiknya, kami belajar tidak hanya menulis kode, tetapi juga mendeskripsikan arsitektur dan menerapkan templat di tempat yang sesuai.
Pemrograman bersamaan Kami mulai dengan untaian dan mutex sederhana, pada akhirnya kami menguraikan dan menulis algoritma bebas kunci / tunggu, menembus MESI, mempelajari teknologi tingkat tinggi seperti kerangka kerja fork-join, OpenMP, OpenCL, Intel TBB.
Teknologi jaringan komputer . Kuliah: tinjauan umum terperinci dari protokol utama dari tumpukan TCP / IP: pesan dalam ICMP, perjalanan historis ke RIP, semua jenis catatan dalam DNS, cara kerja FTP / HTTP / SMTP / DHCP, apa itu NAT, dan bahkan sedikit tentang IPv6. Praktik: kami menulis di atas plus klien dan server TCP lintas-platform kami, pertama untuk messenger mainan, dan kemudian klien UDP untuk DNS.
Desain Antarmuka Siswa tidak menulis satu baris kode, tetapi melewati semua tahap merancang pengalaman pengguna yang baik: ia membuat proyek, melakukan penelitian (termasuk survei terhadap orang-orang nyata), mengembangkan dan memverifikasi skenario penggunaan, dan pada akhirnya Anda dapat menggambar antarmuka dalam Sketsa atau Figma . Tujuannya adalah untuk memiliki pemahaman bahwa untuk produk yang bagus Anda tidak hanya membutuhkan kode, tetapi juga banyak pekerjaan persiapan lainnya. Peninjauan kode tidak ada di sini, tetapi semua artefak perantara dibahas secara aktif dengan guru. Sepertinya tidak realistis untuk menyelesaikan pekerjaan rumah pada upaya pertama (namun, itu tidak diperlukan).
Pengembangan ponsel . Kursus Pengembangan Android Lanjutan. Kami sudah menulis lebih banyak tentang Kotlin daripada di Jawa, kami menggunakan segala macam hal khusus Kotlin untuk Android. Dibandingkan dengan proyek Java dari tahun kedua, aplikasi lebih rumit di sini, kami bekerja lebih banyak dengan dependensi eksternal dan perpustakaan, kami lebih memikirkan antarmuka dan pengguna (di sini tentu saja memiliki kesamaan dengan desain antarmuka).
Pengujian perangkat lunak . Pada dasarnya, ada banyak teori yang memberi nama pada semua praktik standar yang mungkin ditemukan oleh siswa dalam mata pelajaran lain: menguji aliran kontrol atau aliran data, uji pasangan (uji semua pasangan) ... Ada juga sedikit praktik khusus - untuk menyusun rencana uji untuk ini dan itu teknik, untuk menemukan kasus ekstrim dalam aplikasi ini dan itu, dan menjalankan beberapa skenario dalam aplikasi web menggunakan Selenium sehingga tidak akan membosankan untuk hanya menulis kasus.
Rekayasa Perangkat Lunak Big Data, alias Rekayasa Perangkat Lunak Big Data. Baca bersama dengan Pusat Ilmu Komputer . Kami menghubungkan basis data, pemrograman paralel, sistem terdistribusi dan kata kunci lainnya - ini dalam kuliah. Dalam praktik tahun lalu, siswa menulis buku telepon mereka yang didistribusikan dari awal. Dalam peluncuran berikutnya, tampaknya benar untuk mengalihkan penekanan dari level rendah ke alat yang benar-benar digunakan dalam industri seperti Zookeeper, Cassandra, dan hewan menyeramkan lainnya. Sejauh ini, kesulitan utama adalah bagaimana meniru kondisi "data besar" bagi siswa dan mengevaluasi solusi mereka: tidak perlu meningkatkan Zookeeper jika tidak ada demonstrasi yang jelas bahwa tanpa itu semuanya sangat buruk.
Berlatih
Bagian penting kedua dari pelatihan adalah latihan. Sejak tahun pertama, siswa melakukan beberapa tugas praktis yang berguna di bawah bimbingan seorang rekan yang berpengalaman. Misalnya, aplikasi lain untuk mengelola kalender atau catatan. Atau fungsionalitas baru di aplikasi yang ada. Atau ia mempelajari kompleksitas komputasi dari keluarga formula jika dibawa ke arah Ilmu Komputer.
Dalam kursus pertama, kami tidak memerlukan kebaruan atau kepraktisan (setelah semua, tujuannya adalah untuk memberikan beberapa permainan), tetapi persyaratan diploma untuk kualitas proyek dan perlindungan semakin meningkat. Dalam kursus terakhir, selain pertanyaan "apa yang telah dilakukan?" penting bagi siswa untuk mengatakan mengapa itu dilakukan dan mengapa. Pada saat yang sama, "Saya benar-benar menginginkan perusahaan khusus ini, tempat pengawas penelitian saya bekerja," itu sendiri bukanlah jawabannya. Tetapi “di sana, hard drive mati setiap detik, jadi sumber terbuka ini tidak berfungsi, artikel ini murni teoretis, tetapi Google memiliki solusi, tetapi ditutup” - hanya itu. Itu tidak akan berfungsi sebagai diploma untuk melindungi latihan yang tidak perlu dari tahun kedua - pengembang ingin tahu dengan laptop dan Google siap untuk mempertahankan (dan beberapa predefenses). "Belum ada yang melakukan ini" - praktis hal paling berbahaya yang bisa dikatakan. Omong-omong, kami tidak hanya mempertahankan ijazah, tetapi juga praktik, secara teratur sejak tahun pertama.
Berikut adalah beberapa foto dengan perlindungan khas. Fotografer: Dima Drozdov.


Praktek memungkinkan Anda mempelajari cara bekerja "dalam jangka panjang" dengan proyek besar, kadang-kadang sebagian ditulis oleh pengembang lain. Tidak selalu mungkin menebak dengan tema proyek: misalnya, setelah mencoba pengembangan tingkat rendah, seorang siswa dapat memutuskan untuk terlibat di dalamnya di masa depan. Ini adalah arti dari praktik: untuk memahami apa yang Anda sukai dan apa yang tidak, tidak di tempat kerja, tetapi dalam kondisi dengan harga lebih rendah. Meskipun praktik terakhir harus berkembang menjadi gelar sarjana substansial. "Substantive" adalah ketika, menurut diploma, Anda setidaknya bisa menulis artikel tentang Habr dan tidak masuk ke minus. Atau, jika pekerjaannya sangat bagus, terbitkan dalam jurnal ilmiah, berbicara di konferensi, atau paling tidak kumpulkan nilai tambahnya.
Item pilihan
Bagian ketiga, tetapi juga penting adalah item tambahan. Tema spesifik, mungkin tidak diperlukan oleh semua orang, tetapi siswa yang tertarik dapat merasakannya. Dalam kursus senior ada sebagian besar mata pelajaran ini: ada pangkalan, itu masih memperluas wawasan kita ke arah yang menarik bagi siswa. Sayangnya, tidak ada cukup waktu untuk mengambil semua barang. Kadang-kadang serangkaian kursus berubah, berikut adalah yang ditawarkan kepada saya:
Bahasa alternatif untuk JVM . Kursus dua modul: di satu mereka berbicara tentang Kotlin, yang lain tentang Scala. Untuk Kotlin, kami mengurai Java interop, dan menulis DSL kami sendiri, dan coroutine. Pekerjaan rumah opsional terakhir adalah menambahkan debugger menggunakan corutin ke juru bahasa mainan (ditulis di pekerjaan rumah sebelumnya). Adapun Scala ... Bahasanya besar, tapi kami punya waktu untuk memahami semua jenis implisit :)
Pemrograman dalam kernel Linux . Langkah demi langkah, modul kernel sedang dikembangkan yang mengemulasi perangkat penyimpanan virtual: mmap, buffer, akses bersamaan, I / O non-blocking. Di perjalanan, Anda dapat mengingat interupsi dan menghilangkan multitasking dari jalannya sistem operasi dan mempelajari struktur internal Linux (misalnya, tunggu antrian).
Kompiler Kami sedang menulis kompiler bahasa mikro kami di OCaml. Mesin tumpukan menengah, kompilasi di x86 tanpa LLVM, integrasi dengan libc. Seruan siswa yang terkejut, "mengapa itu hanya jatuh pada ekspresi panjang seratus?" (mungkin karena bug ada dalam alokasi register). Omong-omong, kursus serupa juga tersedia di Pusat Ilmu Komputer .
Grafik komputer . Kursus dengan level relatif rendah: kami mempelajari OpenGL, menulis bayangan kami untuk bayangan dan rendering yang ditangguhkan, membandingkan pencampuran warna dengan dan tanpa koreksi gamma.
Membangun DBMS . Basis data perangkat internal. Semua jenis algoritma koneksi, model formal, kolom DBMS. Dalam praktiknya, Anda dapat menerapkan beberapa algoritma pemrosesan blok-demi-blok dalam DBMS mainan dengan plus (misalnya, gabungan hash pipelined ganda).
Virtualisasi kontainer . Studi terperinci tentang kontainer di Linux. Namespace dan cgroups, katakan - dan API, dan cara kerjanya. Segala macam alat bantu untuk jaringan. Dalam prosesnya, kami menulis wadah kami seperti Docker, tetapi tidak sesederhana itu - Anda harus membatasi dengan benar banyak hal, mengonfigurasi jaringan, meneruskan file yang diperlukan ke wadah ... Namun, orkestrasi tingkat tinggi menggunakan Kubernet sebagai contoh juga dipertimbangkan.
Apa yang ingin kita tingkatkan
Baik kami dan siswa kami lebih cenderung puas dengan program yang dihasilkan (dinilai oleh jajak pendapat). Namun, Anda dapat melakukan lebih baik lagi, tidak hanya meningkatkan item yang ada, tetapi juga menambahkan yang baru.
Misalnya, masih belum jelas cara mentransfer aspek tertentu dari "pengalaman kerja" ke universitas. Pekerjaan yang sama dengan kode Legacy - berguna? Dan kemudian. Bahkan ada buku dan teknik khusus. Tetapi untuk mencapai hal yang baik, beberapa faktor harus digabungkan:
- Jangan mengalihkan perhatian guru dari pekerjaan utama mereka untuk waktu yang lama, sehingga mereka terus-menerus membantu siswa untuk memahami proyek besar. Dan jika ada dokumentasi yang baik - maka ini tidak lagi jadi Legacy.
- Siswa harus tertarik. “Menambahkan seribu baris kode ke proyek yang tidak Anda butuhkan” tidak termasuk.
- Hasilnya harus dapat diprediksi. "Tampaknya ini adalah tugas yang tidak terpecahkan, maaf, mereka tidak berpikir" - berita buruk menurut hasil dari memeriksa pekerjaan rumah.
Sayangnya, kami belum menemukan cara untuk melakukan ini. Hal terdekat adalah ke arah pembelajaran mesin, di mana seminar diadakan setiap minggu di mana siswa membuat presentasi pada beberapa artikel terbaru. Mungkin pengalaman ini dapat ditransfer ke pemrograman industri.
Mungkin satu-satunya area yang tidak tercakup sekarang adalah pengembangan web (termasuk front-end), sistem otomasi yang kompleks (seperti 1C atau SAP) dan keamanan komputer (kursus eksperimental dimulai pada awal Februari 2019). Kami mungkin telah melupakan sesuatu yang lain, atau Anda tahu bagaimana Anda dapat mengajar program dengan lebih baik - kami akan dengan senang hati membahasnya di komentar.
Namun demikian, kami percaya bahwa lulusan yang siap bekerja dan yang, jika perlu, harus diajar secara khusus, maka mungkin sistem internal perusahaan, sudah meninggalkan sarjana muda itu. Ngomong-ngomong, topik terpisah yang saat ini kita pikirkan dan coba implementasikan adalah apa, setelah serangkaian kursus yang ketat, untuk dipelajari dalam program master, tetapi ini adalah topik untuk pos yang terpisah.