7 Kasım 2014 Cuma

01.11.2014 Dersler Hakkinda

Bu hafta döngü alıştırma soruları yapıldı. Genel olarak for ile ilgili sorular çözüldü. Pratik bir ders işlendi.

for yapısı ve döngüler tüm kodlama hayatınızda önemli bir yer tutacak. Çalışma mantığı, presiplerini iyice özümsemeniz lazım. Soruları anlamadan geçmeyin takıldığınız yerde foruma yazabilirsiniz veya bize sorabilirsiniz.

Döngüleri iyice kavramanız için bol bol soru çözmeniz ve beyninizi zorlamanız lazım. Forumdaki soruları birbirinizle tartışın, çözüm üretin, kafa patlatın. Şu sıralar yaptıklarımız çok karmaşık gelebilir ancak yaptıkça eliniz alışacak ve daha bilinçli davranıcaksınız. Önemli olan yazdığınız kodun bilgisayarda ne iş yapabileceğini tahmin edebilmeniz. Beyninizi compiler gibi kullanın syntax ları unutmayın.

For un temel çalışma mantığı:
for(A;B;C){ D }

Derste de bahsettiğimiz gibi for önce A işlemini tek seferlik yapar(i=0 gibi), sonra B koşulunu denetler(i<5 gibi veya burada daha fazla denetim yapabilirsiniz anlatıcaz), İşi yapar D(forun içinde ne dönücekse), son olarak da C kısmını yapar(genellikle arttırma azaltma yaparız i-- , i++ veya i=i-2 gibi). Unutmamanız gereken for 'un parantezli kısmında 3 yapının olduğu ve derleyicinin bunları arayacağı. Yani A işlemini yapmak istemiyor olsanız bile bunu şöyle yapmalısınız. for(;B;C), koşul mutlaka olması lazım.

Sorular sizi zorlayabilir pes etmeyin, bizi de zorlamıştı ama denemekten vazgeçmeyin. C'nin yapısını ve temel kodlama argümanlarını öğrendikten sonra iş çok daha eğlenceli hale gelicek.

26 Ekim 2014 Pazar

25.10.2014 Dersler Soru Agirlikli

c derslerinin baslangicinda ogrenilmesi gereken seyler
  • if/else/switch/for/while/do..while
  • int/char/string/float
olarak siralanabilir.

Ancak bunlari sadece ogrenmek yetmez.

Programlama ogrenirken konularin anlatilmasindan cok uygulama agirlikli olmalidir. Yani programlama yeteneginizin %10'unu konu anlatimlari ile olusurken %90'i sizin program  yazmanizla olusur. Bu yuzden bol bol soru cozmek gerekir.

Programlamanin en guzel yani ise bu sorular okuldaki dersler gibi teorik bir sekilde test ya da yazili sorular degil kendinizin yeni bir program olusturmasiyla cozulen sorulardir. Boylece eglenceli bir sekilde pratik yaparsiniz.

Konularin daha iyi oturmasi ve becerilerinizin gelismesi amaciyla soru cozumune agirlik vermemiz gerekiyor. Bu yuzden bastan baslayarak butun sorulari cozun. Sorulari bitirin.

for ve dongu kullanmayi daha iyi anlamak icin sorular ustunde kullanmaniz lazim. Yoksa donguler pek anlamli gelmeyebilir.

Ayrica bundan sonra cozdugunuz sorularin kodunu ideone.com 'a kopyalayip linkini sorunun altinda paylasin. Boylece biz de takip edip kodlarinizi degelendirerek geri donus yapabiliriz. (ideone'a koymayi resimli anlatabilirim isteseniz)

forumda ya da herhangi bir yerde yazi yazmaktan ya da soru sormaktan cekinmeyin.

Bu arada sorulari cozerken yazdiginiz kodlarda ufak tefek de olsa bol bol hata yiyeceksiniz. Normaldir, korkmayin boyle boyle ogreniceksiniz, pes etmeyin.

18 Ekim 2014 Cumartesi

