Politecnico di Torino C Dersi
Bu ders Politecnico di Torino Üniversitesi öğrencilerinin Programming Techniques dersi için hazırlanmıştır. Ders içeriği ve soruları Politecnico di Torino Programming Techniques dersinin müfredatına birebir uyumlu olup, dersin sınavına hazırlanmak için idealdir.
Politecnico di Torino C Dersi
Politecnico di Torino'nun Bilgisayar Bilimleri ve Mühendisliği bölümü derslerinden Programlama Teknikleri (Programming Techniques- 02OJPLM) dersi, Bilgisayar Mühendisliği öğrencilerine ilk yıl verilen ve programlamaya giriş sürecinde Python'dan sonra ikinci derstir. Programlama teknikleri dersi kapsamında C yazılım dili gerçek hayat yazılım problemlerinin çözümünde bir araç olarak kullanılmaktadır. C dili ile çözülebilecek basit problemler tanımlanmakta ve uygun veri yapıları ve algoritmik yapılar seçmek için stratejiler sunulmaktadır. Ayrıca, hesaplama açısından daha verimli çözümler geliştirebilmek amacıyla temel düzeyde karmaşıklık analizi(complexity analysis) kavramları da tanıtılmaktadır.
Bizim burada sizlere sunduğumuz C programlama dili dersi de Politecnico di Torino'nun Programlama Teknikleri dersini geçebilmenize yardımcı olacak şekilde hazırlanmıştır. Bu dersimizin içeriğini Pragramlama Teknikleri (Programming Techniques) dersi müfredatı ile uyumlu olarak hazırladık ve dersinizi başarıyla geçebilmeniz için gerekli olan temel bilgileri ve becerileri kazanmanızı sağlayacak şekilde tasarladık. Yine dersimizin içeriğinde konuyu anlamanızı kolaylaştıracak örnekler ve uygulamalar bulunmaktadır. Bu dersimizi alarak C programlama dilini etkili bir şekilde öğrenebilir ve Politecnico di Torino'nun Programlama Teknikleri dersini başarıyla geçebilirsiniz.
Dersin Genel Amacı Nedir?
Bu dersin amacı, Politecnico di Torino'nun Bilgisayar Mühendisliği öğrencilerine verilen Programming Techniques dersini, öğrencilerin başarıyla geçebilmelerini sağlamaktır. Bu amaca yönelik olarak, C programlama dilini temel seviyede öğretmek ve C programlama dilinin temel kavramlarını ve özelliklerini anlamalarını sağlamaktır. Tabi bu ders sadece C den ibaret değildir. Dersin kapsamında ayrıca algoritma geliştirme ve karmaşıklık analizi gibi konular da yer almaktadır. Bunlarda tamamen Programming Techniques dersi ile uyumlu olarak hazırlanmıştır. Bu dersi hazırlarken, Politecnico di Torino'nun Programlama Teknikleri dersinin konu anlatımlarını, soru çözümlerini ve eski sınav sorularını ciddi anlamda inceledik ve dersimizi bu doğrultuda hazırladık.
Bu Ders Kimlere Hitap Ediyor?
Bu dersimizin hedef kitlesi, sadece Politecnico di Torino'nun Bilgisayar Mühendisliği bölümünde okuyan ve Programming Techniques (Programlama Teknikleri) dersini alan birinci sınıf öğrencileridir. Dersimizin müfredatında Programming Techniques dersinin konuları ve soru tipleri ile birebir uyumlu bir içerik bulunmaktadır.
Eğer başka bir üniversitede okuyor ve benzer müfredatta bir ders alıyorsanız, bu ders size de hitap edebilir. Bizimle iletişime geçtiğiniz takdirde ders içeriğini sizin ihtiyaçlarınıza göre özelleştirebiliriz.
Dersin Müfredatında Hangi Konular Var?
Bu ders, C programlama dilinin temel kavramlarını ve özelliklerini adım-adım işleyerek öğrencilerin C programlama dilini etkili bir şekilde kullanmalarını sağlamayı amaçlamaktadır. Dersin genel kapsamı aşağıdaki konuları içermektedir:
Temel Mimariler ve Mantık Kavramları (Basic notions of architecture and logic)
- CPU ve merkezi bellek mimarisi ( CPU and central memory architecture)
- Boolean cebiri ve mantıksal fonksiyonlar (Boolean algebra and logical functions)
Problem Çözme (Problem-solving)
- Temel karmaşıklık analizi ve yinelemeli sıralama algoritmaları hakkında bilgi (Knowledge of elementary notions of complexity analysis and of iterative sorting algorithms)
- Problem çözmenin temel kavramları ve algoritmik stratejiler (Basic notions of problem solving and algorithmic strategies)
- Yinelemeli sıralama algoritmaları bilgisi (Knowledge of iterative sorting algorithms)
- Bir algoritmik sorunun formülasyonundan çözümüne geçme, problem türünün tanınması ve uygun veri yapıları ile çözüm algoritmalarının seçilmesi
- Iteratif problemleri çözme, skaler veri ya da sıralı ve sırasız veri koleksiyonları üzerinde işlem yapma
C Dili (C language)
- Skaler veri tipleri(Scalar/Primitive Data Types)
- Standart veri Giriş/Çıkış ve metin dosyaları üzerinde temel giriş/çıkış işlemleri (Elementary input / output on standard I/O and text files,)
- İteratif ve koşullu yapılar (Iterative and conditional constructs)
- Fonksiyonlar (Use of functions as sub-programs)
- Yapılandırılmış veri türleri (Structured data types)
- Struct (struct)
- Diziler ve matrisler (Arrays and matrices)
- Karakter dizilerinin manipülasyonu (Manipulation of strings of characters)
- Verilere referans olarak işaretçi veri türü ve dizilerin/matrislerin dinamik tahsisi için kullanımı, ayrıca C işlevlerine referansla/işaretçiyle parametre geçirme yöntemi olarak kullanımı (Knowledge of the pointer data type for reference to data and for dynamic allocation of)
- Hem skaler hem de struct türü ve/veya dizi veya matris biçiminde birleştirilmiş verileri manipüle edebilen yinelemeli algoritmalar geliştirme yeteneği
- Bir sorunu alt sorunlara bölmeye dayalı olarak, işlevlerin etkin kullanımıyla modüler programlar oluşturma yeteneği
- Programlama yardım araçlarını kullanma yeteneği
Dersin en temel düzeyde konuları bunlar olmakla beraber, ders içeriği öğrencilerin ihtiyaçlarına göre özelleştirilmektedir. Öğrencilerin daha fazla pratik yapmalarını sağlamak amacıyla ders içeriğine ek konular eklenebilmektedir veya ders içeriğinden bazı konular çıkarılabilmektedir.
Ders Nasıl İşleniyor?
Bu dersi işlerken takip ettiğimiz bir takım prensiplerimiz var. Bunları aşağıda sıralayacak olursak:
- C (Programming Techniques) dersimizi, özel ders şeklinde ya da tercih edilmesi halinde grup dersi olarak işleyebiliyoruz.
- Derslerimizin zamanı, süresi ve sıklığı öğrencilerimizin ihtiyaçlarına ve taleplerine göre değişiyor. Dersleri hafta içi ya da hafta sonu, gündüz ya da gece farketmeksiniz İtalya'nın saat dilimine uygun olarak işleyebiliyoruz. Derslerimiz genelde 2 x 40dk'lık seanslar şeklinde oluyor. Haftalık ders miktarı da ortalama 2 ya da 3 oluyor. Toplamda 15-20 arası ders yaparak dersi tamamlayabiliyoruz. Ders miktarı öğrencinin seviyesine göre daha az veya daha fazla olabiliyor.
- Dersin sınav soruları genel olarak şu kategorilerden birinden geliyor: Karmaşıklık Analizi(Complexity Analysis), Sıralama(Sorting) Algoritmaları Analizi, Connectivity Algoritmaları Analizi, Memory Analizi, Kodda Boşluk Doldurma ve Kodda Hata Bulma, Kodda Sonuç Tahmini, Fonksiyon Prototipi Tanımlama, Problemi Kodlayarak Çözme, Kod İyileştirme ve benzeri konular. Biz de bu başlıklara yönelik sorular hazırlıyoruz ve derste bunların pratiklerini yapıyoruz.
- Dersleri online olarak yapıyoruz ve genelde Zoom, Google Meet, Microsoft Teams ya da Skype gibi online platformları kullanıyoruz.
- Öğrencilerimize derste bolca kod yazabilme imkanı sunuyoruz ve öğrencilerimizi supervise ediyoruz.
- Öğrencilerimizle "pair programming" tekniği kullanarak da çalışıyoruz.
- Öğrencilerimize ders dışında bireysel olarak çalışabilmeleri için de sorular veriyoruz. Bu sorular genel olarak Programming Techniques dersinin sınav sorularına benzer sorular oluyor.
- İnteraktif bir şekilde ders işliyoruz. Bu bağlamda öğrencilerimizin derse katılması için ne gerekiyorsa yapıyoruz.
- Dosya paylaşımında git ve github gibi üst düzey versiyon kontrol ve dosya paylaşım sistemlerini kullanıyoruz. Böylelikle öğrencilerimizin yazdığı kodları saklamalarını ve gerektiğinde kolaylıkla ulaşabilmelerini sağlıyoruz.
Bu Dersten En İyi Verimi Nasıl Alabilirsiniz?
Bu dersten üst düzey bir verim alabilmeniz için aşağıdaki önerilerimizi dikkate almanız önemlidir:
- Ders planımıza sadık kalmamız önemli. Kaçırdığımız her bir ders bizim dersi yetiştirmemize engel olacaktır. Bu nedenle planladığımız derslerimizi mümkün mertebe yapmaya özen göstermeliyiz.
- Sınava hazırlanmayı son günlere bırakmak çok yanlış bir strateji olacaktır. Bu dersin konu miktarı oldukça fazladır ve konularde hiç kolay değildir. Konuları sindirmek için zamana ve tekrara ihtiyacınız olacak.
- Ders kapsamında size birçok ders materyali sunacağız. Bunları derslerden sonra tekrar etmeniz önemli. Bunun haricinde, bireysel olarak çözmeniz için de size birçok sorular vereceğiz. Bu soruları çözmeniz ve çözemediğiniz de bizlere sormanız oldukça önemli.
- Derslerde aktif olarak katılım göstermeniz çok önemli. Burada kastımız bol bol soru sormanız ve dersin içeriğini anladığınızdan emin olmanızdır.
- Kodlama kesinlikle sadece birinden dinleyerek ya da internetten okuyarak öğrenilecek bir disiplin değildir. Muhakkak sizin de kodlama yapmanız gerekmektedir. Özellikle de bir bilgisayar mühendisi adayı olarak bu sizin için daha da önemlidir.
Özel Ders mi, Yoksa Grup Dersi mi Tercih Etmeliyim?
Bu dersi bireysel olarak aldığınız takdirde hızlı bir şekilde amacınıza ulaşabilirsiniz. Ders kaçırma, ders saaatini uyduramama, herhangi bir konsepti anlayamama, hocaya soru soramama gibi problemlerle karşılaşmanız mümkün değil. Ayrıca dersi kendi hızınıza göre ilerletebilir ve dersin içeriğini ve süresini kendi ihtiyaçlarınıza ve taleplerinize göre özelleştirebilirsiniz.
Bu dersi grup olarak aldığınızda bireysel olarak daha uygun bir fiyatı olacaktır, ancak beraberinde bazı dezavantajların olacağını da bilmekte fayda var. Grup derslerinde dersin içeriğini ve süresini kendi ihtiyaçlarınıza ve taleplerinize göre özelleştiremezsiniz. Ayrıca, dersi anlamak için daha fazla bireysel çaba sarf etmeniz ve ders kaçırdığınızda ise çoğunlukla kendiniz telafi etmeniz gerekecektir. Bu durumları iyi tartıp karar vermelisiniz. Grup derslerinin review ve pratik yapmaya daha uygun olduğunu söyleyebiliriz.
Bu Dersi Almanın Ne Gibi Avantajları Var?
Polito bu dersi İngilizce olarak vermektedir ve ders slaytları yabancı bir öğrenci için biraz karışık durmaktadır. Yazılım geliştirme gibi oldukça kompleks olan bir dersi anadilinizin dışında almak dersi anlamanızı zorlaştırabilmektedir. Konseptleri ilk olarak anadilinizde öğrenmek ve daha sonra İngilizce olarak öğrenmek sizin için daha faydalı olacaktır. Dersi, İngilizce olarak da anlatabiliriz ancak konspetleri Türkçe olarak öğrenmenizi daha çok tavsiye ediyoruz.
İkinci olarak, sizlere bolca sınav örnekleri, ipuçları, geçmiş sınavlar ve soru çözme stratejileri sunuyoruz. Bunları normal şartlarda elde etmeniz oldukça zor. Bizimle çalışarak bu avantajlardan kolaylıkla faydalanabiliyorsunuz.
Üçüncü olarak, size seviyenizi tespit edebilme, sınava ne kadar hazır olduğunuzu anlayabilme imkanı sunuyoruz. Sınava ne kadar hazır olduğunuzu yaptığımız testlerle ölçüyoruz.
Son olarak da, her daim soru sorabileceğin bir hocaya sahip olmuş oluyorsunuz. Bize istediğiniz zaman whatsapp üzerinden ulaşabilir ve takıldığınız noktalarda sorularınızı sorabilirsiniz.
Bu Dersi Alırsam Programming Techniques Dersimi Geçebilecek miyim?
Bu sorunuza kesin geçersiniz diyemeyiz tabi ki, ancak size şunu söyleyebiliriz ki, bu dersi başarıyla tamamladığınız takdirde Programming Techniques dersini geçme şansınız oldukça yüksek olacaktır. Tek seferde geçemeseniz dahi sonraki seferlerde geçebilmek için de elinizde çalışma materyelleriniz olacaktır ve dersten geçene kadar bize sorularınızı sorabileceksiniz.
Polito'nun Programming Techniques(C) Dersini Zor Yapan Şey Ne?
Bu dersi temelde zor hale getiren birkaç etken bulunmaktadır. Bunları aşağıda sıralayacak olursak:
- Diğer derslerde olduğu gibi dersin dönem sonunda sadece bir tane sınavı final sınavı oluyor. Dönem içinde not toplayabileceğiniz bir ara sınav, proje veya quiz yok. Dersin yükünü aralara serpiştiremiyorsunuz. Bu durum derse motive olma sıkıntısı da oluşturuyor. Öğrenci psikolojik olarak üstündeki yükü hep sona erteleme eğiliminde oluyor.
- Ders teorik ve pratik olmak üzere iki kısımdan oluşuyor. Teori ve pratik kısmının puanları birbirine yakın oluyor. Bu nedenle teorik kısma da çok ciddi bir şekilde eğilmek gerekiyor.
- Sınavda ciddi anlamda ağır bir kodlama sytax'ı kullanıldığını gözlemliyoruz. Python'da bu tür syntax'ları görmeye alışık olmayan öğrencilerin bu syntax'ları anlaması ve kod yazması oldukça zor olabiliyor.
- C başlı başına zor bir dil. C dilinde kod yazmak, Python'da kod yazmaktan çok daha zor. C dilinde kod yazarken, kodunuzun her satırını ve her satırın ne işe yaradığını çok iyi anlamanız gerekiyor. C dilinde pointers ve memory allocation gibi ağır konular var. Bunları hazmetmek ve uygulamak ciddi bir efor gerektiriyor.
- Programming Techniques dersi oldukça geniş bir konu yelpazesine sahip. Çoğu zaman öğrencilerin bu konuları yetiştirememesi ve konuları yeterince anlayamaması sıkıntı yaşamalrına neden oluyor.
Bir bilgisayar mühendisi adayı olarak, bu dersi başarıyla geçmenizin sizin için oldukça önemli olduğuna inanıyoruz. C programlama dili bir bilgisayar mühendisine yakışacak düzeyde olgun, performansı yüksek ve kapsamlı bir dildir. Eğer C dilini ve Programming Techniques dersindeki diğer conseptleri öğrenmekte zorlanıyorsanız, bizimle iletişime geçebilirsiniz. Size bu konuda yardımcı olmaktan mutluluk duyarız.