YAZILIM MÜHENDİSLİĞİ | |||||
Lisans | TYYÇ: 6. Düzey | QF-EHEA: 1. Düzey | EQF-LLL: 6. Düzey |
Ders Kodu | Ders Adı | Yarıyıl | Teorik | Pratik | Kredi | AKTS |
CMP1001 | Programlamaya Giriş (C++) | Güz | 2 | 2 | 3 | 6 |
Bu katalog bilgi amaçlıdır, dersin açılma durumu, ilgili bölüm tarafından yarıyıl başında belirlenir. |
Öğretim Dili: | İngilizce |
Dersin Türü: | Non-Departmental Elective |
Dersin Seviyesi: | LİSANS |
Dersin Veriliş Şekli: | Yüz yüze |
Dersin Koordinatörü: | Dr. Öğr. Üyesi ECE GELAL SOYAK |
Dersi Veren(ler): |
Dr. Öğr. Üyesi CEMAL OKAN ŞAKAR Dr. UTKU GÜLEN Arş.Gör. ÇİĞDEM ERİŞ Dr. Öğr. Üyesi TARKAN AYDIN Dr. Öğr. Üyesi ERKUT ARICAN Dr. Öğr. Üyesi ÖVGÜ ÖZTÜRK ERGÜN Dr. Öğr. Üyesi ÖZGÜR ERKUT ŞAHİN Dr. Öğr. Üyesi ECE GELAL SOYAK |
Opsiyonel Program Bileşenleri: | Yok....... |
Dersin Amacı: | Bu dersin amacı, programlama kavramları, bilgisayar program tasarımı ve C++ dili ile programlamaya genel bir bakış sağlamaktır. C++ dili ile çalışan programlar yazılması dersin amaçlarının başında gelmektedir. Ders, yazılım geliştirme aşamaları olan program analizi, tasarlanması, gerçeklemesi ve sınama kavramlarına temel oluşturacaktır. |
Bu dersi başarıyla tamamlayabilen öğrenciler; I. Problem tanımı ve analizi, algoritma geliştirme. II. C++ ile, çeşitli seçim yapılarını kullanan bilgisayar programlarını geliştirme. III. C++ ile, tekrarlama yapılarını kullanan bilgisayar programlarını geliştirme. IV. C++ ile, diziler ve çok boyutlu diziler gibi basit veri yapılarını kullanan bilgisayar programlarını geliştirme. V. Bir C++ programında fonksiyonları tanımlama ve doğru şekilde çağırma. VI. C++ ile, işaretçileri doğru şekilde kullanan verimli bilgisayar programları geliştirme. |
Kodlamaya giriş (Programlama dilleri, derleyiciler) Problem çözme, Algoritma Tasarımı ve Gösterimi (sözde kod, akış şeması) Basit veri tipleri, Sabitler, Değişkenler, Tanımlayıcılar, İsimlendirilmiş sabitler, Aritmetik operatörler İlişkisel ve mantıksal operatörler, Şartsal ifadeler Döngüler (While, Do While) Döngüler (For) ve döngü anahtar sözcükleri Fonksiyonlar, Fonksiyon aşırı yüklemesi Karakter dizileri, karakter dizi fonksiyonları Diziler, Çok boyutlu diziler, dizilerde arama İşaretçiler Referansla geçirme, değerle geçirme |
Hafta | Konu | Ön Hazırlık |
1) | Önemli bilgisayar sistemi kavramlarına giriş (Bilgisayar bileşenleri, yazılım, işletim sistemi, dosya sistemi, programlama dilleri, derleyiciler) | Önemli bilgisayar sistemi kavramları hakkında ders kitabından bilgi edinmek |
2) | Problem çözme (Algoritmalar, sözde kod, akış şeması), Algoritma tasarımı | Algoritma tasarım yöntemleri hakkında ders kitabı ve diğer kaynaklardan bilgi edinmek |
3) | Basit veri tipleri, Sabitler, Değişkenler, Tanımlayıcılar, İsimlendirilmiş sabitler, Aritmetik operatörler | Algoritma tasarımı tekniklerinden sözde kod ve akış şeması teknikleriyle örnek programlar tasarlanması Ders kitabının basit veri tipleri, sabitler, değişkenler, isimlendirilmiş sabitler, aritmetik operatörler hakkındaki kısımlarını okumak |
4) | Quiz, İlişkisel ve mantıksal operatörler, Şartsal ifadeler | Basit C++ programları yazmak |
5) | Döngüler (Do/While) | İlişkisel ve mantıksal operatörler içeren örnek programlar geliştirmek Ders kitabı ve referans kaynakların döngüler hakkındaki kısımlarını okumak |
6) | Döngüler ('For'), 'break' ve 'continue' anahtar sözcükleri | Döngülerle ilgili örnek programların sözde kodlarını yazmak, akış şemalarını çizmek ve C++ kodlarını yazmak |
7) | Quiz, Fonksiyonlar, Özyinelemeli fonksiyonlar, Fonksiyon aşırı yüklemesi | Moduler programlamayla ilgili ders kitabından ve referans kaynaklardan bilgi edinilmesi |
8) | Diziler | Fonksiyon içeren örnek C++ programları geliştirilmesi |
9) | Karakter dizileri, karakter dizi fonksiyonları | Ders kitabının ve referens kaynaklarının, karakter dizileri ve hazir karakter dizi fonksiyonları hakkındaki ilgili bölümlerini okumak |
11) | Çok boyutlu diziler | Dizilerle ilgili örnek C++ programları geliştirmek |
12) | Quiz, Dizi sıralama, dizilerde arama yapmak | Karakter dizileri hakkında programlar geliştirmek, hazır karakter dizi fonksiyonlarını kullanmak |
13) | İşaretçiler | Dizi sıralama ve dizilerde arama yapma algoritmalarının örnek C++ programlarında Ders kitabının ve referans kaynakların işaretçiler ile ilgili kısımlarının okunması |
14) | Fonksiyonlara işaretçileri kullanarak referansla geçirme, Fonksiyon işaretçileri | İşaretçilerle ilgili örnek C++ programları geliştirilmesi |
Ders Notları / Kitaplar: | Paul J. Deitel, Harvey M. Deitel, C++ How to Program, 7th Ed., Pearson Bjarne Stroustrup, The C++ Programming Language, 3rd Ed., Addison-Wesley. Bjarne Stroustrup, Programming Principles and Practice Using C++, 1st Ed., Addison-Wesley. Walter Savitch, Problem Solving with C++, 7th Ed., Addison-Wesley Andrei Alexandrescu, Herb Sutter, C++ Design and Coding Standards: Rules and Guidelines for Writing Programs, 1st Ed., Addison-Wesley. |
Diğer Kaynaklar: | http://www.cplusplus.com/doc/tutorial/ http://www.cprogramming.com/ |
Yarıyıl İçi Çalışmaları | Aktivite Sayısı | Katkı Payı |
Küçük Sınavlar | 4 | % 25 |
Ara Sınavlar | 1 | % 35 |
Final | 1 | % 40 |
Toplam | % 100 | |
YARIYIL İÇİ ÇALIŞMALARININ BAŞARI NOTU KATKISI | % 60 | |
YARIYIL SONU ÇALIŞMALARININ BAŞARI NOTUNA KATKISI | % 40 | |
Toplam | % 100 |
Aktiviteler | Aktivite Sayısı | İş Yükü |
Ders Saati | 14 | 28 |
Laboratuvar | 14 | 28 |
Küçük Sınavlar | 6 | 12 |
Ara Sınavlar | 6 | 22 |
Final | 6 | 26 |
Toplam İş Yükü | 116 |
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) | Karmaşık mühendislik problemlerine yönelik yazılım proje, süreç ve ürünlerine ait fonksiyonel ve fonksiyonel olmayan özellikleri tanımlayabilmek. | |
2) | Karmaşık mühendislik problemlerinde yazılım mimarisi, bileşenleri, ara yüzleri ve sisteme ait diğer alt bileşenleri tasarlayabilmek. | |
3) | Kodlama, doğrulama, sınama ve hata ayıklama konularını da içerecek şekilde karmaşık yazılım sistemleri geliştirebilmek. | |
4) | Karmaşık mühendislik problemlerinde yazılımı, programın davranışlarını beklenen sonuçlara göre sınayarak doğrulayabilmek. | |
5) | Karmaşık yazılım sistemlerinin çalışması sırasında, çalışma ortamının değişmesi, yeni kullanıcı istekleri ve yazılım hatalarının ortaya çıkması ile meydana gelen bakım faaliyetlerine yönelik işlemleri yapabilmek. | |
6) | Karmaşık yazılım sistemlerinde yapılan değişiklikleri izleyebilmek ve kontrol edebilmek, entegrasyonunu sağlayabilmek, yeni sürümlerini sistematik olarak planlayabilmek ve riskleri yönetebilmek. | |
7) | Disiplin içi ve disiplinler arası takımlarda görev alarak karmaşık yazılım sistemleri yaşam süreçlerini tanımlayabilmek, değerlendirebilmek, ölçebilmek, yönetebilmek ve uygulayabilmek. | |
8) | Karmaşık mühendislik problemlerinde gerçekçi kısıtlar ve koşullar altında yazılım gereksinimlerini toplama, yazılımı tasarlama, geliştirme, sınama, bakımını yapma konularındaki çeşitli araçları ve yöntemleri kullanabilmek. | |
9) | Temel kalite metrikler tanımlayabilmek, yazılım yaşam döngüsü süreçlerini uygulayabilmek, yazılım kalitesini ölçebilmek, kalite model karakteristiklerini tanımlayabilmek, standartları uygulayabilmek ve bunları karmaşık yazılım sistemlerini analiz etmekte, tasarlamakta, geliştirmekte, doğrulamakta ve sınamakta kullanabilmek. | |
10) | Yazılım mühendisliği ile ortak sınırlara sahip olan matematik, fen bilimleri, bilgisayar mühendisliği, endüstri mühendisliği, sistem mühendisliği, ekonomi, yönetim ve sürdürülebilir kalkınma gibi diğer disiplinler hakkında teknik bilgi kazanabilmek ve bunlar aracılığıyla yenilikçi fikirleri karmaşık mühendislik problemlerinde ve girişimcilik faaliyetlerinde kullanabilmek. | |
11) | Yazılım mühendisliği kültürü ve etik anlayışını kavrayabilmek ve bunları yazılım mühendisliğinde uygulayabilecek temel bilgilere sahip olmak, meslek hayatı boyunca gerekli teknik becerileri öğrenip başarıyla uygulayabilmek. | |
12) | Yabancı dil ve Türkçe kullanarak etkin rapor yazabilmek ve yazılı raporları anlayabilmek, tasarım ve üretim raporları hazırlayabilmek, etkin sunum yapabilmek, açık ve anlaşılır talimat verebilmek ve alabilmek. | |
13) | Mühendislik uygulamalarının evrensel ve toplumsal boyutlarda sağlık, çevre ve güvenlik üzerindeki etkileri ve çağın mühendislik alanına yansıyan sorunları ile mühendislik çözümlerinin hukuksal sonuçları hakkında bilgi sahibi olmak. |