C# Yazılıma nereden başlanır?

Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?

Öğrenir ama ilerleyen zamanlarda attığım vidodaki ilk denemeleri gibi olur
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Öğrenir ama ilerleyen zamanlarda attığım vidodaki ilk denemeleri gibi olur
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Programlama öğrenmek algoritma ve veri yapılarını da kapsadığı için böyle bir şey olmaz. Bir programlama dilini öğrenmek için algoritma bilmeniz gerekmez. Zaten genel olarak üniversitelerde önce bir programlama dilinin temel prensipleri öğretilir ondan sonra algoritma bilgisi verilir.
 
Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
Şöyle örnek vereyim, annelerimiz pek çok tarif bilirler, biz bilmeyiz. Bunlara algoritma diyebiliriz, yemek yapmanın temeli olan soğanı küp küp ya da yarımay şeklinde doğrama gibi şeyler temel algoritma olsun, yemeğin içinde neyin hangi sırayla konacağı ya da etin kaç dakika fırında, sosunun kaç dakika ocakta pişeceği, nasıl karıştırılacağı vb. diğer bilgiler de ileri algoritma olsun.

Diyelim ki eve bir robot alındı, al, tut, koy, karıştır vb. temel komutları halledebiliyor. Benim bunu programlamam gerekiyor ki bana yemek yapsın. Ama tarif bilgim yok. Tarif bilmeden de ben yemek yaptırırım buna, ne var yav diyorum. Patlıcan musakka çekiyor canım, tarif bilgim yok. Düşünüyorum, kendi tarifimi kendim yaratabilirim diyorum, zaten patlıcan kıyma soğan domates ne varsa kes, karıştır, olur sana musakka diyorum.

Robotuma bu tarifi veriyorum, malzemeler şu, kes karıştır at fırına. Ortaya musakka değil başka bir şey çıkıyor, hatta ben insan gibi, robotsa robot gibi düşündüğü için soğanları kabuğuyla falan doğramış. Halbuki yemek yapmayı bilen her insan Türk mutfağında soğan nasıl doğranır algoritmasını bilir. Robot bilmiyor.

Robota bu algoritmayı da ekleyerek tekrar deniyorum, bu sefer soyuyor, yemeklik doğruyor, yağ kızdırıyor, pembeleşene kadar kavuruyor, şahane. Ama bu sefer gene Türk mutfağında herkesin bildiği soğan ve kıymanın birlikte kavrulması algoritmasını bilmediğim ortaya çıkıyor. Önce kıymalar suyunu salıp çekene kadar kavrulmalı, soğan sonra eklenmeli. Ben robota önce soğanı kavurup sonra kıymayı koydurttuğum için soğanlar yanıyor, kıymalar ise çiğ kalıyor.

Bu algoritmayı da öğrendim, soğan, kıyma falan güzelce kavruldu bu sefer. Sonra içine dilimlenmiş patlıcanı, domatesi vesaireyi boca edip pişiriyor. Sonuç gene kötü. Bu sefer sorun ne? Patlıcanların da kızgın yağda kavrulması gerekiyormuş, kavrulmadıkları için yumuşayıp dağılmışlar. Pörsümüş patlıcanlara bakarak robota sövüyorum.

Aradan günler, aylar geçiyor. Ben denemeye devam ediyorum. Bu sırada diğer robot sahipleri algoritma öğrenmeyeceğiz diye inat etmeyip çeşitli yemek algoritmalarını araştırıp öğrendikleri için bu kişiler benim önüme geçiyor, ben hala patlıcan musakkayı icat etmeye çalışırken rakiplerim patlıcanın tüm yemeklerini bitirmiş, etli yemekler, sütlü tatlılar vb. tarifleri inceleyerek ilerlemeye devam ediyorlar.

