Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş

Algoritmaları ve programlamayı Spiralgo'daki LeetCode çözümleri ile öğrenin...

4.25 (6 reviews)
Udemy
platform
Türkçe
language
Other
category
106
students
2 hours
content
Jan 2022
last update
$19.99
regular price

What you will learn

Yaratıcı Problem Çözme ve Problem Çözüm Teknikleri

Temel Algoritmalar ve Veri Yapıları, Somut Kullanımları

Algoritmalarla Programlama

Java

Github İşlemleri

Description

  ***

2022 Ocak ayı güncellemeleri:
- Meeting Rooms sorusuna yeni görseller eklendi.

- Soruların (description) açıklamaları eklendi.

   ***

Spiralgo'nun Tanıtımı

Spiralgo nedir?

Spiralgo'yu, kendi spiralimizdeki, çevremizdeki dostlarımızla algoritmalar konusunda birbirimize yoldaşlık yapmak için bir GitHub reposu olarak başlatmıştık.

Spiralgo adı da bu yüzden spiral ve algoritma sözcüklerinin birleşimindan oluşuyor.

Burada herkes aynı anda hem öğretmen hem öğrenci idi, halen öyledir, gelecekte de öyle olacaktır.

Spiralgo'nun bize yalnızca programlama yönünde yardımcı olmaktan öte; İngilizce iletişim kâbiliyetimizi, sorunların özünü idrâk etme seviyemizi ve yazılım projelerimizdeki başarılarımızı artırdığını da görünce, bu yolla daha fazla kimseye katkıda bulunabileceğimiz kanaatine vardık.

Bu yüzden, Spiralgo üzerine çevrimiçi eğitimleri hazırlama kararı aldık.

Neden Algoritmalara çalışmalıyız?

Bu yönde ayrı bir ücretsiz eğitim hazırlayacağız, ancak kısaca değinmek, problem çözücüyü motive etmek açısından önemlidir.

Bununla birlikte, neden algoritmalara çalışmamız gerektiği konusu ile Spiralgo'ya en başta neden ihtiyaç duyduğumuza dair soru birbirleri ile paraleldir.

Algoritmaları öğrenmek için maddî ve manevî olmak üzere birçok sebep vardır. Biz, en pratik sebeplerden başlayarak bunlardan bahsedeceğiz.

Biz her ne kadar, algoritmaların iş görüşmelerindeki teknik mülakatlara indirgenmesini doğru bulmasak da, neden Google, Facebook, Oracle, Uber, Twitter gibi büyük şirketler başta olmak üzere yazılım şirketlerinin, algoritmaları bir tür kabul edilmiş işe alım protokolü olarak gördükleri üzerine düşünmek de öğretici olacaktır.

Bunun en temel sebebi, algoritmaların; kişinin milliyeti, cinsiyeti, dini, mezun olduğu okul ve bölüm gibi sınıflandırmalardan bağımsız bir şekilde problem çözme kâbiliyetini ölçecek bir zemin sağlamasıdır.

Global bir vizyona sahip yazılım şirketlerinin, yukarıda sayılan detaylardan ziyâde problem-çözme zihniyetine sahip bireylere, yani problem çözücülere gereksinim duyduğu ortadadır.

Bununla birlikte, algoritma mülakatlarında:

  • Yazılımcının sorunun veya çözümün özünü (the essence, intuition) ne kadar iyi anladığı

  • Çözümü ifâde edecek iletişim kâbiliyetlerine sahip olup olmadığı

  • Soruyu çözmek için görüşmeci ile doğru iletişim kurup geribildirim almayı akıl edip etmediği,

  • Görüşmeciye sorduğu soruların gerçekten soru ile bağlantılı ve işe yarar olup olmadığı gibi konular da, algoritmanın neden aynı zamânda iletişim kâbiliyetini ölçen sosyal bir zemin sağladığını da gösterir.

Şirketlerin algoritmalara önem vermesi tabiî ki sâdece iş görüşmeleri için gayet faydalı teknik ve sosyal bir zemin sağlamasından ileri gelmez.

