Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/anishlearnstocode/python-workshop-3

Python ๐Ÿ Workshop on Language Basics, Constructs and introduction in Data Structures & Algorithms ๐Ÿ‘จโ€๐Ÿ’ป @WhatAfterCollege ๐ŸŽ“
https://github.com/anishlearnstocode/python-workshop-3

algorithms arithmetic-expression data-structures dictionary functions generator-function introduction-to-programming list logical-expression methods oops pycharm pycharm-ide python python3 tuple workshop

Last synced: 5 days ago
JSON representation

Python ๐Ÿ Workshop on Language Basics, Constructs and introduction in Data Structures & Algorithms ๐Ÿ‘จโ€๐Ÿ’ป @WhatAfterCollege ๐ŸŽ“

Awesome Lists containing this project

README

        

# Python ๐Ÿ Basics Workshop - What After College

![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/anishLearnsToCode/python-workshop-3)
[![license](https://img.shields.io/badge/LICENSE-MIT-.svg)](LICENSE)

Solutions to all sample problems on HackerRank under the
[Python domain](https://www.hackerrank.com/domains/python) can be
looked up [here](https://github.com/anishLearnsToCode/hackerrank-python).

Workshop Timings
Workshop Timings: 9:00 AM - 2:00 PM (9 - 14)

Break Timings: 11:00 AM - 12:00 AM (11 - 12)

Programming is a very hands process and is both an art as well as a science. We are
engineers and are required to create efficient solutions but at the same time our programs should be
highly readable and flexible and all the other snappy terms which makes it an art as well.

To become proficient in this art, there are many resources, and books and tutorials. Each has it's merit
and making the first step in any direction is commendable, but the cardinal factor at the end of the day
will be you sitting down (or standing) and writing code. No book or resource can substitute that.

So, what are you waiting for ๐Ÿ˜€๐Ÿ˜‰ - try as many questions (below or otherwise) as you can.... ๐Ÿฑโ€๐Ÿ‘ค
Happy Coding :octocat: ๐Ÿฑโ€๐Ÿ’ป

Get to know more about your instructor [here](https://www.linkedin.com/in/anishsachdeva1998/).

## Index
| Domain | Important Links |
|:---:|:---------------:|
| [Project Setup Details](#project-setup-details) | _-- No Links --_|
| [Day 1](#day-1) | [[Topics Covered]](#topics-covered) โญ [[Further Reading]](#further-reading) โญ [[Sample Questions]](#sample-questions) |
| [Day 2](#day-2) | [[Topics Covered]](#topics-covered-1) โญ [[Further Reading]](#further-reading-1) โญ [[Sample Questions]](#sample-questions-1) |
| [Python Capstone Project](#hangman-game-capstone-project) | [[Repository]](https://github.com/anishLearnsToCode/hangman-cli-game) |
| [Future Path ??](#future-scope-and-path) | โžกโžก [look ahead](#future-scope-and-path) |

## Project Setup Details
- [Visual Studio Code](https://code.visualstudio.com/)
- [JetBrains PyCharm Community Edition](https://www.jetbrains.com/edu-products/download/)
- [Git](https://git-scm.com/downloads)
- [Python 3](https://www.python.org/downloads/)

## [Day 1](https://github.com/anishLearnsToCode/python-workshop-3/tree/master/day-1)
### Topics Covered
- [Hello World!](day-1/hello-world.py)
- [Input](day-1/input.py)
- [Data Types](day-1/variables.py)
- [Integer Input](day-1/int-input.py)
- [Comments & Variables](day-1/comments.py)
- [Arithmetic Expressions](day-1/arithmetic-operations.py)
- [logical Expressions](day-1/logical-operators.py)
- [If-Else Statements](day-1/if-else-conditions.py)
- [Finding of Number is even or odd](day-1/even-odd.py)
- [Largest of 3 Numbers](day-1/largest-3-numbers.py)
- [While Loop](day-1/while-loop.py)
- [Range](day-1/range-type.py)
- [For Loops](day-1/for-loops.py)
- [Infinite Loop](day-1/infinite-loop.py)
- [Loop Control Statements](day-1/loop-control-statements.py)
- [Nested Loops](day-1/nested-loop.py)
- [Sum of N Natural Numbers](day-1/sum-of-n-numbers.py)
- [Sum of squares of first N Natural Numbers](day-1/sum-of-squares.py)
- [Factorial](day-1/factorial.py)
- [Lists](day-1/lists.py)

### Further Reading
- [w3 School Python](https://www.w3schools.com/python/)
- [HackerRank python Domain](https://www.hackerrank.com/domains/python)
- [Why is it called Python?](http://www.python.org/doc/faq/general/#why-is-it-called-python)
- [Projects Created on Python](python.org/about/success)
- [C++ vs. Java vs. Python Language Speed Test (Informal)](https://www.youtube.com/watch?v=C8jeRug6agk)

### Sample Questions
| Question | Solution Link |
|:---------|:--------:|
| [Say "Hello World" With Python](https://www.hackerrank.com/challenges/py-hello-world)| [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/SayHelloWorldWithPython.py) |
| [Python If-Else](https://www.hackerrank.com/challenges/py-if-else) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/PythonIfElse.py) |
| [Arithmetic Operators](https://www.hackerrank.com/challenges/python-arithmetic-operators) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/ArithmeticOperator.py) |
| [Python Division](https://www.hackerrank.com/challenges/python-division) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/Division.py) |
| [Loops](https://www.hackerrank.com/challenges/python-loops) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/Loops.py)|
| [List Comprehensions](https://www.hackerrank.com/challenges/list-comprehensions) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/ListComprehension.py) |
| [Find the Runner-Up Score](https://www.hackerrank.com/challenges/find-second-maximum-number-in-a-list) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/FindTheRunnerUpScore.py) |
| [Nested Lists](https://www.hackerrank.com/challenges/nested-list) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/nested-lists.py) |
| [Finding The Percentage](https://www.hackerrank.com/challenges/finding-the-percentage) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/finding-the-percentage.py) |
| [Lists](https://www.hackerrank.com/challenges/python-lists) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/Lists.py) |
| [Tuples](https://www.hackerrank.com/challenges/python-tuples) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/basic-data-types/tuples.py) |
| [sWAP cASE](https://www.hackerrank.com/challenges/swap-case) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/strings/swap-case.py) |
| [String Split and Join](https://www.hackerrank.com/challenges/python-string-split-and-join) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/strings/string-split-and-join.py) |
| [What's Your Name](https://www.hackerrank.com/challenges/whats-your-name) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/strings/whats-your-name.py) |

## [Day 2](https://github.com/anishLearnsToCode/python-workshop-3/tree/master/day-2)

### Topics Covered
- [Ternary Statement](day-2/ternary-statement.py)
- [List Comprehension](day-2/generator-function.py)
- [Functions](day-2/functions.py)
- [Inbuilt Functions](day-2/inbuilt-functions.py)
- [String Functions](day-2/string-functions.py)
- [List Input](day-2/list-input.py)
- [ASCII & UNICODE](day-2/ascii.py)
- [Tuples](day-2/tuples.py)
- [Dictionary](day-2/dictionary.py)
- [Complex Key Value pairs in Dictionary](day-2/dictionary-multiple.py)
- [Packages](day-2/packages.py)

### Further Reading
- [Math Module](https://docs.python.org/3/library/math.html)
- [Stack Overflow Survey 2020](https://insights.stackoverflow.com/survey/2020)
- [Python Example Projects and Project Based Tutorials](https://realpython.com/tutorials/projects/)
- [Django: Web Development on Python](https://www.djangoproject.com/)
- [Falcon: Minimalist Web Framework](https://falcon.readthedocs.io/en/stable/)

### Sample Questions
| Question | Solution Link |
|:---------|:--------:|
| [Write a Function](https://www.hackerrank.com/challenges/write-a-function) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/WriteAFunction.py) |
| [Print Function](https://www.hackerrank.com/challenges/python-print) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/introduction/PrintFunction.py) |
| [collections.Counter()](https://www.hackerrank.com/challenges/collections-counter) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/collections/collections-counter.py) |
| [DefaultDict Tutorial](https://www.hackerrank.com/challenges/defaultdict-tutorial) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/collections/default-dict-tutorial.py) |
| [Collections.namedTuple()](https://www.hackerrank.com/challenges/py-collections-namedtuple) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/collections/collections-named-tuple.py) |
| [Collections.orderedDict()](https://www.hackerrank.com/challenges/py-collections-ordereddict) | [Solution](https://github.com/anishLearnsToCode/hackerrank-python/blob/master/collections/collections-ordered-dict.py) |

## Hangman Game (Capstone Project)
The code can be viewed [here](https://github.com/anishLearnsToCode/hangman-cli-game).
The main (interesting) concepts being used by this code are:
- [Functions](https://github.com/anishLearnsToCode/python-workshop-1/blob/master/day-1/functions.py)
- [Modules](https://github.com/anishLearnsToCode/python-workshop-1/blob/master/day-2/modules.py)
- [Generators](https://github.com/anishLearnsToCode/python-workshop-1/blob/master/day-2/generators.py)

## Future Scope and Path
Now that you have learnt the basics of Python and also built an amazing project that showcases
your skills, how to move ahead and learn more? What else could you work on? Here are a
few suggestions:

### Data Structures and Algorithms
Data Structures and Algorithms is an immensely important topic required for Software development and
is used by organizations for all sizes as a tool for employee hiring and recruitment. To get better
at this I recommend that you practice questions in the
[Data Structures](https://www.hackerrank.com/domains/data-structures) and
[Algorithms](https://www.hackerrank.com/domains/algorithms)
domain on HackerRank and you can have a look at solutions to many of those problems in the
solution repositories given below.

| Problem Domain | Solution Repository |
|----------------|---------------------|
| [Data Structures](https://www.hackerrank.com/domains/data-structures) | [Solutions](https://github.com/anishLearnsToCode/hackerrank-data-structures) |
| [Algorithms](https://www.hackerrank.com/domains/algorithms) | [Solutions](https://github.com/anishLearnsToCode/hackerrank-algorithms) |

You can views solutions to problems in Python (or any of your preferred programming language)
and you are most welcome to contribute to the repository solutions to unsolved problems
or solutions in more languages (aka Python).

You can also try questions on [Leet Code](https://leetcode.com/) and have a look at the
[solutions repository](https://github.com/anishLearnsToCode/leetcode-algorithms)
and are most welcome to contribute just as above ๐Ÿ˜€

### Core Python
Before starting of your journey in Data Structures or
[web development](#web-development) or even
[machine learning](#machine-learning-)
another good first step can be just developing your core Python skills further so that you are
familiar with all the different constructs that the language has to offer. That can be done on
HackerRank in the
[Python Domain](https://www.hackerrank.com/domains/python)
and you can have a look at solutions to all the problems
[here](https://github.com/anishLearnsToCode/hackerrank-python).

### Web Development
Python is a very versatile programming language and is being used for all things from biology
to robotics, computer vision and even serve side rendered web applications and api's.
As you are now proficient with the programming language you can start learning a web
development framework like
[Django](https://www.djangoproject.com/) or
[Falcon](https://falcon.readthedocs.io/en/stable/).

Django is a have all web development framework and you can even build very large, highly modern
cluster based web sites that can be deployed to scale. You can use it just to create a server-side
API with a separate client facing application or a MVC (Model view controller) based application
that has server side rendering.

Falcon is a relatively light weight web development platform but it is blazing fast โšก and that serves
it's own purpose. It can be used to create a super fast very minimalistic server side API's
and can aso be used to create server side job runners like mail sending and background processing.

You could always use multiple server side frameworks which will give you the perfect opportunity
to use buzz words like docker, kubernetes ๐Ÿ›ณ, clusters, swarms and add all these buzz words to
your resume ๐Ÿ˜‰.

### Machine Learning ๐Ÿ”ฅ
Speaking of buzz words... Machine Learning has enjoyed fame of meteoric proportions and there are
plenty of resources to get started with ML and Python has somehow become the defacto language
used in Machine Learning / Deep Learning applications and is being sed by Engineers &
scientists of many different domains that have written numerous libraries serving various purposes
all around the globe ๐ŸŒŽ which is good for us โ˜บ.

Some popular libraries are:
- [numpy](https://numpy.org/)
- [scikit-learn](https://scikit-learn.org/stable/)
- [tensorflow](https://www.tensorflow.org/)
- [open-cv](https://opencv.org/)
- [pyTorch](https://pytorch.org/)

To get started with Machine Learning I recommend the ubiquitous
[Machine Learning by Stanford](https://www.coursera.org/learn/machine-learning)
course on [Coursera](https://www.coursera.org) by Andrew Ng.

This may be old but it's essence and relevance haven't dwindled at all. Solutions to all problems
with well written code can be found [here](https://github.com/anishLearnsToCode/ml-stanford).