18.10.2014 Dersler Hakkinda

  • Derste C diline giris yaptik. 
  • Basit bir program yazmayi ogrendik.
  • printf() fonksiyonu ile girdi okumayi, scanf() fonksiyonu ile cikti yazdirmayi ogrendik.
  • Temel veri yapilarini (integer, character, float) ogrendik.
  • Array yapisini ogrendik (a[10] vs.)
  • if/else kullanmayi ogrendik.
  • Derste islenen konular howstuffworks'un ve cagataycebi'nin ilk asamalarinda anlatiliyor. Bu sitelerden konulari takip etmenizi tavsiye ederim.
     
  • Derste ogrendiklerinizle cozebileceginiz sorulari foruma ekledim. Foruma eklenen sorulari düzenli çözmeniz gerekmektedir. Kendiniz sorular üzerinde modifikasyonlar yapabilirsiniz. El alışkanlığı kazanmanız lazım.
     
  • Sonraki dersimizi 25.09.2014 13.25'te 11-IB veya bitişigindeki bilgisayar lab'ında yapacağız. Konu olarak döngüleri(for,while,goto) anlatılacaktır.

11 Ekim 2014 Cumartesi

11.10.2014 C Dersleri Baslangic

Ilk olarak Howstuffworks'tan ya da cagataycebi'den temel seyleri okumanizi istiyorum yanda sayfalar kisminda onemli yardimci kaynaklar'a linklerini ekledim.

Cumartesi gunleri etut cikisi saat 13.00 gibi derslerimiz 11-IB sinifinda yapilacaktir.

Ilk derse kadar howstuffworks'dan ilk 8 bolumu okuyun genel olarak programlamaya giris, ilk c programi, temel veri yapilari anlatilacaktir

Bilgisayar Olimpiyatı Tanıtım

Bilgisayar olimpiyatı çalışmalarının başlangıcında öğrencilere Temel Matematik ve ÖSS Matematiği anlatılır. İyi bir Matematik alt yapısından sonra bilgisayar olimpiyatı çalışmaları başlar. C/C++ programlama dilleri çok iyi düzeyde öğretilir. Veri yapıları ve Algoritmalar dersi ilerleyen zaman içerisinde anlatılır ve bu konularda bolca uygulama yapılır.
İleri Bilgisayar eğitimini tamamlayan öğrenci, öğrendiği konulara ait İngilizce kaynakları Uluslar arası olimpiyata yönelik olarak çalışır.


Bilgisayar Olimpiyat Çalışmalarının İçeriği Nedir?
Bilgisayar olimpiyatının içeriğini yüzdelik dilime göre şu şekilde oranlayabiliriz:
Matematik (ÖSS Matematiği, Analitik Geometri): %40
Bilgisayar bilgisi (C/C++ parogramlama, veri yapıları, algoritmalar): %30
Pratik Zeka (Alternatif düşünebilme, algoritma geliştirebilme): %30

Bilgisayar Olimpiyatı Sınavının içeriği nedir ?
Ulusal Bilgisayar Olimpiyatları'na katılmak için ilk etapta bir bilgisayar programlama dili bilmek gerekmiyor. Sınavın çoktan seçmeli test biçiminde olan birinci aşaması genelde 50 sorudan oluşmakta olup daha çok analitik yetenekleri ölçmeyi hedefleyen genel yetenek sorularından oluşuyor. Az sayıda olmak koşuluyla bilgisayar bilgisini ölçen sorular da bulunmaktadır. Bu soruların sayısı 10-12 civarındadır.
Birinci aşama sınavını kazananlar, yapılan yönlendirmelerle, hazırlık kamplarında Tübitak tarafından görevlendirilmiş Öğretim Üyeleri , çalıştırıcıları ve belletmenleri yardımıyla programlama diline ilişkin eğitim görürler. Bu sayede, Bilgisayar olimpiyatlarına düşünsel yatkınlığı ve yeteneği yüksek bireyler seçilmektedir. Özetle, Bilgisayar Olimpiyatı bilgiden daha çok yetenek gerektiren bir olimpiyat türüdür.