Türk mutfağında algoritma bilgisinin önemli olduğunu fark ettikleri için benden çok daha avantajlılar, bu soğanı doğra, yağda kavur, salça ekle şeklindeki temel algoritma yüzlerce yemek tarifinde kullanılan temel bir algoritma mesela, sırf bu algoritma ile ana malzemeyi değiştirirsen yüzlerce yemek çıkarabiliyorsun ortaya, patlıcanı çıkar kabak koy, kabağı çıkar taze fasulye koy... Bense o algoritmayı kendim yaratmaya uğraşıyorum bu esnada, halbuki açıp öğrenmek, daha sonrasında ise küçük değişikliklerle farklı yemeklerde kullanılmasını uygulamada ustalaşmak çok basit.

En sonunda başarılı bir patlıcan musakka çıkarıyorum ortaya. Ancak gene sorun var, herkes 1 saatte musakka yaparken benim robot 2 saatte yapıyor. Annemgilden teknik destek istiyorum, sen algoritma biliyorsun, gel optimizasyon yapalım diyorum. O inceliyor robotun çalışmasını, e böyle durumlarda multithread bir çözüm önerilir, biraz başka algoritmaları inceleyerek kendini geliştirmelisin diyor. Bir refactoring yapıyor, robot mesela kıymayı kavurduğu esnada bir yandan patlıcanları doğruyor, patlıcanlar kavrulurken domates rendeliyor vesaire, multithread kullanan algoritma ile yavaşlık gideriliyor.

Yemeği tadıyoruz annemgille, beğenmiyor. Neden diyorum, birkaç ileri algoritma gösteriyor bana, mesela patlıcanları doğradıktan sonra tuzlu suda bekletip acısını almak, kızarttıktan sonra fazla yağını alması için kağıt havlu üzerinde bekletmek gibi. Temel algoritmaları bir şekilde öğrendin, bunları da öğrenip uygulaman gerekir diyor. Artık kullanmadığın nesneleri release etmelisin diyor ve kapatılmadığı için aylardır yanmakta olan ocağı kapatıyor.

Ben robotu proglamaya çalıştığım aylar boyunca yüzlerce kilo patlıcan, kıyma, domates tüketildi, sayısız tava eskitildi, mutfak savaş alanına döndü. En azından robota musakka yaptırtabiliyorum diye avunuyorum. Bu esnada rakiplerim her türlü yemeği yapar oldu, kendi tariflerini üretiyorlar, beşamel soslu musakka, fırında havuçlu musakka vesaire. Ayrıca algoritmalara da hakim oldukları için başka başka robotları da programlayabiliyorlar. Optimize kod yazıyorlar, robotları son derece düzgün çalışıyor. Design patternleri öğrenmişler, ben mesela robotuma pizza yapmayı öğretirken 5 çeşit pizza için 5 çeşit kod yazıyorum, onlar bir decorator patterni kullanıp azıcık kodla elli tane pizza üretebiliyor vb. vb.

Programlama öğrenmek algoritma ve veri yapılarını da kapsadığı için böyle bir şey olmaz. Bir programlama dilini öğrenmek için algoritma bilmeniz gerekmez. Zaten genel olarak üniversitelerde önce bir programlama dilinin temel prensipleri öğretilir ondan sonra algoritma bilgisi verilir.

Üniversitede bizim zamanımızda "algoritma ve programlamaya giriş" idi dersin adı. C#, python ya da kısaca herhangi bir programlama dili seçilir, algoritma öğrenilirken bu dil ile uygulaması yapılarak algoritma kullanımı ile programlama öğretilir. Programlamaye giriştir bu sadece, elbette sizin dediğiniz gibi veri yapısı da bilmek gerekir, db de bilmek gerekir. Sizin dediğiniz

Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
şekilde, 3 sayı nasıl toplanır, dosyas nasıl açılır, nasıl okunur vb. temel algoritmalar öğretilmeden bunun programlamasına (uygulama) geçilmez. Teorik olarak bir dilin komutlarını ezberlemek mümkün, hayatında bilgisayara oturmamış ezberi kuvvetli bir sözelci bulun ezberlesin 1 haftada ancak bu dili öğrenmek olmuyor.
 
