Ders AdıKodu Yerel KrediAKTS Ders (saat/hafta)Uygulama (saat/hafta)Laboratuar (saat/hafta)
Bilgisayar Programlama 1MAT452035300
ÖnkoşullarYok
YarıyılGüz, Bahar
Dersin Diliİngilizce, Türkçe
Dersin SeviyesiLisans
Dersin TürüSeçmeli @ Matematik Lisans Programı
Seçmeli @ Fen Bilgisi Eğitimi Lisans Programı
Ders KategorisiTemel Meslek Dersleri
Dersin Veriliş ŞekliYüz yüze
Dersi Sunan Akademik BirimMatematik Bölümü
Dersin KoordinatörüNuran Güzel
Dersi Veren(ler)
Asistan(lar)ı
Dersin AmacıBu dersin amacı, öğrencilere C programlama dilini kullanarak programlama problemlerini analiz etme ve çözme, kodlarını test etme ve optimize etme yöntemlerini öğretmektir. Ayrıca, programlama dillerinde yeterlilik, problem çözme ve hata ayıklama gibi temel yazılım geliştirme becerilerinin geliştirilmesine de odaklanmaktadır.
Dersin İçeriğiC programlama diline giriş; değişkenler ve veri tipleri; program yazımı ve giriş-çıkış deyimleri; operatörler; kontrol deyimleri; kütüphaneler; fonksiyonlar; özyinelemeli fonksiyonlar; diziler; iki boyutlu ve çok boyutlu diziler; karakter dizileri; göstericiler.
Ders Kitabı / Malzemesi / Önerilen Kaynaklar
  • Ders Kitabı:

    Dmitrović, Slobodan. Modern C for Absolute Beginners: A Friendly Introduction to the C Programming Language. Springer Nature, 2024.
  • Zorunlu Kaynaklar:

    [1] Hwang, Andrew D. Sets, Groups, and Mappings: An Introduction to Abstract Mathematics. American Mathematical Society, 2019.

    [2] Landi, Giovanni, Zampini, Alessandro. Linear Algebra and Analytic Geometry for Physical Sciences. Springer, 2018.

    [3] Stewart, James. Single Variable Calculus: Early Transcendentals. 8. baskı, Cengage Learning, 2015.

  • Önerilen Kaynaklar:

    Deitel, Paul J., Deitel, Harvey M. How to Program with an Introduction to C++. 8.baskı, Pearson Education Limited, 2016. Karaçay, Timur. Çözümlü C Programları ve Laboratuvar Uygulamaları. 1. baskı, Abaküs Kitap Yayın Pazarlama, 2015. King, Kim N. C Programming: A Modern Approach. 2. baskı, New York, US‐NY: W.W. Norton & Company, 2008.
Opsiyonel Program BileşenleriYok

Ders Öğrenim Çıktıları

  1. Bu dersi başarıyla tamamlayan öğrenciler,

    C Programlama dilinin temel yapısını tanıyarak değişken tanımlama, veri tiplerini ayırt etme ve bu tipleri uygun durumlarda kullanabilme becerisi kazanabileceklerdir.
  2. Aritmetik, karşılaştırma ve mantıksal operatörleri programlama bağlamında etkili bir şekilde kullanarak ifade ve işlem kontrolü gerçekleştirebileceklerdir.
  3. Karar yapıları (if, switch) ve döngüler (for, while, do-while) gibi kontrol deyimlerini kullanarak algoritmaları farklı durumlara göre yönlendirebileceklerdir.
  4. Karmaşık işlemleri fonksiyonlar aracılığıyla yönetebilmek için kullanıcı tanımlı fonksiyonlar yazarak programın modülerliğini artırabileceklerdir.
  5. Özyinelemeli (recursive) fonksiyonları kullanarak kendini yineleyen problemlere algoritmik çözümler geliştirebileceklerdir.
  6. Dizileri tanımlayarak matris tabanlı veri yapıları üzerinde çalışabileceklerdir.
  7. Gösterici (pointer) kavramını kullanarak ve bellek adresleriyle çalışarak oluşturacakları dinamik veri yapıları ile programlarını geliştirebileceklerdir.

Ders Öğrenim Çıktısı & Program Çıktısı Matrisi

DÖÇ-1DÖÇ-2DÖÇ-3DÖÇ-4DÖÇ-5DÖÇ-6DÖÇ-7

Haftalık Konular ve İlgili Ön Hazırlık Çalışmaları

HaftaKonularÖn Hazırlık
1Konu Anlatımı: C programlama diline giriş (programlamanın genel yapısı)

Sınıf-içi Uygulama (80 dk.): Programlamanın genel yapısında bulunan parçaların açıklanması ve kodlama dilinde gösterimlerinin tanıtılması