Bilgisayar Olimpiyatında Neler Öğrenilmez?
Bilgisayar olimpiyatı, öğrenciler tarafından genelde yanlış tanınmaktadır. Bu branşta nelerin öğrenileceğinden önce nelerin öğrenilmeyeceğini belirtmekte fayda vardır:
Oyun
Chat, MSN
Hacker'lık, Cracker'lık,
Bilgisayar tamirciliği
Windows XP, Word, Excel, PowerPoint
Facebook.Twitter
Web sayfası tasarlama
Grafikerlik (PhotoShop, Flash v.s.)
Operatörlük (10 parmak klavye kullanımı)

Bilgisayar Olimpiyatı Çalışmalarının Öğrencilere Ne tür Faydalar Sağlar?
Lise eğitiminin ilk yıllarında ÖSS Matematik konularının öğrenilmesi,
Öğrenciler henüz lisedeyken bilgisayar bilimleri ve mühendisliği konusunda ileri akademik bilgiler kazanarak, bu birikimlerini gerçek hayatta pratiğe dökme şanslarını yakalayabilmeleri,
Şimdiden problem tanıma ve çözmede, analitik düşünmede, fikirsel üretkenlikte, sistemli ve verimli çalışmada kendilerini kanıtlayarak daha ileriye gitmek için hazır olduklarını gösterebilmeleri,
Çözüm tekniklerinin geliştirilmesi konusunda tecrübe edinilmesi,
Çalışma disiplini kazanılması,
Bilgisayar Bilimleri ile ilgili akademik düzeyde bilgiler edinilmesi,
Başarılı insanlarla bir arada olma,
Alınılan başarılarla ÖSS'de ek puan kazanma, (Uluslararası olimpiyatlarda alınan herhangi bir madalya ile Türkiye'deki istediğiniz üniversitenin bilgisayar mühendisliği veya ilgili bölümlerine sınavsız girme hakkını kazanabilirsiniz)
Henüz 15,16,17 yaşlarında iken profesör, doçent, doktor gibi akademik kariyere sahip insanlarla görüşme,
Ülkemizi temsil için yurt dışına gitme imkânını kazanma.
Uluslararası Olimpiyatlarda derece alan öğrencilere plaket, madalya ve para ödülü verilmektedir. Ayrıca olimpiyat takımlarına seçilen öğrenciler ÖSS'ye girdikleri yıl, bir defaya mahsus olmak üzere uluslararası yarışmada aldıkları derecelerle orantılı ek katsayı uygulamasından; bu olimpiyatlarda altın, gümüş ve bronz madalya kazananlarsa üniversitelere sınavsız yerleştirme olanaklarından yararlanabileceklerdir.
Sonuç olarak bilim olimpiyatlarının amacı, genç yeteneklerimizi tespit ederek geleceğin bilim insanlarını yetiştirmek, bilimsel düşünmeyi öğretmek, onları ilgi ve beceri alanlarının temel bilgileriyle donatmak, duygu ve düşünce dünyalarını da ihmal etmeden en güzel şekilde geleceğe hazırlamaktır. Ayrıca araştırmacı ruhlu, soran ve sorgulayan, çalışan, düşünen, üreten, paylaşan; "Türkiye İçin Dünya İle Yarışan" evrensel ahlâki değerlere sahip bir nesil yetiştirmek olimpiyatın diğer bir amacıdır.


Üniversiteye Girişte Hangi Bölümlere Ek Puan Var ?
Bilgisayar olimpiyatında ulusal ve uluslar arasında elde edilen bir başarıdan ötürü ÖSYM kurumu bir defaya mahsus olmak üzere üniversite giriş sınavında aşağıdaki bölümler tercih edildiği takdirde ek puan vermektedir:
Bilgisayar Mühendisliği
Bilişim Sistemleri Mühendisliği
Elektrik Mühendisliği
Elektronik Mühendisliği
Elektrik - Elektronik Mühendisliği
Elektronik ve Haberleşme Mühendisliği
İstatistik ve Bilgisayar Bilimleri
Kontrol Mühendisliği
Mekatronik Mühendisliği
Sistem Mühendisliği
Telekomünikasyon Mühendisliği
Yazılım Mühendisliği
Enformatik Mühendisliği
Bilgisayar ve Matematik Bilimleri

