Bilgisayar Bilimi’nde sağlam bir temele sahip olmak; başarılı bir yazılım programcısı olmak için çok önemlidir. Bu rehber, üniversite öğrencilerinin teknik becerilerini akademik olarak ya da akademik olmayan bir şekilde nasıl bir yol izleyerek geliştirebileceklerini aktarmak için oluşturulmuştur. Bu rehberi hangi kursu almanız gerektiğine karar vermekte kullanabilirsiniz ama aldığınız bu kursların mezun olmanız için gerekli olan en önemli şey olduğuna emin olun. Bu rehberde verilmiş olan çevrimiçi kaynaklar üniversitenizdeki kurslarla değiştirmeniz amacıyla verilmemiştir. Ama elbette, bu kurslar öğrenmelerinize yardımcı kaynak olabilir ya da bir konuya giriş niteliği taşıyabilir.
Bu rehberi kullanırken:
Lütfen bu rehberi istediğiniz gibi kullanın.
Bu kursların dışında öğrenmek ya da yapmak istediğiniz başka şeyler de olabilir. Üstüne gidin!
Bu rehberdeki tüm maddeleri incelemek size Google’da bir iş garanti etmez.
Bu rehber gelişebilir ya da değişebilir. Güncellemeler için tekrar kontrol edin.
Akademik Öğrenme için Öneriler
Computer Science Dersine Giriş
- Kodlamaya temel bir giriş sunan Introduction to Computer Science kursunu alın.
Çevrimiçi kaynaklar: Udacity - intro to CS course, Coursera - Computer Science 101
- En azından bir nesne yönelimli programlama dilinde kodla: C++, Java, ya da Python
Başlangıç seviyesi çevrimiçi kursları:* Coursera - Learn to Program: The Fundamentals, MIT Intro to Programming in Java, Google's Python Class, Coursera - Introduction to Python, Python Open Source E-Book
Orta seviyedeki çevrimiçi kurslar: Udacity's Design of Computer Programs, Coursera - Learn to Program: Crafting Quality Code, Coursera - Programming Languages, Brown University - Introduction to Programming Languages
- Diğer Programlama Dillerini Öğren
Repertuarına; JavaScript, CSS & HTML; Ruby; PHP; C; Perl; shell script; Lisp ve Scheme’ı ekle. Çevrimiçi Kaynaklar: w3school.com - HTML Tutorial, Codecademy, Udacity - Mobile Web Development, Udacity - HTML5 Game Development
- Kodlarını Test Et
Notlar: Bugları nasıl bulacağını öğren, testler oluştur ve yazılımını bozmaya çalış. Çevrimiçi kaynaklar: Udacity - Software Testing Methods, Udacity - Software Debugging
Mantıksal Akıl Yürütme ve Ayrık Matematik Bilgisi Geliştir Çevrimiçi kaynaklar: MIT Mathematics for Computer Science, Coursera - Introduction to Logic, Coursera - Linear and Discrete Optimization, Coursera - Probabilistic Graphical Models, Coursera - Game Theory
Güçlü bir Algoritma ve Veri Yapısı Anlayışı Geliştir. Notlar: Önemli data tipleri (stack, queues, and bags) , algoritma sınıflandırma (quicksort, mergesort, heapsort) veri yapıları (binary search trees, red-black trees, hash tables) and Big-O hakkında bilgi edin. Çevrimiçi kaynaklar: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2, List of Algorithms, List of Data Structures, Book: The Algorithm Design Manual
İşletim Sistemleri Hakkında Sağlam Bilgi Sahibi Olun Çevrimiçi kaynaklar: UC Berkeley Computer Science 162
Kullanıcı Deneyim Tasarımı (UX Design)’ı öğren Çevrimiçi kaynaklar: Udacity - UX Design for Mobile Developers
Yapay Zekayı Öğren Çevrimiçi kaynaklar: Stanford University - Introduction to Robotics, Natural Language Processing, Machine Learning
Derleyici İnşa Etmeyi Öğren Çevrimiçi kaynak: Coursera - Compilers
Kriptografiyi Öğren Çevrimiçi kaynaklar: Coursera - Cryptography, Udacity - Applied Cryptography
Paralel Programlamayı Öğren Çevrimiçi kaynak: Coursera - Heterogeneous Parallel Programming
Sınıfın Dışında Bir Projede Çalış Notlar: Bir website yarat ve devamlılığını sağla, kendi sunucunu oluştur, ya da robot inşa et. Çevrimiçi kaynaklar: : Apache List of Projects, Google Summer of Code, Google Developer Group
Büyük Bir Sistemin Küçük Bir Parçasında Çalış (codebase) , Var Olan Kodu Oku ve Anla, Dokümanların İzini Sür ve Hatalarını ayıkla.
Not: Github diğer insanların kodlarını okumada ve bir projeye katkıda bulunmak için çok iyi bir yoldur. Çevrimiçi kaynaklar: GitHub, Kiln
- Diğer Programcılarla Bir Projede Çalış
Not: Bu bir takım içinde iyi bir şekilde çalışma yeteneğini kazanmana ve başkalarından bir şeyler öğrenmene yardımcı olur.
- Kodlama Becerilerini ve Algoritmik Becerilerini Alıştırmalar Yaparak Güçlendir Algoritmik becerilerini, kodlama yarışmalarına katılarak deneyebilirsin.
Çevrimiçi kaynaklar: CodeJam, ACM ICPC
- Öğretim Asistanı Ol.
Diğer öğrencilere öğretmeye yardımcı olmak söz konusu derse hakim olmanı sağlar.
- Yazılım Mühendisliğinde Staj Deneyimi
Staj dönemi başlamadan daha önce staj başvurunuzu yaptığınızdan emin olun. Amerika’da staj dönemi yazın Mayıs-Ekim arasındadır. Başvurular genelde birkaç ay önceden kabul edilir.
Kaynak
https://www.google.com/about/careers/students adresinden Türkçe'ye çevrilmiştir.