BBY 261 İleri Programlama – 2020

“Artificial Intelligence & AI & Machine Learning” by mikemacmarketing is licensed under CC BY 2.0

BBY261 İleri Programlama 2020-2021 güz dönemi dersine hoşgeldiniz. Ders BBY162 Programlama ve Algoritmalar dersinin devamı niteliğinde olup Python programlama dili ve algoritma geliştirme ile ilgili genel bilgilere hakim olduğunuz varsayılmaktadır. BBY162 kodlu dersi almış olmasanız bile temel programlama ve algoritma geliştirme bilgisine sahipseniz dersi yürütebileceğiniz düşünülmektedir.

Ders canlı olarak Zoom platformu üzerinden Cuma günleri saat 09:30’da gerçekleştirilecektir. Ders ile ilgili tüm sorularınızı, görüş ve yorumlarınızı orcunmadran@gmail.com adresine gönderebilirsiniz.

Dersin Katalog Tanımı

Derste, nesne yönelimli programlamanın temelleri, UML ile nesne yönelimli program geliştirme, Java’nın temel elemanları (değişkenler, akış kontrolü, sınıflar ve nesneler, dizinler ve taşıyıcı sınıflar, arayüz yapıları), sınıflar ve kalıtım (sınıf yaratımı, kalıtım ve çok biçimlilik, arayüz kavramı ve geliştirimi), nesneye yönelik kodlama ve dokümantasyon standartları, kodun entegrasyonu, soyutlamaya dayalı tasarım ve tasarım örüntüleri anlatılmaktadır.

Kaynaklar

Ders kapsamında birçok açık eğitim kaynağından faydalanacağız. Bu kaynaklara aşağıdaki listeden ulaşabilirsiniz:

Değerlendirme

Proje 01

Teslim Tarihi: 16 Ekim 2020

Açıklama: Bir metin katarı (string) içerisinde yer alan herhangi bir kelimeyi tam olarak aratıp bulabilmenizi sağlayacak uygulamayı Google Colab üzerinde geliştirerek proje_01.ipynb olarak GitHub hesabınızdaki hu-bby261-2020 adlı depoya kaydedin. (5P)

Proje 02

Teslim Tarihi: 30 Ekim 2020

Açıklama: Celsius – Fahrenheit çeviren makine öğrenmesi uygulamasından faydalanarak Km – Mil ya da Mil – Km çeviren bir makine öğrenmesi uygulamasını Google Colab üzerinde geliştirerek proje_02.ipynb olarak GitHub hesabınızdaki hu-bby261-2020 adlı depoya kaydedin. Uygulamanızda çevrilecek değerin ve eğitim sayısının (epoq) dışardan klavye ile veri girişi yapılacak şekilde olmasını sağlayın. (10P)

Ek olarak uygulamanızda Km – Mil ya da Mil – Km seçiminin ilk başta tercih edilebilir olması için de çalışabilirsiniz.

Yine ekleyebileceğiniz bir başka özellik olarak makineyi öğretmek için kullanacağınız verileri dışarıdaki bir txt dokümanından alınmasını sağlayabilirsiniz.

Proje 03

Teslim tarihi: 13 Kasım 2020

Açıklama: 0-9 kadar el yazısı ile yazılmış rakamların makine öğrenmesi algoritmaları kullanarak sınıflandırılmasını uygulamasını Google Colab üzerinde geliştirerek proje_03.ipynb olarak GitHub hesabınızdaki hu-bby261-2020 adlı depoya kaydedin. Sınıflandırma uygulamasında öğretim ve test verisi olarak MNIST Digit veri setini kullanabilirsiniz. Uygulamanızın son aşamasında dışarıdan sizin oluşturduğunuz el yazısı görsellerini makine sınıflandırabilmelidir. (10P)

Proje 04

Teslim tarihi: 27 Kasım 2020

Açıklama: Tarihin en eski şifreleme tekniklerinden biri olan Sezar Şifrelemesi uygulamasını Google Colab üzerinde geliştirerek proje_04.ipynb olarak GitHub hesabınızdaki hu-bby261-2020 adlı depoya kaydedin. (15P)

Uygulama aşağıda yer alan üç özelliğe sahip olacak:

  1. Uygulama dışarıdan alınan bir TXT dokümanındaki şifrelenmemiş metni klavyeden girilecek olan anahtar yardımıyla şifreleyecek ve şifrelenmiş metni ayrı bir TXT dokümanı olarak tekrar kaydedebilecek.
  2. Uygulama dışarıdan alınan bir TXT dokümanındaki şifrelenmiş metni klavyeden girilecek olan anahtar yardımıyla çözebilecek ve ekranda şifresi çözülmüş metni gösterebilecek.
  3. Uygulama dışarıdan alınan bir TXT dokümanındaki şifrelenmiş metni bilinen bir anahtar olmadan çözmeye çalışacak ve sonucu ekranda gösterebilecek.

Not: Uygulamada yukarıda belirtilen özellikler arası geçiş bir menü yardımıyla gerçekleştirilirse kullanım açısından daha iyi bir deneyim yaşatacaktır.

Ders İzlencesi

Bölüm 1

Dersin bu ilk haftasında çalışmalarımızı yürütebilmek için ihtiyaç duyacağımız geliştirme araçlarını ve ortamlarını tanıyacağız ve genel bir Python tekrarı gerçekleştireceğiz. Python ile ilgili bilgilerimizi tazelerken Python’a Giriş Colab‘inden faydalanacağız. Bu derste inceleyeceğimiz platformlar:

Bölüm 2

Dersin bu haftasında Python’da “Sanal Ortam” (Virtual Environment” kullanımı göreceğiz, Python kütüphanelerin ve modüllerini sanal ortamda kurarak nesne yönelimli programlama metodlarını daha detaylı olarak inceleyeceğiz. Bunlara ek olarak PyCharm geliştirme ortamını inceleyerek çalışmalarımızı PyCharm üzerinden nasıl gerçekleştirebileceğimizi göreceğiz.

Bölüm 3

Bu hafta ilk makine öğrenmesi uygulamamızı gerçekleştiriyoruz. Uygulamayı gerçekleştirirken Udacity Course: Intro to TensorFlow for Deep Learning kursunun ikinci dersindeki örneği kullanacağız.

Bölüm 4

Bu hafta üçüncü bölümde incelediğimiz makine öğrenmesi uygulamasının temel alarak farklı bir örnek üzerinde çalışacağız. Bu örnek uygulamada Km, Mil’e ve Mil de Km dönüştürülecek.

Bölüm 5

Bu hafta ikinci makine öğrenmesi uygulamamızı gerçekleştiriyoruz. Uygulamayı gerçekleştirirken Udacity Course: Intro to TensorFlow for Deep Learning kursunun üçüncü dersindeki örneği kullanacağız.

Bölüm 6

Bu hafta beşinde bölümde incelediğimiz makine öğrenme uygulamasını temel alarak farklı bir örnek üzerinde çalışacağız. Bu örnek uygulamada el yazısı rakamların sınıflandırılması problemi üzerinde çalışacağız. Örnek uygulamaya için tıklayınız.

Bölüm 7

Bu hafta tarihin en eski şifreleme tekniklerinden biri olan Sezar Şifrelemesi‘ni bir uygulamaya dönüştüreceğiz. Uygulamada kullanabileceğiniz örnek kodlara aşağıdaki bağlantılardan ulaşabilirsiniz:

  1. Sezar Şifrele
  2. Sezar Şifre Çöz
  3. Sezar Şifre Kır