Son düzenleme:
Algoritma öğrenmeden nasıl C# öğrenilir anlamadım
Özelikle "programlama" olarak sorduğum soruyu tekrar ediyorum şimdi, peki algoritma öğrenmeden nasıl "programlama dili" öğrenilmez? Şu an yaptığın açıklama algoritmanın uygulanmasıyla ilgili, yani "programlama" dediğimiz paradigma kümesinin kapsadığı bir kavram.

Buradan anlaşılacağı üzere decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok. Kaldı ki bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz.
 
Özelikle "programlama" olarak sorduğum soruyu tekrar ediyorum şimdi, peki algoritma öğrenmeden nasıl "programlama dili" öğrenilmez? Şu an yaptığın açıklama algoritmanın uygulanmasıyla ilgili, yani "programlama" dediğimiz paradigma kümesinin kapsadığı bir kavram.

Buradan anlaşılacağı üzere decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok. Kaldı ki bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz.
Aslında bu dediğiniz şeylerin içinde algoritma mevcut. Uygulama babında açıklarsam; ya algoritma öğrenip aynı anda bir dilde bunun uygulamasını yaparak dili de öğreniyorsunuz (klasik yöntem), ya da seçtiğiniz bir dilde bir şey öğrenmeye çalışırken bunu öğrenmeden önce yine algoritma öğreniyorsunuz. Yani algoritma öğrenmeden dili de öğrenememiş oluyorsunuz. Temel bir bilgi seviyesinin üzerindeki birisi class nedir bilir mesela, siz şu anda herkes class bilir, for döngüsü bilir, return nedir bilir gibi düşünüyorsunuz gibime geliyor. Hayatında bilgisayara oturmamış birisi class nedir bilmez. Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi). Bu algoritmayı öğrenince bu şahıs class nedir, ne işe yarar anlıyor. Bu algoritmayı bilmeden class, variable vb. şeyleri öğrenemez. Bunları öğrenmeden mesela basit linked data structure öğrenemez, onun ne işe yaradığını anlatmak gerekir bak bu node, next node u tutuyor, next nodeu çağırırsan bu geliyor vs. diye, bu da bir algoritmadır. A kişisi Java, B kişisi C# öğreniyor olsun, veri yapısı noktasında bu algoritmayı öğrenmeden dilde de ilerleyemezler. Bu kafalarında oturduğu zaman aradan bir tane node nasıl çıkarılır, cycle durumu nasıl tespit edilir gibi sorunların çözümü için algoritmaları düşünmeye başlayabilirler.

Kısaca demek istediğim şey şu; dil öğrenmeye çalışan birisi algoritma öğrenmektedir. Algoritmayı öğrenmeden dili öğrenemez, "bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz." dediğiniz şeye katılıyorum, "decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok" buna katılmıyorum. Değişken tiplerini öğrenirken neden int diye bir değişken var diye sorguladığınız anda (çünkü stringleri toplayamayız, int memoryde böyle tutulur, binary olarak iki sayı böyle toplanır, eğer virgüllü sayı lazım ise float kullanırız vb.) işin algoritmasına (istenen şey/düzeltilmesi gereken sorun -> çözüm yolu) giriş yapmış oluyoruz, bu temel kavramları öğrenmek için algoritma da bilmemiz gerekiyor yani, aksi durumda bu dil öğrenmek olmuyor. Eğer bu temel kavramları bilen birisi iseniz yeni bir dil öğrenirken algoritma öğrenmenize gerek kalmıyor zaten bildiğiniz için ve algoritmadan bağımsız görüyorsunuz bu kavramları diye düşünüyorum.
 
