BİLGİSAYAR MÜHENDİSLİĞİ PROGRAMI
Lisans TYYÇ: 6. Düzey QF-EHEA: 1. Düzey EQF-LLL: 6. Düzey

Ders Genel Tanıtım Bilgileri

Ders Kodu: BMB 101
Ders İsmi: Algoritma ve Programlama I
Ders Yarıyılı: Güz
Ders Kredileri:
Teorik Pratik Kredi AKTS
2 0 3 6
Öğretim Dili: TR
Ders Koşulu:
Ders İş Deneyimini Gerektiriyor mu?: Hayır
Dersin Türü: Zorunlu
Dersin Seviyesi:
Lisans TYYÇ:6. Düzey QF-EHEA:1. Düzey EQF-LLL:6. Düzey
Dersin Veriliş Şekli: Yüz yüze
Dersin Koordinatörü: Dr.Öğr.Üyesi ENDER ŞAHİNASLAN
Dersi Veren(ler):


Dersin Yardımcıları:

Dersin Amaç ve İçeriği

Dersin Amacı: Bu ders, bilgisayar, yazılım, program, programlama, algoritma ve problem çözme yöntemleri, programlama dili ile ilgili temel bilgilerin kazandırılması, karşılaşabilecekleri temel problemlerin çözümüne yönelik algoritma geliştirme, akış diyagramını tasarlayabilme, bu algoritmaları yapısal programlama dili üzerinde uygulama geliştirmeye yönelik temel yetkinliklerin kazandırılmasını amaçlamaktadır. Bu derste C programlama dili birincil programlama dili olarak kullanılır.
Dersin İçeriği: Bilgisayarların çalışma prensipleri, donanım, sayı sistemleri, programlama dilleri, makine dili, bir programı makine diline dönüştürme aşamaları, problem çözme ve algoritma, akış şeması ve çözüm örnekleri, programlama araçları, programlamaya giriş, veri tipleri ve değişkenler, operatörler, temel giriş/çıkış fonksiyonları, karar yapıları/program akış kontrolü, döngüler, fonksiyonlar, standart kütüphane fonksiyonları, kullanıcı tanımlı fonksiyonlar, dizi kavramı, işaretçi kavramı, dosya işlemleri ve uygulamaları.

Öğrenme Kazanımları

Bu dersi başarıyla tamamlayabilen öğrenciler;
Öğrenme Kazanımları
1 - Bilgi
Kuramsal - Olgusal
1) Problem çözme tekniklerini öğrenme.
2 - Beceriler
Bilişsel - Uygulamalı
1) Algoritma kullanarak programlama yapıları aracılığı problemleri çözme.
3 - Yetkinlikler
İletişim ve Sosyal Yetkinlik
Öğrenme Yetkinliği
1) Temel bilgisayar, algoritma, akış diyagramı ve program bilgi ve becerisini kazanma.
Alana Özgü Yetkinlik
1) Bilgisayar programlamaya ait temel kavram ve yapıları öğrenme.
Bağımsız Çalışabilme ve Sorumluluk Alabilme Yetkinliği
1) Temel problemlere çözüm üretebilecek seviyede bağımsız olarak program yazabilme.

Ders Akış Planı