Sınıf-içi Tartışma (35 dk.): Genellikle yapılan kodlama hataları üzerine tartışma

  1. C programlama diline giriş ve C derleyicileri konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 3-8.
2Konu Anlatımı: Değişkenler ve veri tipleri (değişkenleri veri tiplerine göre tanımlama)

Sınıf-içi Uygulama (75 dk.): Farklı veri tipleriyle değişkenlerin tanımlanması ve değişkenlerin yerelliği

Sınıf-içi Tartışma (35 dk.): Değişken türlerinin tanımlanmasında yapılan hataların incelenmesi ve yerel ve yerel olmayan değişkenin farklılıkları üzerine tartışma

  1. C programlama dilinde değişkenler ve veri tiplerine göre tanımlama konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 15-30.
3Konu Anlatımı: Program yazımı ve giriş-çıkış deyimleri (temel programlama ve içerik, basit anlamda girdi verme ve çıktı alma)

Sınıf-içi Uygulama (80 dk.): Giriş-çıkış deyimlerinin doğru kullanımına yönelik program yazılması ve farklı girdilerle elde edilecek çıktıların incelenmesi

Sınıf-içi Tartışma (30 dk.): Giriş-çıkış deyimlerinde yapılan hataların değerlendirilmesi üzerine tartışma

  1. C programlama dilinde program yazımında temel kavramlar ve giriş-çıkış deyimleri konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 9-15; 31-34.
4Konu Anlatımı: Operatörler (aritmetik, mantık, eşitlik ve bağıntılar, atama, artış ve azalış, koşulsal)

Sınıf-içi Uygulama (60 dk.): Aritmetik ve karşılaştırma operatörlerini içeren kısa algoritmaların verilmesi ve çıktılarının tahmin edilmesi

Sınıf-içi Tartışma (30 dk.): Operatörlerin matematiksel anlamları ile programlamadaki işlevleri arasındaki farkların tartışılması ve özellikle “==” ve “=” operatörlerinin anlamlarının değerlendirilmesi, mantıksal bağlaçların doğruluk tablolarının ve işlem önceliğinin önemine yönelik alıştırmaların yapılması

  1. Mantık ve bağıntılar kavramlarına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi. Kaynak: [1], 1-8; 58-62.
  2. C programlama dilinde operatörler konusunu içeren bölümlerin okunması. Kaynak: Ders Kitabı, 35-48.
5Konu Anlatımı: Kontrol deyimleri (seçim ve karar deyimleri)

Sınıf-içi Uygulama (80 dk.):if,else if ve else deyimlerini içeren kısa kod örnekleri ile çalışma yapılması, iç içe yapılar ve mantıksal ifadelerin program kontrol akışı üzerindeki etkilerinin gözlemlenmesi

Sınıf-içi Tartışma (30 dk.): Karar yapılarının matematiksel akıl yürütme süreçleriyle olan benzerliği üzerine tartışma yapılması,

Kısa Sınav 1 (25 dk.): Ters yüz edilmiş öğrenme (flipped learning) yöntemi çerçevesinde, ders sonunda, derste önceki haftalarda işlenmiş konulara yönelik kısa sınavın yapılması

  1. Seçim ve karar deyimleri konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 49-60.
  2. Kısa Sınav 1: (C programlama diline giriş; değişkenler ve veri tipleri; program yazımı ve girişçıkış deyimleri; operatörler) Kaynak: Ders Kitabı, 3-48.
6Konu Anlatımı: Kontrol deyimleri (iteratif deyimler ve atlama deyimleri)

Sınıf-içi Uygulama (70 dk.): İteratif kontrol yapılarının akışına basit örneklerin verilmesi, döngülerin farklı koşullar altında nasıl çalıştığı ve iteratif deyimler ile seçim ve karar deyimlerinin bir arada kullanımına yönelik alıştırmalar yapılması

Sınıf-içi Tartışma (60 dk.): Döngülerin matematiksel örüntüler ve işlem tekrarlarıyla ilişkisinin tartışılması, break, continue gibi deyimlerin hangi durumlarda tercih edilmesi gerektiği, kodun akışına etkileri ve okunabilirliği üzerindeki rolü üzerine fikir alışverişi yapılması ve gereksiz döngü kullanımı ya da döngü içi kontrol deyimlerinin kötüye kullanımı gibi yaygın hataların gözlemlenmesi üzerine tartışma

  1. Lise düzeyindeki matematikte iteratif işlemlerin (ardışık toplamaçarpma, faktöriyel, vb.) çalışma yapılarına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi.
  2. İteratif ve atlama deyimleri konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 61-64.
7Konu Anlatımı: Kütüphaneler (bazı standart kütüphaneler ve matematik kütüphanesi)