Aslında bu dediğiniz şeylerin içinde algoritma mevcut. Uygulama babında açıklarsam; ya algoritma öğrenip aynı anda bir dilde bunun uygulamasını yaparak dili de öğreniyorsunuz (klasik yöntem), ya da seçtiğiniz bir dilde bir şey öğrenmeye çalışırken bunu öğrenmeden önce yine algoritma öğreniyorsunuz. Yani algoritma öğrenmeden dili de öğrenememiş oluyorsunuz. Temel bir bilgi seviyesinin üzerindeki birisi class nedir bilir mesela, siz şu anda herkes class bilir, for döngüsü bilir, return nedir bilir gibi düşünüyorsunuz gibime geliyor. Hayatında bilgisayara oturmamış birisi class nedir bilmez. Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi). Bu algoritmayı öğrenince bu şahıs class nedir, ne işe yarar anlıyor. Bu algoritmayı bilmeden class, variable vb. şeyleri öğrenemez. Bunları öğrenmeden mesela basit linked data structure öğrenemez, onun ne işe yaradığını anlatmak gerekir bak bu node, next node u tutuyor, next nodeu çağırırsan bu geliyor vs. diye, bu da bir algoritmadır. A kişisi Java, B kişisi C# öğreniyor olsun, veri yapısı noktasında bu algoritmayı öğrenmeden dilde de ilerleyemezler. Bu kafalarında oturduğu zaman aradan bir tane node nasıl çıkarılır, cycle durumu nasıl tespit edilir gibi sorunların çözümü için algoritmaları düşünmeye başlayabilirler.

Kısaca demek istediğim şey şu; dil öğrenmeye çalışan birisi algoritma öğrenmektedir. Algoritmayı öğrenmeden dili öğrenemez, "bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz." dediğiniz şeye katılıyorum, "decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok" buna katılmıyorum. Değişken tiplerini öğrenirken neden int diye bir değişken var diye sorguladığınız anda (çünkü stringleri toplayamayız, int memoryde böyle tutulur, binary olarak iki sayı böyle toplanır, eğer virgüllü sayı lazım ise float kullanırız vb.) işin algoritmasına (istenen şey/düzeltilmesi gereken sorun -> çözüm yolu) giriş yapmış oluyoruz, bu temel kavramları öğrenmek için algoritma da bilmemiz gerekiyor yani, aksi durumda bu dil öğrenmek olmuyor. Eğer bu temel kavramları bilen birisi iseniz yeni bir dil öğrenirken algoritma öğrenmenize gerek kalmıyor zaten bildiğiniz için ve algoritmadan bağımsız görüyorsunuz bu kavramları diye düşünüyorum.

Örgün eğitimde böyle bir yöntem yok ama, örneğin MIT algoritmalara giriş (6.006) dersi için; "A firm grasp of Python (6.001) and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.01 (Introduction to EECS I) and 6.042J/18.062J (Mathematics for Computer Science)." şeklinde bir beyanı var, aynı şekilde ITU ve ODTU CS programında da önce programlama dili ve matematik veriliyor ardından algoritmalara giriş dersi veriliyor.

Bunun dışında önce algoritma dersi verilip sonra programlama dilinin öğretildiği bir eğitim modeline ben rastlamadım.
 
Örgün eğitimde böyle bir yöntem yok ama, örneğin MIT algoritmalara giriş (6.006) dersi için; "A firm grasp of Python (6.001) and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.01 (Introduction to EECS I) and 6.042J/18.062J (Mathematics for Computer Science)." şeklinde bir beyanı var, aynı şekilde ITU ve ODTU CS programında da önce programlama dili ve matematik veriliyor ardından algoritmalara giriş dersi veriliyor.