Hafta Konu Ön Hazırlık
1) Bilgisayar ve Programla İlgili Temel Kavramlar Bilgisayar, donanım, sayı sistemleri, bellek ve bellek ölçü birim kavramı Yazılım, programlama, programlama dilleri, dillerin tarihi ve soyağacı Makine dili, bir programının makine diline dönüşüm evreleri, Derleyici ve yorumlayıcı kavramı Syntax error, Run time error kavramları
2) Problem Çözme ve Algoritma Temel Kavramları - Problem ve çözme kavramı, problem örnekleri - Problem çözme yaklaşımları - Bilgisayarla problem çözme - Problem çözümünde izlenecek adımlar - Algoritma tanım ve tarihi - Akış diyagramı veya akış şeması kavramı - Akış şeması şekilleri ve kullanım yerleri - Algoritma ve akış şeması örnekleri Konuya ilişkin paylaşılan sunum ve yardımcı kaynaklardan çalışma.
3) Problem, Algoritma ve Akış Şeması Çalışmaları - Problem, algoritma ve akış şeması örnek çalışmaların incelenmesi - Farklı problem örnekleri üzerinden sınıf içi çalışmaları Konuya ilişkin paylaşılan sunum ve yardımcı kaynaklardan çalışma.
4) Programlama Dilleri Temel Tanım ve Kavramları - Programlama dilleri ve tarihi, - Dillere ait soyağacı düşük ve orta seviyeli bilgisayar dilleri - Makine dili ve devirici Dil (Assembly) - Üst seviye programlama dilleri - C Programlama Dili ve C Dilinin Aile Ağacı - Bir C Program Kodunun Makine Diline Dönüşüm Evreleri Derleyici ve Yorumlayıcı Diller - C Programlama Dili, Yapısı ve Özellikleri, - C Programlama Dilinde: Anahtar Sözcükler, değişken tipleri, değişken isim verme kuralları, geçerli/geçersiz değişken isim örnekleri, operatörler (atama, aritmetik, artırma/azaltma, ilişkisel, mantıksal vb.) kavramları - Laboratuvar uygulama çalışmaları Konuya ilişkin paylaşılan sunum ve yardımcı kaynaklardan çalışma.
5) Program Akış Denetimi - Program akış kavramı - Blok yapısı - Eğerli yapılar ( If ... else, else if yönlendirmeleri) - Swich yönlendirme - Koşullu yönlendirme ve bu yapılara ait örnekler, - Sınıf içi çalışmalar Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
6) Döngü Kavramı ve C programlama dilinde döngüler - while döngüsü, - do .... while döngüsü, - for döngüsü - Döngü problemleri, - Döngülerin kullanımı ve program örnekleri Konuya ilişkin paylaşılan sunum ve yardımcı kaynaklardan çalışma. C Programlamanın Temelleri adlı yardımcı kitabın ilk iki bölümünün okunması.
7) Döngü Uygulama Çalışmaları - Döngüler üzerine farklı problem örneklerinin tartışılması - Algoritmalarının, akış diyagramlarının ve C dilinde yazılmış program kodlarının incelenmesi Soru-cevap şeklinde sınıf içi çalışmalar - Laboratuvar uygulama çalışmaları Ara sınav öncesi konuların genel özet tekrarı, sınıf içi soru ve cevap çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
8) Ara sınav Konuya ilişkin paylaşılan ders sunum ve yardımcı kaynaklardan çalışma.
9) İç içe geçmiş döngüler - C dilinde örnek problemlerin kodlanması ve çözümleri - Döngülerde ‘break’ ve ‘continue’ kullanımı Konuya ilişkin laboratuvar kodlama çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
10) Fonksiyonlar - Fonksiyon kavram ve örnekleri - Programlama dili ve fonksiyonlar - Global değişken, parametre, fonksiyon çağırma/kullanma - C Programlama dili standart kütüphane fonksiyonları, - Depo sınıfları, zaman ve rasgele sayılara ait temel fonksiyonlar - Özyinelem (recursion) Konuya ilişkin laboratuvar kodlama çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
11) Diziler - Dizi(array) kavramı, türleri, tek boyutlu diziler, - Dizi oluşturma, uzunluğu, bileşenleri, bileşenlere erişim, rasgele erişim - Dizi bileşenlerinde işlemler, değer atama, döngü, dizi kopyalama - Çok boyutlu diziler - Matris ve dizi, matris çarpımı Konuya ilişkin örnekler ve laboratuvar kodlama çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
12) İşaretçiler (pointers) ve bellek yönetimi - İşaretçi kavramı, işaretçinin yararları, bellek adresleri, işaretçi ve adres, - NULL işaretçi, * ve & operatörleri, operatörlerin öncelikleri - Fonksiyonları referans ile çağırma, - İşaretçi aritmetiği, dizi ve işaretçiler, - Bellek yönetim kavramı, dinamik ve statik bellek yönetim teknikleri Alıştırmalar ve laboratuvarda kodlama çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
13) Metin - Metin kavramı, düz yazı, text karakter dizim(string) kavramı, - Dizim oluşturma, kopyalama, başlıca dizim fonksiyonlar ve kullanımları, - Program örnekleri Konuya ilişkin laboratuvar kodlama çalışmaları. Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.
14) Dosyalar - Dosya kavramı, dosya türleri, text dosyalar, dosya işaretçisi, - Dosya fonksiyonları, - Karakter giriş/çıkış işlemleri, - İkili dosyalar, rasgele erişim fonksiyonları, Program kod örnekleri ve laboratuvar çalışmaları. Dönem Sonu sınav öncesi genel konuların özet tekrarı, sınıf içi soru ve cevap çalışmaları Konuyla ilgili paylaşılan sunumlardan ve destekleyici kaynaklardan çalışma. Kodlama pratiği.

Kaynaklar

Ders Notları / Kitaplar: Ders sunu ve dokümanları
Diğer Kaynaklar: - Ders Notları
- C Programlamanın Temelleri, Prof. Dr. Timur KARAÇAY, Abaküs Yayınları
- Yardımcı Kitaplar:
- C ile Programlama, Paul Deitel-Harvey Deitel, Çevirmen: Cemil Öz, Palme Yayınları
- Algoritma Geliştirme ve Programlamaya Giriş, Prof. Dr. Fahri VATANSEVER, Seçkin Yayınları
- internet: https://www.tutorialspoint.com/cprogramming/

Uygulama geliştirme aracı: Dev C++ 5.11
File: Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe
Download Site: https://sourceforge.net/projects/orwelldevcpp/

Ders - Program Öğrenme Kazanım İlişkisi

Ders Öğrenme Kazanımları

1

2

3

4

5

