SEN2001 · Programming Languages

Programlama Dilleri

Sözdizimi ve anlam, bağlama ve kapsam, veri tipleri, alt programlar, fonksiyonel ve mantıksal programlama.

Kaynak kitap: Robert W. Sebesta, Concepts of Programming Languages, 8e, Pearson Education, Addison Wesley, 2008, ISBN 978-0-321-50968-0

  1. 1. hafta
    Introduction
    • Giriş: dil değerlendirme kriterleri ve dil tasarımına etkilerProgramlama dillerini neden incelediğimiz, uygulama alanları, readability/writability/reliability/cost kriterleri, orthogonality, tasarım ödünleşimleri, von Neumann mimarisinin etkisi ve dil kategorileri.
    • Uygulama yöntemleri ve dillerin evrimiCompilation, pure interpretation ve hybrid uygulama; derleyicinin fazları, linker ve preprocessor, JIT; programlama ortamları ve Fortran'dan Java'ya dillerin evriminde sınavda sorulan kilometre taşları.
  2. 2. hafta
    Describing Syntax and Semantics I
  3. 3. hafta
    Describing Syntax and Semantics II
  4. 4. hafta
    Names, Bindings, Type Checking and Scopes
  5. 5. hafta
    Data Types
  6. 6. hafta
    Expressions and Assignment Statements
  7. 7. hafta
    Control Structures
  8. 8. hafta
    Subprograms I
    • Alt programlar I: parametre geçirme yöntemleriFormal/actual parametre, in/out/inout modelleri ve beş uygulama: pass-by-value, result, value-result, reference, name. Aynı programın her yöntemde ne bastığını izlemek; ayrıca Java'nın kuralı, closure ve default parametreler.
  9. 9. hafta
    Subprograms II
  10. 10. hafta
    Abstract Data Types
    • Soyut veri tipleri (ADT) ve kapsüllemeSoyutlama kavramı, ADT'nin iki koşulu, information hiding, Ada paketleri, C++ ve Java sınıfları, parametreli ADT'ler (generics) ve büyük programlar için kapsülleme yapıları (namespace, package).
  11. 11. hafta
    Object-oriented Programming
  12. 12. hafta
    Exception Handling and Event Handling
    • Exception handling ve event handlingİstisna kavramı ve tasarım soruları, handler'a bağlama ve propagation, Java'da try/catch/finally akışı, checked/unchecked istisnalar, C++ ve Ada karşılaştırması; olay güdümlü programlama, listener modeli ve JavaScript olay döngüsü.
  13. 13. hafta
    Functional Programming
    • Fonksiyonel programlama: Scheme, lambda, map ve özyinelemeMatematiksel fonksiyon fikri, LISP veri yapıları (atom, liste, cons hücresi), Scheme'de car/cdr/cons, define ve lambda, if/cond/let, özyinelemeli liste fonksiyonları, yüksek mertebeden fonksiyonlar (map, filter, compose) ve tail recursion.
  14. 14. hafta
    Logic Programming
    • Mantık programlama: Prolog, unification ve resolutionÖnerme mantığından Prolog'a: fact, rule ve query, unification ve instantiation, resolution ile derinlik öncelikli arama ve backtracking, listeler, aritmetik (is), cut ve closed-world assumption. Sorguların cevaplarını ve sırasını bulmak.