Bunun dışında önce algoritma dersi verilip sonra programlama dilinin öğretildiği bir eğitim modeline ben rastlamadım.
6.006 alabilmek için önce 6.001 dersi alınması gerekiyor diye geçiyor. Algoritma öğretmeden python nasıl öğretiyorlarmış diye internetteki ders başlıklarına, slaytlarına göz attım, MIT6_0001F16_Welcome | Introduction to Computer Science and Programming in Python | Electrical Engineering and Computer Science | MIT OpenCourseWare
Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi).
Benim bu dediğim doğrultuda, bir bilgisayar nasıl çalışırdan, memory, ALU, interpreter vb. nedirden girmiş,
Şöyle örnek vereyim, annelerimiz pek çok tarif bilirler, biz bilmeyiz. Bunlara algoritma diyebiliriz, yemek yapmanın temeli olan soğanı küp küp ya da yarımay şeklinde doğrama gibi şeyler temel algoritma olsun, yemeğin içinde neyin hangi sırayla konacağı ya da etin kaç dakika fırında, sosunun kaç dakika ocakta pişeceği, nasıl karıştırılacağı vb. diğer bilgiler de ileri algoritma olsun.
Benim gene bu tarife benzetmem doğrultusunda,

WHAT IS A RECIPE
1) sequence of simple steps
2) flow of control process that specifies when each
step is executed
3) a means of determining when to stop
1+2+3 = an algorithm!

diye algoritma nedir diye anlatmaya devam etmiş. Bir programlama dili nedir, program nedir vb. derken python a giriş yapmış.
Değişken tiplerini öğrenirken neden int diye bir değişken var diye sorguladığınız anda (çünkü stringleri toplayamayız, int memoryde böyle tutulur, binary olarak iki sayı böyle toplanır, eğer virgüllü sayı lazım ise float kullanırız vb.) işin algoritmasına (istenen şey/düzeltilmesi gereken sorun -> çözüm yolu) giriş yapmış oluyoruz, bu temel kavramları öğrenmek için algoritma da bilmemiz gerekiyor yani, aksi durumda bu dil öğrenmek olmuyor.
Primitiflerden başlamış, tip çevrimi, operatörler, expression nedir vb. diye devam etmiş. Anlatırken öncelikle bunu pythondan bağımsız olarak anlatıyor benim baktığım slaytlarda, yani

a programming language provides a set of primitive
operations
 expressions are complex but legal combinations of
primitives in a programming language
 expressions and computations have values and
meanings in a programming language

şeklinde, herhangi bir programlama dili için anlatıyor. Pyhtonu ise araç olarak kullanıyor, bakın gerçek hayatta bir sorunu böyle çözeriz, programlama dilinde ise böyle böyle yapmamız lazım diye anlatıp sonrasında python kodunu veriyor.

PROGRAMMING vs MATH
 in programming, you do not “solve for x”
pi = 3.14159
radius = 2.2
# area of circle
area = pi*(radius**2)
radius = radius+1

Bu dediklerim linkteki ilk slaytta. Diğer slaytlara kısaca bakıyorum, mesela for loop, while loop gösterip farklarını anlatmış, bu pythona mahsus olan bir şey değil, bir algoritma kurulacağı zaman hangi durumda hangisini kullanmak daha iyi olur şeklinde bir bilgidir. Arada sadece python syntaxı, indent kullanımı gibi pythona mahsus ek bilgiler ekliyor.

STRINGS AND LOOPS
 these two code snippets do the same thing
 bottom one is more “pythonic
s = "abcdefgh"

for index in range(len(s)):
if s[index] == 'i' or s[index] == 'u':
print("There is an i or u")

for char in s:
if char == 'i' or char == 'u':
print("There is an i or u")

Pythonda sayılar yerine değerler üzerinden de iterasyon yapılabilir diye ek bilgi veriyor burada mesela. Ancak öncesinde öğrettiği şey python değil, döngü nedir, nasıl çalışır, ne işe yarar bilgisi. Abstraction nedir, neden modüllere ayırıp kod yazılmalı, black box nedir, method nedir, attribute nedir vb. diye anlatıyor ama önce mantığı anlatıyor yani.