Öğrencilerimiz Hangi Olimpiyatlara Katılabilir?
UBO (TÜBİTAK Ulusal Bilgisayar Olimpiyatları)
BOI (Balkanic Olympiads in Informatics) yani Balkan Bilgisayar Olimpiyatları.
IOI (International Olympiads in Informatics - Uluslararası Bilgisayar Olimpiyatları) 1989 yılından itibaren, merkezi Hollanda'da bulunan uluslararası bir komite tarafından düzenlenmeye başlanmıştır. Türkiye 1993 yılından itibaren her yıl düzenli olarak bu olimpiyatlara katılmaktadır.
TÜBİTAK Ulusal Bilgisayar Proje Olimpiyatları.
Özel eğitim kurumların açtığı bilgisayar proje yarışmaları ve olimpiyat sınavlarına
İstanbul Bilim Olimpiyatları
8. Bilgisayar Olimpiyatı Hangi Bilim Dallarının Temellerini Oluşturur ?
Artificial Intelligence (Yapay Zeka)
Sezgisel Programlama (Heuristic Programming)
Robot teknolojisi (Ör: ASIMO)
Fuzzy Logic (Bulanık Mantık)
Genetik Algoritmalar
Bilgi Teknolojileri (IT)
Game Theory (Oyun Teorisi)
Machine learning (yapılan hataların makine tarafından tekrar etmemesi)
Özetle
Matematik, zeka ve çok işlem gerektiren sorularının bilgisayar yardımıyla çözülmesidir. Başka bir açıklamayla, güncel hayatımızda karşılaştığımız zorlukları, problemleri, mühendislik işlemlerinin cevabını bilgisayara buldurma işidir.


Olimpiyatlara nasıl çalışırız?
Öncelikle ÖSS matematiğinin çok iyi öğreniriz.
Kalın kalın kitaplar bitirmek zorunda kalmayız.
Deney yapmayız.
Bilgisayar başında çokça örnek soru çözeriz.
Vaktimizin çoğu pratik çözüm tekniği geliştirmek için düşünerek ve düşüncelerimizi bilgisayara aktarmakla geçer.
Bir sorunun çözüm yöntemini bulmak için bazen saatlerce müsvette kâğıtlar üzerinde düşünürüz.
Bir olimpiyat sorusunu çözmek bazen 2 saatimizi, bazen 2 günümüzü alır.