Program Kazanımları
1) Matematik, hesaplama ve bilgisayar bilimleri konularında kuramsal ve uygulamalı bilgilere sahiptir.
1) Bireysel olarak veya çok disiplinli takımlarda etkin çalışır.
1) Sürekli mesleki gelişimin gerekliliği bilinci ile bilişim ve/veya bilgisayar bilimleri, bilgi ve iletişim teknolojileri ile ilgili güncel gelişmeleri izler.
1) Sözlü ve yazılı iletişim kurar, en az bir yabancı dili en az Avrupa Dil Portföyü B1 Genel Düzeyinde kullanarak bilişim ve bilgisayar bilimleri alanındaki bilgileri izler ve meslektaşları ile iletişim kurar.
2) Bilişim uygulamalarının bireysel, kurumsal, toplumsal ve evrensel boyutlardaki etkilerinin bilincindedir ve girişimcilik, yenilikçilik konuları hakkında farkındalığa sahiptir.
2) Bilişim ve/veya bilgisayar bilimleri problemlerini saptar, tanımlar ve modeller; bu amaçla uygun analiz ve modelleme yöntemlerini seçer ve uygular.
2) Bilişim ve/veya bilgisayar bilimleri problemlerinin tanımlarını ve ilk çözümlerini elde etmek amacı ile etkileşimli deneysel ortamlar tasarlar, uygular ve bu ortamları değerlendirir
3) Mesleki ve etik sorumluluk bilinci ile bilişim uygulamalarının hukuksal sonuçları hakkında farkındalığa sahiptir.
3) Bilgisayar tabanlı sistemlerde yaşam çevriminin tüm aşamalarını gerçekleştirir.
4) Hesaplama, matematik ve kuramsal bilgisayar bilimleri bilgileri ile bilgi ve iletişim teknolojilerini, bilişim ve/ya bilgisayar bilimleri problemlerinin çözümleri için seçer ve kullanır.

Ders - Öğrenme Kazanımı İlişkisi

Etkisi Yok 1 En Düşük 2 Düşük 3 Orta 4 Yüksek 5 En Yüksek
           
Dersin Program Kazanımlarına Etkisi Katkı Payı
1) Matematik, hesaplama ve bilgisayar bilimleri konularında kuramsal ve uygulamalı bilgilere sahiptir. 4
1) Bireysel olarak veya çok disiplinli takımlarda etkin çalışır. 3
1) Sürekli mesleki gelişimin gerekliliği bilinci ile bilişim ve/veya bilgisayar bilimleri, bilgi ve iletişim teknolojileri ile ilgili güncel gelişmeleri izler. 4
1) Sözlü ve yazılı iletişim kurar, en az bir yabancı dili en az Avrupa Dil Portföyü B1 Genel Düzeyinde kullanarak bilişim ve bilgisayar bilimleri alanındaki bilgileri izler ve meslektaşları ile iletişim kurar. 2
2) Bilişim uygulamalarının bireysel, kurumsal, toplumsal ve evrensel boyutlardaki etkilerinin bilincindedir ve girişimcilik, yenilikçilik konuları hakkında farkındalığa sahiptir. 5
2) Bilişim ve/veya bilgisayar bilimleri problemlerini saptar, tanımlar ve modeller; bu amaçla uygun analiz ve modelleme yöntemlerini seçer ve uygular. 3
2) Bilişim ve/veya bilgisayar bilimleri problemlerinin tanımlarını ve ilk çözümlerini elde etmek amacı ile etkileşimli deneysel ortamlar tasarlar, uygular ve bu ortamları değerlendirir 3
3) Mesleki ve etik sorumluluk bilinci ile bilişim uygulamalarının hukuksal sonuçları hakkında farkındalığa sahiptir. 5
3) Bilgisayar tabanlı sistemlerde yaşam çevriminin tüm aşamalarını gerçekleştirir. 2
4) Hesaplama, matematik ve kuramsal bilgisayar bilimleri bilgileri ile bilgi ve iletişim teknolojilerini, bilişim ve/ya bilgisayar bilimleri problemlerinin çözümleri için seçer ve kullanır. 4

Öğrenme Etkinliği ve Öğretme Yöntemleri

Anlatım
Beyin fırtınası /Altı şapka
Bireysel çalışma ve ödevi
Ders
Laboratuvar
Okuma
Ödev
Problem Çözme
Soru cevap/ Tartışma
Web Tabanlı Öğrenme

Ölçme ve Değerlendirme Yöntemleri ve Kriterleri

Yazılı Sınav (Açık uçlu sorular, çoktan seçmeli, doğru yanlış, eşleştirme, boşluk doldurma, sıralama)
Ödev
Uygulama
Gözlem

Ölçme ve Değerlendirme

Yarıyıl İçi Çalışmaları Aktivite Sayısı Katkı Payı
Ödev 4 % 20
Ara Sınavlar 1 % 30
Final 1 % 50
Toplam % 100
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI % 50
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI % 50
Toplam % 100

İş Yükü ve AKTS Kredisi Hesaplaması

Aktiviteler Aktivite Sayısı Süre (Saat) İş Yükü
Ders Saati 14 2 28
Laboratuvar 14 2 28
Uygulama 2 14 28
Sınıf Dışı Ders Çalışması 14 2 28
Ödevler 3 12 36
Ara Sınavlar 1 14 14
Final 1 18 18
Toplam İş Yükü 180