WHAT IS RECURSION?
§ Algorithmically: a way to design soluSons to problems
by divide-and-conquer or decrease-and-conquer
◦ reduce a problem to simpler versions of the same
problem
§ SemanScally: a programming technique where a
func0on calls itself
◦ in programming, goal is to NOT have infinite recursion
◦ must have 1 or more base cases that are easy to solve
◦ must solve the same problem on some other input with the goal
of simplifying the larger problem input

Bu dersin içeriği algoritma eğitimini kapsamaktadır. Bizim gördüğümüz o algoritma ve programlamaya giriş dersi içeriği de aşağı yukarı böyleydi, her programlama dilinde mevcut olan şeyleri anlatmak, seçili olan dili kullanarak olayı anlatmak, sonrasında da

TOWERS OF HANOI
§ The story:
◦ 3 tall spikes
◦ Stack of 64 different sized discs – start on one spike
◦ Need to move stack to second spike (at which point
universe ends)
◦ Can only move one disc at a Sme, and a larger disc can
never cover up a small disc

gibi, öğrendiğimizi anladık mı? O zaman alın size bir problem, çözüm için algoritma oluşturun şeklinde uygulama. Biz bu dersi Quickbasic diye oop bile olmayan, hiçbir yerde kullanılabilirliği olmayan, antika ama algoritma öğretmek için yeterince basit bir dil ile almıştık epey önce, dili hatırlamıyorum bile şimdi ama algoritma kurmayı öğretmişti.

WANT TO UNDERSTAND
EFFICIENCY OF PROGRAMS
Challenges in understanding efficiency of soluAon to a
computaAonal problem:
§ a program can be implemented in many different
ways
§ you can solve a problem using only a handful of
different algorithms
§ would like to separate choices of implementaAon
from choices of more abstract algorithm

6.001 dersinin içeriğini "python öğretiliyor işte" diye ifade etmek çok yanlış olur. Siz diğer algoritmalara hakimsiniz, bu bilgiler size çok basit geliyor, siz bu ders içeriğini algoritma olarak görmüyorsunuz ancak bu algoritmadır, temelin temelidir. Algoritma dersinin içeriği bubble sort ile başlar diyemeyiz, bunlarla başlar.

(Mesaj çok uzun olduğu için 2ye bölmem gerekti)

ITU ve ODTU ders içeriklerine de göz attım,

Burada mesela 1. sene 1. dönem derslerinden mühendislik matematiği dersleri harici bölüm derslerine bakarsanız

CENG111 INTRODUCTION TO COMPUTER ENG. CONCEPTS
  • Identify the types of computation and describe digital computation in detail.
  • Design simple combination circuits for simple computational problems.
  • Outline the concepts of the Von Neumann Architecture and the Turing Machine, and describe how a modern computer relates to them.
  • Understand and use how information is represented in a modern computer and how instructions are executed.
  • Describe the types of programming languages, and the paradigms.
  • Understand the concept of basic data types, such as int, float, bool as well as container data types, such as list, tuple, string.
  • Differentiate computational evaluation of expressions from mathematical evaluation due to concepts such as overflow, side-effect, and truncation.
  • Understand and apply structured programming concepts by elaborating on sequential, selective, repetitive structures, such as statements, if/switch/case statements, for/while statements and functions.
  • Interpret a computational problem specification and algorithmic solution and implement a solution in Python to solve that problem.
Format bu şekilde yani, python kelimesini son cümlenin sonlarında görüyoruz:

Starting with the history and basic theoretical aspects of computers and computing, this course provides students with basic knowledge of how computers work, how they can represent data, how algorithms can be developed and analyzed, and how they can be programmed to solve various tasks. Python is used as the primary programming language to illustrate various concepts.

Python bu bilgileri illüstre etmek için kullanılan dil sadece, algoritmik solution üretin, bunun için de python kullanın deniyor. İkinci dönemde C öğretiliyor, dersin adı C programming yani, C öğrenimine geçmeden önce bütün bu konseptin öğrenilmesi gerekiyor, programlama dili sonra.

ITU için benzer durum söz konusu

İlk önce

