[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE)
[![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/)
[![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/)
[![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)

[![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/)
[![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/)
[![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/)

[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners)

# Yeni Başlayanlar için Web Geliştirme – Bir Müfredat

Microsoft’taki Azure Cloud Advocates JavaScript, CSS ve HTML temellerini içeren 12 haftalık 24 dersten oluşan müfredatı sunmaktan mutluluk duyuyor. Her bir ders, ders başı ve ders sonu kısa sınavlarını, dersi tamamlamak için yazılı yönergeleri, bir çözümü, bir ödevi ve daha fazlasını içermektedir. Yeni becerilerin 'kazanımı' için kanıtlanmış bir yol olan proje temelli pedagojimiz, yaparken öğrenmenizi sağlar.

**Yazarlarımıza en kalbi duygularla teşekkür ederiz: Jen Looper, Chris Noring, Christopher Harrison, Jasmine Greenaway, Yohan Lasorsa, Floor Drees ve sketchnote ressamı Tomomi Imura’ye!**

# Öğrenci misin?

Aşağıdaki kaynaklarla başla:

- [Student Hub sayfası](https://docs.microsoft.com/en-gb/learn/student-hub?WT.mc_id=academic-77807-sagibbon) Bu sayfada, başlangıç kaynakları, Öğrenci paketleri ve hatta ücretsiz sertifika kuponu almanın yollarını bulacaksınız. Bu sayfa, içeriğini ayda en az bir kez değiştirdiğimiz için yer imlerine eklemek ve zaman zaman kontrol etmek isteyeceğin bir sayfadır.
- [Microsoft Student Learn elçileri](https://studentambassadors.microsoft.com?WT.mc_id=academic-77807-sagibbon) Küresel bir öğrenci elçileri topluluğuna katıl, bu Microsoft'a giriş yolun olabilir.


# Başlarken

> **Öğretmenler**, bu müfredatın nasıl kullanılacağına dair [bazı öneriler ekledik](for-teachers.md).  [Tartışma forumlarımıza](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner) yazabileceğiniz geribildirimlerinizi görmeyi çok istiyoruz.

> **[Öğrenciler](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**, bu müfredatı kendi başınıza kullanabilmek için tüm repoyu fork’layın ve ders öncesi kısa sınavlarından başlayarak tek başınıza alıştırmaları tamamlamaya çalışın. Sonra dersi okuyun ve geri kalan etkinlikleri tamamlayın. Çözüm kodları her projeye dayalı dersin /solutions klasöründe bulunmaktadır ancak çözüm kodunu kopyalamaktansa derslerde öğrendiklerinizi kullanarak projeler yaratmaya çalışın. Başka bir fikir de arkadaşlarınızla bir çalışma grubu kurup içeriği birlikte takip etmeniz olabilir. Daha ileri çalışmalar için [Microsoft Learn](https://docs.microsoft.com/users/jenlooper-2911/collections/jg2gax8pzd6o81?WT.mc_id=academic-77807-sagibbon)’ü ve aşağıda sözü edilen videoları izlemenizi tavsiye ediyoruz.

[![Promo video](images/web.gif)](https://youtube.com/watch?v=R1wrdtmBSII)

Gif by [Mohit Jaisal](https://linkedin.com/in/mohitjaisal)

> 🎥 Click the image above for a video about the project and the folks who created it!

## Pedagoji

Bu müfredatı oluştururken iki pedagojik ilke seçtik: proje temelli olması ve sık kısa sınavlar içermesi. Bu serinin sonunda, öğrenciler birer tane typing game, virtual terrarium, ‘green’ browser extension, 'space invaders' type game ve business-type banking app yapacak ve günümüz web geliştiricisinin çağdaş araçtakımı ile birlikte JavaScript, HTML ve CSS’in temellerini öğrenmiş olacak.

> 🎓 Bu müfredattaki ilk birkaç dersi Microsoft Learn’deki bir [Öğrenme Patikası](https://docs.microsoft.com/learn/paths/web-development-101?WT.mc_id=academic-77807-sagibbon)'dan alabilirsiniz.

İçeriğin projelerle uyumlu olması sağlanarak süreç öğrenciler için daha ilgi çekici hale getirilecek ve kavramların akılda kalıcılığı artırılacaktır. Ayrıca, kavramları tanıtmak için JavaScript temelleri üzerine birkaç başlangıç dersi yazdık ve bu müfredata katkıda bulunan bazı yazarların video eğitimleri koleksiyonu olan "[Yeni Başlayanlar için JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript?WT.mc_id=academic-77807-sagibbon)" videolarıyla eşleştirdik.

Bunlara ek olarak ders öncesi yüzeysel bir kısa sınav ile öğrencinin bir konuyu öğrenme niyetini oluştururken ders sonunda ikinci bir kısa sınav ileri pekiştirmeyi sağlar. Bu ders programı esnek ve eğlenceli olması için tasarlandı ve parçalar halinde veya bütün olarak takip edilebilir. Projeler temel düzeyde başlamaktadır ve 12 haftalık süreç içerisinde gittikçe kompleks bir hal almaktadır.

Bir framework’ü benimsemeden önce bir web geliştiricisi olarak ihtiyaç duyulan temel becerilere konsantre olmak için JavaScript framework’lerini tanıtmaktan bilerek kaçınmış olsak da, bu müfredatı tamamlamanın bir sonraki adımı, başka bir video koleksiyonu aracılığıyla Node.js hakkında bilgi edinmek olacaktır: "[Yeni Başlayanlar için Node.js](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs?WT.mc_id=academic-77807-sagibbon)".

> [Davranış Kuralları](CODE_OF_CONDUCT.md)'mızı, [Katkıda Bulunma](CONTRIBUTING.md) ve [Çeviri](TRANSLATIONS.md) kılavuz ilkelerimizi inceleyin. Yapıcı geribildirimlerinizi memnuniyetle karşılıyoruz!

## Her bir ders şunları içermektedir:

- isteğe bağlı sketchnote
- isteğe bağlı ek video
- ders öncesi ısınma kısa sınavı
- yazılı ders
- proje temelli dersler için, projenin nasıl yapılacağına dair adım adım kılavuz
- bilgi kontrolleri
- bir meydan okuma
- ek okuma
- ödev
- ders sonrası kısa sınavı


> **Kısa sınavlarla ilgili bir not**: Her biri üç sorudan oluşan toplam 48 kısa sınav [bu uygulamada](https://ashy-river-0debb7803.1.azurestaticapps.net/) yer alır. Bunlar derslerin içinden bağlantılıdır ancak sınav uygulaması yerel olarak çalıştırılabilir; 'quiz-app' klasöründeki yönergeleri izleyin.

## Dersler

|     |                       Proje Adı                       |                            Öğretilen Kavramlar                             | Öğrenme Hedefleri                                                                                                                 |                                                         Bağlantılı Ders                                                          |         Yazar          |
| :-: | :------------------------------------------------------: | :--------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | :---------------------: |
| 01  |                     Başlangıç                      |           Introduction to Programming and Tools of the Trade           | Çoğu programlama dilinin arkasındaki temeller ve profesyonel geliştiricilerin işlerini yapmalarına yardımcı olan yazılımlar hakkında bilgi edinmek | [Intro to Programming Languages and Tools of the Trade](/1-getting-started-lessons/1-intro-to-programming-languages/README.md) |         Jasmine         |
| 02  |                     Başlangıç                      |             Basics of GitHub, includes working with a team             | Github'ın nasıl kullanıldığını ve başkalarıyla ortak projede nasıl işbirliği yapıldığını öğrenmek                                                    |                            [Intro to GitHub](/1-getting-started-lessons/2-github-basics/README.md)                             |          Floor          |
| 03  |                     Başlangıç                      |                             Accessibility                              | Web erişilebilirliğinin temellerini öğrenmek                                                                                               |                       [Accessibility Fundamentals](/1-getting-started-lessons/3-accessibility/README.md)                       |       Christopher       |
| 04  |                        JS Temelleri                         |                         JavaScript Data Types                          | JavaScript veri yapılarının temellerini öğrenmek                                                                                                 |                                       [Data Types](/2-js-basics/1-data-types/README.md)                                        |         Jasmine         |
| 05  |                        JS Temelleri                         |                         Functions and Methods                          | Bir uygulamanın mantıksal akışını yönetmeye yönelik fonksiyonlar ve metodlarla ilgili bilgi edinmek                                                             |                              [Functions and Methods](/2-js-basics/2-functions-methods/README.md)                               | Jasmine and Christopher |
| 06  |                        JS Temelleri                         |                        Making Decisions with JS                        | Karar verme yöntemlerini kullanarak kodda koşulların nasıl oluşturalacağını öğrenmek                                                           |                                 [Making Decisions](/2-js-basics/3-making-decisions/README.md)                                  |         Jasmine         |
| 07  |                        JS Temelleri                         |                            Arrays and Loops                            | JavaScript'te verileri diziler ve döngüleri kullanarak işlemek                                                                                 |                                   [Arrays and Loops](/2-js-basics/4-arrays-loops/README.md)                                    |         Jasmine         |
| 08  |       [Terrarium](/3-terrarium/solution/README.md)       |                            HTML in Practice                            | Build the HTML to create an online terrarium, focusing on building a layout                                                         |                                 [Introduction to HTML](/3-terrarium/1-intro-to-html/README.md)                                 |           Jen           |
| 09  |       [Terrarium](/3-terrarium/solution/README.md)       |                            CSS in Practice                             | Build the CSS to style the online terrarium, focusing on the basics of CSS including making the page responsive                     |                                  [Introduction to CSS](/3-terrarium/2-intro-to-css/README.md)                                  |           Jen           |
| 10  |            [Terrarium](/3-terrarium/solution/README.md)            |                 JavaScript Closures, DOM manipulation                  | Build the JavaScript to make the terrarium function as a drag/drop interface, focusing on closures and DOM manipulation             |                  [JavaScript Closures, DOM manipulation](/3-terrarium/3-intro-to-DOM-and-closures/README.md)                   |           Jen           |
| 11  |          [Typing Game](/4-typing-game/solution/README.md)          |                          Build a Typing Game                           | Learn how to use keyboard events to drive the logic of your JavaScript app                                                          |                                [Event-Driven Programming](/4-typing-game/typing-game/README.md)                                |       Christopher       |
| 12  | [Green Browser Extension](/5-browser-extension/solution/README.md) |                         Working with Browsers                          | Learn how browsers work, their history, and how to scaffold the first elements of a browser extension                               |                               [About Browsers](/5-browser-extension/1-about-browsers/README.md)                                |           Jen           |
| 13  | [Green Browser Extension](/5-browser-extension/solution/README.md) | Building a form, calling an API and storing variables in local storage | Build the JavaScript elements of your browser extension to call an API using variables stored in local storage                      |                [APIs, Forms, and Local Storage](/5-browser-extension/2-forms-browsers-local-storage/README.md)                 |           Jen           |
| 14  | [Green Browser Extension](/5-browser-extension/solution/README.md) |          Background processes in the browser, web performance          | Use the browser's background processes to manage the extension's icon; learn about web performance and some optimizations to make   |             [Background Tasks and Performance](/5-browser-extension/3-background-tasks-and-performance/README.md)              |           Jen           |
| 15  |           [Space Game](/6-space-game/solution/README.md)           |             More Advanced Game Development with JavaScript             | Learn about Inheritance using both Classes and Composition and the Pub/Sub pattern, in preparation for building a game              |                      [Introduction to Advanced Game Development](/6-space-game/1-introduction/README.md)                       |          Chris          |
| 16  |           [Space Game](/6-space-game/solution/README.md)           |                           Drawing to canvas                            | Learn about the Canvas API, used to draw elements to a screen                                                                       |                                [Drawing to Canvas](/6-space-game/2-drawing-to-canvas/README.md)                                |          Chris          |
| 17  |           [Space Game](/6-space-game/solution/README.md)           |                   Moving elements around the screen                    | Discover how elements can gain motion using the cartesian coordinates and the Canvas API                                            |                           [Moving Elements Around](/6-space-game/3-moving-elements-around/README.md)                           |          Chris          |
| 18  |           [Space Game](/6-space-game/solution/README.md)           |                          Collision detection                           | Make elements collide and react to each other using keypresses and provide a cooldown function to ensure performance of the game    |                              [Collision Detection](/6-space-game/4-collision-detection/README.md)                              |          Chris          |
| 19  |           [Space Game](/6-space-game/solution/README.md)           |                             Keeping score                              | Perform math calculations based on the game's status and performance                                                                |                                    [Keeping Score](/6-space-game/5-keeping-score/README.md)                                    |          Chris          |
| 20  |           [Space Game](/6-space-game/solution/README.md)           |                     Ending and restarting the game                     | Learn about ending and restarting the game, including cleaning up assets and resetting variable values                              |                                [The Ending Condition](/6-space-game/6-end-condition/README.md)                                 |          Chris          |
| 21  |         [Banking App](/7-bank-project/solution/README.md)          |                 HTML Templates and Routes in a Web App                 | Learn how to create the scaffold of a multipage website's architecture using routing and HTML templates                             |                            [HTML Templates and Routes](/7-bank-project/1-template-route/README.md)                             |          Yohan          |
| 22  |         [Banking App](/7-bank-project/solution/README.md)          |                  Build a Login and Registration Form                   | Learn about building forms and handing validation routines                                                                          |                                           [Forms](/7-bank-project/2-forms/README.md)                                           |          Yohan          |
| 23  |         [Banking App](/7-bank-project/solution/README.md)          |                   Methods of Fetching and Using Data                   | How data flows in and out of your app, how to fetch it, store it, and dispose of it                                                 |                                            [Data](/7-bank-project/3-data/README.md)                                            |          Yohan          |
| 24  |         [Banking App](/7-bank-project/solution/README.md)          |                      Concepts of State Management                      | Learn how your app retains state and how to manage it programmatically                                                              |                                [State Management](/7-bank-project/4-state-management/README.md)                                |          Yohan          |

## Çevrimdışı erişim

[Docsify](https://docsify.js.org/#/) kullanarak bu belgeleri çevrimdışı çalıştırabilirsiniz. Bu depoyu çatallayın, yerel makinenize [Docsify'ı yükleyin](https://docsify.js.org/#/quickstart) ve ardından bu deponun `etc/docsify` klasörüne `docsify serve` yazın. Web sitesi, localhost'unuzdaki 3000 numaralı bağlantı noktasında hizmet sağlayacak: `localhost:3000`.

## PDF

Müfredatın bir PDF'i [bu bağlantıda](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf) mevcut.

## Diğer Müfredatlar

Ekibimiz başka müfredatlar da üretiyor. Bakınız:

- [Yeni Başlayanlar için Makine Öğrenmesi](https://aka.ms/ml-beginners)
- [Yeni Başlayanlar için IoT](https://aka.ms/iot-beginners)
- [Yeni Başlayanlar için Veri Bilimi](https://aka.ms/datascience-beginners)
- [Yeni Başlayanlar için Yapay Zekâ](https://aka.ms/ai-beginners/?WT.mc_id=academic-77807-sagibbon)