Sınıf-içi Uygulama (40 dk.): Standart kütüphaneler ve özellikle matematik kütüphanesi kullanılarak erişilebilen matematiksel fonksiyonların temel kullanımına dair örneklerin verilmesi

Sınıf-içi Tartışma (60 dk.): Matematiksel işlemlerin elle kodlanması yerine uygun kütüphane fonksiyonlarının tercih edilmesi ve doğru sözdizimi ile çağrılmasına yönelik uygulama ve tartışma yapılması

Kısa Sınav 2 (30 dk.): Ters yüz edilmiş öğrenme (flipped learning) yöntemi çerçevesinde, ders sonunda, derste önceki haftalarda işlenmiş konulara yönelik kısa sınavın yapılması

  1. C dilinde yaygın olarak kullanılan kütüphaneler ve matematik kütüphanesi konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 250-253.
  2. Kısa Sınav 2: (kütüphaneler konusuna kadar tüm konular) Kaynak: Ders Kitabı, 3-64.
8Ara Sınav 1
9Konu Anlatımı: Fonksiyonlar (modüler programlama, fonksiyon tanımlama, parametre türleri, fonksiyon kategorileri)

Sınıf-içi Uygulama (40 dk.): Parametreli ve parametresiz, farklı çıktı türlerine yönelik fonksiyon örneklerinin verilmesi ve modüler yapının kod okunabilirliği ve yeniden kullanılabilirlik açısından katkıları uygulamalı olarak incelenmesi

Sınıf-içi Tartışma (80 dk.): Programlamada fonksiyon kullanımının, matematikteki fonksiyon kavramıyla nasıl benzerlik ve farklar taşıdığı üzerine tartışılması bir programın modüllere ayrılarak yazılmasının hata ayıklama, güncelleme ve yeniden kullanım açısından sağladığı avantajların değerlendirilmesi ve fonksiyonların türleri arasındaki farkların ve tercih gerekçelerinin değerlendirilmesi

  1. Fonksiyonlar (kalkülüs) kavramına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi. Kaynak: [3], 9-35.
  2. Modüler programlama, fonksiyon tanımlama, parametre türleri, fonksiyon kategorileri konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 103-122.
10Konu Anlatımı: Özyinelemeli fonksiyonlar (iteratif döngülerle kıyaslama ve kuyruk özyinelemesi)

Sınıf-içi Uygulama (30 dk.): Özyinelemeli olarak tanımlanmış algoritmaların analiz edilmesi ve fonksiyonun çağrı sırasının izlenerek çağrı yığını üzerindeki etkisi gözlemlenmesi

Sınıf-içi Tartışma (80 dk.): Özyinelemeli verilmiş fonksiyonların döngü yapısıyla nasıl çözülebileceğinin tartışılması ve her iki yaklaşımın karşılaştırmalı uygulanması

  1. Özyineleme kavramına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi. Kaynak: [1], 75- 77.
  2. Özyinelemeli fonksiyonlar ve kuyruk özyinelemesi konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 133-138.
11Konu Anlatımı: Diziler (dizilerin tanımlanması ve temel diziler)

Sınıf-içi Uygulama (50 dk.): Sabit uzunlukta çeşitli dizilerin tanımlanarak elemanlara indis yoluyla erişilmesi ve dizi elemanlarının toplamını veya ortalamasını hesaplayan basit işlemler uygulanması

Sınıf-içi Tartışma (40 dk.): Tekrarlayan verilerle çalışırken programı nasıl sadeleştirdiğinin incelenmesi ve tek tek değişken tanımlayarak yapmak ile dizi kullanarak yapmak arasındaki farkların değerlendirilmesi

Kısa Sınav 3 (30 dk.): Ters yüz edilmiş öğrenme (flipped learning) yöntemi çerçevesinde, ders sonunda, derste önceki haftalarda işlenmiş konulara yönelik kısa sınavın yapılması

  1. Vektörler kavramına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi. Kaynak: [2], 1-5.
  2. Diziler konusunu içeren bölümlerin okunması. Kaynak: Ders Kitabı, 71-75.
  3. Kısa Sınav 3: (diziler konusuna kadar tüm konular) Kaynak: Ders Kitabı, 3-64; 103-138; 250-253.
12Konu Anlatımı: İki boyutlu ve çok boyutlu diziler (matris yapısı ve dizilerin fonksiyonlarla kullanımı)

Sınıf-içi Uygulama (50 dk.): İki boyutlu ve çok boyutlu dizilerin tanımlanmasına, bu diziler üzerinde temel işlemler yapılmasına ve söz konusu dizilerin fonksiyonlar içerisinde kullanılmasına yönelik uygulamalar yapılması