Bu şirketler varlıklarını aslında algoritmalara borçludur.

Eğer arama algoritmaları olmasa idi Google, tarayıcıdan video izlemeyi kolaylaştıran video sıkıştırma algoritmaları olmasa idi YouTube, Graph teorisine dayanan algoritmalar olmasa idi Facebook, ilişkisel veritabanlarına dair algoritmalar olmasa idi Oracle şu ân bulunduğu konumda olamazdı.

Geleceğimizi bu şirketler yönlendirdiğine göre, aslında kendilerini bu şirketler üzerinden gerçekleştiren algoritmaların günden güne her alana yayılacağı aşikardır.

Dolayısı ile, algoritmaların iktidârına ne kadar erken hazırlanırsak, kendimiz ve toplumumuz adına o kadar iyi bir geleceği hazırlıyor olacağız.

Shannon'ın informasyon teorisinin bize öğrettiği sebeplerle kainatın kendisinin fizik kuralları ile kodlanmış bir tür bilgisayar olma ihtimali gibi daha teorik sebeplere, belki ayrı bir ücretsiz eğitim videosunda değiniriz.

Dersin anlatımı nasıl olacak?

Dersleri, teorik detaylarda boğulmaktan ziyâde soruların bizden ne beklediği, bize ne öğretmek istediği gibi; meselelerin özüne dair kavramlar üzerine inşâ edeceğiz.

Önce soruların İngilizcelerini okuyacağız ve okuduğumuz sırada onları Türkçeye çevireceğiz.

Soruda bazı noktaların neden özellikle vurgulandığını belirteceğiz.

Mesela bir diziden (array) bahsederken, neden o dizinin özellikle strictly ascending order olduğu vurgulanmış olabilir?

Bu çözüme giden yolda bir anahtar olabilir mi?

Spiralgo kusursuz mu?

Doğrusu, hiçbir sistem kusursuz değildir. Her sistem, varlığını sürdürmek için sürekli olarak problem çözmek zorundadır.

Dolayısı ile, açık kaynaklı bir sistem olan Spiralgo'nun kusursuz olduğunu iddia etmek, pek erdemlice bir davranış olmayacaktır.

Ancak başta açık kaynaklı sistemler olmak üzere, yazılım geliştirme metodolojileri güçlerini aslında tam olarak bunun bilincinde olmalarından alırlar.

Spiralgo sürekli güncellenecek mi?

Hiçbir sistem gibi, Spiralgo da kusursuz olmadığına göre, sürekli gelişim (continuous improvement veya kaizen) kavramını kendimize rehber edinmemiz ve hiçbir şeyin birdenbire mükemmele erişmeyeceğini kabullenecek olgunlukta olmamız gerekir.

Bu yüzden videoları, yazılımdaki modülerlik (software modularity) kavramından esinlenerek, kolay düzeltilebilir ve güncellenebilir parçalar halinde hazırlayacağız.

Spiralgo kodları gibi, eğitim videoları da sürekli güncel tutulacaktır.

Sana neden "Problem çözücü" diye hitap ediyoruz?

Sen de kendini bir yazılım gibi inşa etmekte olan sosyal bir sistemsin ve bugüne kadar çözdüğün sosyal ve teknik problemler aracılığı ile kendini inşâ ettiğin ve günden güne eski versiyonlarını aştığın için buradasın. Yazılım problemlerine dair reçeteleşmiş çözüm yolları demek olan algoritmalara çalışma gereksinimi duyman, bu yönde bir seviye daha güçlenmek istediğini gösteriyor.

Spiralgo'nun gelişiminde problem-çözücü olarak senin katkın neden önemli?

Bir sistemin varlığını sürdürmesi ve başarılı olabilmesi için problem çözmesi gerektiği gibi, onu ilk kuranları da aşması gerekir.

Bizler hem ömür hem kabiliyet bakımından sonlu sistemleriz. Her işi kendimizin başaramayacağımızın farkındayız.

