[{"content":"Updated on Sep 7th, 2023\nIntroduction I used to have some cheat sheets around to prepare myself for any incoming technical interviews, so I thought it would be a better idea to gather them here for quicker access. It could help someone else to prepare quickly as well :)\nThe order might not be so relevant. Pick and choose what you need to review.\nLong-Term Preparation Kit If I can afford only one book to prepare for my technical interviews, I will definitely buy the Cracking the Coding Interview book by Gayle McDowell, 6th edition. That\u0026rsquo;s it, good luck!\nBefore You Continue Check my new presentation on Cracking the Tech Job Interview to get a better understanding of the technical interview process, and what you can do to prepare for it - on the technical and non-technical sides.\nLearn by Practice If you prefer to learn by practising, I would advise you to start with Hackerank Preparation Kits.\nPractice per Topic The HackerRank Interview Preparation Kit Recommended if you are a beginner or you need a refresher on a certain topic.\nPractice on a Schedule Interview Preparation Kits Recommended if you have a scheduled interview, and you need to refresh your skills in different topics.\n3 Months Preparation Kit 1 Month Preparation Kit 1 Week Preparation Kit 1 Day Preparation Kit? Continue reading this article. Short-Term Preparation Kit If I don\u0026rsquo;t have a long time to prepare, or if I already went through the long-term preparation kit before, and I want a quick refresh, I would follow this kit. Multiple resources and steps already summarize some topics from the Cracking the Coding Interview book I referred to above, with few modifications.\nVideo Kit: If I have a little more time, I would go through this playlist first, at least once.\nKeep in Mind Keep these data structures, algorithms, and concepts in mind:\nData Structures:\nLinked Lists Trees, Tries, and Graphs Stacks and Queues Heaps Vectors and Array Lists \u0026raquo; Hash Tables \u0026laquo; (Dictionaries, Maps, \u0026hellip;) Algorithms:\nBreadth-First Search Depth-First Search Binary Search Merge Sort Quick Sort Concepts:\nMemory (Stacks VS Heaps) Recursion Dynamic Programming Big O Time \u0026amp; Space Bit Manipulation 7 Steps to Solve Algorithm Problems Listen (\u0026amp; ask!).\nPick an example which is:\nBig (enough) Is not a special case Use a brute-force approach (at least to think of the problem).\nOptimize your solution.\nWalk through your algorithm and know exactly what you are going to do before starting to code, think of needed variables and data structures for instance.\nCode! Make sure to have a:\n(Consistent) code style: Use descriptive variable names, and you may refer to them with abbreviations later. Modular code: before coding, not after. TEST!\nDon\u0026rsquo;t use your original example. Analyze (line by line). Test with a: Small test case. Edge test case. Big test case. Test your code, not your algorithm! Think before fixing bugs (so that you won\u0026rsquo;t introduce new bugs, or make the code missy or hard). Don\u0026rsquo;t panic, you might not solve it from the first round. 3 Algorithm Strategies B.U.D. Go through your brute-force or best solution right now and look for: Bottlenecks Unnecessary Work Duplicated Work Space \u0026amp; Time Tradeoffs Always have hash tables at the top of your mind D.I.Y. (Do it Yourself) Try to solve it in your mind, and write a code that behaves the same. Use a large and generic example. Reverse engineering your thoughts! Bit Manipulation in a Nutshell Get the ith bit of x \u0026ndash;\u0026gt; x \u0026amp; (1 \u0026lt;\u0026lt; i) Set the ith bit of x \u0026ndash;\u0026gt; x | (1 \u0026lt;\u0026lt; i) Clear the ith bit of x \u0026ndash;\u0026gt; x \u0026amp; ~(1 \u0026lt;\u0026lt; i) Linked Lists VS Arrays Case # Operation / Data Structure Arrays Linked Lists 1 get (retrieve) Constant Linear 2 insert and delete (@ start) Linear Constant 3 insert and delete (@ end) Constant Linear Clarifications:\nCase #1\nAn array will get any item by index in a constant O(1) time. A linked list needs to traverse and count nodes until it reaches the needed item and returns it so that it needs a linear O(n) time. Case #2\nAn array will access the needed index in a constant O(1) time and add or delete it, but it needs a linear O(n) to shift all the old nodes to right in the case of adding and to left in the case of removing. A linked list needs to traverse a few nodes (since we will add or delete from the start), add or delete the new node and update the pointers, so it needs a constant O(1) time. Case #3\nAn array will access the needed index in a constant O(1) time and add or delete it, and since we are adding or deleting from the end, it needs a constant O(1) to shift the few old nodes to right in the case of adding and to left in the case of removing. A linked list needs to traverse almost all nodes (since we will add or delete from the end), add or delete the new node and update the pointers, so it needs a linear O(n) time. Sort Algorithms A great website to visualize and understand the different sorting algorithms is visualgo.net .\nAlgorithm Average Time Complexity Worst Time Complexity Worst Space Complexity Keys / Notes Stability Best Time: Quick Sort O(n lg n) O(n^2) O(lg n) Pivot could make things missy Not stable Merge Sort O(n lg n) O(n lg n) O(n) Divide and conquer Stable Heap Sort O(n lg n) O(n lg n) O(1) in-place Heapsort is significantly slower than Quicksort and Merge Sort, so Heapsort is less commonly encountered in practice. Not stable Best Space: Bubble Sort O(n^2) O(n^2) O(1) in-place Compare every pair and swap if they are not in order Stable Insertion Sort O(n^2) O(n^2) O(1) in-place Compare every item with all previous items, if a smaller (a larger) item is found, move all items in between to right and insert that item in the correct place. Stable Selection Sort O(n^2) O(n^2) O(1) in-place Find the smallest (largest) item and add it to the end of the sorted part. Usually worse than insertion sort. The first part is always sorted. Not stable Lower bound for sorting algorithms is O(n lg n). A sorting algorithm is stable if two objects with equal keys appear in the same order in sorted output as they appear in the input array to be sorted. Informally, stability means that equivalent elements retain their relative positions, after sorting. Read more about different sorting algorithms in HappyCoders.eu . Search Algorithms Algorithm Average / Worst Time Complexity Average / Worst Space Complexity Why to use? Notes Binary Search O(lg n) O(lg n) Best time Works with sorted data only. Extra space is needed for the call stack in the recursive solution. Linear Search O(n) O(1) in-place Best space Works with any (sorted or unsorted) data. Trees Tree Traversals Pre-order: root \u0026ndash;\u0026gt; left \u0026ndash;\u0026gt; right In-order: left \u0026ndash;\u0026gt; root \u0026ndash;\u0026gt; right Post-order: left \u0026ndash;\u0026gt; right \u0026ndash;\u0026gt; root Binary Trees Types A binary tree is a tree where every node has a max of 2 children.\nA perfect binary tree is a binary tree where all levels are full (every node has 2 children).\nA complete binary tree is a binary tree where all levels are full (every node has 2 children) except (possibly) the last level.\nEvery perfect tree is a complete tree. A balanced binary tree is a binary tree in which the left and right subtrees of every node differ in height by no more than 1.\nA full binary tree is a binary tree in which every node has either 0 or 2 children.\nA binary search tree is a binary tree whose internal nodes each store a key greater than all the keys in the node\u0026rsquo;s left subtree and less than those in its right subtree.\nAn in-order traversal for a binary search tree will give us ascending sorted data. A binary search tree is an ideal way to go with the hierarchical way of storing data. Useful Computations In any perfect binary tree:\nNumber of nodes n = 2^(h-1). Where h is the tree height. Height h = lg (n+1). Where n is the number of nodes. Number of the nodes in the last level = number of nodes in all other levels + 1. Graphs A graph organizes items in an interconnected network. A graph consists of multiple nodes and edges between them. Classifications A graph could be:\nDirected or Undirected The edge is bidirectional in an undirected graph, but has a direction in a directed graph. Cyclic or Acyclic A graph is cyclic if you can start from any node and come back to it in a closed path; acyclic otherwise. Weighted or Unweighted The edge has a certain weight (importance/degree) in a weighted graph. All edges have the same weight in an unweighted graph. Representations A graph could be represented with:\nAn edge list A list of all the edges in the graph. Every edge is represented by the 2 nodes it connects. An unconnected node (a node with no edges) will not be represented with this form. An adjacency list A list where the index represents the node, and the value at that index is a list of the node\u0026rsquo;s neighbours. Another form of this representation is to use a map (a dictionary) where the key is the node, and the value is a list of neighbours. An adjacency matrix A matrix of 0s and 1s indicating whether a node x connects to node y where 0 means unconnected and 1 means connected. SOLID Design Principles Dependency Inversion A high-level module should not depend on a low-level module. Both should depend on abstraction. Abstraction should not depend on details. Details should depend on abstraction. A code example . Interface Segregation You should add the minimum amount of methods/code to each interface. At no point, the client should need to implement a method they do not need at all. A code example . Liskov Substitution You should be able to substitute a sub-class for a base class without breaking the logic. A code example . Open-Closed Your code should be: Open for extension. Closed for modifications. A code example . Separation of Concerns (Single Responsibility) Every module, class or function should have responsibility over a single part of that program\u0026rsquo;s functionality, and it should encapsulate that part. A code example . Read more about Single Responsibility Principle . Sources and References Cracking the Coding Interview . A book by Gayle McDowell, 6th edition. HappyCoders.eu . A blog by Sven Woltmann to make you a better Java programmer (and more). ","permalink":"https://www.bynoor.io/technical-interview-preparation-kit/","summary":"Updated on Sep 7th, 2023\nIntroduction I used to have some cheat sheets around to prepare myself for any incoming technical interviews, so I thought it would be a better idea to gather them here for quicker access. It could help someone else to prepare quickly as well :)\nThe order might not be so relevant. Pick and choose what you need to review.\nLong-Term Preparation Kit If I can afford only one book to prepare for my technical interviews, I will definitely buy the Cracking the Coding Interview book by Gayle McDowell, 6th edition.","title":"Technical Interview Preparation Kit"},{"content":"Static Factory Methods Consider using Static Factory Methods Instead of Constructors\nThe static factory method is a method that returns an instance of the class.\nExample In this example, we will build some HTML elements using Java. Here is the base class.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class HtmlElement { private final String tag; private final String content; public HtmlElement(String tag, String content) { this.tag = tag; this.content = content; } @Override public String toString() { return \u0026#34;\u0026lt;\u0026#34; + tag + \u0026#34;\u0026gt; \u0026#34; + content + \u0026#34; \u0026lt;/\u0026#34; + tag + \u0026#34;\u0026gt;\u0026#34;; } } Instead of providing a normal constructor, we can provide the of static factory method:\n1 2 3 4 5 6 7 8 9 class Div extends HtmlElement { private Div(String tag, String content) { super(tag, content); } public static Div of(String content) { return new Div(\u0026#34;div\u0026#34;, content); } } So that, we can create new divs using this method:\n1 2 3 4 5 6 7 8 9 class Demo { public static void main(String[] args) { final Div div1 = Div.of(\u0026#34;Hello, World!\u0026#34;); final Div div2 = Div.of(\u0026#34;Hi, People!\u0026#34;); System.out.println(div1); System.out.println(div2); } } Here is the output of the demo above:\n1 2 \u0026lt;div\u0026gt; Hello, World! \u0026lt;/div\u0026gt; \u0026lt;div\u0026gt; Hi, People! \u0026lt;/div\u0026gt; Why? Static Factory Methods have names - easier to know and use especially if we have multiple static factory methods VS multiple overridden constructors! Static Factory Methods do not require creating a new object each time - you may use some cache or a singleton behavior. Static Factory Methods can return an object with a type of sub-class if needed! The constructors cannot. Why Not? Classes with only Static Factory Methods can not be subclassed - unless you added at least one protected or public constructor, you may need to add multiple constructors as well. Constructors are easier to be found and highlighted by the IDEs for developers. Common Names There are multiple common names for Static Factory Methods, some of them are: of, from, create, getInstance, and valueOf.\nRead more about this topic from our resource below.\nResources Effective Java, 3rd Edition, by Joshua Bloch - Buy from Amazon . ","permalink":"https://www.bynoor.io/posts/java-bp/static-factory-methods-over-constructors/","summary":"Static Factory Methods Consider using Static Factory Methods Instead of Constructors\nThe static factory method is a method that returns an instance of the class.\nExample In this example, we will build some HTML elements using Java. Here is the base class.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class HtmlElement { private final String tag; private final String content; public HtmlElement(String tag, String content) { this.","title":"Java Best Practices 01 | Static Factory Methods Over Constructors"},{"content":"Introduction Once your application (website) reaches the limits of your server, you should decide how to scale.\nYou may find this useful: When (and Why) to Scale? There are two different types of Scaling:\nVertical Scaling Horizontal Scaling In this post, we will focus on Vertical Scaling only.\nWhat is Vertical Scaling? You can scale your server vertically by upgrading the hardware and/or network throughput.\nWhy to Scale Vertically? It\u0026rsquo;s the simplest solution for short term scalability. It does not require architectural changes to your application (You don\u0026rsquo;t have to rewrite all (or some parts) of your application). All you need to do is to replace a piece of hardware with a stronger or a faster one. How to Scale Vertically? 1. Add More I/O Capacity by Adding More Hard Drives in RAID (Redundant Array or Independent Disks) Arrays This is an important step as the I/O throughput and disk saturation are the main bottlenecks in database servers. You may find this useful: What is RAID? RAID 10 is the most popular option is it gives both redundancy and increased throughput. 2. Use SSD (Solid-State Drives) to Improve I/O Access Times Random reads and writes are 10-100 times faster in SSD compared to normal Hard Disks (HDD). Sequential rear and writes are not much faster in SSD, and there will be no massive performance boosts in real world. This is especially important when we know that most open-source databases are optimized to allow more sequential disk operations (reads and writes) than random ones. Some databases use only sequential operations! This makes upgrading from HDD to SSD a harder option to recommend. 3. Increase RAM to Reduce I/O Operations Memory size is super important for efficiency of database servers. More memory means more space for the file system cache and more working memory for the application. 4. Upgrade Network Interfaces or Install New Ones to Improve Network Throughput This is especially important if your application is streaming a lot of video or media content. You could upgrade your network provider connection or upgrade your network adapters. 5. Switch to More Capable Servers This includes switching to servers with more processors or more (virtual) cores. The more CPUs and virtual cores, the more processes that can be executing at the same time (this will help in avoiding concurrency issues and limits). Your system will be faster since: Fewer processes will have to share the same CPU or core. Operating System will have to perform fewer context switches to execute multiple processes on the same core. You may find this useful: Context Switch Why NOT to Scale Vertically? 1. Cost The main disadvantage of vertical scaling is that it becomes extremely expensive beyond a certain point. Thus, be careful that we said beyond a certain point* is in the start, it could be the most affordable scaling option to follow!\nA simple example of that is upgrading your server\u0026rsquo;s RAM, as it will start cheap when, for example, you upgrade from a 4GB RAM (approximately $15) to 8GB RAM (approximately $40). But it may be not an easy decision to go from 128GB (approximately $3000) to 256GB (approximately $18000) as it won\u0026rsquo;t worth the upgrade!\n2. Vertical Scaling has a Hard Limit No matter how much money you may be willing to spend, it is not possible to continually add memory, CPUs, cores, and hard disk drives. At a certain point you won\u0026rsquo;t find a hardware available to support further growth.\n3. OS or Application May Prevent You from Scaling Vertically Some application designs may benefit nothing by adding more CPU or cores, especially the ones related to handle concurrent behavior and threads. Thus, you may need to check the design of your application and any dependencies or other systems that you are using before consider vertical scaling (this become more important as you reach more advanced stages of your growth).\nWhat are Other Available Options? That\u0026rsquo;s what we are discussing in this Scalability Series . Stay tuned for more contents.\nResources Web Scalability for Startup Engineers (Book) 1st Edition. By Artur Ejsmont . ","permalink":"https://www.bynoor.io/posts/system-design/003-scale-vertically/","summary":"Once your application (website) reaches the limits of your server, you should decide how to scale. In this post, we will focus on Vertical Scaling only.","title":"Scalability 03 | Scale Vertically (Vertical Scaling)"},{"content":"Introduction In this post, we will take a step back, and discuss how could we start small and simple with our website before considering any scalability options, and we will discuss when should we start considering them.\nSingle-Server Configuration This is the simplest configuration, and the one you may start with for your small business or project.\nYou need the following parts in your system:\nServer in which you will host your website/system, and this server (computer) should be an always-connected server as you need to server your customers (clients) in any time!\nThe server could be your personal computer or a cloud-based one! Since we have a single server, all of our applications will be installed and served from it. This includes any database management systems (like MySQL, PostgreSQL, or MongoDB), dynamic, and static resources (like images, videos, web-pages, CSS (Cascading Style Sheets) files). DNS (Domain Name Server) is the server that provide your customers with your IP (Internet Protocol) address.\nThis is usually a paid server. The simplest abstraction to think about DNS is a system that acts like a cache, or a map to convert your domain name (like www.bynoor.io ) to an actual IP address (like 132.126.15.3) of the server with your actual website contents. Your first time users will connect to the DNS once, and when they got the actual IP of your server they start to send HTTP (Hypertext Transfer Protocol) requests directly to your server. You may (or may not) got a static IP address for your server (as it\u0026rsquo;s an extra paid service), that\u0026rsquo;s why, once in a while, your users will be connected to the DNS again to make sure that they have the recent IP address of your server (this depends on multiple factors and could be discussed later). The following figure illustrates the flow that your customers will have once your website is live. Single Server Configuration When (and Why) to Use a Single Server Configuration? This (simple) configuration should be fine for a small personal website, blog, forum, or a small static website. If that\u0026rsquo;s what you are looking for, don\u0026rsquo;t look further (unless, of course, you want to learn or work in the field!)\nWhen (and Why) to Scale? This (simple) configuration cannot take you beyond some simple or basic scenarios. At some point, or for other use-cases from the start, you should consider the possible ways of Scalability .\nWhen this time will come? and when should you consider the different Scalability options? If you have any of the following points or scenarios, then that time is NOW:\nIncrease in Traffic, as your customers base grow, the load will increase on your single-server resources (such as CPU, Memory, and I/O Operations).\nIncrease in Data, as your customers base grow, you will have a lot of data to store, process, and serve. Given that the database queries are not the simplest tasks for your CPU and memory, you should really consider to scale at this point!\nConcurrency Limits, as your customers base grow, you will have more users connects to your server in the same time, and while your server could server 1000 users 5 by 5 (5 at a time), it may not be able to serve the same 1000 users 20 by 20 (20 at a time)!\nSystem Growth, as your business grow, you may need to add more and more new functionalities to server your customers. You should be aware that this will push your server resources even harder.\nAs you may notice, all the first 3 scenarios depend on your customer base growth, so expect them to happen simultaneously!\nHow to Scale? There are multiple scalability options, and that\u0026rsquo;s exactly what we will talk about in this series! So stay tuned!\nResources Web Scalability for Startup Engineers (Book) 1st Edition. By Artur Ejsmont . ","permalink":"https://www.bynoor.io/posts/system-design/scalability-start-small-single-server-configuration/","summary":"In this post, we will take a step back, and discuss how could we start small and simple with our website before considering any scalability options, and we will discuss when should we start considering them","title":"Scalability 02 | Start Small (Single-Server Configuration)"},{"content":"Introduction Things that can take an entire year in a corporate environment may need to happen in just a matter of weeks in a startup.\nSo that, you may need to scale up or scale down quickly, but what the scalability is even mean in a system design or software engineering context?\nWhat is Scalability (in a Nutshell)? Scalability usually means the ability to handle more users, clients, data transactions, or requests without affecting the user experience.\nWhat\u0026rsquo;s described above is actually scaling up. Remember that you may need to scale down as well aiming to reduce unneeded expenses and efforts.\nHow to Measure Scalability? These measurements or data points could help us to measure the scalability of our systems:\n1. Handling More (or Less) Data In a website, for example, the ability to handle more user accounts, products, location data, and content efficiently should measure the scalability of your website.\nYou should remember that we don\u0026rsquo;t only to store these data, but to search, sort, process, and send it over the network. All of this would contribute in the scalability of your website (system), especially in an era of BIG data.\n2. Handling Higher (or Lower) Concurrency Levels How many users can use your application at the same time without affecting their user experience?\nYou may need more resources (or better performance?) to handle more concurrent connections, active threads, messages being processed at the same time, and more CPU context switches.\nLimited resources (which will be almost always the case), makes this even harder!\n3. Handling Higher (or Lower) Interaction Rates How often your clients exchange information with your servers?\nThe importance of this should be higher in an online game that require multiple interactions per second, per user, than in a website (like the one you are in right now) which may require a single interaction every ~30 seconds or even minutes.\nIn the online game example, we may need to work harder to achieve lower latency per request so that we can serve them quicker, which indeed requires more concurrency.\nScalability VS Performance These two concepts are obviously related, but we can differentiate between them as in the following:\nPerformance measures how long it takes to process a request or to perform a certain task. Scalability measures how much we can grow (or shrink). Resources Web Scalability for Startup Engineers (Book) 1st Edition. By Artur Ejsmont . ","permalink":"https://www.bynoor.io/posts/system-design/what-is-scalability/","summary":"Scalability usually means the ability to handle more users, clients, data transactions, or requests without affecting the user experience.","title":"Scalability 01 | What Is Scalability (Scalability in a Nutshell)?"},{"content":" في هذا الدّرس سنتعرّف بشكل أكبر على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will dig deeper with Increment and Decrements Operators in C++ using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/increment-and-decrement-operators-part-3-cpp/","summary":"في هذا الدّرس سنتعرّف بشكل أكبر على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will dig deeper with Increment and Decrements Operators in C++ using multiple examples.","title":"1-16 Increment and Decrement Operators in C++ (Part 3) | معاملات الزيادة والنقصان (الجزء الثالث)"},{"content":" في هذا الدّرس سنتعرّف بشكل أكبر على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will dig deeper with Increment and Decrements Operators in C++ using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/increment-and-decrement-operators-part-2-cpp/","summary":"في هذا الدّرس سنتعرّف بشكل أكبر على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will dig deeper with Increment and Decrements Operators in C++ using multiple examples.","title":"1-15 Increment and Decrement Operators in C++ (Part 2) | معاملات الزيادة والنقصان (الجزء الثاني)"},{"content":" في هذا الدّرس سنتعرّف على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will learn about Increment and Decrements Operators in C++ using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/increment-and-decrement-operators-part-1-cpp/","summary":"في هذا الدّرس سنتعرّف على معاملات الزيادة والنقصان في لغة سي بلس بلس. In this lecture, we will learn about Increment and Decrements Operators in C++ using multiple examples.","title":"1-14 Increment and Decrement Operators in C++ (Part 1) | معاملات الزيادة والنقصان (الجزء الأول)"},{"content":" في هذا الدّرس سنتعرّف على طرق تعيين وإعطاء قيم للمتغيرات في لغة سي بلس بلس:\nاستخدام جملة التّعيين في لغة سي بلس بلس استخدام جملة \\ دالّة \\ اقتران الإدخال في لغة سي بلس بلس بالإضافة إلى:\nمراجعة سريعة للمتغيرات لماذا نستخدم هذه الطرق لتعيين قيم للمتغيرات في لغة سي بلس بلس باستخدام الكثير من الأمثلة\nIn this lecture, we will learn about:\nUsing C++ Assignment Statement Use Input/Read Statement in C++ (cin) In addition to:\nQuick review of variables in C++ Why do we use these ways of variables assignment in C++ using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/putting-data-into-variables-assignment-statement-input-cin-cpp/","summary":"في هذا الدّرس سنتعرّف على طرق تعيين وإعطاء قيم للمتغيرات في لغة سي بلس بلس:\nاستخدام جملة التّعيين في لغة سي بلس بلس استخدام جملة \\ دالّة \\ اقتران الإدخال في لغة سي بلس بلس بالإضافة إلى:\nمراجعة سريعة للمتغيرات لماذا نستخدم هذه الطرق لتعيين قيم للمتغيرات في لغة سي بلس بلس باستخدام الكثير من الأمثلة\nIn this lecture, we will learn about:\nUsing C++ Assignment Statement Use Input/Read Statement in C++ (cin) In addition to:","title":"1-13 Putting Data into Variables (Assignment Statement \u0026 Input - cin) | تعيين قيم للمتغيرات"},{"content":" في هذا الدّرس سنتعرّف على الثابت/الثوابت في لغة سي بلس بلس:\nالثوابت لماذا نستخدم الثوابت في لغة السي بلس بلس؟ آهمية الثوابت في لغة سي بلس بلس كيف نعرف ثابت في لغة سي بلس بلس؟ آمثلة على الثوابت في لغة سي بلس بلس بالإضافة إلى:\nمراجعة سريعة للمتغيرات مقارنة الثوابت والمتغيرات باستخدام الكثير من الأمثلة\nIn this lecture, we will learn about:\nNamed Constants Why to use a constant in C++? Importance of Constants in C++ How to define a constant in C++? Constant Examples in C++ In addition to:\nQuick review of variables in C++ Comparing Constants VS Variables in C++ using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/named-constants-cpp/","summary":"في هذا الدّرس سنتعرّف على الثابت/الثوابت في لغة سي بلس بلس:\nالثوابت لماذا نستخدم الثوابت في لغة السي بلس بلس؟ آهمية الثوابت في لغة سي بلس بلس كيف نعرف ثابت في لغة سي بلس بلس؟ آمثلة على الثوابت في لغة سي بلس بلس بالإضافة إلى:\nمراجعة سريعة للمتغيرات مقارنة الثوابت والمتغيرات باستخدام الكثير من الأمثلة\nIn this lecture, we will learn about:\nNamed Constants Why to use a constant in C++?","title":"1-12 Named Constants in C++ | الثوابت في لغة سي بلس بلس"},{"content":" في هذا الدّرس سنتعرّف على موضوع ال Escape Sequences في لغة سي بلس بلس - الجزء الثاني باستخدام الكثير من الأمثلة. In this lecture, we will learn about Escape Sequences in C++ - Part 2 by using a lot of examples.\n","permalink":"https://www.bynoor.io/posts/cpp/escape-sequences--part-2-cpp/","summary":"في هذا الدّرس سنتعرّف على موضوع ال Escape Sequences في لغة سي بلس بلس - الجزء الثاني باستخدام الكثير من الأمثلة. In this lecture, we will learn about Escape Sequences in C++ - Part 2 by using a lot of examples.","title":"1-11 Escape Sequences in C++ (Part 2)"},{"content":" في هذا الدّرس سنتعرّف على موضوع ال Escape Sequences في لغة سي بلس بلس - الجزء الأول باستخدام الكثير من الأمثلة. In this lecture, we will learn about Escape Sequences in C++ - Part 1 by using a lot of examples.\n","permalink":"https://www.bynoor.io/posts/cpp/escape-sequences-part-1-cpp/","summary":"في هذا الدّرس سنتعرّف على موضوع ال Escape Sequences في لغة سي بلس بلس - الجزء الأول باستخدام الكثير من الأمثلة. In this lecture, we will learn about Escape Sequences in C++ - Part 1 by using a lot of examples.","title":"1-10 Escape Sequences in C++ (Part 1)"},{"content":" في هذا الدّرس سنتعرّف على كيفية تمثيل النصوص، وأنواع البيانات المتوفرة في المكتبة القياسية والمتضمنة افتراضيًا وكيفية استخدام مكتبات أخرى في لغة سي بلس بلس:\nstring (Strings) لتمثيل البيانات النصية المكتبات الخارجية أو الأنواع الخاصة الأنواع المضمنة افتراضيًا كيفيّة استخدام النّصوص في سي بلس بلس بالإضافة إلى:\nمراجعة الصيغة العامة لكتابة برنامج بلغة سي بلس بلس مراجعة الحروف النصية char/characters مراجعة المتغيرات variables بشكل سريع باستخدام الكثير من الأمثلة.\nIn this lecture, we will learn how to represent text, and data types available in C++ standard library and how to use other libraries in C++:\nstring (Strings) to represent text data (External) libraries and programmer defined data types Built-in data types how to use strings in C++. In addition to a quick review for these topics:\nHow to write a basic program in C++. Characters (char) in C++. Variables in C++. using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/string-and-programmer-defined-vs-built-in-data-types-cpp/","summary":"في هذا الدّرس سنتعرّف على كيفية تمثيل النصوص، وأنواع البيانات المتوفرة في المكتبة القياسية والمتضمنة افتراضيًا وكيفية استخدام مكتبات أخرى في لغة سي بلس بلس:\nstring (Strings) لتمثيل البيانات النصية المكتبات الخارجية أو الأنواع الخاصة الأنواع المضمنة افتراضيًا كيفيّة استخدام النّصوص في سي بلس بلس بالإضافة إلى:\nمراجعة الصيغة العامة لكتابة برنامج بلغة سي بلس بلس مراجعة الحروف النصية char/characters مراجعة المتغيرات variables بشكل سريع باستخدام الكثير من الأمثلة.","title":"1-9 String and Programmer Defined VS Built-In Data Types | النصوص والمكتبات والأنواع المضمنة"},{"content":" في هذا الدّرس سنتعرّف على التعابير الحسابية المختلطة وتحويل الأنواع في لغة سي بلس بلس باستخدام الكثير من الأمثلة. In this lecture, we will learn about mixed (mathematical) expressions, like:\nint (op) int double (op) double double (op) int int (op) double And type casting with static_cast, by understanding a lot of examples.\n","permalink":"https://www.bynoor.io/posts/cpp/mixed-expressions-and-type-conversion-cpp/","summary":"في هذا الدّرس سنتعرّف على التعابير الحسابية المختلطة وتحويل الأنواع في لغة سي بلس بلس باستخدام الكثير من الأمثلة. In this lecture, we will learn about mixed (mathematical) expressions, like:\nint (op) int double (op) double double (op) int int (op) double And type casting with static_cast, by understanding a lot of examples.","title":"1-8 Mixed Expressions \u0026 Type Conversion (Casting) | التعابير المختلطة وتحويل الأنواع"},{"content":" في هذا الدرس سنتعرف على أولويات العمليات الحسابية، التعابير الحسابية، وأنواع المعاملات الأحادية والثنائية في لغة سي بلس بلس باستخدام الكثير من الأمثلة. In this lecture, we will learn about arithmetic operations and operators, mathematical expressions, operator precedence, binary operators, and Unary Operators in C++, using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/operator-precedence-and-arithmetic-expressions-cpp/","summary":"في هذا الدرس سنتعرف على أولويات العمليات الحسابية، التعابير الحسابية، وأنواع المعاملات الأحادية والثنائية في لغة سي بلس بلس باستخدام الكثير من الأمثلة. In this lecture, we will learn about arithmetic operations and operators, mathematical expressions, operator precedence, binary operators, and Unary Operators in C++, using multiple examples.","title":"1-7 Operator Precedence and Arithmetic Expressions | أولويات العمليات والتعابير الحسابية"},{"content":" في هذا الدّرس سنتعرّف على المعاملات والعمليات الحسابية في لغة سي بلس بلس:\nالجمع الطرح والأعداد السالبة الضرب القسمة باقي القسمة أنواع المعاملات: الأحادية والثنائية باستخدام الكثير من الأمثلة.\nIn this lecture, we will learn about:\nAddition + Subtraction and negative numbers - Multiplication * Division / Mod, Modulus, Reminder % Binary Operators and Unary Operators in C++, using multiple examples.\n","permalink":"https://www.bynoor.io/posts/cpp/arithmetic-operators-cpp/","summary":"في هذا الدّرس سنتعرّف على المعاملات والعمليات الحسابية في لغة سي بلس بلس:\nالجمع الطرح والأعداد السالبة الضرب القسمة باقي القسمة أنواع المعاملات: الأحادية والثنائية باستخدام الكثير من الأمثلة.\nIn this lecture, we will learn about:\nAddition + Subtraction and negative numbers - Multiplication * Division / Mod, Modulus, Reminder % Binary Operators and Unary Operators in C++, using multiple examples.","title":"1-6 Arithmetic Operators in C++ | المعاملات والعمليّات الحسابيّة في لغة سي بلس بلس"},{"content":" في هذا الدّرس سنتعرّف على المتغيّرات في لغة سي بلس بلس وكيفية استخدامها. In this lecture, we will learn about variables and how to use them in C++.\n","permalink":"https://www.bynoor.io/posts/cpp/variables-cpp/","summary":"في هذا الدّرس سنتعرّف على المتغيّرات في لغة سي بلس بلس وكيفية استخدامها. In this lecture, we will learn about variables and how to use them in C++.","title":"1-5 Variables in C++ | المتغيّرات في لغة سي بلس بلس"},{"content":" في هذا الدّرس سنتعرّف على المكوّنات الأساسيّة لأي برنامج في لغة سي بلس بلس:\nالرموز الخاصة الكلمات المحجوزة الأسماء \\ المعرّفات بالإضافة إلى قواعد التّسمية في لغة سي بلس بلس.\nIn this lecture, we will learn about essential program components (tokens) in C++:\nSpecial Symbols Reserved Words (Keywords) Identifiers (names) In addition to naming rules in C++.\n","permalink":"https://www.bynoor.io/posts/cpp/tokens-program-components-naming-rules-cpp/","summary":"في هذا الدّرس سنتعرّف على المكوّنات الأساسيّة لأي برنامج في لغة سي بلس بلس:\nالرموز الخاصة الكلمات المحجوزة الأسماء \\ المعرّفات بالإضافة إلى قواعد التّسمية في لغة سي بلس بلس.\nIn this lecture, we will learn about essential program components (tokens) in C++:\nSpecial Symbols Reserved Words (Keywords) Identifiers (names) In addition to naming rules in C++.","title":"1-4 Tokens (Program Components) and Naming Rules in C++ | المكوّنات الأساسيّة للبرنامج وقواعد التسمية "},{"content":"Solid Design Principles with Java Series Welcome to this new series of solid design principles with Java programming language.\nIn this series we will focus on the most important design principles, introduce them with minimal efforts on both us and the reader, this series should be followed by a more advanced one on design patterns with Java later on – stay tuned!\nSingle Responsibility Principle (SRP) On this first lesson, we will discuss the Separation of Concerns (SoC) aka Single Responsibility Principle (SRP).\nThis is actually a very simple principle, as its name suggests, it means to extract every piece of code logic to its own class.\nFor example, you have a class called Journal, you clearly should add it’s content to the class itself, but later on, you observed that you need to add a functionality to persist the content of a Journal object to a database, what should you do? simply you go to your Journal class and add 2 new methods to save and load the contents and here we go – but hold on!\nWhat if you have another type of classes, say a Book, that obviously need same logic of persistence? what to do? should you copy and paste your methods from the Journal class? – isn’t this a code smell ?\nLet’s think again – why did you add the persistence logic to the Journal class itself? to make things simpler? – but, mmm, it starts to complicate things.\nYou should observe now that the persistence logic has nothing to do with the Journal, so go on and build them a new home.\nAnd that’s it, you just separated the logic of persistence code to its own class. And now, anytime you want to update this code – you will not care about updating it in many places. Congratulations!\nTalk is cheap, show me the code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package _00_solid_design_principles.single_responsibility; import java.util.ArrayList; import java.util.List; public class Journal { private final List\u0026lt;String\u0026gt; entries = new ArrayList\u0026lt;\u0026gt;(); private static int count = 0; public void addEntry(String text) { ++count; entries.add(count + \u0026#34;: \u0026#34; + text); } public void removeEntry(int index) { entries.remove(index); } // DO NOT add persistence logic inside Journal class! @Override public String toString() { return String.join(System.lineSeparator(), entries); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package _00_solid_design_principles.single_responsibility; import _util.exception.NotImplementedException; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; import java.net.URL; public class Persistence { public void save(Journal journal, String fileName, boolean overwrite) { throw new NotImplementedException(); // implement it your way } public Journal load(String fileName) { throw new NotImplementedException(); // implement it your way } public Journal load(URL url) { throw new NotImplementedException(); // implement it your way } } 1 2 3 4 5 6 7 8 9 10 11 12 13 package _00_solid_design_principles.single_responsibility; import java.io.FileNotFoundException; public class Demo { public static void main(String[] args) { Journal journal = new Journal(); journal.addEntry(\u0026#34;I cried today\u0026#34;); journal.addEntry(\u0026#34;I ate a bug\u0026#34;); System.out.println(journal); Persistence persistence = new Persistence(); persistence.save(journal, \u0026#34;journal.txt\u0026#34;, true); persistence.load(\u0026#34;journal.txt\u0026#34;); } } or check the code in my GitHub repository !\n","permalink":"https://www.bynoor.io/posts/solid/java/single-responsibility-principle/","summary":"Solid Design Principles with Java Series Welcome to this new series of solid design principles with Java programming language.\nIn this series we will focus on the most important design principles, introduce them with minimal efforts on both us and the reader, this series should be followed by a more advanced one on design patterns with Java later on – stay tuned!\nSingle Responsibility Principle (SRP) On this first lesson, we will discuss the Separation of Concerns (SoC) aka Single Responsibility Principle (SRP).","title":"Solid Design Principles with Java – #01 Single Responsibility Principle (SRP)"},{"content":"What is Scala? “Scala combines object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries”.\nThis is how Scala official website introduces the language to the world. In this blog, I will try to make this introduction some way simpler with a taste of real Scala examples, note that I’m assuming a general knowledge of other object-oriented languages like Java or C# but no functional programming knowledge is ok.\nScala is object-oriented Scala is a pure object-oriented language in the sense that every value is an object. It’s even more object-oriented than Java, by that I mean that any value, even integers and doubles are objects! this opens a new world of no-special treatment for primitive values.\nScala is functional Scala is also a functional language in the sense that every function is a value. That maybe sounds weird or even crazy, but it opens a whole new world and programming style/paradigm that Scala supports, which is the functional programming world. This is not a place to introduce functional programming style and benefits, but I will mention what help us here. Let’s come back to the fact that every function is a value in Scala, that’s simply mean you can use a function anywhere you can use a value. Ummmm, a function?\nA Method or a Function? To be closer to understand what the functions are, we want to quickly compare them with methods.\nA method, in general, is a piece of code that does something and attached to a context, i.e, belongs to a class. While a function is simply a verb that does something or performs an action. In Scala, we can generalize (or converts) methods to functions, so we can use them outside the class they belong to!\nWhich is better? The one should not treat OOP and FP as 2 worlds who should use one of them, even that’s possible in some cases, but to combine them both and use each of them when he/she/they needs to, and that’s exactly why Scala is found.\nIn general, most of the programmers use OOP as the main paradigm and FP when they need to, which in most cases make the code simpler, shorter, and easier to understand and maintain.\nNow, let’s start to discuss Scala.\nWhy Scala? 1. JVM I will start with you, Java developers, because we share a lot together, we use the same base, yes, the JVM. That’s an incontestable point since JVM is mature enough, optimized enough, and have been in use for over 15 years. You have a guaranteed very easy process to deploy and maintain applications, with a great performance!\n2. OOP and FP Fusion The second point, which is that you have the best of both worlds! why should you use Java and stuck to OOP* or use Haskell and stuck to FP while you can get them together? Ok, I know that Java 8 introduced a lot of features to support FP, but that nothing compared to what Scala offers. May this seems to be a normal point for you but believe me, once you start to taste the FP, you cannot go back.\nLet’s have a quick example, given a list of numbers, write a function/method that segregates even and odd numbers into 2 new lists.\nJava Solution (Using Imperative Way): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.util.ArrayList; import java.util.List; public class MainJava { public static void main(String[] args) { List\u0026lt;Integer\u0026gt; numbers = new ArrayList\u0026lt;\u0026gt;(); for (int i = 0; i \u0026lt; 10; i++) { numbers.add(i); } List\u0026lt;List\u0026lt;Integer\u0026gt;\u0026gt; numberGroups = segregateNumbers(numbers); List\u0026lt;Integer\u0026gt; evenNumbers = numberGroups.get(0); List\u0026lt;Integer\u0026gt; oddNumbers = numberGroups.get(1); System.out.println(evenNumbers); System.out.println(oddNumbers); } private static List\u0026lt;List\u0026lt;Integer\u0026gt;\u0026gt; segregateNumbers(List\u0026lt;Integer\u0026gt; numbers) { List\u0026lt;Integer\u0026gt; evenNumbers = new ArrayList\u0026lt;\u0026gt;(); List\u0026lt;Integer\u0026gt; oddNumbers = new ArrayList\u0026lt;\u0026gt;(); for (Integer number : numbers) { if (number % 2 == 0) evenNumbers.add(number); else oddNumbers.add(number); } ArrayList\u0026lt;List\u0026lt;Integer\u0026gt;\u0026gt; result = new ArrayList\u0026lt;\u0026gt;(); result.add(evenNumbers); result.add(oddNumbers); return result; } } Scala Solution (Using Functional Programming Paradigm): 1 2 3 4 5 object MainScala extends App { val numberGroups = 0 to 10 partition (_ % 2 == 0) println(numberGroups._1) println(numberGroups._2) } 3. Concise Code That’s actually another point to mention for Java developers, Scala will give you a more concise and short version of your code (some people will refer to Scala as a better Java!), let’s take another example of defining a simple class with basic methods in both languages:\nJava Class: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import java.util.Objects; public class JavaPerson { private final String name; private final String id; private int age; public JavaPerson(String name, String id, int age) { this.name = name; this.id = id; this.age = age; } public String getName() { return name; } public String getId() { return id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof JavaPerson)) return false; JavaPerson javaPerson = (JavaPerson) o; return age == javaPerson.age \u0026amp;\u0026amp; Objects.equals(name, javaPerson.name) \u0026amp;\u0026amp; Objects.equals(id, javaPerson.id); } @Override public int hashCode() { return Objects.hash(name, id, age); } @Override public String toString() { return \u0026#34;JavaPerson{\u0026#34; + \u0026#34;name=\u0026#39;\u0026#34; + name + \u0026#39;\\\u0026#39;\u0026#39; + \u0026#34;, id=\u0026#39;\u0026#34; + id + \u0026#39;\\\u0026#39;\u0026#39; + \u0026#34;, age=\u0026#34; + age + \u0026#39;}\u0026#39;; } } Scala Class: 1 case class ScalaPerson(name: String, id: String, var age: Int) Yes, that’s it! and actually, the Scala class above explicitly contains even more methods than what I wrote on the equivalent Java one, how great is that?\n4. A lot of Features! Scala is a step ahead of Java, just think of lambda expressions on Java 8, (limited) var and type inference on Java 10, and many other (new) Java features. They are in Scala since day 1, with much more use cases for them.\n5. Statically Typed Language Scala is statically typed. It’s enough for Java, now let’s hit other languages. Python or Javascript? why those? because they are the most widely used dynamically typed languages. Wait, what is that mean?\n“Dynamically-typed languages perform type checking at runtime, while statically typed languages perform type checking at compile time. This means that scripts written in dynamically-typed languages (like Groovy) can compile even if they contain errors that will prevent the script from running properly (if at all). If a script is written in a statically-typed language (such as Java) contains errors, it will fail to compile until the errors have been fixed”\nOracle BTW, Groovy is another JVM language.\nLet’s take this simple example in the three languages, Python, JavaScript, and Scala:\nMultiply 2 Numbers in Python: 1 2 3 def Multiply(num1, num2): answer = num1 * num2 return answer Multiply 2 Numbers in JavaScript (ES5): 1 2 3 var multiply = function(num1, num2){ return num1 * num2; } Multiply 2 Numbers in Scala: 1 val multiply = (num1: Double, num2: Double) =\u0026gt; num1 * num2 You see it, the ‘Double’ type, that’s mean that Scala will not compile at all if you call this function with non-numbers values! while this is OK for both Python and JavaScript. It\u0026rsquo;s maybe faster not to add that ‘Double’ type (is it?) but you will lose a lot! You may compile this, release your product and there is 1 forbidden use in your codebase that leads to huge bugs! so, keep your self safe and use statically typed language.\n6. Type Inference! Scala has type inference, that’s mean you still may not include the type of the value and let the Scala compiler infer it for you! just print val x = 5 and you are ready to go! To be complete, there are some very rare cases where you have to declare the type yourself.\nSo Scala is statically typed, and you can not write the type yourself, how amazing is Scala!\n7. A Scripting Language! For Python users, a lot of you like the language to write quick scripts. And again, Scala can be used as a scripting language! did you read about REPL ?\n8. Data Science and Big Data Processing Scala is one of the main languages used in the Data Science and Big Data Processing fields. Actually, Spark , one of the most popular engines for big data analytics and processing in Java, Python, R, SQL, and Scala is actually written in Scala, so it\u0026rsquo;s best to use it in Scala!\n9. Parallel Programming Scala comes with multiple built-in features to support parallel programming in which you can use multiple resources (cores) of your computer to run multiple things/processes together or to run one programme in multiple instances so that you can process it faster. There is one course in the resources below that talks about this.\nIn fact, Akka , another widely used framework in Java, which helps in building powerful reactive, concurrent, and distributed applications more easily in also written in Scala! Doesn\u0026rsquo;t that tell you something about the language?\n***… Scala has a lot more to encourage you to choose it as your next journey. I can\u0026rsquo;t mention all the reasons in one article, but I guess I mentioned just enough points to let you consider Scala for your next project! ***\nAre you aware of some other reasons to learn and use Scala? Please share them in the comments below!\nLearn Scala with Me I have a GitHub repository I use to keep my journey on learning Scala, you may want to check it here :”)\nMore Reasons Check these resources for more reasons to choose Scala: Tour of Scala Scala vs. Java: Why Should I Learn Scala? Why Scala? (by Martin Odersky, the creator of Scala) Why Scala? (for Spark) Why should I learn Scala? This is why you should learn Scala Why should I learn Scala? Make 2017 The Year You Learn Scala A Newbie’s Guide to Scala and Why It’s Used for Distributed Computing More resources to learn Scala: My GitHub repository . Free. Rock the JVM Functional Programming Principles in Scala by Martin Odersky, the creator of Scala. Free Course. Functional Program Design in Scala by Martin Odersky, the creator of Scala. Free Course. Parallel programming in Scala Free Course. Programming in Scala Book. Scala Programming for Data Science Free Course. Scala for Java Developers Book. More resources . See you in the next one!\n","permalink":"https://www.bynoor.io/posts/scala/why-scala-and-functional-programming/","summary":"What is Scala? “Scala combines object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries”.\nThis is how Scala official website introduces the language to the world. In this blog, I will try to make this introduction some way simpler with a taste of real Scala examples, note that I’m assuming a general knowledge of other object-oriented languages like Java or C# but no functional programming knowledge is ok.","title":"Scala and Functional Programming, Why?"},{"content":" ","permalink":"https://www.bynoor.io/posts/matlab/gui-graphical-user-interface-matlab/","summary":" ","title":"Graphical User Interface (GUI) Programming Example (in Arabic)"},{"content":" ","permalink":"https://www.bynoor.io/posts/matlab/programming-selection-loops-debug-matlab/","summary":" ","title":"Programming with Matlab, Selection, Loops and Debug (in Arabic)"},{"content":" ","permalink":"https://www.bynoor.io/posts/matlab/functions-and-script-files-matlab/","summary":" ","title":"Functions and Script Files (in Arabic)"},{"content":" في هذا الدرس سنتعرّف على أنواع البيانات المختلفة في لغة سي بلس بلس مثل الأرقام الصحيحة، الحروف، القيم المنطقية، الأعداد العشريّة، وغيرها. بالإضافة إلى تعلّم كيفيّة استخدام هذه الأنواع. In this lecture, we will learn about int, char, bool, double float and other data types, while learning how and why to use them.\n","permalink":"https://www.bynoor.io/posts/cpp/data-types-cpp/","summary":"في هذا الدرس سنتعرّف على أنواع البيانات المختلفة في لغة سي بلس بلس مثل الأرقام الصحيحة، الحروف، القيم المنطقية، الأعداد العشريّة، وغيرها. بالإضافة إلى تعلّم كيفيّة استخدام هذه الأنواع. In this lecture, we will learn about int, char, bool, double float and other data types, while learning how and why to use them.","title":"1-3 Data Types in C++ | أنواع البيانات في لغة سي بلس بلس"},{"content":" في هذا الدرس سنتعلّم بعض الطرق الأخرى لكتابة برنامجك باستخدام لغة سي بلس بلس. In this lecture, we will learn some alternative ways t write our C++ programs.\n","permalink":"https://www.bynoor.io/posts/cpp/first-program-in-cpp-extra/","summary":"في هذا الدرس سنتعلّم بعض الطرق الأخرى لكتابة برنامجك باستخدام لغة سي بلس بلس. In this lecture, we will learn some alternative ways t write our C++ programs.","title":"1-2 Your First Program - Alternative Ways | صيغ أخرى (بديلة) لكتابة برنامج بلغة سي بلس بلس"},{"content":" في هذا الدرس سنتعرّف على كيفيّة كتابة أول برنامج في لغة سي بلس بلس، وشرح مبسّط للأجزاء الثابتة في أي برنامج. In this lecture, we will dive into how to write our first program in C++, and we will explain some common parts/snippets of any C++ program.\n","permalink":"https://www.bynoor.io/posts/cpp/first-program-in-cpp/","summary":"في هذا الدرس سنتعرّف على كيفيّة كتابة أول برنامج في لغة سي بلس بلس، وشرح مبسّط للأجزاء الثابتة في أي برنامج. In this lecture, we will dive into how to write our first program in C++, and we will explain some common parts/snippets of any C++ program.","title":"1-1 Your First Program in C++ | الصيغة العامة لكتابة برنامج بلغة سي بلس بلس"},{"content":"Videos - دروس فيديو Video lectures can be found in our C\u0026#43;\u0026#43; for Beginners Video Series .\nFirst Exam Material – مادّة الإمتحان الأوّل Summary (With Book Answered Questions) – ملخّص، مع أسئلة محلولة من الكتاب . Past Papers (1) – أسئلة سابقة للمادّة . Past Papers (2) – CH. 4 – أسئلة سابقة للفصل الرّابع من المادّة . Online Quizzes: Quiz #1 - [Chapters: 2 and 3 (Basics, Input and Output)] . Quiz #2 - [Chapter: 4 (Conditionals: if, switch, and more )] . Exam #1 - [Chapters: 2-4 and while loop from chapter 5] . Second Exam Material – مادّة الإمتحان الثّاني Loops Summary – ملخّص الفصل الخامس، جُمل الدّوران . Functions Summary – مُلخّص الفصل السّادس، الإقترانات . Past Papers (1) – أسئلة سابقة للمادّة . Past Papers (2) – Write Function – أسئلة سابقة، كتابة اقترانات . Pattern Programs (Loops and Functions) – أسئلة الأنماط والأشكال باستخدام جمل الدّوران والإقترانات . Final Exam Material – مادّة الإمتحان النّهائي Summary (With Book Answered Questions) – ملخّص، مع أسئلة محلولة من الكتاب وغيره . Past Papers (150 Multiple Choice Questions – Full Material) – أسئلة سابقة، 150 اختيار من متعدّد شاملة لكلّ المادّة . Additional Resources – مراجع إضافية [More] C\u0026#43;\u0026#43; EXERCISES . ","permalink":"https://www.bynoor.io/cpp-resources/","summary":"Videos - دروس فيديو Video lectures can be found in our C\u0026#43;\u0026#43; for Beginners Video Series .\nFirst Exam Material – مادّة الإمتحان الأوّل Summary (With Book Answered Questions) – ملخّص، مع أسئلة محلولة من الكتاب . Past Papers (1) – أسئلة سابقة للمادّة . Past Papers (2) – CH. 4 – أسئلة سابقة للفصل الرّابع من المادّة . Online Quizzes: Quiz #1 - [Chapters: 2 and 3 (Basics, Input and Output)] .","title":"C++ Resources and Study Materials (in Arabic)"},{"content":" If you cannot see the CV below, please click here .\n","permalink":"https://www.bynoor.io/cv/","summary":"If you cannot see the CV below, please click here .","title":"Mohammad Noor Abu Khlaif - CV"}]