├── Data Analyst
├── DataAnalyst.png
└── README.md
├── Data Scientist
├── Problem Solving
│ ├── DFS.md
│ └── Index.md
└── README.md
├── Developer
├── README.md
└── javaDeveloper.png
├── README.md
└── images
├── tracks.jpg
├── tracks.png
└── video-camera-icon.png
/Data Analyst/DataAnalyst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aorogat/Data-Science-and-Software-Engineering/2e5ca77bd199a907730066a11c7e5948361282d7/Data Analyst/DataAnalyst.png
--------------------------------------------------------------------------------
/Data Analyst/README.md:
--------------------------------------------------------------------------------
1 | [Back](https://github.com/aorogat/Data-Science-and-Software-Engineering/blob/master/README.md)
2 | # Data Analyst
3 | Data analysis is the process of collecting, cleaning, transforming and visualizing the data to find out valuable insights and conclusions to support the decision-makers. Data Analysis conductes by a Data Analyst who receives a business question from his supervisor and generate the figures and tables that support the insights he discovered with regard to that business question. The figure below shows the required skills to be a Data Analyst. Each rectangle in the figure has a corresponding course where all the courses are in Arabic.
4 | 
5 |
6 | ## Programming series
7 | #### 1- Programming Level (0) [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDgkSxUQx9GCv0vBQPjBNuJ)
8 | In this level, you will learn the fundamental of programming in general without writing specific programming language codes.
9 | The topics covered are
10 | `Problems and Computational Problems`,
11 | `Computer operations: Read-Processing-Write`,
12 | `Algorithms: Pseudo Code and Flowchart`,
13 | `Operators`,
14 | `Statements and Expressions`,
15 | `IF-For-While statemets`,
16 | `Function and Fuction-calling Statement`,
17 | `Programming Languages, Syntax, IDE and Compiler`.
18 | After that course, you will have enough knowledge about what is meant by a programming language (e.g. concepts and tools[IDE]) and choose the suitable programming language for your needs.
19 |
20 | #### 2- Python - Level (1), Basics [\[Youtube Playlist\]](https://www.youtube.com/watch?v=M1m9rtZYN-4&list=PL73bE5x5W-ICe8Wb9bFK85FFFGXbNtMx5)
21 | In this level, you will apply all the concepts of Procedural Programming.
22 | These topics are
23 | `Writing and reading the data`,
24 | `If Statement`,
25 | `For-loop Statement`,
26 | `While-loop Statement`,
27 | `Arrays: List, Tuple, Set, Dictionary`,
28 | `Function and Fuction-calling Statement`.
29 | At the end of this level, there is a project about ATM which helps you to apply such concepts and think in the level of components (functions).
30 |
31 | #### 3- Python - Level (2), OOP \[Part 1] [\[Youtube Playlist\]](https://www.youtube.com/watch?v=65LBTWC9OUo&list=PL73bE5x5W-ICjN2bL9On_dtReRSBRr8Fz)
32 | This level only has the lessons of Object-Oriented Programming (OOP) which are necessary for Data Analyst and Scientist.
33 | These concepts are
34 | `Classes and Objects`,
35 | `Encapsulation`,
36 | `Composition` and
37 | `Inheritance`.
38 | The remaining concepts of OOP are on another level.
39 |
40 | #### 4- Python - Level (3), Tricks [\[Youtube Playlist\]](https://www.youtube.com/watch?v=LdUOgE-73To&list=PL73bE5x5W-IAhtvykYAe9T3un76xkexVx)
41 | In this level, I finalize the Python programming language by going through its documentation and teach all missed points and tricks. The topics covered are
42 | `Files and Streams`,
43 | `Exception Handling`,
44 | `String Manipulation and Regular Expressions`,
45 | `Formatted Strings`,
46 | `Important built-in classes as Object, System and others`,
47 | `Work with OS`,
48 | `Some Tricks`.
49 |
50 | ## Exploratory Data Analysis
51 | #### 1- Descriptive Statistics by Python [\[Youtube Playlist\]](https://www.youtube.com/watch?v=ZmSVoAyY1LM&list=PL73bE5x5W-ICemDprdzo0HibsFiUQIEM5)
52 | This is the first version of Descriptive analysis courses that is enough for Junior Data analysts. Seniors Data analysts must learn more about exploratory data analysis, confirmatory data analysis, data mining and multivariate statistics.
53 | The topics covered are
54 | `Central Tendency: Mean, Median and Mode`,
55 | `Spread measures: SD, Range, Quartiles and Box Plot`,
56 | `Distribution and Histogram`,
57 | `Skewness, Kurtosis and Outliers`,
58 | `Data: Uni-Bi-Multivariate`,
59 | `Data: Qualitative and Quantitative`,
60 | `Quantitative Data Association: Correlation`,
61 | `Qualitative Data Discription: Contingency Table`,
62 | `Qualitative Data Association: Odds Ratio(OR)`.
63 | #### 2- Data Cleaning by Python [\[Youtube Playlist\]]()
64 | Usually, the data you are working with having troubles as typos, missing values and outliers. One of your tasks is to be able to clean the data before analysis.
65 | #### 3- Data Visualization by Python [\[Youtube Playlist\]]()
66 | Although you have studied some basic data visualization through the *__Descriptive Statistics by Python__* course, there are more topics about data visualization that are covered here.
67 | ## Data Acquisition series
68 | Data acquisition means reading the data from its source. Since Data analyst usually works on companies that have their data stored in a database, Data Analyst recruiters expect your ability to read such data from their database.
69 | #### 1- Database Level (1) – SQL - Python/SQL [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDErOUNGLYUXFcw2Tan_BAq)
70 | Databases courses usually have diverse topics for different skills such as Developers, Data Analysts and Data Engineers. In this course, you will learn complex SQL queries to access a database by Python code.
71 | * Sample Database: [Chinook](https://www.sqlitetutorial.net/sqlite-sample-database/)
72 | * Sample Database: [Northwind](https://github.com/aorogat/northwind-SQLite3)
73 | #### 2- Data Formats XML/JSON/… [\[Youtube Playlist\]]()
74 | Sometimes data are not stored in a relational database, however, is stored in files with specific formats like XML, JSON and so on. Data analysts are expected to be able to handle such files.
75 | This course it not a "NoSQL" course. NoSQL concept is important to the "Data Engineer" jobs.
76 | ## Technologies series
77 | One of the following courses is enough. These are the programs that help you in your work with less programming. I will not record these courses but give you links to courses in English.
78 |
79 | #### 1- Tabulae [What is it?](https://youtu.be/YfE9jBq002s) 》[Edureka Channel](https://youtu.be/jj6-0cvcNEA)
80 | #### 2- Power bi [What is it?](https://youtu.be/yKTSLffVGbk) 》[Learnit Training Channel](https://youtu.be/i3CSD7bMMbg)
81 |
82 | # Libraries
83 | During the above courses, you have to finish the following libraries. Although the lessons of such libraries are distributed across these courses, I also added them to separated playlists to be easy for you to access them anytime.
84 | #### Matplotlib [\[Youtube Playlist\]]()
85 | #### Numpy [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IBnRfesDLHH9GpuPDfl1N-u)
86 | #### Pandas [\[Youtube Playlist\]]()
87 |
88 | ## Data Mining
89 | Data mining implies an efficient and continuous method of recognizing and discovering hidden patterns and data throughout a huge dataset.
90 |
91 | ## Abstract Knowledge from Data Engineering packages
92 | In this level, you will study general knowledge about the methods and techniques used by Data Engineers to manage the data. This will help you communicate easily with Data Engineers and know the expectations from their side.
93 |
94 | #### Data Warehouse and Data Mart
95 | Tools like:
96 |
97 | #### Big Data
98 | Tools like: Spark and Hadoop
99 |
100 | #### Data Lakes
101 | Tools like: Cloud based vs HDFS
102 |
103 |
104 |
105 | # Prepare your CV
106 | * In parallel to the technical skills illustrated here, you have to enhace your ability in English, Presentations, Storytelling, Time Management, Team Work, Report Preparation and CV writing. Good Luck!!
107 |
--------------------------------------------------------------------------------
/Data Scientist/Problem Solving/DFS.md:
--------------------------------------------------------------------------------
1 | ### Tree Traversal
2 |
3 | | Problem | Description |
4 | | :---: | :--- |
5 | | 
| Preorder traversal of a binary tree. |
6 | | 
| Inorder traversal of a binary tree. |
7 | | 
| Postorder traversal of a binary tree. |
8 |
9 | ### Bottom-up Computation
10 |
11 | | Problem | Description |
12 | | :---: | :--- |
13 | | 
| Find the minimum depth of a binary tree. |
14 | | 
| Find the maximum depth of a binary tree. |
15 | | 
| Compute the diameter of a binary tree. |
16 | | 
| Check if a binary tree is balanced. |
17 | | 
| Check if a binary tree is univalued. |
18 |
19 | ### Top-down Information Pass + Bottom-up Computation
20 |
21 | | Problem | Description |
22 | | :---: | :--- |
23 | | 
| Compute the average of levels in a binary tree. |
24 | | 
| Sum of root-to-leaf binary numbers. |
25 | | 
| Check if there is a path with a given sum. |
26 | | 
| Sum of left leaves in a binary tree. |
27 |
28 | ### Accumulative Global Variable Only
29 |
30 | | Problem | Description |
31 | | :---: | :--- |
32 | | 
| Find the second minimum node in a binary tree. |
33 |
34 | ### Accumulative Global Variable + Bottom-up Computation
35 |
36 | | Problem | Description |
37 | | :---: | :--- |
38 | | 
| Compute the tilt of a binary tree. |
39 |
--------------------------------------------------------------------------------
/Data Scientist/Problem Solving/Index.md:
--------------------------------------------------------------------------------
1 | # Problem Solving (Coding Interview)
2 |
3 | ---
4 |
5 |
6 | 1- Sliding Window Problems
7 |
8 | Sliding window problems involve solving problems by maintaining a "window" of elements within the input (like an array or string) and sliding it over the input to find the solution efficiently.
9 |
10 |
11 |
12 |
13 |
14 |
15 | ### 1.1- Fixed Length Window Problems
16 | Content here.
17 |
18 | ### 1.2- Minimum Length Window Problems
19 | Content here.
20 |
21 | ### 1.3- Maximum Length Window Problems
22 | Content here.
23 |
24 |
25 |
26 |
27 | ---
28 |
29 |
30 | 2- Dynamic Programming Problems
31 |
32 | Dynamic Programming (DP) is a powerful optimization technique used to solve problems by breaking them into smaller overlapping subproblems, storing intermediate results, and reusing them to solve the larger problem efficiently.
33 |
34 | ### Subcategories of Dynamic Programming Problems:
35 |
36 | #### 2.1- Knapsack-Type Problems
37 | Knapsack problems involve selecting items or subsets to optimize a given objective while satisfying certain constraints.
38 |
39 | - **2.1.1- 0/1 Knapsack Problems (Subset Selection)**
40 | In these problems, each item can be included at most once, and the goal is to find a subset of items that satisfies a condition.
41 |
42 | Examples:
43 | - Subset Sum
44 | - Partition Equal Subset Sum
45 |
46 | - **2.1.2- Unbounded Knapsack Problems (0-k Items per Element)**
47 | Items can be selected multiple times, and the task is to determine the number of times each item is required to satisfy a condition.
48 |
49 | Examples:
50 | - Coin Change Problem
51 | - Rod Cutting Problem
52 |
53 | #### 2.2- Range-Based Problems
54 | These problems focus on solving tasks based on ranges of elements, often using intervals or windows.
55 |
56 | - **2.2.1- Consecutive Ranges**
57 | Tasks involve checking or optimizing values over consecutive ranges.
58 | - **Leetcode 139: Word Break Problem** (Medium): Determine if a string can be segmented into valid words from a dictionary.
59 |
60 | - **2.2.2- Nested Ranges**
61 | Problems where ranges overlap or are nested within other ranges.
62 |
63 | - **2.2.3- In-Out Ranges**
64 | These involve solving problems where information flows inward and outward from a range or point.
65 | - **Leetcode: Longest Palindromic Substring** (Medium): Find the longest palindrome in a given string.
66 |
67 | - **2.2.4- Out-In Ranges**
68 | Problems where information propagates outward first and then inward.
69 | - **Leetcode: Minimum Number of Operations to Make a Palindrome** (Hard): Compute the minimum changes needed to transform a string into a palindrome.
70 |
71 |
72 |
73 | ---
74 |
75 |
76 | 3- Graph Problems (DFS, BFS, Topological Sort-DAG, Union-Find)
77 |
78 | Graph problems involve understanding and solving tasks that can be represented as a network of nodes and edges.
79 |
80 | ## Algorithms Used in Graph Problems
81 | 1. **Depth-First Search (DFS)**: Explores as far as possible along each branch before backtracking. [Explanation Video Link Placeholder]
82 | 2. **Breadth-First Search (BFS)**: Explores all neighbors of a node level by level. [Explanation Video Link Placeholder]
83 | 3. **Topological Sort (Directed Acyclic Graph - DAG)**: Linear ordering of vertices such that for every directed edge `u -> v`, `u` comes before `v`. [Explanation Video Link Placeholder]
84 | 4. **Union-Find (Disjoint Set Union)**: Efficiently tracks connected components and detects cycles in undirected graphs. [Explanation Video Link Placeholder]
85 |
86 | ### 3.1- Connected Nodes (Pointers) Problems
87 | In these problems, the nodes are connected using explicit pointers. The goal is to explore and clone, connect, or find relationships between the nodes.
88 | - **Leetcode: 133. Clone Graph**: (Medium)
89 |
90 | ### 3.2- Grid Problems
91 | These problems involve grids, where each cell can be treated as a graph node connected to its neighbors.
92 |
93 | #### 3.2.1- DFS Grid Problems
94 |
95 | | Problem | Description |
96 | | :---: | :--- |
97 | |  | In this lesson you will learn how to solve grid version of graph problems that require DFS traversal. Examples solved are as follow







 |
98 |
99 |
100 |
101 |
102 |
103 | #### 3.2.1- Grid Problems
104 |
105 |
106 |
107 | - **Leetcode: 79. Word Search**: (Medium)
108 | - **Leetcode: 200. Number of Islands**: (Medium)
109 |
110 | #### 3.2.2- Grid Problems (Simultaneous Start)
111 | - **Leetcode: 286. Walls and Gates**: (Medium)
112 | - **Leetcode: 994. Rotting Oranges**: (Medium)
113 |
114 | #### 3.3- Word Problems (Need to Construct Graph from the Problem Statement)
115 | These problems require constructing a graph from the given data before applying algorithms.
116 |
117 | ##### Word Problems - BFS
118 | - **Leetcode: 127. Word Ladder**: (Hard)
119 | -
120 | ##### Word Problems - Topological Sort (DAG)
121 | These problems typically involve tasks that depend on one another, making topological sorting essential.
122 | - **Leetcode: 207. Course Schedule**: (Medium)
123 | - **Leetcode: 269. Alien Dictionary**: (Hard)
124 |
125 |
126 |
127 |
128 |
129 | ---
130 |
131 |
132 |
133 | 4- Backtracking Problems
134 |
135 | Backtracking is a general algorithmic technique used for solving problems recursively by building a solution incrementally and removing those that fail to satisfy the constraints.
136 |
137 | ## Key Concepts of Backtracking:
138 | 1. **Recursive Exploration**: Try all possible options recursively.
139 | 2. **Pruning (Early Termination)**: Stop exploring paths that violate constraints.
140 | 3. **Backtrack (Undo Step)**: Remove the last choice and explore other possibilities.
141 |
142 | ---
143 |
144 | ### 4.1- Permutation and Combination Problems
145 | | Problem | Description |
146 | | :---: | :--- |
147 | |  | In this lesson you will learn how to solve problems that involve generating all possible arrangements (permutations) or selections (combinations) of given elements.







|
148 |
149 | ---
150 |
151 | ### 4.2- Constraint Satisfaction Problems
152 | These problems require finding solutions while satisfying certain constraints.
153 |
154 | - **Leetcode 51: N-Queens** (Hard) - Place N queens on an NxN chessboard without attacking each other.
155 | - **Leetcode 37: Sudoku Solver** (Hard) - Fill a 9x9 Sudoku grid following game rules.
156 | - **Leetcode 526: Beautiful Arrangement** (Medium) - Count arrangements where numbers satisfy divisibility constraints.
157 |
158 | ---
159 |
160 | ### 4.3- Path Finding in Grids (Backtracking on Matrices)
161 | | Problem | Description |
162 | | :---: | :--- |
163 | | | In this lesson you will learn how to solve problems that involve exploring grids while following movement constraints.
|
164 |
165 |
166 | - **Leetcode 79: Word Search** (Medium) - Search for words in a 2D board.
167 | - **Leetcode 130: Surrounded Regions** (Medium) - Capture surrounded regions in a grid.
168 | - **Leetcode 212: Word Search II** (Hard) - Find multiple words in a 2D board.
169 |
170 | ---
171 |
172 | ### 4.4- Expression and Partitioning Problems
173 | These involve forming valid expressions or dividing elements into valid groups.
174 |
175 | - **Leetcode 282: Expression Add Operators** (Hard) - Insert operators to get a target value.
176 | - **Leetcode 131: Palindrome Partitioning** (Medium) - Partition a string into palindromes.
177 | - **Leetcode 698: Partition to K Equal Sum Subsets** (Medium) - Divide an array into k subsets with equal sums.
178 |
179 |
180 |
181 |
182 | ---
183 |
184 |
185 |
186 | 5- Data Structure Building Problems
187 |
188 | This category of problems requires designing and implementing new data structures to meet specific requirements. These problems often involve combining or modifying basic data structures such as arrays, hash maps, linked lists, heaps, or queues to achieve the desired functionality.
189 |
190 | ### Characteristics of Data Structure Building Problems:
191 | - Require a clear understanding of the underlying data structures.
192 | - Focus on combining multiple data structures to optimize performance (e.g., O(1) operations for specific tasks).
193 | - Test problem-solving and design skills to handle edge cases and constraints effectively.
194 |
195 | ### Example Problems:
196 | - **Leetcode 146: LRU Cache** (Medium):
197 |
198 |
199 | # LeetCode Problem
200 |
201 | 
202 |
--------------------------------------------------------------------------------
/Data Scientist/README.md:
--------------------------------------------------------------------------------
1 | To be a Data Scientist, you have to be able to analyze your data and crack complex data problems. Again, it is **data** + **complex data problems**. So the required skills can be summarized as follow
2 | * **Data**: Get, store (structure) and produce data.
3 | Yes, It is
4 | * Get data from files, databases, web documents or any other data source
5 | * Structure data in memory as list, tree, graph or any other data structure
6 | * Publish your results in a data destination
7 | * **Complex data problems**: solve problems, write algorithms, and analyze such algorithms.
8 | * **Problem Solving:** You have to be aware of the basic methods and techniques for problem-solving techniques.
9 | * **Algorithms:** Write algorithms and convert them to code by a specific programming language.
10 | * **Algorithms Analysis:** Computational Complexity Theory and Computability, in general, provides an estimation for the required resources to solve a given problem and the ability to provide solutions for these problems in an effective manner respectively.
11 |
12 | On this page, we give you the required courses to be a data scientist. It is assumed that you have the basic skills of a data analyst illustrated [here](https://github.com/aorogat/Data-Science-and-Software-Engineering/tree/master/Data%20Analyst). In other words you finished the following courses `Python Programming`, `Descriptive Statistics`, `Data Cleaning`, `Data Visualization`, `Database Level (1) – SQL - Python/SQL`, `Data Formats XML/JSON/…` and these libraries `Matplotlib`, `Numpy` and `Pandas`.
13 |
14 | ## Data
15 | ### Get Data
16 | During you are studying the Data Analyst package, you have got the required skills to read data from files and databases. If you need to get your data from web documents, you have to take the following course.
17 | #### 1- Web Scrapping (Optional) [\[Youtube Playlist\]]()
18 | In that course, you will go through the HTML, CSS and JavaScript courses from the Web Designer package without details and learn how to extract data from these web files.
19 | ### Structure the Data
20 | #### 1- Data Structure - Python [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-ICLzNwt5aAjnstOlqNgtqMJ)
21 | This level is application-oriented in which you will learn the main data structures like `List`, `Tree`, `Graph`, `Map`, `Set`, `Hashtable`, and `others` and how to use them. This level does not include how these data structures built from Arrays and nodes as well as does not include the theoretical illustration of their corresponding operations.
22 |
23 | ## Problem Solving (Coding Interview)
24 | Check [this page](https://github.com/aorogat/Data-Science-and-Software-Engineering/blob/master/Data%20Scientist/Problem%20Solving/Index.md)
25 |
26 |
27 |
28 |
29 |
30 | ## Math
31 | #### 1- Calculas
32 |
33 | #### 2- Linear Algebra
34 |
35 | #### 3- Probability Theory
36 |
37 | #### 4- Optimization
38 |
39 |
40 | ## Data Problems
41 | #### 1- Problem Solving
42 |
43 | #### 2- Algorithms and Theoretical Computer Science
44 | The main reference for this course is the "Building Blocks for Theoretical Computer Science (Version 1.3) Margaret M. Fleck January 1, 2013" book. It is a very good book for undergraduate students to be a start for Theoretical illustration behind the Algorithms.
45 |
46 | #### 3- Data Structure
47 |
48 |
49 | ## Machine Learning
50 | #### 1- Statistical Machine Learning
51 | #### 2- Traditional Machine Learning
52 | #### 3- Deep Learning
53 | #### 4- Reinforcement Learning
54 |
55 | ## Advanced
56 | #### 1- Graph Theory
57 | #### 2- Randomized Algorithms
58 |
59 |
--------------------------------------------------------------------------------
/Developer/README.md:
--------------------------------------------------------------------------------
1 | [Back](https://github.com/aorogat/Data-Science-and-Software-Engineering/blob/master/README.md)
2 | # Java Developer
3 | A Java Developer is responsible for the development of Java-based applications. Because Java is widely used, especially by large companies, everyday roles differ in a wide range of skills. Most of the roles share the skills illustrated below. Each rectangle in the figure has a corresponding course where all the courses are in Arabic.
4 | 
5 | Java Developer differs from Software Engineer. While a Java developer is directed entirely on application development that uses the Java language, a Software Engineer is working on all stages of software engineering like Requirements Analysis, Design, Development, Testing and Maintenance with multiple languages that may not be Java-based.
6 |
7 | ## Programming series
8 | #### 1- Programming Level (0) [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDgkSxUQx9GCv0vBQPjBNuJ)
9 | In this level, you will learn the fundamental of programming in general without writing specific programming language codes.
10 | The topics covered are
11 | `Problems and Computational Problems`,
12 | `Computer operations: Read-Processing-Write`,
13 | `Algorithms: Pseudo Code and Flowchart`,
14 | `Operators`,
15 | `Statements and Expressions`,
16 | `IF-For-While statemets`,
17 | `Function and Fuction-calling Statement`,
18 | `Programming Languages, Syntax, IDE and Compiler`.
19 | After that course, you will have enough knowledge about what is meant by a programming language (e.g. concepts and tools[IDE]) and choose the suitable programming language for your needs.
20 |
21 | #### 2- Java - Level (1), Basics [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDK_ksDRHQRDW_7qvUAWgfy)
22 | In this level, you will apply all the concepts of Procedural Programming.
23 | These topics are
24 | `Writing and reading the data`,
25 | `If Statement`,
26 | `Switch Statement`,
27 | `For-loop Statement`,
28 | `While-loop Statement`,
29 | `Arrays`,
30 | `Function and Fuction-calling Statement`,
31 | `Method Overloading`.
32 | At the end of this level, there is a project about ATM which helps you to apply such concepts and think in the level of components (functions).
33 |
34 | #### 3- Java - Level (2), OOP [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDXOPAssRtlfJzh_Dbl9wxL)
35 | In this level, you will learn the concepts of Object-Oriented Programming (OOP) to be able to organize larger projects. These concepts are
36 | `Classes and Objects`,
37 | `Encapsulation`,
38 | `Composition`,
39 | `Inheritance`,
40 | `Casting`,
41 | `Polymorphism`,
42 | `Abstraction`,
43 | `Interfaces`.
44 | There is a project at the end in which you will apply all the concepts of OOP.
45 |
46 | #### 4- Java - Level (3), Tricks [\[Youtube Playlist\]]()
47 | In this level, you will go through Java documentation. After that, you will learn the following
48 | `Try and Catch`,
49 | `Wrapping Classes`,
50 | `Strings, from encoding to manipulation.`,
51 | `Regular Expressions`,
52 | `Math Class, System class, Object class, and some other important classes.`,
53 | `Streams and Files`,
54 | `Generics`,
55 | `Java Virtual Machine (JVM) and Memory Management.`,
56 | `Multithreading and Synchronization`,
57 | `What is after JDK8`,
58 | `Some tricks`,
59 | `J2SE packages in general.`
60 |
61 | #### 5- Network Programming (Socket, RMI, HTTP)
62 |
63 |
64 | ## Desktop Applications series
65 | #### 1- Java - GUI - Swing [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IA8t-LdfAli-7uM9ctsZzrJ)
66 | The topics covered are
67 | `Swing Package`,
68 | `Components and Containers`,
69 | `Layout Managers`,
70 | `Event-Driven Programming`,
71 | `Listeners`,
72 | `Bird's Eye view`,
73 | `GUI Builder Tools`,
74 | `Graphs`.
75 | After this level, you will be able to develop any desktop applications. There are 2 projects at the end, one for GUI design and a simple 2D game to apply on the lessons of Graphs.
76 |
77 | #### 2- Java - GUI - JavaFX [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IA8t-LdfAli-7uM9ctsZzrJ)
78 | After this level, you will be able to develop desktop applications with more features.
79 |
80 |
81 | ## Data Acquisition and structure
82 | While Data acquisition means reading the data from its source, we mean by structure, how to organize such data in memory. Since Developers usually work on companies that have their data stored in databases, Developer recruiters expect your ability to read such data from their database.
83 | #### 1- Java - Applied Data Structure [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-ICLzNwt5aAjnstOlqNgtqMJ)
84 | In this level, you will learn the main data structures like `List`, `Tree`, `Graph`, `Map`, `Set`, `Hashtable`, and `others` and how to use them. This level does not include how these data structures built from Arrays and nodes as well as does not include the theoretical illustration of their corresponding operations.
85 | #### 2- Database Level (1) – SQL - Java/SQL [\[Youtube Playlist\]](https://www.youtube.com/playlist?list=PL73bE5x5W-IDErOUNGLYUXFcw2Tan_BAq)
86 | Databases courses usually have diverse topics for different skills such as Data Analysts, Developers and Data Engineers. In this course, you will just learn the skills that help you to create a database and access the data you need from the database.
87 | * Sample Database: [Chinook](https://www.sqlitetutorial.net/sqlite-sample-database/)
88 | * Sample Database: [Northwind](https://github.com/aorogat/northwind-SQLite3)
89 | #### 3- Data Formats XML/JSON/… [\[Youtube Playlist\]]()
90 | Sometimes data are not stored in a relational database, however, is stored in files with specific formats like XML, JSON and so on. Developers are expected to be able to handle such files.
91 |
92 | # Take a breath then continue
93 |
94 | ## Useful Tools
95 | #### 1- Git and Github
96 |
97 | ## Java build automation tools
98 | #### 1- Java without IDE
99 | #### 2- Ant, Gradle and Maven differences
100 | #### 3- Maven in details
101 |
102 |
103 | ## Software Engineering
104 | #### 1- Design Patterns
105 | Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.
106 | Although you don't need to design the system you are working on as the software engineer is in charge of that, you have to be able to understand the design to implement it.
107 | This [link](https://refactoring.guru/design-patterns/java) is useful.
108 |
109 |
110 | ## Framework based Applications
111 | #### 1- Framework based Applications Introduction
112 | #### 2- J2EE frameworks in general and RESTful Web Service.
113 | #### 3- Java Persistence APIs(JPA) and Hibernate
114 | #### 4- Spring Framework (J2EE applications)
115 | #### 5- Spring Boot Framework (RESTful Services)
116 |
117 | ## Faster Developers
118 | #### Functional Programming
119 |
120 | # Prepare your CV
121 | * In parallel to the technical skills illustrated here, you have to enhace your ability in English, Time Management, Team Work, Report Preparation and CV writing. Good Luck!!
122 |
--------------------------------------------------------------------------------
/Developer/javaDeveloper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aorogat/Data-Science-and-Software-Engineering/2e5ca77bd199a907730066a11c7e5948361282d7/Developer/javaDeveloper.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Data Science and Software Engineering
2 | Welcome to the Data Science and Software Engineering page where we showcase the various job opportunities in these two fields of study. It is important to note that every job title involves a unique combination of different skills and competencies. For instance, Data Analysts are responsible for collecting, organizing, visualizing and extracting meaningful insights from data to assist decision-makers in their choices. To fulfill these tasks, they need to possess programming skills in a particular language, such as Python, as well as expertise in statistical analysis and data visualization techniques.
3 |
4 | This tutorial aims to provide a comprehensive overview of the various job titles available in the domains of Data Science and Software Engineering. To make the learning experience more engaging, the courses offered are taught using practical examples and hands-on exercises. For Software Engineering, Java programming language is used as the main tool, while Python is the preferred language for Data Science. All courses are recorded by an Arabic speaker, making it accessible for those who prefer to learn in that language.
5 |
6 | By the end of this tutorial, you will have a clear understanding of the different job roles and the required skill sets in Data Science and Software Engineering. Whether you are a beginner or looking to advance your career in these fields, this tutorial provides a valuable resource to help you achieve your goals.
7 |
8 | # Data Science and Engineering
9 | ### 1- Data Analyst
10 | * ##### [Data Analyst](https://github.com/aorogat/Data-Science-and-Software-Engineering/tree/master/Data%20Analyst) 《=》[ Who am I?](https://youtu.be/Mmtq_xxo8iU)
11 | * ##### Big Data Analyst
12 | ### 2- Data Scientist [ Who am I?](https://youtu.be/dbp-OXRfUnU)
13 | * ##### [Data Scientist](https://github.com/aorogat/Data-Science-and-Software-Engineering/tree/master/Data%20Scientist)
14 | * ##### Computer Vision Data Scientist
15 | * ##### Natural Language (NLP) Data Scientist
16 | * ##### Speach Recognition Data Scientist
17 | ### 3- Machine Learning Engineer
18 | * ##### Machine Learning Engineer
19 | * ##### Computer Vision Engineer
20 | * ##### Natural Language (NLP) Engineer
21 | * ##### Speach Recognition Engineer
22 | ### 4- Data Engineer
23 |
24 |
25 | # Software Engineering
26 | ### 1- Developer
27 | * ##### [Java Developer](https://github.com/aorogat/Data-Science-and-Software-Engineering/blob/master/Developer/README.md) 《=》[ Who am I?](https://youtu.be/p-yJRJDuKd4)
28 | ### 2- Web Developer
29 | * ##### Front End Developer
30 | * ##### Back End Developer
31 | * ##### Full Stack Developer
32 | ### 3- Mobile Developer
33 | * ##### Native Mobile App Developer [Android, IOS and Cross Platform.]
34 | * ##### Web Mobile App Developer
35 | * ##### Hybrid Mobile App Developer
36 | ### 4- Software Engineer
37 | * ##### Software Engineer
38 | * ##### DevOps Engineer
39 | * ##### Quality Assurance Engineer (Tester)
40 | * ##### Embedded Software Engineer
41 | * ##### Software Architect
42 | ### 5- Sales Engineer
43 | ## Note:
44 | Sometimes other job titles are employed to represent the same one from the aforementioned list or maybe changed a little bit to add a required specific skill to a particular job title.
45 | For example, Embedded Software Engineer is Software Engineer who is able to work with embedded systems.
46 |
--------------------------------------------------------------------------------
/images/tracks.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aorogat/Data-Science-and-Software-Engineering/2e5ca77bd199a907730066a11c7e5948361282d7/images/tracks.jpg
--------------------------------------------------------------------------------
/images/tracks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aorogat/Data-Science-and-Software-Engineering/2e5ca77bd199a907730066a11c7e5948361282d7/images/tracks.png
--------------------------------------------------------------------------------
/images/video-camera-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aorogat/Data-Science-and-Software-Engineering/2e5ca77bd199a907730066a11c7e5948361282d7/images/video-camera-icon.png
--------------------------------------------------------------------------------