Dolayısı ile, senin katkının, özgün tecrübe ve bakış açılarının Spiralgo'ya ve dolayısı ile diğer problem çözücülere büyük katkısı olacağından oldukça eminiz.

GitHub nedir ve neden GitHub üzerinde interaktif bir çalışma şeklini seçtik?

Bir yazılım geliştirilirken, farkı geliştiricilerin kodlarının ortak bir depoda senkronize edilmesi, varsa çakışmaların giderilmesi, yazılımdaki değişikliklerin geçmişe dönük olarak takip edilmesi gerekir. Bu ihtiyaç, özellikle uzaktan çalışmanın yaygınlaşması ile daha da artmıştır. Bu fonksiyonları yerine getiren yazılımlara versiyonlama sistemi denir. GitHub, Git versiyonlama sistem üzerine kurulmuştur ve benzerleri arasında en popüler olanıdır. Dolayısı ile en büyük yazılım şirketlerinde dahi kabul görmüş ve hızla gelişmekte olan bir altyapı sunmaktadır. Profesyonel bir yazılım geliştiricisi olmak isteyen herkes, GitHub ve benzeri bir sistemi öğrenmeye mecbur olduğundan, biz algoritma çalışmamızı bu vesile ile kullanabileceğimiz kanaatine vardık. Bu sebeple GitHub üzerine de, gene Spiralgo GitHub reposunu kullanarak ayrı bir ücretsiz kurs hazırlama niyetindeyiz.

LeetCode nedir ve neden LeetCode 170 Curated sorularını temel aldık?

LeetCode, kullanıcıları aracılığı ile en güncel algoritma sorularını toplayıp yıllardır test edilen sağlam bir altyapı hazırlamıştır. Bu sorular, kullanıcıların Google, Facebook, Linkedin gibi büyük şirketlerle yaptıkları iş görüşmelerinde bizzat sorulmuştur.

Bizim bu eğitimde odaklandığımız LeetCode 170 Curated ise binlerce LeetCode sorusu içerisinden damıtılmış ve onların özünü içeren 170 adet sorudur.

Her ne kadar bu sorulara internette arama yaparak erişmek mümkün olsa da, LeetCode'un varsayılan çözümleri ve kullanıcıların kendi çözümleri gibi bölümlere erişmek için premium hesap gerekmektedir.

Spiralgo'da, biz bazen kendi çözümlerimizi, bazen daha nitelikli bulduğumuz LeetCode varsayılan ve kullanıcı çözümlerini refactor edip geliştirerek ekledik.

Dolayısı ile, Spiralgo'daki çözümler de günden güne daha tatmin edici bir hâl almaktadır.

Neden İngilizce'ye öncelik verdik ve neden Türkçe çeviri yapıyoruz?

İngilizce, o veya bu nedenle artık global olarak kabul görmüş bir iletişim aracıdır.

Bu demektir ki, problem-çözücü olarak sen, yurtiçinde veya yurtdışında global şirketlerle veya yabancı yazılım geliştiricilerle çalışırken İngilizce iletişim kurmak zorunda kalacaksın.

Dolayısı ile, algoritmalar başta olmak üzere, üretilen makalelerin büyük bir yüzdesi İngilizcedir.

Her alanda olduğu gibi, yazılım alanında da Türkçe kaynak sorunu vardır.

Biz İngilizce'nin global olarak kabul gördüğünü gerçeği ile yüzleştikleştiğimiz için, soruları ve çözümleri öncelikle İngilizce olarak hazırladık.

Ancak, Türkçe'ye çeviri yaparak, Türkçe kaynak sorununa da bir nebze olsun yardım etmeyi diliyoruz.

Bununla birlikte, bu eğitimde olduğu gibi, İngilizce olan her şey Türkçe olarak da açıklanacaktır.

Problem çözücü olarak senin de eğer İngilizce iletişim yeteneklerini geliştirme amacın varsa, Spiralgo bize yardımcı olduğu gibi, sana da olacaktır kanaatindeyiz.