Sınıf-içi Tartışma (60 dk.): İki boyutlu dizilerin matris temsiliyle örtüşen yapıları ile çok boyutlu dizilerin karmaşık veri düzenlemelerine olanak sağlaması üzerine tartışılması ve bu yapıların okunabilirlik, fonksiyonel kullanım ve belleğe erişim açısından avantajları ve sınırlılıkları üzerine değerlendirme yapılması

  1. Matris kavramına ilişkin ön bilgilerin hatırlanması ve etkinleştirilmesi. Kaynak: [2], 47- 52.
  2. İki boyutlu ve çok boyutlu diziler konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 77-80.
13Konu Anlatımı: Karakter dizileri (karakter dizilerinin sayı dizilerinden farkı, karakter dizileri kütüphanesi ve karakter dizisi manipülasyonu, karakter kütüphanesi)

Sınıf-içi Uygulama (50 dk.): Standart karakter kütüphanelerinden yararlanılarak karakter dizilerinin tanımlanması, karakter dizileri üzerinde temel işlemler yapılması ve karakter düzeyinde veri işleme, metin karşılaştırma veya dönüştürme gibi işlemlerin gerçekleştirilmesi

Sınıf-içi Tartışma (60 dk.): Karakter dizileri ile sayı dizileri arasındaki farklar; veri tipi, kullanım amacı ve işlem yapıları bakımından karşılaştırılması ve giriş-çıkış deyimleri ile karakter dizilerinin farklarının incelenmesi üzerine tartışma

  1. Karakter dizilerinin sayı dizilerinden farkı, karakter dizileri kütüphanesi ve karakter dizisi manipülasyonu, karakter kütüphanesi konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 76-77; 213-218; 239- 243.
14Konu Anlatımı: Göstericiler (gösterici operatörü, adres tanımlaması ve değer atamaları)

Sınıf-içi Uygulama (35 dk.): Adreslerin okunması ve göstericiler aracılığıyla değişken değerlerine erişilmesi yönünde temel uygulamalar gerçekleştirilmesi

Sınıf-içi Tartışma (45 dk.): Göstericilere değer atama işlemlerinin ve bu işlemlerin bellek üzerindeki etkilerinin gözlemlenmesi üzerine tartışma

Kısa Sınav 4 (30 dk.): Ters yüz edilmiş öğrenme (flipped learning)yöntemi çerçevesinde, ders sonunda, derste önceki haftalarda işlenmiş konulara yönelik kısa sınavın yapılması

  1. Gösterici operatörü, adres tanımlaması ve değer atamaları konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 81-84.
  2. Kısa Sınav 4: (göstericiler konusuna kadar tüm konular) Kaynak: Ders Kitabı, 3-80; 103- 138; 250-253.
15Konu Anlatımı: Göstericiler (göstericilerin fonksiyonlarla ve dizilerle kullanımı, adres aritmetiği, bellek atama)

Sınıf-içi Uygulama (70 dk.): Göstericilerin dizi elemanlarına erişimde ve fonksiyonlara parametre aktarımında nasıl kullanılabildiğine yönelik uygulamaların yapılması, adres aritmetiği kullanılarak ardışık bellek alanlarına erişim sağlanması ve dinamik bellek tahsisine dair temel işlemlerin gerçekleştirilmesi

Sınıf-içi Tartışma (30 dk.): Özellikle bellek sızıntısı gibi kavramlara dikkat çekilerek bilinçli gösterici kullanımının tartışılması

  1. Göstericilerin fonksiyonlarla ve dizilerle kullanımı, adres aritmetiği, bellek atama konularını içeren bölümlerin okunması. Kaynak: Ders Kitabı, 85-94; 157-160.
16Final

Değerlendirme Sistemi

EtkinliklerSayıKatkı Payı
Devam/Katılım
Laboratuar
Uygulama
Arazi Çalışması
Derse Özgü Staj
Küçük Sınavlar/Stüdyo Kritiği120
Ödev
Sunum/Jüri
Projeler
Seminer/Workshop
Ara Sınavlar140
Final140
Dönem İçi Çalışmaların Başarı Notuna Katkısı
Final Sınavının Başarı Notuna Katkısı
TOPLAM100

AKTS İşyükü Tablosu

EtkinliklerSayıSüresi (Saat)Toplam İşyükü
Ders Saati143
Laboratuar
Uygulama
Arazi Çalışması
Sınıf Dışı Ders Çalışması143
Derse Özgü Staj
Ödev
Küçük Sınavlar/Stüdyo Kritiği43
Projeler
Sunum / Seminer
Ara Sınavlar (Sınav Süresi + Sınav Hazırlık Süresi)120
Final (Sınav Süresi + Sınav Hazırlık Süresi)120
Toplam İşyükü :
Toplam İşyükü / 30(s) :
AKTS Kredisi :
Diğer NotlarYok