layout | title |
---|---|
lecture |
Bu dersleri niye veriyoruz |
Geleneksel Bilgisayar Bilimi eğitimi sırasında, İşletim Sistemleri, Programlama Dilleri ve Makine Öğrenmesi gibi bir çok gelişmiş konuyu öğreten çok sayıda ders alacaksınız. Ancak birçok kurumda nadiren kapsanan ve bunun yerine öğrencilerin kendi başlarına başa çıkmaları gereken bir konu vardır bu da computing ecosystem literacy'dir.
Yıllar içinde, MIT'de birkaç dersin öğretilmesine yardımcı olduk ve defalarca birçok öğrencinin kullanabileceği araçlar hakkında sınırlı bilgiye sahip olduğunu gördük. Bilgisayarlar manuel görevleri otomatikleştirmek için oluşturulmuştur, ancak öğrenciler genellikle tekrarlayan görevleri elle gerçekleştirir ya da sürüm kontrolü ve metin editörleri gibi güçlü araçlardan tam olarak yararlanamazlar. Bu en iyi ihtimalle verimsizlik ve zaman kaybına yol açarken en kötü ihtimalle veri kaybı veya belirli görevleri tamamlayamama gibi sorunlara da yol açar.
Bu konular üniversite müfredatının bir parçası olarak öğretilmez: öğrencilere asla bu araçların nasıl kullanılacağı veya en azından bunların nasıl verimli bir şekilde kullanılacağı gösterilmez ve böylece basit olması gereken görevler için bile zaman ve çaba harcarlar. Standart Bilgisayar Bilimleri müfredatında, öğrencilerin hayatlarını önemli ölçüde kolaylaştırabilecek bilgisayar ekosistemi ile ilgili kritik konular eksiktir.
Buna çare olmak amacı ile; etkili bir bilgisayar bilimcisi ve programcısı olmak için gerekli olduğunu düşündüğümüz tüm başlıkları kapsayan bir müfredat yürütüyoruz. Bu müfredat eğitici ve pratiktir ve karşılaşabileceğiniz çeşitli durumlarda hemen uygulayabileceğiniz araçlara ve tekniklere uygulamalı bir giriş sağlar. Bu ders, MIT'nin Ocak 2020'deki "Bağımsız Faaliyetler Dönemi" sırasında öğrenci tarafından yürütülen daha kısa sınıflar içeren bir aylık bir dönem boyunca yürütülmektedir. Dersler sadece MIT öğrencilerine açık olsa da, video kayıtları ile beraber tüm ders materyallerini halka sunacağız.
Bu sizin için uygun gibi görünüyorsa, sınıfın ne öğreteceğine dair bazı somut örnekler:
Alias'lar(takma adlar), script'ler ve derleme sistemleri ile sıradan ve tekrarlanan görevleri nasıl otomatikleştiririz? Artık bir metin belgesinden kopyala-yapıştır komutlar kullanmak yok! Artık 15 komutu arka arkaya çalıştırmak yok! Artık "şunu çalıştırmayı unutmuşsun!" ya da "Şu parametreyi atlamışsın!" gibi hatalar görmek yok!
Örneğin, geçmişinizde hızlı bir şekilde arama yapmak büyük bir zaman tasarrufu olabilir. Aşağıdaki örnekte, convert
komutları için shell geçmişinizde gezinmeyle ilgili birkaç püf noktası gösteriyoruz.
Versiyon kontrol sistemini nasıl doğru bir şekilde nasıl kullanabilir ve bizi olası bir felaketten kurtarmak, başkalarıyla işbirliği yapmak ve sorunlu değişiklikleri hızlı bir şekilde bulmak ve izole etmek için bundan nasıl faydalanabiliriz?
Artık rm -rf; git clone
yok! Artık merge conflict
'ler yok!(en azından daha az) Artık devasa yorum satırları yok!
Artık kodunuzun çalışmasına neyin engel olduğunu nasıl bulacağınız konusunda endişelenmenize gerek yok!
Artık "Hayırr! Çalışan kodu mu sildim!" demek yok!
Hatta size diğer insanların projelerine pull request atarak nasıl katkı sağlayacağınızı bile öğreteceğiz!
Aşağıdaki örnekte, bir birim testini(unit test) hangi commit'in bozduğunu bulmak için git bisect
'i kullanıyoruz ve daha sonra bunu git revert
ile düzeltiyoruz.