Hafta | Konu | Tarih |
---|---|---|
1 | Giriş | 8.10.2019 |
2 | Akış Diyagramları | 15.10.2019 |
3 | C’e Genel Bakış, Değişkenler ve Operatörler | 22.10.2019 |
4 | Resmi Tatil | 29.10.2019 |
5 | Seçim ve Kontrol Yapıları | 5.11.2019 |
6 | Fonksiyonlar | 12.11.2019 |
7 | Vize | 19.11.2019 |
8 | Test ve Hata Ayıklama | 26.11.2019 |
9 | İşaretçiler | 3.12.2019 |
10 | Diziler | 10.12.2019 |
11 | Özyinelemeli Fonksiyonlar | 17.12.2019 |
12 | Karakterler, Girdi/Çıktı Formatlama, Dosya Okuma ve Yazma | 24.12.2019 |
13 | C Yapıları | 31.12.2019 |
14 | Önişlemler ve Diğer Konular | 7.1.2020 |
15 | Final ve Proje Sunumları | Sınav Haftası |
Author: EmreLevent
Ders Açıklaması
Bu dersin amacı algoritma tasarımı, analizi ve optimizasyonu yapabilme becerisi kazandırmaktır. Ders kapsamında problem çözme, C dili ile çeşitli algoritma geliştirme yöntemleri aktarılmaktadır. Kontrol yapıları, döngüler, fonksiyonlar, diziler, işaretçiler kullanılarak bilgisayar programlarının tasarımları öğretilmektedir. Dosya işleme, yapılar ve kullanım alanları, yeniden kullanılabilir kod kavramı ve verimli kod geliştirme kavramları hakkında bilgi verilmektedir.
Ders Saatleri (Teorik + Lab)
Salı 09.00-13.00
Öğretim Elemanları ve Ofis Saatleri
Dr. Öğr. Üyesi Vecdi Emre Levent, Ofis 311 – Pazartesi 17.00-18.00, Salı 16.00-17.00
Arş. Gör. Uğur Özbalkan, Ofis 311 – Salı 16.00-17.00, Cuma 16.00-17.00
Ön Gereksinimler
Yok
Yardımcı Kaynaklar
Dersin referans kaynakları aşağıda listelenmektedir.
- Kernighan & Ritchie, The C Programming Language, Prentice Hall
- Deitel & Deitel, C How to Program, Prentice Hall
- Problem Solving & Programming Design In C, Fourth Edition, Jeri R. Hanly and Elliot B. Koffman
- Introduction to Algorithms, Third Edition, T.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein, MIT Press
Yazılımlar
C dili ile geliştirilecek olan uygulamalar, Visual Studio Community kullanılarak derlenecektir.
Dersler
Dersin haftalık 2 saat teorik, 2 saat laboratuvar bölümü bulunmaktadır. Öğretim üyesi tarafından verilen ders materyallerinin ders öncesi incelenip, ders sonrasında ise tekrar edilmesi beklenmektedir.
Öğrenim Çıktıları
- Bir problemin birden çok çözüm yöntemini kıyasyabilme
- Basit veri yapılarıyla algoritma kurma becerisi
- Yeniden kullanılabilir ve optimize kod tasarımı
- Özyinelemeli fonksiyonlar ile tasarım
- C dili ile algoritma geliştirme kabiliyeti
Quizler
Dönem içerisinde iki adet quiz yapılacaktır. 30 dk süre verilecektir. Quiz tarihi bir hafta önceden duyurulacaktır.
Notlandırma
Derslere %80 oranında devam zorunludur.
Dönem notu; vize, lablar, ödevler, proje ve final sınavı ile belirlenecektir. Değerlendirme yüzdeleri aşağıdaki tabloda verilmiştir.
Faaliyetler | Oranlar |
---|---|
Vize | %15 |
Ödev/Quiz | %10 |
Lab | %15 |
Proje | %40 |
Final | %20 |
Bonus | 5 Puan’a kadar |
Ödev ve quizlerin teslim saati üzerinden her geçen saat için 5 puan kesilecektir.
Dönem sonu notunun karşılık geldiği ağırlık ve harf notu aşağıdaki tabloda verilmiştir.
Dönem Notu | Ağırlık | Harf Notu |
90-100 | 4.00 | AA |
85-89 | 3.50 | BA |
80-84 | 3.00 | BB |
75-79 | 2.50 | CB |
65-74 | 2.00 | CC |
50-64 | 1.50 | DC |
45-49 | 1.00 | DD |
0 -44 | 0 | FF |
Beklenen Efor
Öğrencinin dönem içinde göstermesi beklenen efor tablosu aşağıda verilmiştir.
İçerik | Saat | Kaç Defa | Ara Toplam |
Derse Hazırlık | 2 | 14 | 28 |
Ders Tekrarı | 2 | 14 | 28 |
Ödev | 4 | 6 | 24 |
Proje | 48 | 1 | 48 |
Sınıf Dersi | 4 | 14 | 56 |
Ara Sınav ve Final | 3 | 2 | 6 |
Öğrenciler dersten başarılı olmak için dönem boyunca ortalama 190 saat harcamaları beklenmektedir.
Kodlama Ödevleri
Kodlama ödevlerinin notlandırılması, kodun doğruluğu, kalite ve algoritmik gerçeklemedeki detayları incelenerek yapılacaktır.
Doğruluk
Verilecek her bir ödev için test girişi ve beklenen çıkışlar paylaşılacaktır. Ancak ödev kontrolü yapılırken sizinle paylaşılmamış başka test durumları da denenecektir. Çalışma zamanı, beklenenden çok uzun süren kodlar yanlış olarak değerlendirilebilir.
Teori
Kod, istenen algoritmanın tasarımı olmalıdır. En optimum çözüm beklenmemektedir. Ancak bellek ve çalışma zamanı beklenenden çok fazla olmamalıdır.
Yazılı Ödevler
Ödev kendi el yazınız ile yazılmalıdır. Ödev cevap kağıtının üzerinde, dersin adı, öğrenci adı ve soyadı, öğrenci numarası ve tarih bulunmalıdır.
Akademik Dürüstlük
Ödevin amacı, ders hakkında derinlemesine araştırma yapmayı öğrenmek ve pratik bilgiler kazanmayı sağlamaktır. Verilen ödevler hakkında, diğer öğrenciler ile birlikte çalışma teşvik edilmektedir. Çalışma grubu oluşturan öğrenciler, kendi başına çalışan öğrencilere göre sınavlarda daha başarılı olmaktadırlar.
Ancak bir ödevi çözmek için başkaları ile birlikte çalışsanız bile, her bir sorunun çözümünü yardım almadan kendiniz yapmalısınız. Çözümünüzü bir araştırma yolu ile elde ederseniz (örn. bir internet araması), çözümü kendi cümle ve/veya kodunuz ile ifade etmelisiniz. Çözümü sözlü olarak sorulduğunda, öğrencinin açıklayabilmesi beklenmektedir.
Verilen ödev bir kod ise, kendinizin yazması gerekmektedir. Hata ayıklamada başkalarından yardım alabilirsiniz. Kodda intihal tespiti için manuel ve otomatik mekanizmalar kullanılacaktır. İntihal, sınav içi kopya ve benzeri davranışlar disiplin yönetmeliğine göre cezalandırılır.
Algorithms and Programming I
Important Note: Some links may be broken, if you send me an e-mail I can send you the file.
Course Description: Bu dersin amacı algoritma tasarımı, analizi ve optimizasyonu yapabilme becerisi kazandırmaktır. Ders kapsamında problem çözme, C dili ile çeşitli algoritma geliştirme yöntemleri aktarılmaktadır. Kontrol yapıları, döngüler, fonksiyonlar, diziler, işaretçiler kullanılarak bilgisayar programlarının tasarımları öğretilmektedir. Dosya işleme, yapılar ve kullanım alanları, yeniden kullanılabilir kod kavramı ve verimli kod geliştirme kavramları hakkında bilgi verilmektedir.
Bilgisayar Mimarisi: Von Neuman Modeli
- Von Neumann mimarisinde geçen 5 temel yapı nedir? Görevlerini açıklayınız.
- Bellek ve işlem ünitesi arasındaki ilişkiyi açıklayınız. İşlem ünitesi çıktıları neden belleğe kaydedilmektedir?
- PC(Program Counter) nedir? İşlemci mimarisindeki görevi nedir?
- 32 bitlik bir işlemcide, bir komutun formatı aşağıdaki gibidir.
Bu işlemcide 60 adet komut ve 32 saklayıcı varsa, IMM (immidiate) bitleri için kaç bit kalmaktadır. Kalan bit genişliği ile ikilik tümleyen formatta ifade edilebilecek sayı aralığı nedir? - 32 bitlik bir işlemcinin aşağıda komut formatı verilmektedir.
Bu işlemcide 195 adet komut ve 120 saklayıcı var ise;OPCODE için minimum bit genişliği nedir?
DR(Destination Register) için minimum bit genişliği nedir?
UNUSED bitleri için maksimum bit genişliği nedir? (Diğer tüm alanların minimum olduğu durum) - İşlemci komut yakalama (fetch) aşamasında yaptığı işlemleri açıklayınız.
- Bir komutun işlenmesi için komut yakalama ile başlayıp, gerekli 6 aşama nedir? Bu aşamalarda ne yapılmaktadır?
- Aşağıdaki komutlar için
ADD 100 101 // Bu komut 100 ve 101. adreslerdeki değerleri toplayıp 100. adrese yazmaktadır. İşlemcinin işlemlerini gerçekleştirdiği 6 adımlı işleme göre bu komut çalıştırılırken hangi aşamada ne yapılmaktadır?
- Eğer bir komutun işlem süresi 2 nanosaniye ise ve tüm işlemler aynı zaman tutuyorsa, bu işlemci saniyede kaç operasyon çalıştırabilir?
- Bir işlemcinin saat çevrim (clock cycle) periyodu 2 nanosaniye, bir komutu işlemesi 8 saat çevirimi sürüyorsa ve tüm işlemler aynı zaman tutuyorsa, bu işlemci ile saniyede kaç operasyon yapılır?
Bilgisayar Mimarisi: LC3 Komut Kümesi
- İşlemci bir adresi 8 bitlik olan 4GB’lık bir RAM’e bağlıdır. MAR (Memory Adress Register) ve MDR (Memory Data Register) bit genişlikleri kaçtır?
- 256 lokasyonlu olan ve her bir lokasyonunda 16 bit veri taşınan bir RAM’de, adres biti genişliği nedir?
- LC3 işlemcisinin adresleme modları nedir? Farklı modların birbirlerine göre avantajları nelerdir?
- Aşağıdaki verilen LC3 komutları birbiri ile aynı işi mi yapıyorlar? Açıklayınız.
A: 0000111101010101
B: 0100111101010101 - 3 ve 5 nolu saklayıcıların değerlerini toplayarak 7 nolu saklayıcıya yazan LC3 komutunu ikilik tabanda yazınız.
- LC3 işlemcisinde çıkartma işlemi yoktur. Ancak çıkartma işlemi toplama ile yapılabilir.
R1 = R2 – R3 işlemini yapacak LC3 komutlarını yazınız.
- R2 = 0 işlemini gerçekleştirecek LC3 komutunu ikilik tabanda yazınız.
LC3 Assembly Dili
- Aşağıda LC3 assembly ile ifade edilmiş uygulamanın C karşılığını yazınız..ORIG x3 000
AND R0, R0, #0
ADD R2, R0, #10
LD Rl, MASK
LD R3, PTR1
LOOP LDR R4, R3, #0
AND R4, R4, Rl
BRz NEXT
ADD R0, R0, #1
NEXT ADD R3, R3, #1
ADD R2, R2, #-1
BRP LOOP
STI R0, PTR2
HALT
MASK .FILL x8 00 0
PTR1 .FILL x4 000
PTR2 . FILL x50 00
.END
- Aşağıda C dili ile ifade edilmiş olan kod parçacığının LC3 assembly karşılığını yazınız.
for(i=0;i<100;i++){
sum = sum + i;
} - Aşağıdaki LC3 assembly kodu çalıştırıldığında R3 saklayıcısının değeri ne olur?
PLACE .FILL X45A7
STI R3, PLACE
Giriş/Çıkış’lar
- İşlemciye bağlı cihazlar ile konuşabilmesi için kullanılan saklayıcılar nelerdir? Ne için kullanılmaktadırlar?
- İşlemci ile hedef cihaz arasındaki veri aktarım yöntemleri nelerdir?
- İşlemci ile hedef cihaz arasındaki veri aktarımındaki zamanlama türleri nelerdir?
- İşlemci ve işlemciye bağlı cihaz arasındaki veri transfer kontrol yöntemleri nelerdir? Birbirlerine göre avatanjarları nedir?
- İşlemciye bir klavyeden giriş gönderileceğinde saklayıcılarıdaki değişimleri açıklayınız.
- Kesme tabanlı (interrupt) giriş çıkışların önemini açıklayınız.
Kesmeler ve Yığınlar
- Sistem çağrıları nedir? Ne için kullanılırlar?
- Sistem çağrıları ile LC3 Trap mekanizması arasındaki ilişkiyi açıklayınız.
- Yığın nedir? Push ve Pop işlemleri nelerdir?
- 10’luk tabandaki 92 sayısını 16’lık tabanda (HEX) olarak ifade ediniz.
- 1110110110 sayısını 16’lık (HEX) tabanda ifade ediniz.
- -16 sayısını en az bit kullanarak 2’lik tümleyen (twos complement) formatında ifade ediniz.
- 1100111 2’lik tümleyen formatındaki sayıyı onluk tabana çeviriniz.
- İkilik tümleyen formatta olan 0001 ve 11 sayısını toplayınız.
- İkilik tümleyen gösterim formatının, işaret bitli gösterim formatına göre avantajı nedir? Neden dijital tasarım dünyasında bu gösterim tercih ediliyor?
- A ve B isminde 8 bitlik değeri bilinmeyen iki sayı olsun. Bu iki sayı XOR işlemi yapıldığında,
A^B = 00110100
Ve (AND) işlemi yapıldığında,
A&B = 11001001
sonuçları elde ediliyor. A + B sayısının toplam değeri nedir? İpucu: Bir bit Ve(AND)’lendiğinde sonuç 1 ise, her iki sayı kesinlikte 1’dir. Buradan yola çıkarak hem Ve (AND) hemde XOR’a bakarak sayıların ne olduklarını toplama yapabilecek kadar bulmanız mümkündür.
- Fixed Point ve IEEE Floating Point formatı ve farklarını birkaç cümle ile açıklayınız.
- 400 kişilik bir sınıfta, herkese farklı bir numara vermek için en az kaç bite ihtiyaç bulunmaktadır?
- Soru 8’de bulunan bit sayısı ile, bit sayısını arttırmaya gerek kalmadan kaç öğrenci daha sınıfa kabul edilebilir?
- 5 bit kullanarak, 7 ve -7 sayılarını ikilik tümleyen formatta ifade ediniz.
- 6 bit kullanarak ikilik tümleyen formatta -32 sayısını ifade ediniz.
- 101, 44, -128, 127 sayılarını ikilik tümleyen formatta 8 bit olarak ifade ediniz.
- Sayıyı bir bit sağa kaydırmak, sayıyı 2’e bölmek, bir bit sola kaydırmak ise sayıyı iki ile çarpmak ile aynı anlama gelmektedir. Bu nasıl olmaktadır? Bir kaç cümle ile açıklayınız.
- Aşağıdaki 4’bitlik ikilik tümleyen formatındaki sayıların toplama işlemlerinin hangileri taşma yapmaktadır?
1100 + 0011
1100 + 0100
0111 + 0001
0111 + 1001
- İkilik tümleyen formatında toplama işlemi yaparken hangi durumlarda taşma olmaktadır? Açıklayınız.
- Taşma yaratacak 9 bitlik işaretsiz ikilik tabanda iki sayı bulun.
- Aşağıdaki mantık işlemlerini hesaplayınız.
01010111 OR 11010111
101 OR 110
NOT (1011) OR NOT(1100)
NOT (1000 AND (1100 OR 0101))
NOT (NOT (1101) )
(0110 OR 0000) AND 1111
- Aşağıdaki doğruluk tablosunu verilen ifadeye göre doldurunuz.
Dijital Mantık Yapıları: Transistörler ve Basit Mantık Kapıları​:
- Transistör nedir? Bir kaç cümle ile açıklayınız.
- Aşağıda örnek verilen bir transistörün “Base”, “Emitter”, “Collector” pinleri ne için kullanılmaktadır?
- N ve P MOS transistörlerin farkları nedir?
- CMOS Transistörlerin, N ve P MOS transistörlere göre 2 avantajını yazınız.
- Aşağıda NAND kapısının şeması verilmiştir. A ve B isminde iki giriş alıp, Out isminde bir çıkış vermektedir. NAND fonksiyonu Out = !(A & B) şeklinde ifade edilebilir.
Aşağıda verilen şekilde ise, NAND kapısının girişine sadece tek bir giriş bağlanmıştır. A isimli giriş ile Out çıkışını doğruluk tablosunu çiziniz (A’nın 0 ve 1 olduğunda Out’un ne olduğunu gösteren tablo). Tabloya bakarak Out çıkışının A girişine göre nasıl değiştiğini yorumlayınız. NAND ile elde edilmiş olan yeni mantık kapısının ismini yazınız. - Aşağıdaki ifadeyi mantık kapıları ile çiziniz. Devreyi çizdikten sonra demorgan kuralı ile devreyi sadeleştirebildiğiniz kadar sadeleştirin. Sadeleşen devreyi çiziniz.
Dijital Mantık Yapıları: Kombinasyonel Devreler, Kayıt Elemanları ve Bellek Konsepti:
- Aşağıdaki şekilde gizli bir mantık kapısı içeren kombinasyonel devre verilmiştir. Devrenin A girişine göre ürettiği değerler doğruluk tablosunda verilmiştir. Tablodaki out çıktısının değerlerine göre, mantık kapısı yazan kutunun içerisinde hangi mantık kapısı olabilir?
- Çözücü (Decoder) Nedir? Nasıl çalışmaktadır?
- 5 girişli bir çözücünün (Decoder) kaç çıkışı bulunmaktadır?
- Seçici (Multiplexer) Nedir? Nasıl çalışmaktadır?
- 16 girişli bir seçicinin (Multiplexer) kaç çıktısı bulunmaktadır? Kaç adet seçme (select) bit’i bulunmaktadır?
- Aşağıdaki şekilde 2×1 multiplexer kullanılarak bir Ve (And) kapısı yapılmıştır. Yine 2×1 multiplexer kullanarak Veya (Or) kapısı yapınız.
- Aşağıda verilen doğruluk tablosuna (truth table) göre mantık kapıları ile eşdeğer devreyi çiziniz.
- Sadece 2×1 multiplexer’ler kullanarak 4×1 multiplexer yapınız.
- Verilen doğruluk tablosunu, aşağıdaki devreye göre tamamlayınız.
- Full Adder’lar kullanarak, 4 bitlik iki sayının toplamını yapabilecek bir devre çiziniz. Full Adder’ların iç yapısını çizmeyiniz.
- Bir RAM’in 100 adresi ve her bir adreste 32 bitlik saklama alanı bulunuyorsa, toplam RAM’in boyutu nedir?
- RAM (Random Access Memory) nedir? Bir kaç cümle ile açıklayınız.
- Bir RAM’in 16 bitlik adres girişi var, ve toplam boyutu 4 MB (Mega Byte) ise bir adreste kaç bitlik veri saklanıyordur?
- Bir RAM’in 16 bitlik adres girişi var, ve toplam boyutu 4 Mb (Mega bit) ise bir adreste kaç bitlik veri saklanıyordur?
Dijital Mantık Yapıları: Ardışık Devreler:
- D tipi tutucu (latch) ve D tipi saklayıcı (Register) nedir? Arasındaki farklar nedir?
- Saat kristali nedir?
- Clock sinyali nedir? Ne için kullanılır?
- Periyodu 100 ns olan bir clock’un frekansı nedir?
- Ardışık devreler neden kullanılır? Neden kombinasyonel devreler ile bazı işlemler gerçekleştirilemiyor?
- Aşağıda D tipi saklayıcı ve MUX barındıran bir devre bulunmaktadır. Yanında ise bu devrenin durum makinaları ile ifade edilmiş hali bulunmaktadır. Q0 durumu Q çıkışının 0 verdiği, Q1 durumu ise Q çıkışının 1 verdiği durumu temsil etmektedir. Q çıkışı 0 verir iken, w girişi ne gelmelidir ki Q yine 0 çıkmaya devam etsin? Bu durumu Q0’ın kendi üstüne ok ile döndüğü yerdeki w = yerine yazmalısınız. Bu mantık ile w= olan yerleri tamamlayınız.
- Aşağıda verilen D tipi yükselen kenar tetiklenen saklayıcıya gelen cp (clock) ve x sinyaline göre Q çıkışından çıkması gereken sinyali çiziniz.
- Aşağıdaki devrede 4 adet d tipi saklayıcı kullanılmıştır. Devre uzun bir süre d girişinden 0 verilerek çalıştırılmış ve başlangıçta q0, q1, q2 ve q3 0 olarak çıktı vermektedir. Devrenin girişi 1’e dönüştürüldüğü andan itibaren, aşağıdaki dalga formunu doldurunuz.
Labs
Tools
Bu sayfada ders içeriklerine destek olması amacıyla sunulmuş çeşitli araçlar bulunmaktadır. LAB, ödev ve vize ve final sınavlarına hazırlık için kullanılacaktır.
Araç Adı | İçerik | Adres |
---|---|---|
LC3 Simulatörü | LC3 işlemcisi için geliştirilmiş bir simulatör aracıdır. Assembly dilinde aldığı yazılımı simule etmektedir. Simulatör’ün kullanım dökümanına http://levent.tc/files/courses/tools/lc3simulator/lc3SimulatoruKullanimKilavuzu.pdf adresinden erişebilirsiniz. | http://levent.tc/files/courses/tools/lc3simulator/ |
Von Neumann Mimari Simulatörü | Von Neumann mimarisinin simulatör aracıdır. | http://levent.tc/files/courses/tools/vonneumann/ |
IEEE-754 İkilik – Onluk Dönüştürme Aracı | Verilen ondalıklı bir sayıyı IEEE-754 formatına dönüştürücü araçtır. | http://levent.tc/files/courses/tools/floatbin/ |
Ondanlık, İkilik ve Onaltılık Sayı Dönüştürücü | Ondanlık, ikilik ve onaltılık sayı formatında verilen bir sayıyı, diğer formatlara dönüştüren bir araçtır. | http://levent.tc/files/courses/tools/hexdecbin/ |
Devre Simulatörü | Javascript temelli bir devre simulasyon aracı sunulmaktadır. Aşağıdaki adresten erişebilirsiniz.Kullanım;Araç kutusundan bir öğe seçin ve sağ tarafa gidin.Sürükleme işlemi ile ekleniş öğeleri birbirlerine bağlayın.Bağlantısını kesmek için bir giriş düğümüne tıklayın.Eklenmiş öğeyi silmek için, öğeyi tutup araç kutusuna sürükleyin.Öğenin adını düzenlemek için bir etiket bölümüne çift tıklayın | http://levent.tc/files/courses/tools/devresimulatoru/ |
Devre Simulatörü 2 | Çok kapsamlı bir devre simulatörüdür. Kullanım kılavuzuna http://levent.tc/files/courses/tools/devresimulatoru2/devreSimulatoruKullanimKilavuzu.pdf adresinden erişebilirsiniz. | http://levent.tc/files/courses/tools/devresimulatoru2/ |
Bit Mantık İşlemleri Hesap Makinesi | Bit bazında işlem gerçekleştiren bir hesap makinesidir. Bu uygulama bit bazında yapılan işlemlerin öğrenilmesinde faydalıdır. Ve, veya, xor, değil ve kaydırma işlemleri desteklenmektedir. | http://levent.tc/files/courses/tools/bitislemleri/ |
Grades
Öğrencilerin soru sorup yanıt alabileceği bir soru cevap sistemi sunulmaktadır. Ders duyuruları, öğrenci soruları ve cevapları için bir platformdur. Aşağıdan erişebilirsiniz.
https://piazza.com/class/k05aq7uqtd415z
LMS (Learning Management System), bazı ödevlerin teslimi için LMS sistemi üzerinden olması istenecektir.