BLG 101E
Intr. to Information Systems


Dersin Amaçları: Temel bilgisayar bilgileri: donanım, yazılım, işletim sistemi, dosya sistemi, karakter kümesi, üstveri. Belgeler ve web sayfaları: içerik, yapı, biçim. Görüntü işleme: bit eşleme, vektör çizimleri. Veri işleme: çizelgeleme. Programlamaya giriş: temel yapılar, denetim akışı, bileşke veri tipleri, yordam soyutlaması. Çağdaş araçlarla uygulama geliştirmenin temelleri.


Dersin Çıktıları: Bir bilgisayarın genel çalışma yapısını bilmek.
Çağdaş belge hazırlama yöntemlerini uygulayabilmek.
Bir web sitesi hazırlayabilmek ve erişilir hale getirebilmek.
Temel programlama teknikleriyle tanışık olmak.
Küçük bir web uygulaması geliştirebilmek.


dersi ile 2. yarıyıldaki

BLG 102E
Intr to Sci&Eng Comp (C)
dersine girizgah yapılıyor. Bu dersin içeriği de C dili öğretme odaklı değil:


Dersin Amaçları: Öğrencileri komuta dayalı programlama yaklaşımıyla bilgisayar programlamaya başlatma.
Öğrencilere mühendislik uygulamalarında genelde ihtiyaç duyulan temel programlama tekniklerini ve sayısal yöntemleri öğretme.

Dersin Çıktıları: Bir algoritma geliştirerek bilgisayar programı yardımıyla bir problemi çözmek için modellemek.
Küçük ve orta ölçekli bilgisayar programlarını tasarlayabilmek, gerçekleyebilmek ve sınayabilmek.
C programlama dili için geliştirme araçlarıyla tanışıklık edinmek.
Temel programlama tekniklerine hakim olmak.
Temel sayısal problemleri ve çözümleriyle tanışıklık edinmek.


Copy paste copy paste derken baya uzun ve karışık oldu, kusura bakmayın ama siz anlatmak istediğimi anladınız diye düşünüyorum, önce bilgisayar nasıl çalışır, programlama nedir, temel algoritma gelir, dil ise bu bilgilerden sonra gelir, üni. eğitimlerinde de bu yol izleniyor tezimi savunuyorum.
 
C# öğrenmek istiyorum. Ama bir türlü başlayamıyorum. Nasıl yazılım öğreneceğim?

Benim sana önerim: Gençay yıldızdan öğrenmen YouTube'da gençay yıldız kanalında 400 videolu C# oynatma listesini bir incele istersen anlatımı çok hoşuma gitti denemeni tavsiye ederim kesinlikle denemelisin.
 
Örgün eğitimde böyle bir yöntem yok ama, örneğin MIT algoritmalara giriş (6.006) dersi için; "A firm grasp of Python (6.001) and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.01 (Introduction to EECS I) and 6.042J/18.062J (Mathematics for Computer Science)." şeklinde bir beyanı var, aynı şekilde ITU ve ODTU CS programında da önce programlama dili ve matematik veriliyor ardından algoritmalara giriş dersi veriliyor.

Bunun dışında önce algoritma dersi verilip sonra programlama dilinin öğretildiği bir eğitim modeline ben rastlamadım.

Discrete math icinde algoritma ve temel set, logic, proof, graph teorileri var.
Sonrasinda programlama ogrenilmesi daha dogru, en azindan dogru yol bu.
Temel programlamadan sonra da daha esasli algoritma dersleri verilir.

C# ogrenmek isteyen biri icin gerek yok bunlara gerci de, akademik ve dogru yontem math -> cs101 seklinde.
 
Dilden ziyade, hangi alan ilgini çekiyor onu masaya koy öncelikle ve o alanda en verimli, en performanslı dil, Framework. Vbleri araştır ve başla. Araştırmaya da hemen başla :)
 

Technopat Haberler

Yeni konular

Geri
Yukarı