Neden Spiralgo'nun bazı eğitimleri Udemy gibi siteler üzerinde ücretli olarak yayınlanacaktır?

Bizim, başka şirketlerde hâlihazırda çalıştığımız projeler vardır.

Bu bir yere kadar bize çok şey öğretmiş ve maddi olarak da güçlendirmiştir.

Ancak bir şirkette çalışmak o şirkete vaktimizi ve zihnimizi kiralamak demektir.

Biz vaktimizi Spiralgo aracılığı ile problem çözmeye adamak istiyoruz.

Neden kendi spiralimize problem çözme konusunda katkıda bulunmak varken, özellikle yabancı şirketlere yazılım üretmekle vakit harcayalım?

Bu yüzden, bu ücretli eğitimler sâyesinde, vaktimizi başka amaçlar için kiralamaktansa daha yararlı olduğuna inandığımız bu amaç doğrultusunda kullanabileceğiz.

Neden Spiralgo ve bu kursla ile ilgili kararlarımızı açıkça anlatıyoruz?

Doğrusu biz kendi hayatımızı da etkin bir algoritmanın sahip olması gereken; kesinlik-açıklık (definiteness), doğruluk (correctness) gibi ilkelere göre inşa etmeye çalışıyoruz.

Dolayısı ile, Spiralgo'ya dair her şey, işte bu dökümanda olduğu gibi olabildiğince açık ve doğru aktarılmalıdır diye düşünüyoruz.

Bu ayrıca, problem çözücüyü yani seni bizimle özdeşlik kurmaya ve değerli fikirlerini bizimle paylaşıp katkıda bulunmaya teşvik edecektir.

Doğru ya, her şey açık ve net. Açık kaynaklı bir sistem. Neden sevip sahiplenmeyesin?

(Promotion video music:

Music from Uppbeat: 

License code: SMBP7WJM5AW54NYN)

Content

KOLAY SEVİYEDEKİ ALGORİTMA SORULARI

Spiralgo'nun tanıtımı
Shortest Word Distance
Meeting Rooms
Palindrome Permutation
Moving Average from Data Stream
Logger Rate Limiter
Find Anagram Mappings
Fixed Point
Index Pairs of a String
High Five
Two Sum Less Than K
​Largest Unique Number​
​Armstrong Number
​Single-Row Keyboard
​Count Substrings with Only One Distinct Letter
​How Many Apples Can You Put into the Basket
​Intersection of Three Sorted Arrays
​Delete N Nodes After M Nodes of a Linked List
​Counting Elements
​Check If a Number Is Majority Element in a Sorted Array
​Perform String Shifts
​Missing Number In Arithmetic Progression
Closest Binary Search Tree Value
​Confusing Number
​Max Stack
Sentence Similarity
​Design Compressed String Iterator
​Valid Word Square
​Read N Characters Given Read4
​Two Sum III - Data structure design
​Missing Ranges

Screenshots

Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Screenshot_01Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Screenshot_02Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Screenshot_03Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Screenshot_04

Reviews

Günhan
April 17, 2022
Algoritma konusunda somut örnekler ile konuyu açıklaması bu kursun öbür teorik kurslara kıyasla üstün yanı. Algoritma çözümleri konusunun pratik gerektiren bir mesele olduğunu da düşünürsek bu kurs çözüm tecrübesi kazanma yolunda oldukça yardımcı olacaktır.
Ayhan
April 17, 2022
İngilizce algoritma sorularını anlamakta zorlanan benim gibi birileri için bulunmaz nimet niteliğinde bir kurs olmuş. GitHub kullanmayı bilmiyordum. Sayenizde onu da öğrenmiş oldum.

Charts

Price

Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Price chart

Rating

Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Ratings chart

Enrollment distribution

Yurt Dışına Hazırlık: Algoritmalar ve Programlamaya Giriş - Distribution chart
4439300
udemy ID
12/10/2021
course created date
12/31/2021
course indexed date
Bot
course submited by