Bu derste, Bilgisayar Mühendisliği mesleğinin en temel becerilerinden biri olan "Programlama"yı giriş seviyesinde öğrenmeniz hedeflenmektedir. Bir programlama dilinin öğrenilmesiyle, olağan bir yabancı dilin öğrenilmesi arasında paralellikler bulunur. Ancak bol pratik yaparak öğrenilebilecek yeni bir yabancı dilde ilk hedef o dilde aklınızda olanı ifade edebilme yani "meramı ifade" ("derdini/isteğini anlatma") olduğu gibi programlama dillerinde de durum budur: karşılaştığınız "hesaplama" probleminin çözümünü bir programlama dilinin kural ve sözcükleriyle kurgulayabilmek, ve bunu bilgisayara anlatabilmek... Yeni bir dili öğrenmek o dilde ustalaşmak, dili edebi anlamda en doğru ve güzel şekilde kullanmak anlamına gelmediği gibi bu derste de hedefimiz seçilen dilde her yönüyle ustalaşmak olmayacak. Ama ders boyunca ustalaşmanın ipuçlarına da yeri geldikçe değineceğiz.
"Programlamaya Giriş"i somut olarak Ruby programlama dili özelinde yapacağız. Github, Shopify, Basecamp, (ilk günleri itibarıyla) Twitter gibi büyük firmalarda yaygın şekilde kullanılan tam nesne yönelimli, Japonya orijinli bu dil günümüzde "start-up" dediğimiz genç girişim firmaları tarafından kısa sürede bir fikri hayata geçirmek amacıyla yaygın şekilde tercih edilmektedir.
İzlence
Derste çeşitli revizyonlar planlandığından ders izlencesi (Syllabus) zaman içinde netleşecektir. Bu sayfaları düzenli olarak kontrol etmeyi unutmayın.
Uygulamalar
Programlamayı öğrenmenin en etkili yolu bizzat programlama yapmaktır. Süreci daha disiplinli ve planlı kılmak adına belirli aralıklarla ödevler alacaksınız. Ödevler derse ait Google Classroom sayfalarında duyurulacak ve Github Classroom üzerinde değerlendirilecektir.
Kaynaklar
Derslerde sayfa sayfa izleyeceğimiz bir kaynak kitap bulunmuyor. Var olan kaynakların da büyük bir bölümü İngilizce. Aşağıdaki liste ders dışında ilave bir pekiştirici kaynak beklentisini karşılamak üzere verilmiştir.
The Well-Grounded Rubyist; David A. Black, Joseph Leo III; 2019
The Ruby Programming Language: Everything You Need to Know; David Flanagan, Yukihiro Matsumoto; 2008 (eski bir kaynak)
Practical Object-Oriented Design: An Agile Primer Using Ruby; Sandi Metz; 2018 (ileri seviye bir kaynak)