Bilgisayar Olimpiyatının Genel Müfredatı
Temel matematik konuları
ÖSS Matematiği
Mantık
Taban aritmetiği
Bağıntılar
Fonksiyonlar
Polinomlar
Permitasyon, Kombinasyon, Binom, Olasılık
Tümevarım
Logaritma
Matrisler
İleri Matematik
Analitik geometri
Sayılar teorileri
Kombinatorik
Graph Teorileri
Computational Geometry
Bilgisayar Programlama Dili
İleri düzeyde C programlama dili
C++ 'ta STL
Veri Yapıları :
Linked List
Stack - Queue
Sorting (Bubble, Selection, Insertion, Shell, Quick, Merge, Coounting, Radix)
Searching
Tree
Binary Search Tree
Hash Table
Heap/Heap Sort
Algoritmalar
Arama teknikleri (Search Techniques),
Sıralama teknikleri (Sorting Techincques),
Recursif algoritmalar,
Dinamik programlama,
Graph Algoritmaları
Graf Veri Yapıları(List, Matrix)
Depth First Search (DFS)
Breath First Search (BFS)
Connectivity
Articulation Points
bly Connected Components
Topologic Sort
Single Target Shortest Path Algorithms (SP)
Minimum Spannig Tree (MST)
All Shortest Path (ASP)
Bipartite Graphs/Maximum Matching
Network Flow
Advanced Searching
Exhaustive Search/Pruning
Branch and Bound
A* Search
Genetic Algorithims
Geometry/Computational Geometry
İleri Veri Yapıları
+Heap with Update Operations
Data Structures for Disjoint Sets
Red Black Trees
2-3 Trees
AVL Trees
Treaps
B-Trees
Binomial Heaps
Fibonacci Heaps
Index and Interval Trees
Number Theoretic Algorithms
Gaussian Elimination
Selected Topics:
Parsing
Backtracking
Game Theory(Minimax Theorem - Alpha-Beta Pruning)
KMP Search
Automata Theory
Mincut
Convex Hull
İngilizce
Öğrencilerimiz, başka ülkelerin olimpiyat sorularını çözebilmeleri için yeteri düzeyde İngilizce bilmelidirler. Bu sayede sık sık İngilizce pratiği yapma fırsatı bulurlar.
Bilgisayar olimpiyatlarındaki soruların gerektirdiği bilgi düzeyi, programlama ve algoritma dalında bir bilgisayar mühendisinin sahip olduğu bilgiye eşit veya daha üzerinde olduğunu söylemek mümkündür. Yukarıda bahsettiğimiz konular üniversitelerde anlatılan konularla bire bir örtüşmektedir. Bu dersler aşağıdaki şu bölümlerde anlatılmaktadır:
Bilgisayar mühendisliği 2., 3. ve 4. sınıf konuları
Bilgisayar programlama (C ve C++) Data Structures
Algorithyms
Fen Fakültesi Matematik bölümü Master dersleri :
Kombinatorik
Sayı teorileri
Graph
Bilgisayar müh. Doktora dersleri :
Computational Geometry
Bilgisayar Olimpiyatı Kütüphanesine Genel Bir Bakış:
ÖSS Matematik Soru Bankaları
Dr.ECCO'nun serüvenleri
Akıl Oyunları 1-2 - Tübitak yayınları
Bunu Ancak Dr.ECCO Çözer
Süper Zeka Spor
İleri Zeka Spor
Düşünme Kulesi
Programming in C
Algorithms in C
Mastering algorithms with C
Programlama dilleri: C ile programlama
Discrete Mathematics and its applications
Data structures & program desing in C
Data structures,algorithms & software principles in C
Programming in ANSI C
Algoritma geliştirme ve programlamaya giriş
Program solving and Pascal programing language
C++
Computational Geomtry
Computational Math
Artificial Intelligence

Ulusal Bilgisayar Olimpiyatları: 
 
Orijinal adı Olympiads in Informatics yani Enformatik Olimpiyatıdır. Diğer bir deyişle enformasyon ya da bilişim olimpiyatıdır. Bilgisayar olimpiyatı lise ve dengi okul öğrencilerinin bilgisayar bilimine olan ilgilerini artırmak, matematiksel bilgi gerektiren soruları bilgisayar ile çözmek, güncel bir takım sorunların çözümünde bilgisayar biliminden faydalanmak amacıyla her yıl TÜBİTAK (Türkiye Bilimsel ve Teknik Araştırma Kurumu) tarafından düzenlenen bir olimpiyat dalıdır. İlk olarak dünyada 1989 yılında; ülkemizde ise 1993 yılında düzenlenmiştir. Bilgisayar Olimpiyatı etkinlikleri dünyada ve Türkiye'de olduğu gibi okulumuzda da oldukça yenidir.


I. Aşama sınavı 
Bu sınava yaklaşık 1000 öğrenci katılır. Bu öğrenciler, Türkiye'nin 20 ilinde gerçekleştirilen 2 saatlik sınava girerler. Sınav 50 sorudan oluşur. Nisan ayının son haftasında yapılır. Bu sınavda beklenen başarı düzeyindeki yaklaşık 35 öğrenci ikinci aşama sınavına çağrılır. Birinci aşamanın amacı tecrübesi olsun olmasın bilgisayar bilimleri alanında kabiliyetli öğrenciler seçmektir. Dolayısı ile sorular bilgisayar bilgisinden çok bilgisayar bilimlerine olan kabiliyeti ölçmeye yöneliktir. İlk aşama son yıllarda test şeklinde gerçekleştirilmektedir. Fakat imtihanın içeriği her yıl bir miktar değişmektedir.


Yaz Kampı
 
