# Software Engineering with Python ``` Learn and code every day! Take notes. Learn to ask GOOD questions. Learn to prioritize tasks. Focus on 1 thing! Build something, anything. Build projects that bring some benefit to you or the people around you. Take small steps, but every day, consistency is very important. ``` ## Contents: - [Important Skills](#important-skills) - [Computer Science Basics](#computer-science-basics) - [Start Learning Python](#start-learning-python) - [Discover some Python libraries](#discover-some-python-libraries) - [Databases: SQL, NoSQL](#databases-sql-nosql) - [Web Development](#web-development) - [**Advanced Python](#advanced-python) ## Important Skills 1. Algorithms and data structures 2. Programming mindset - analytical, problem-solving mindset 3. Know your programming language ## Computer Science Basics - [Harvard CS50](https://youtube.com/playlist?list=PLhQjrBD2T383f9scHRNYJkior2VvYjpSL) - Scratch, C, Arrays, Algorithms, Memory, Data structures, Python, SQL, HTML, CSS, JavaScript, Flask - [Crash Course Computer Science](https://www.youtube.com/playlist?list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo) ## Start Learning Python Learn the basics, watch a couple of tutorials, read articles, and then build projects using Python. Learn by building. Start from building console applications, then learn how to build desktop apps, then web apps. - [11 Beginner Tips for Learning Python Programming](https://realpython.com/python-beginner-tips/) - [freeCodeCamp.org - Python beginning](https://youtu.be/rfscVS0vtbw) - [freeCodeCamp.org - Python intermediate](https://youtu.be/HGOBQPFzWKo) - [30-Days-Of-Python](https://github.com/Asabeneh/30-Days-Of-Python) - [Программирование на Python](https://www.youtube.com/playlist?list=PLlb7e2G7aSpQhNphPSpcO4daaRPeVstku) - [Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU), focus **MORE** on this! - Readings: - [Easy practical Python](https://dabeaz-course.github.io/practical-python/Notes/Contents.html) - [w3schools.com](https://www.w3schools.com/python/) - [programiz.com](https://www.programiz.com/python-programming) - *[pythontutorial.net](https://www.pythontutorial.net/) - _Python Basics_ and _Python Advanced_ sections - **[python-course.eu](https://python-course.eu/python-tutorial/) - only _Python Tutorial_ section - **[realpython.com](https://realpython.com/python-basics/) - OOP in Python: - [by Caleb Curry](https://youtu.be/MikphENIrOo) - [by Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc) - [python-course.eu](https://python-course.eu/oop/) - [pythontutorial.net](https://www.pythontutorial.net/python-oop/) - Books: - [Python Basics: A Practical Introduction to Python 3](https://t.me/progbook/5781) - *[Python Tricks: A Buffet of Awesome Python Features](https://t.me/progbook/5882) ## Problem solving & Practical tasks - https://github.com/Rustam-Z/cpp-programming - https://github.com/darkprinx/break-the-ice-with-python ## Discover some Python libraries - File handling: txt, `json`, `csv`, `yaml` - Working with paths with `pathlib` and OS with `os` - Sending HTTP requests and receiving HTTP responses with `requests` - Building CLI with `argparse` - Working with data `collections`, `itertools` - Learn web scraping using [beautiful-soup](https://beautiful-soup-4.readthedocs.io/en/latest/) and Selenium ## Databases: SQL, NoSQL - SQL - [sqlbolt.com](https://sqlbolt.com/) - [w3schools.com](https://www.w3schools.com/sql/) - [sqltutorial.org](https://www.sqltutorial.org/) - `sqlite`, `sqlalchemy` - [Introduction to working with databases in Python](https://www.youtube.com/watch?v=TY6RDEG9bhw) - Relationships: One-to-One, One-to-Many, Many-to-Many - _Data normalization_ ## Web Development - Understand how the Internet works, OSI & TCP/IP models, DNS, HTTP, REST API. - HTML, CSS, JavaScript - [Web design in 4 minutes](https://jgthms.com/web-design-in-4-minutes/) - [CS50: Web Programming Course](https://www.youtube.com/playlist?list=PLhQjrBD2T380xvFSUmToMMzERZ3qB5Ueu) - Learn Django or Flask - [Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Learn), [Django](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django) - [Django girls](https://tutorial.djangogirls.org/en/) - "Flask Web Development" Miguel Grinberg - "Building REST APIs with Flask" Kunal Relan - See how others build projects using Django, then build your own app. - [Corey Schafer](https://www.youtube.com/playlist?list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p) - [Dennis Ivy](https://www.youtube.com/playlist?list=PL-51WBLyFTg2vW-_6XBoUpE7vpmoR3ztO) - [Building REST API](https://wsvincent.com/django-rest-framework-tutorial/) - Books: - "Django for beginners" by Vincent W. - "Django for APIs" by Vincent W. - "Django 3 by Examples" ## Advanced Python Check https://github.com/Rustam-Z/senior-python-developer. On a high level: - Clean code: - [PEP 8 - Style Guide for Python Code](https://peps.python.org/pep-0008/) - [clean-code-python](https://github.com/zedr/clean-code-python) - [testdriven.io](https://testdriven.io/blog/clean-code-python) - "Clean code in Python" book - [LinkedIn Learning: Clean coding practices](https://www.linkedin.com/learning/agile-software-development-clean-coding-practices) - `typing` - `dataclasses` - Clean design: - Design principles: KISS, DRY, SOLID - Design patterns - Concurrency, parallelism, asynchronicity programming: - [Concurrency and parallelism](https://www.pythontutorial.net/python-concurrency/) - [realpython.com](https://realpython.com/learning-paths/python-concurrency-parallel-programming) - [LinkedIn Learning: Part 1](https://www.linkedin.com/learning/python-parallel-and-concurrent-programming-part-1) - [LinkedIn Learning: Part 2](https://www.linkedin.com/learning/python-parallel-and-concurrent-programming-part-2) - Testing: - `unittest`, `pytest` - "Python testing with PyTest" book - “Python testing with Selenium” - “TDD in Python” - “Python Unit Test Automation“ - Advanced topics: - [python-course.eu](https://python-course.eu/advanced-python/) - [book.pythontips.com](https://book.pythontips.com/en/latest/) - [Python topics for Senior developers](https://github.com/matacoder/senior) - [Python best practices - realpython.com](https://realpython.com/tutorials/best-practices/) - [Medium blog](https://medium.com/techtofreedom/python/home) - [thedigitalcatonline.com](https://thedigitalcatonline.com/) - *[Python 3 Patterns, Recipes and Idioms](https://python-3-patterns-idioms-test.readthedocs.io/en/latest/) - Books: - "Fluent Python" - "Python Cookbook" - "Learning Python" - "Effective Python" - "Advanced Guide to Python 3" - "Mastering Object-Oriented Python" - "Expert Python Programming" 2021 - "High-performance Python" - "Practices of the Python Pro" - "The Python workshop" - "Python Workout" - "Clean Python" - “Python Automation Cookbook” 2nd edition, Jaime Buelta