I. Aşama sınavında başarılı olan öğrenciler den 20 tanesi, Ulusal Bilgisayar Olimpiyatı'nın ikinci aşaması gerçekleşmeden önce ODTÜ'de düzenlenen Yaz Kampı'na çağrılır. Bu kamp, Ağustos sonu ve Eylül başında iki hafta süreli olarak yapılır. Kampta, öğrencilere ileri düzeyde C dili programlama bilgisi, temel veri yapıları bilgisi ve temel algoritmik kavramlar öğretilir. Her öğrenciye bir bilgisayarda çalışma olanağı sunulan bu kampta günde en az 6 saat kuramsal ders, 4 saat gözetimli uygulama dersleri verilir. Kamp boyunca gelişmeleri çok yakından izlenen öğrencilere kitap ve yazılı materyal de dağıtılır.


II. Aşama sınavı 
Her sene Aralık ayının ilk haftasında ODTÜ'de yapılır. Öğrencilerden, bir bilgisayarda, programlamaya ilişkin 3 problemin çözümünü 5 saat içinde C/C++ programlama dili ile geliştirmeleri beklenir. Sınav sonucunda yaklaşık 2 kişi Altın, 4 kişi Gümüş ve 6 kişi de Bronz madalya kazanır. Bu sınavda başarılı olan bazı öğrenciler TÜBİTAK tarafından Şubat ayında iki haftalığına kampa çağırılır. Ulusal Olimpiyat sınavı ile Yaz Kampı'nda yapılan çalışmalardaki başarıları gözden geçirilir ve Kış Kampı'na katılacak yaklaşık 10 kişi belirlenir. Bu öğrenciler Üçüncü aşama sınavına girmeye hak kazanmıştır. Bu kamp uluslar arası sınav için Türkiye'yi temsil edecek 4 kişilik takımın seçme sınavı için bir hazırlık kampı niteliğindedir.
İkinci aşama ise ileri seviyede programlama ve bilgisayar bilimleri bilgisi gerektirmektedir. Bilgisayar olimpiyatında kullanılan dokümanların neredeyse tamamına yakını İngilizce kaynaklıdır. Bu alanda Türkçe kaynak bulmak oldukça zordur.


III.Aşama sınavı 
III.Aşama Sınavı IOI (International Olimpiad in Informatic ve BOI (Balkanic Olympiads in Informatics) : Türkiye'yi uluslar arası arenada temsil edecek olimpiyatçılar II. Aşamada başarılı olan öğrenciler arasından 4 kişilik ekip seçilir. Ocak-şubat aylarında iki hafta yapılan bu kampta öğrencilere, ileri matematik, ileri veri yapıları, algoritmalar, kombinatorik ve bilgisayar oyun teorisi öğretilir. Yaz Kampı'na benzer biçimde gerçekleşen bu kampın sonunda, eğitime katılan öğretim elemanlarının tümü tarafından yapılan bir değerlendirme sonucunda, en yüksek puanı alan ilk 4 öğrenci asıl, izleyen 2 öğrenci de yedek olmak üzere Uluslararası Olimpiyatlar'da Türkiye'yi temsil edecek takım oluşturulur. Her sene Ağustos ayında dünyanın değişik ülkelerinde yapılan sınava 80 kadar ülke 4'er öğrenci ile katılmaktadır. Bu sınavda iki gün süre ile 4'er soru sorulur ve başarılı olanlar madalya ve mansiyon dereceleri ile ödüllendirilirler.


Uluslararası Bilgisayar Olimpiyatı
 
IOI (Olympiads in Informatics) yani Uluslar arası Bilgisayar Olimpiyatı, ilk olarak 1989 yılında Bulgaristan'da 20 ülkenin katılımıyla gerçekleştirildi. Her yıl farklı bir ülkede yapılan bu yarışmaya ülkeler 4'er öğrenciyle katılmaktadır. Türkiye 1993 yılından beri bu yarışmalara yer almaktadır.
Sınav, bilgisayar başında uygulamalı olarak gerçekleşmektedir. Bu yarışmada öğrencilerin iki günde 4'er soruyu 6'şar saatte çözmeleri beklenmektedir. Başarılı olan öğrencilerden ilk %10'u Altın madalya, sonraki %20'si Gümüş madalya, daha sonraki %30'u Bronz madalya ile ödüllendirilmektedir.
Uluslar arası Bilgisayar Olimpiyatı ile ilgili daha ayrıntılı bilgi için;
http://olympiads.win.tue.nl/ioi/