Dev Concepts - SoftUni Global https://softuni.org/category/dev-concepts/ Learn Programming and Start a Developer Job Fri, 22 Jul 2022 13:36:01 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.3 https://softuni.org/wp-content/uploads/2022/04/cropped-SoftUni-Global-Logo-Square-notext-32x32.png Dev Concepts - SoftUni Global https://softuni.org/category/dev-concepts/ 32 32 How to Build and Use Problem-solving Skills [Dev Concepts #41] https://softuni.org/dev-concepts/how-to-build-and-use-problem-solving-skills/ https://softuni.org/dev-concepts/how-to-build-and-use-problem-solving-skills/#respond Fri, 22 Jul 2022 13:32:30 +0000 https://softuni.org/?p=22676 In this lesson, you will learn about problem solving and algorithmic thinking and other fundamental skills of software developers, as well as some approaches to solving tech problems.

The post How to Build and Use Problem-solving Skills [Dev Concepts #41] appeared first on SoftUni Global.

]]>

To become a skilful developer means not only being familiar with a programming language or software but also having a set of skills that are fundamental to the software development process. These skills can be classified into four groups :

  • Coding skills;
  • Algorithmic thinking and problem solving skills;
  • Fundamental software development concepts;
  • Programming languages and software technologies.

Technical Skills

The skill of coding is knowledge of the basic concepts of programming. They are universal and once learned, can be applied in many programming languages. The programming language does not matter to the ability to code.

You need to know how to:

  • Use development environments (the so-called IDEs) and developer tools;
  • Work with variables and data, calculations, conditional statements, loops and data structures;
  • Use functions, methods, classes and objects, programming APIs and libraries;
  • Troubleshoot and debug code.

 

Now that you are familiar with the foundations of programming, you need to put that knowledge together and plan every step of finding a solution to a problem. This will require your algorithmic thinking and problem-solving skills

Problem-Solving-Lamp

 

Algorithmic thinking is the ability to break a problem into a logical sequence of steps (called “algorithm”), to find a solution for every step (or break it further into sub-steps) and then assemble these steps into a working solution. 

Algorithmic thinking is similar to logical, engineering, mathematical, abstract, and problem solving. All these concepts are related to the ability to solve problems: to think logically, analyse the problems, and find and implement solutions. Problem solving is a more general skill, while algorithmic thinking is a more technical.

The fundamental computer science and software development concepts include many programming paradigms, essential software development knowledge and skills, and software engineering principles and concepts that developers typically acquire as they gain experience over time.

Some of these knowledge areas and concepts are:

  • Object-oriented programming (OOP);
  • Functional programming (FP);
  • Asynchronous programming ;
  • Relational and non-relational databases;
  • The concepts behind the Web technologies.

To implement your knowledge you need to be familiar with programming languages, software development technologies, software platforms, software libraries, development frameworks and developer tools.

On the graphic below you can see an example technology stack for a Java developer.

Example-Of-A-Java-Tech-Stack

Technologies are ever-changing and evolving, but these four groups of skills described above represent essential and stable knowledge since they will not change significantly over time. In fact, technologies are highly dependent on these skills.

Soft Skills

Soft skills are as important as the ones described above. They include the ability to communicate with people and work in a team which is essential since you as a developer will work on projects with your colleagues. You need to manage your time effectively, to be empathetic, adaptable and creative. Having attention to detail will increase your productivity at work and reduce the chances of error.

Tech Problem Solving

In the IT industry, a tech problem is often an assignment to design and implement a set of functionality which has certain input data and program state and produces output data and program state. 

Every tech problem has a goal. In programming, the goals are to design and write a working code, build an app or software system, which corresponds to the assignment and implement its requirements and functionality. Developers may encounter certain technical difficulties or limitations in designing and implementing the required functionality, like lack of resources, experience or knowledge. The process of problem solving includes finding a way to overcome these difficulties. This can be, for example, learning a new programming language, software library or framework.

Stages of Problem Solving

How to approach a tech problem?
You can see in the graphic below seven stages of resolving a problem.

Stages-Of-Problem-Solving

First of all, you need to define the problem. This involves gathering the requirements of the assignment.

After that, you analyse them. Here you should think about constraints, objects, processes and potential obstacles related to the problem. Based on a deeper understanding of the problem, you can extract the important information from the requirements and discard the non-important information, and explore its properties, which will be useful for building a solution.

The next step is to identify several solutions. You try to generate and explore different ideas and technical approaches on how to build a well-working solution. Then you analyse these ideas, their correctness, their strengths and weaknesses, their practical applicability and the costs of their implementation.   

After you have gathered some ideas you need to choose one of them. This is a decision-making process and depends mainly on the requirements, your capabilities and available resources.

After that, you need to plan and describe your actions for executing the chosen solution. You plan your algorithm. Technically, this means to write the definition of several functions, methods or classes, which will implement the chosen idea.

Sometimes planning of the algorithm is done together with its implementation, and there is no clear separation between the stages of algorithm design and algorithm implementation.

Once you have a clearly defined algorithm, you implement it. This means writing code to execute the planned steps. In software development, the implementation process includes also testing and debugging.

The last stage of problem solving is to review the results or test the solution with different input data and conditions. For software problems and apps, you need to perform testing of the code, feature by feature: to check for usual and unusual input data and conditions, check for edge cases and special cases.

Tips for Solving Problems

When it comes to solving a tech problem, the first and foremost important thing is understanding it. Take your time to read and analyse it thoroughly. Do not start to code immediately, because if you have not read the problem carefully, there is a chance of making hasty assumptions about the requirements.

Use a sheet of paper or other visualization tools. This will help you sketch your ideas fast and will improve your logical thinking. Squared paper is preferable. It works best for algorithmic problems. It helps build drawings, diagrams, tables and coordinate systems.

Problem-Solving-Paper-Pen

Write down the given input and the required output.
For example, if your task is to find all odd numbers of a given array ask yourself some questions:

  • What do I have?  →  An array and odd numbers.
  • What is an array and how does it work? What is an odd number? What data type should I use to store it?  →  These questions will help you understand the problem.
  • What is the end goal? → To filter odd numbers in the array and return it.
  • How can I do it?  →  You may have multiple answers to this question and they are your potential solutions. Write them down, compare their advantages and disadvantages and then choose one of them.

After you implement the code test and debug it if needed. Make sure that you have covered all cases. Then look back and try to optimize and simplify your code making it easier to understand.

Lesson Topics

In this tutorial, we cover the following topics:
  • Technical Skills;
  • Soft Skills;
  • Definition of a Tech Problem;
  • Stages of Problem Solving;
  • Tips for Solving Problems.

Lesson Slides

The post How to Build and Use Problem-solving Skills [Dev Concepts #41] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/how-to-build-and-use-problem-solving-skills/feed/ 0
What is a Uniform Resource Locator (URL)? [Dev Concepts #40] https://softuni.org/dev-concepts/what-is-a-uniform-resource-locator-url/ https://softuni.org/dev-concepts/what-is-a-uniform-resource-locator-url/#respond Wed, 13 Jul 2022 14:03:00 +0000 https://softuni.org/?p=22193 After this lesson, you will understand what a Uniform Resource Locator (URL) is, how it is used, what the URL encoding rules are, and more.

The post What is a Uniform Resource Locator (URL)? [Dev Concepts #40] appeared first on SoftUni Global.

]]>

Uniform Resource Locator (URL) identifiers are unique addresses on the Internet.  A URL is a specific type of Uniform Resource Identifier (URI). It is used to reference Web pages and identify and transfer documents on the Web by providing an abstract identification of the resource’s location. This is why it is also known as a web address.

Structure of a URL

A URL is what you type in the browser address bar to request a specific resource. You can see the parts it consists of in the graphic below.

URL Structure

The first part of a URL specifies the protocol that the browser must follow to talk to the server. The protocol is used to access remote resources, such as files, documents, and streaming media. It can be http, https, ftp, sftp, or other. Usually, for webpages is used HTTP and HTTPS.

After the protocol is the host. The host is usually a domain name, but an IP address can also be used. It indicates the web server that you request resources from. 

The third part of the URL is the port This is an integer in the range of [0…65535] that comes from the underlying TCP protocol, which operates with port numbers. The port is a virtual point through which network communication happens. It can be omitted if the server uses default ports of the HTTP protocol which are 80 for HTTP and 443 for HTTPS.

The host and the port define the endpoint for establishing the connection with the server.

The next part of the URL is the path. It specifies the location of the web page, file, or other resources to which the user wishes to gain access. If you want to request a file from the Web server, this will be the full path to the file, relative to the server root folder.

After the path follows the query string, which is optional. It is separated from the path by a question mark symbol. It holds parameters passed in the URL which are separated from each other by an ampersand symbol.

The fragment is the last optional part of the URL. It follows after the “hash” symbol. For example, the URL can end with “#slides“, which instructs the Web browser to scroll to the section “slides” in the loaded HTML document. The fragment is never sent to the server with the request.

A rarely used URL format can also include authentication data, sent through the “Authorization” HTTP header. For example http://username:password@example.com/

Query String

The query string is an optional part of the URL. It contains data that is not part of the path structure.

For example, let’s look at this URL:

http://example.com/path/to/page?name=tom&color=purple

The query string is ?name=tom&color=purple

The query string is commonly used in searches and dynamic pages. It consists of name=value pairs separated by an ampersand delimiter. Names and values that hold special characters are URL-encoded

For example https://nakov.com/?s=Svetlin%20Nakov

URL Encoding

URL Escape Codes

Sometimes the query string parameters need to hold special characters like the “=” symbol or the “?” symbol. To maintain this, the query string needs character escaping, which means that some special characters are replaced by sequences of other characters. This is called “URL encoding“. URLs are encoded according to RFC 1738 standard, which describes the URLs). Normal URL characters (such as digits and Latin letters) have no special meaning in the URLs and are not encoded. Reserved URL characters have a special meaning and are encoded in order to be part of the URL without breaking it. This is done with the so-called “percent encoding“, which uses the “%” symbol plus the hex code of the character in its UTF-8 representation. You can see some examples of URL escape codes in the graphic above.

Lesson Topics

In this tutorial, we cover the following topics:
  • What is URL;
  • Structure of a URL;
  • Query Strings;
  • URL Encoding.

Lesson Slides

The post What is a Uniform Resource Locator (URL)? [Dev Concepts #40] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-is-a-uniform-resource-locator-url/feed/ 0
Everything You Need To Know About HTTP Protocol [Dev Concepts #39] https://softuni.org/dev-concepts/everything-you-need-to-know-about-http-protocol/ https://softuni.org/dev-concepts/everything-you-need-to-know-about-http-protocol/#respond Fri, 08 Jul 2022 10:37:30 +0000 https://softuni.org/?p=21985 In this lesson, you will understand the basic concepts of the HTTP protocol used for communication between browsers and applications over the Internet.

The post Everything You Need To Know About HTTP Protocol [Dev Concepts #39] appeared first on SoftUni Global.

]]>

The Hypertext Transfer Protocol (HTTP) is the standard protocol used to transmit data across the web. It is originally created to transfer HTML, CSS, images and other Web resources within the global distributed information system called the “World Wide Web” (or just Web). Later, HTTP is extended to a general-purpose client-server protocol for the Internet and is widely used for transferring almost anything: text, images, documents, audio and video and more.

What is a protocol?

A communication protocol is a set of rules, which define how two or more parties are talking to each other. It is like a common language used for communication between machines. 

HTTP is a text-based client-server protocol. Client-server defines the parties communicating with each other: the client – software that reads and visualizes the data from the server, and the server – software that stores the data and provides it upon request in the form of an HTML document. 

The HTTP protocol uses the request-response model. It means that a site or a resource will not be open unless the client has asked for it. Therefore, the client has to send a request for a given data and the server will return a response containing the required data. 

The HTTP protocol relies on unique resource locators (URLs), like “https, column, slash, slash, softuni dot org”. When a resource is downloaded from the Web server, it comes with metadata (such as content type and encoding), which helps in visualizing the resource correctly.

Moreover, the HTTP protocol is stateless. Each HTTP request is independent from the others. Stateful HTTP conversations can be implemented by extra effort, using cookies, custom header fields, Web storage or other techniques.

HTTP Request Structure

Let’s see the structure of an actual request.

HTTP Requests Example

HTTP requests have a line, headers, a new line (CR + LF) after that, and a body at the end.

The HTTP request line is the command you send to the server to indicate what resource you want to get or process. It consists of:

  •       Request method (in our example “GET”);
  •       Request-URL (this is the resource path);
  •       HTTP version string.

Web browsers use URLs, but HTTP uses URIs to address the resources.

  •       URL stands for “uniform resource locator” and it describes a full unique address for a resource on the Internet, which consists of protocol + host + resource path, like in the example above
  •       URI stands for “uniform resource identifier” and it holds a full or relative unique path to a resource, for example “/about“.

When you request a resource over HTTP, you specify the relative URI of the resource in the request line and you specify the host name in the request headers. Both relative URI and host name come from the URL you want to access.

After the request line, the HTTP request headers are given. Headers specify specific parameters about the requested resource:

  •       “Host” is an important header, holding the requested resource. If we have several Web sites on the same Web server (for example softuni.org and learn.softuni.org), this “Host” header will tell the server which website to access.
  •       The other headers specify settings like what kind of content the client can accept and understands (for example only HTML or any content), what is the preferred language the client wants to use, what kind of compression the client understands (for example gzip and deflate), what are the client Web browser’s brand and version (encoded as the so-called “user agent” identifier) and other parameters.
  •       The headers section in the HTTP request ends by an empty line (CR + LF twice).

After the request headers, comes the request body.

  •       It can hold anything, for example, URL-encoded data or JSON objects or binary data.
  •       In the given example the body is empty, which is typical for HTTP GET requests.

HTTP Request Methods

The HTTP request method defines what action will be performed on the identified resource. The most commonly used HTTP methods are GET, POST, PUT, DELETE and PATCH which correspond to read, create, update and delete (or CRUD) operations, respectively.

Idempotency and safety are properties of HTTP methods.

Safe methods can only be used for read-only operations since they do not alter the server state. Using GET or HEAD on a resource URL, for example, should never change the resource. Safe methods are considered GET, HEAD, TRACE and OPTIONS.

Idempotent methods can send multiple identical requests to the server and the outcome will always be the same and it does not matter how many times the requests will be sent. This does not mean, however, that the server has to respond in the same way to each request. For example, if we want to delete a resource we send a DELETE request. The first time the server returns a response that the file has been deleted. If you try to send the same request again the server will respond that the file has already been deleted. Here we have two different responses but the second request did not alter the server state. In this case, the DELETE operation is idempotent.

The following HTTP methods are idempotent: GET, HEAD, OPTIONS, TRACE, PUT and DELETE. All safe HTTP methods are idempotent. PUT and DELETE are idempotent but not safe.

You can see all methods and their function in the graphic below.

HTTP Request Methods

The main HTTP methods corresponding to the CRUD operations are POST, GET, PUT/PATCH and DELETE.

  •   The GET method retrieves a specified resource (a list or a single resource). If there are no errors the method returns a representation of the resource in XML or JSON. GET is used to download a Web page, CSS file, script, document or other resources from a Web site. For example, a Web page’s content (fonts, images, etc.) is loaded using HTTP GET requests. This does not modify the state at the server-side, it only ‘reads’ it.
  •       The POST method modifies the state of the server since it creates new resources. For example, when you login into a website, the login sends your credentials to the server using a POST request.
  •       DELETE is used to delete (or remove) an existing resource. An example of an HTTP DELETE request is for deleting an item from the shopping cart in an e-commerce Web application.
  •       The PATCH method updates an existing resource partially. It is used to modify a field of a given object. An example is an HTTP PATCH request for updating the quantity of an order item in the shopping cart in an e-commerce Web application.
  •   The HTTP HEAD method retrieves the resource’s headers, without the resource itself. HEAD is used rarely, for example, to check for modifications on the server-side.

HTTP Response Structure

After receiving and interpreting a request message, the server sends an HTTP response message. You can see an example below.

HTTP Responses Example

The response message gives information on whether our request has been successfully executed or has failed. It consists of a status line, response headers and a response body.

The HTTP response status line starts with the protocol version, followed by the response status code, followed by a human-readable text explanation of the status code.

The status code tells the client whether the requested operation was successful or not. It is a three-digit integer whose first digit defines the response class.

Status codes are:

  • Informational responses (100–199)
  • Successful responses (200–299)
  • Redirection messages (300–399)
  • Client error responses (400–499)
  • Server error responses (500–599)

You can check the graphic below to see the most common status codes.

HTTP Response Status Codes

After the HTTP status line come the HTTP response headers that provide metadata for the returned resource (or the returned error), such as content-encoding, content size in bytes, content last-modify date and many others.

After the response headers and the empty line separator, the HTTP response body comes. This is the requested resource that can be text, binary data or it can be empty. In the example we used above, the Web server returns a CSS script for styling a navigation bar.

Content-Type and Disposition Headers

HTTP headers play an important role in modern Web development.

The “Content-Type” and the “Content-Dispositionheaders specify how to process the data in the HTTP request or in the HTTP response body. These headers can be used both in the HTTP requests and in the HTTP responses.

In the HTTP requests, the “Content-Type” header specifies what kind of data the client sends to the server, for example, a JSON document or URL-encoded form data or a plain-text document or a JPEG image. In the HTTP responses, the “Content-Type” header specifies what kind of data the server returns to the client, for example an HTML document or a JPEG image.

For example, the header “Content-Type: application/json” specifies a JSON-encoded data (a JSON object). By default, the UTF-8 encoding is used.

The “Content-Type: text/html; charset=utf-8” specifies an HTML document with UTF-8 encoding. Note that the encoding (or the charset) specified in the HTTP headers has a higher priority than the encoding specified in the header of the HTML document (using the “meta charset” HTML tag).

HTTP Dev Tools

Postman Client Tool Logo

There are browser built-in tools and client tools that help developers monitor the request-response traffic. An example of a client tool is the Postman HTTP client. Web developers use it for composing and sending HTTP requests and analyzing the HTTP response from the server, testing, debugging server APIs, researching how to use certain service APIs and for resolving technical issues during the software development. If you are interested in other HTTP client tools, you can try out Insomnia Core REST Client and Hoppscotch.

Lesson Topics

In this tutorial, we cover the following topics:
  • What is the HTTP Protocol
  • HTTP Request Structure
  • HTTP Request Methods
  • HTTP Response Status Codes
  • Content-Type and Disposition Headers

Lesson Slides

The post Everything You Need To Know About HTTP Protocol [Dev Concepts #39] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/everything-you-need-to-know-about-http-protocol/feed/ 0
Handling an HTML Form – GET and POST Methods, and Data Encoding [Dev Concepts #38] https://softuni.org/dev-concepts/handling-an-html-form/ https://softuni.org/dev-concepts/handling-an-html-form/#respond Thu, 30 Jun 2022 06:00:00 +0000 https://softuni.org/?p=21526 In this lesson, we discuss HTML Forms and how to use GET and POST methods to send encoded data to the server for processing.

The post Handling an HTML Form – GET and POST Methods, and Data Encoding [Dev Concepts #38] appeared first on SoftUni Global.

]]>

HTML Forms are used to collect input from users and send it to the server for processing.
Examples are registration form that users fill out to sign up on a website and order submission forms on e-commerce sites.

HTML Form Structure

HTML has input elements displayed in different ways such as input field, checkbox (for selecting zero or more of multiple choices), radio buttons (for selecting one of multiple choices), submit button etc. The basic structure of a form consists of input fields and a submit button. The user fills out the input fields with the required information and upon clicking the submit button the data is sent to a form handler. Typically, the form handler is a file on the server with a script for processing input data.

HTML Forms Structure

Form Action Attribute

You add an action attribute to the form to define where the submitted data goes. In the example above the submitted information will be handled by the script of the home.html document.

In this case, the URL is called relative. Relative URLs are compared to the current URL that is loaded in the Web browser. We can use slashes and the “double dot” notation to address a different folder or the parent folder of the virtual folder structure on the Web server.

Full URLs are used to submit the form data to completely different Web site. For example, a Web site may embed an HTML form for newsletter subscription which submits its form fields to an external Web site, which provides email newsletter services.

Form Method Attribute

In the following example, we have added an HTTP method attribute to the form. The method can be either GET or POST. Both methods are used to transfer data from client to server.

The GET method transfers data in the URL with a query string. Therefore, the length of the URL is limited. GET is preferable for images, word documents or data that does not require any security.

POST is an HTTP method that encodes form data in a specified format and sends it to the server via the HTTP message body. The World Wide Web frequently uses POST to send user-generated data or an uploaded file to the web server.

In the example above, you can see the standard URL encoding used to encode the HTML form fields and URLs. The URL encoding is a long string of name and value pairs. Each pair is separated from one another by an ampersand (&) sign and each name is separated from the value by an equals (=) sign. For example: key1=value1&key2=value2.

This encoding can be used for text and other data fields, but it does not support file upload fields. We can overcome this limitation by switching to multipart encoding.

Differences Between GET and POST Methods

If you want to send one or two simple variables (for example search parameters) to your server, then you use GET. However, if your form includes passwords, credit card information, or any other data that needs extra protection then POST is a better choice. You can see a side to side comparison between the two methods in the example below.

GET and POST Methods Comparison

Lesson Topics

In this tutorial, we cover the following topics:
  • HTML Form Structure

  • Form Action Attribute

  • Form Method Attribute

  • Differences Between GET and POST Methods

Lesson Slides

The post Handling an HTML Form – GET and POST Methods, and Data Encoding [Dev Concepts #38] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/handling-an-html-form/feed/ 0
Understanding HTTP Dev Tools [Dev Concepts #37] https://softuni.org/dev-concepts/understanding-http-dev-tools-37/ https://softuni.org/dev-concepts/understanding-http-dev-tools-37/#respond Fri, 24 Jun 2022 06:00:00 +0000 https://softuni.org/?p=21404 In this lesson, we talk about the browser Dev Tools and explain how to use them to your best advantage. Learn how the network inspector and client tools can ease your work as a developer.

The post Understanding HTTP Dev Tools [Dev Concepts #37] appeared first on SoftUni Global.

]]>

The HTTP flow of requests and responses can give you useful information about how the web application communicates with the server. It can improve your software development process, and save you time and effort when debugging.

Built-in Browser Tools

Modern Web browsers have a set of built-in tools for monitoring the HTTP traffic. The functionality of these tools includes also inspecting the already rendered HTML elements and debugging right into the browser. 

Open Inspect Menu In Browser

Chrome Developer Tools can be accessed by pressing the [F12] key in Google Chrome. Another way is to right-click anywhere on the Web page and select [Inspect] in the context menu.

This opens a panel with several tabs. The Elements tab shows the HTML used to build the current Web page. It holds information about the UI controls in the Document Object Model (DOM) tree.

The Console tab shows errors and logs for the currently loaded Web Page. The tab is also used for executing JavaScript commands and interacting with the page.

You can set breakpoints and evaluate expressions in JavaScript through the Sources tab. All files that were used to make the website are listed here.

Error 404! Image

To monitor the data exchanged between the current  page and the Web server, we use the Network tab. This tab is commonly used to confirm that resources are downloaded or uploaded correctly.

When you click on a link, the browser sends multiple requests to the server regarding different elements of the page. The HTML required to render the page is sent back in the form of responses from the server. There is information about every response that includes HTTP request URL, the request method, remote server IP address and port, status code and many other technical details.

HTTP Requests and Responses Traffic

Client Tools

Another useful tool for developers who need information on HTTP traffic is the Postman HTTP client. This tool is used for composing and sending requests, analyzing HTTP responses from the server for testing, debugging server APIs and for resolving technical issues during the software development process.

Postman Client Tool Logo

With Postman you can create an HTTP request, send it to the Web server, view the HTTP response, and generate a source code to execute the HTTP request in many languages, such as JavaScript, C#, Java, Python, PHP and many others.

Another alternative for an HTTP client tool is the Insomnia Core Rest Client. In case you prefer a Web-based HTTP tool, you can try Hoppscotch.

Lesson Topics

In this tutorial, we cover the following topics:
  • Network Inspector

  • Postman Client Tool

  • Sending and Analyzing HTTP Requests

Lesson Slides

The post Understanding HTTP Dev Tools [Dev Concepts #37] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/understanding-http-dev-tools-37/feed/ 0
What is a Database System (DBMS)? [Dev Concepts #36] https://softuni.org/dev-concepts/what-is-a-database-system/ https://softuni.org/dev-concepts/what-is-a-database-system/#respond Thu, 26 May 2022 06:00:00 +0000 https://softuni.org/?p=21165 In this lesson, we explain the concept of databases and typical CRUD operations. We will also take a look at relational and NoSQL databases.

The post What is a Database System (DBMS)? [Dev Concepts #36] appeared first on SoftUni Global.

]]>

database is a collection of data that is organized so that it can be easily accessedmanaged, and updated.

  • Usually, you need to store data that will be accessible even after you end the program execution.
  • One way to do that is by using a text file, but this is not scalable and does not provide any structure.

database-with-serverDatabases hold and manage data in the back-end systems. Almost all modern software systems use a database in some form. The data in database systems is organized in tables, collections, key-value pairs or other structures. The software, which managesretrieves and manipulates data in a database, is called Database Management System(DBMS).

Relational and Non-Relational Model

In this section, we will explain the difference between these two database models:

  • The relational model is based on tables and relationships.
  • The non-relational model is based on collections of documents.

The structure of relational databases is strict, while the non-relational is not so strict. SQL databases regulate the input data, what their format is, how different types of data are connected, etc. RDBMS systems manage relational databases and expose a universal interface for developers: the SQL language. Relational databases organize data in tables, which hold data rows, and each row holds columns.

relational-vs-nosql

Non-Relational databases have a dynamic schema. A schema is the structure of the database, which describes all its objects (tables, collections, views, and others) and their structures. The data stored in NoSQL databases are not strictly structured. Sometimes these databases are called “schema-free databases“. Properties of an entity (the columns in the SQL database) can be added dynamically. NoSQL databases can be based on several data models (several ways to structure data).

Define, Manipulate, Retrieve and Manage Data with DBMS

Database Management System (DBMS) is a server software, which takes data queries of manipulation commands from the clients, execute the commands in the database, and returns the results to the clients.

dbms-diagram

While a database could be just a collection of data files, the DBMS is what makes it so powerful with its structure, algorithms, optimizations, and APIs. For comparison, in a text file, you will be able to save whatever information you like, while in a database, managed by a DBMS, you can set rules on the incoming data. DBMS systems implement a programming API or specialized language, such as SQL, to manage data.

To do so, first, we create a query (or command) through the client that is passed to the engine through its API. The engine processes the query and accesses the data files. Then, the database storage returns the desired data from the data files to the engine. Finally, the engine processes the returned data and passes it to the client for visualizing in a human-readable format.

Databases are very powerful in keeping collections of entities. The relational model is based on tables and relationships, and the non-relational model is based on collections of documents. Database systems are an important component of most modern software systems, and therefore software engineers must have at least basic database skills

Lesson Topics

In this tutorial, we cover the following topics:
  • Databases Introduction

  • SQL vs NoSQL Databases

  • DBMS Systems

Lesson Slides

The post What is a Database System (DBMS)? [Dev Concepts #36] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-is-a-database-system/feed/ 0
Databases, MySQL and MongoDB [Dev Concepts #35] https://softuni.org/dev-concepts/databases-mysql-and-mongodb/ https://softuni.org/dev-concepts/databases-mysql-and-mongodb/#respond Mon, 09 May 2022 06:00:00 +0000 https://softuni.org/?p=20139 In this lesson, we explain the concept of databases in software development, the role of relational databases and the SQL language, and the NoSQL databases in modern software engineering.

The post Databases, MySQL and MongoDB [Dev Concepts #35] appeared first on SoftUni Global.

]]>

We will start with the concept of data storage, the need of database systems and the difference between relational and non-relational databases. You will become familiar with the concept of Database Management Systems (DBMS), such as MySQL, MongoDB and Redis.

What is more, you will learn about the relational database model, the SQL language and some of its basic commands for data query and manipulation. In the end, we will explain the NoSQL databases (which hold collections of documents) and how to query and manipulate a document-based NoSQL database.

In the end, we will show you a live demo of how to work with MongoDB and Robo 3T. From the demo, you will learn:

  • how to create a database and a collection of documents
  • how to insert a document
  • how to edit, delete and query documents

Databases

A database is a collection of data that is organized so that it can be easily accessed, managed, and updated. Database Management System (DBMS) usually manages a database. DBMS systems are also called “databases servers“, because they manage data and serve developers through an API, using the “client-server” model of communication.

Databases implement the classical CRUD operations. CRUD is an abbreviation with each letter standing for a single operation.

Those are the basic operations you will be performing on a database:

  • C – Create (or add or insert) new data.
  • R – Read (or retrieve or query) data.
  • U – Update existing data.
  • D – Delete existing data.

Relational and NoSQL Databases

relational-vs-nosql-dbs

Relational databases organize data in tables and data rows. For example, an e-commerce software could have a table holding the products. Each table row could hold product idproduct namedescriptionsupplier, and price. In relational databases, the SQL language is used to query and modify data.

NoSQL databases hold collections of documents or key-value pairs. Document databases (like MongoDB) manage collections of documents (such as products or vendors). These key-value pair structures are also known as “dictionaries“. They support a fast “search by key” operation. Key-value data storage systems are good for organizing simple data.

From Data Storage to Databases

Databases give you the possibility to keep different data about the same thing in columns or properties. Multiple data objects of the same type can be stored in a table or collection. Such data objects are also called “entities“.

table-data-info

In the image above, we have several entities like products, customers, and orders. Each entity would have several data characteristics, which can be stored in data columns or object properties. This way the data has “structure“. It is organized consistently and in a manageable way. Each row holds a single entity (in this example – an order). As you may have guessed, this is much more optimized than keeping physically thousands of receipts (on paper or in text files).

Why Do We Need Databases?

There are far more reasons to use a database rather than physical storage. Data storage is not the primary reason to use a database system.

As we said earlier, imagine having thousands of receipts. It would be quite impractical to search these receipts unless they are carefully structured and ordered. That is easily solved with a database as it is stored on your computer, or even on a cloud service. Database tables and collections can be indexed, and this allows searching millions of documents in milliseconds.

Database systems are an important component of most modern software systems, and therefore software engineers must have at least basic database skills. They are very powerful in keeping collections of entities and implement efficiently the CRUD operations, queries, searching, and many more.

Lesson Topics

In this tutorial, we cover the following topics:
  • Database Intro

  • SQL vs NoSQL Databases

  • DBMS Systems

  • Relational Databases and SQL

  • NoSQL and MongoDB

Lesson Slides

The post Databases, MySQL and MongoDB [Dev Concepts #35] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/databases-mysql-and-mongodb/feed/ 0
Bitwise Operations in Programming [Dev Concepts #34] https://softuni.org/dev-concepts/bitwise-operations-in-programming/ https://softuni.org/dev-concepts/bitwise-operations-in-programming/#respond Wed, 27 Apr 2022 06:00:00 +0000 https://softuni.org/?p=18889 In this lesson you will get an idea of bitwise operations: how they work and why we need them in computer programming. We will explain and demonstrate the main bitwise operators and introduce the concept of bitmasks.

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>

In this article, we will also solve several practical problems using bitwise operations:

  • Get the last bit from an integer
  • Get the bit at a certain index from an integer
  • Change the bit at a certain index in an integer
  • Extract the bit before the last from an integer

If you are not familiar with bits and storing data on the computer you can read our previous articles about them here:

Bitwise Operations

First, let’s start with learning about the bitwise operations in programming. They work with the binary representations of the numbers, applying bit-by-bit calculations. For example, if we have two 8-bit numbers, we can apply a bitwise operation, which takes as input the first 8 bits and the second 8 bits and produces as a result new 8 bits.

A simple bitwise operator over a single argument is the “tilde” operator – the bitwise logical NOT (also called negation). The operator “tilde” turns all zeroes to ones and all ones to zeroes, like the “exclamation mark” operator for the Boolean expressions, but it works bit by bit. For example, if we have the binary number1 0 0″, its negation “tilde 1 0 0” is “0 1 1“.

OperatorTable

The table above illustrates the work of the bitwise OR, AND, and XOR operators.

  • The bitwise OR operator (denoted by the vertical bar in most programming languages) returns 1, if one of its input bits is 1, otherwise returns 0.
  • The bitwise AND operator (denoted by the ampersand in most programming languages) returns 1, if both of its input bits are 1, otherwise returns 0.
  • The bitwise exclusive OR (XOR) operator (denoted by the ampersand in most programming languages) returns 1 if one of its arguments is 1, but not both at the same time, otherwise returns 0.

Bit Shifts

Bit shifts are bitwise operations, where bits inside a number are moved (or shifted) to the left or the right. During the shifting operation, the bits that fall at invalid positions are lost, and the bits which come from missing positions are replaced by 0.

left-and-right-shift

Bit shifting can be applied for 8-bit, 16-bit, 32-bit, and 64-bit numbers, as well as for numbers of other sizes in bits. The bit size of the number being shifted defines the valid bit positions and where the bits get lost. Bits can be shifted by more than 1 position. For example, 5 shifted left twice is 20 and 5 shifted right twice is 1.

Why We Need Bitwise Operations?​

Processing bits is important for many fields of computer science, information technologies, and software systems, like networking protocols, data storage, and file systems, binary file formatsmemory management, data compression, data encryption, video streaming, Internet of things (IoT) systems, low-level programming, computer graphics, and many others.

Binary-and-Text-File

Data compression algorithms replace bit or byte sequences with shorter bit sequences. For example, the “DEFLATEalgorithm, used to compress data in the ZIP files, finds the most often sequences and replaces them with shorter sequences, while it preserves a dictionary between the original bit sequences and their shorter compressed form. This is done using heavy bit-level processing with bitwise operations.

Many binary file formats use bits to save space. For example, PNG images (the Portable Network Graphics image format) use 3 bits to specify the color format used (8-bit color, 24-bit color, 32-bit color with transparency). These 3 bits are located at a certain offset in the PNG image header bytes, so reading and writing the value encoded in these 3 bits require bitwise operations.

To sum it up, bitwise operators work with the binary representations of the numbers, applying bit-by-bit calculations. Bit shifts are bitwise operations, where bits inside a number are shifted to the left or the right. These concepts are an important aspect of many fields of computer science.

Lesson Topics

In this tutorial, we cover the following topics:
  • Bitwise Operations

  • Bitwise Operators – Examples

  • Bit Shifts

  • Bitwise Operations Problems

  • Why We Need Bitwise Operations?

  • Bit Before the Last – Problems

Lesson Slides

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/bitwise-operations-in-programming/feed/ 0
Data Representation in Computer Memory [Dev Concepts #33] https://softuni.org/dev-concepts/data-representation-in-computer-memory/ https://softuni.org/dev-concepts/data-representation-in-computer-memory/#respond Thu, 31 Mar 2022 06:00:00 +0000 https://softuni.org/?p=16611 In this article of the series Dev Concepts, we take a look at the binary representation of integers, floating-point numbers, text, and unicode.

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>

In this lesson, we will talk about storing data in the computer memory. By the end of this article, you will know how to work with binary representation of integers, floating-point numbers, text, and Unicode.

Integer numbers are represented in the computer memory, as a sequence of bits: 8-bits, 16-bits, 24-bits, 32-bits, 64-bits, and others, but always a multiple of 8 (one byte). They can be signed or unsigned and depending on this, hold a positive, or negative value. Some values in the real world can only be positive – the number of students enrolled in a class. There can be also negative values in the real world such as daily temperature.

Positive 8-bit integers have a leading 0, followed by 7 other bits. Their format matches the pattern “0XXXXXXX” (positive sign + 7 significant bits). Their value is the decimal value of their significant bits (the last 7 bits).

Negative 8-bit integers have a leading one, followed by 7 other bits. Their format matches the pattern “1YYYYYYY” (negative sign + 7 significant bits). Their value is -128 (which is minus 2 to the power of 7) plus the decimal value of their significant bits.

8-bit-binary-integer

Example of signed 8-bit binary integer

The table below summarizes the ranges of the integer data types in most popular programming languages, which follow the underlying number representations that we discussed in this lesson. Most programming languages also have 64-bit signed and unsigned integers, which behave just like the other integer types but have significantly larger ranges.

ranges-of-integer-data-types

  • The 8-bit signed integers have a range from -128 to 127. This is the sbyte type in C# and the byte type in Java.
  • The 8-bit unsigned integers have a range from 0 to 255. This is the byte type in C#.
  • The 16-bit signed integers have a range from -32768 to 32767. This is the short type in Java, C#.
  • The 16-bit unsigned integers have a range from 0 to 65536. This is the ushort type in C#.
  • The 32-bit signed integers have a range from -231231-1 (which is from minus 2 billion to 2 billion roughly).  This is the int type in C#, Java, and most other languages. This 32-bit signed integer data type is the most often used in computer programming. Most developers write “int” when they need just a number, without worrying about the range of its possible values because the range of “int” is large enough for most use cases.

Representing Text

Computers represent text characters as unsigned integer numbers, which means that letters are sequences of bits, just like numbers.

The ASCII standard represents text characters as 8-bit integers. It is one of the oldest standards in the computer industry, which defines mappings between letters and unsigned integers. It simply assigns a unique number for each letter and thus allows letters to be encoded as numbers.

representing-textFor example, the letter “A” has ASCII code 65. The letter “B” has ASCII code 66. The “plus sign” has ASCII code 43. The hex and binary values are also shown and are useful in some situations.

Representing Unicode Text

The Unicode standard represents more than 100,000 text characters as 16-bit integers. Unlike ASCII it uses more bits per character and therefore it can represent texts in many languages and alphabets, like Latin, Cyrillic, Arabic, Chinese, Greek, Korean, Japanese, and many others. 

Here are a few examples of Unicode characters:

representing-unicode-text

  • The Latin letter “A” has Unicode number 65.
  • The Cyrillic letter “sht” has Unicode number 1097.
  • The Arabic letter “beh” has Unicode number 1576.
  • The “guitar” emoji symbol has Unicode number 127928.

In any programming language, we either declare data type before using a variable, or the language automatically assigns a specific data type. In this lesson, we have learned how computers store integer numbers, floating-point numbers, text, and other data. These concepts shouldn’t be taken lightly, and be careful with them!

Lesson Topics

In this tutorial we cover the following topics:
  • Representation of Data

  • Representing Integers in Memory

  • Representation of Signed Integers

  • Largest and Smallest Signed Integers

  • Integers and Their Ranges in Programming

  • Representing Real Numbers

  • Storing Floating-Point Numbers

  • Representing Text and Unicode Text

  • Sequences of Characters

Lesson Slides

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/data-representation-in-computer-memory/feed/ 0
Numeral Systems in Programming [Dev Concepts #32] https://softuni.org/dev-concepts/numeral-systems-in-programming/ https://softuni.org/dev-concepts/numeral-systems-in-programming/#respond Thu, 24 Mar 2022 06:00:00 +0000 https://softuni.org/?p=15750 In this article of the series Dev Concepts, we take a look at Binary, Decimal, Hexadecimal, and Conversions.

The post Numeral Systems in Programming [Dev Concepts #32] appeared first on SoftUni Global.

]]>

In this lesson, we will talk about numeral systems, which are widely used in computer programming. By the end of it, you will know how to use the binarydecimal, and hexadecimal numeral systems, their characteristics, and how to convert integers from one numeral system to another.

Numeral systems represent numbers in written form using sequences of digits. For example: the digit “4“, followed by the digit “2” in the traditional decimal system used by humans, represents the number “42.

Many systems can be used to represent numbers, like the Hindu–Arabic numerals, the Roman numerals, and the Hebrew numerals. In computer science, specific numeral systems are of big importance: the positional numeral systems. In the positional numeral systems, the value of each digit depends on its position. In the integer numbers, the digits on the left have a bigger weight than the digits, staying on the right.

Positional numeral systems use the so-called base (a number like 2, 10, or 16) that specifies how many digits are used to represent a number. For example, the decimal system uses 10 digits: 1, 2, 3, 4, 5, 6, 7, 8, 9, and 0. The binary system uses only two digits: 1 and 0. The hexadecimal system uses 16 digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F.

hex-to-decimal

On the image, you can see the decimal, binary and hexadecimal representations of the numbers 3045, and 60.

Decimal numbers use a positional numeral system of base 10. Decimal numbers are the traditional numbers used by humans in their everyday life.

Decimal numbers are represented by the following 10 digits: 012345678, and 9.

Each position in a decimal number corresponds to a certain power of 10. The rightmost position is multiplied by 1 (which is 10 raised to the power of 0), the next position on the left is multiplied by 10 (which is 10 raised to the power of 1), the next position on the left is multiplied by 100 (which is 10 raised to the power of 2), and so on. 

Four hundred and one is equal to:

  • 4 multiplied to 10 to the power of 2 + 0 multiplied to 10 to the power of 1 + 1 multiplied to 10 to the power of 0
  • which is equal to 4 multiplied by 100 + 0 multiplied by 10 + 1 multiplied by 1
  • which is equal to 400 + 0 + 1
  • which is equal to 401

conversion-model

We can think of decimal numbers as polynomials of their digits in the following form:

conversion-formula

The binary numeral systemis fundamental for computer systems. It uses base 2 and only two digits: 1 and 0Binary numbers (numbers of base 2) are sequences of zeroes and ones. For example: 5 (in decimal) is equal to 1 0 1 in binary. We denote binary numbers with a small suffix “b” at the end.

Hexadecimal numbers (also known as hex numbers) are widely used in computer science. Hex numbers use base 16 and are represented by a sequence of hex digits. The hex digits are the following literals: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F. Note that after 9 the next digit is A, which has a decimal value of 10. The next hex digits after A are B, C, D, E, and F and they have decimal values of 11121314, and 15. These decimal values are used when we convert a hex number to a decimal value.

That is the main idea about numeral systems. They are used by humans, and computers, to write numbers using digits. It is something that you shouldn’t take lightly, and be careful!

Lesson Topics

In this tutorial we cover the following topics:
  • Numeral Systems

  • Decimal Numbers

  • Binary Numbers

  • Binary and Decimal Conversion

  • Hexadecimal Numbers

  • Hex to Decimal Conversion

  • Hex to Binary Conversion

Lesson Slides

The post Numeral Systems in Programming [Dev Concepts #32] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/numeral-systems-in-programming/feed/ 0
What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/ https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/#respond Thu, 03 Mar 2022 06:00:00 +0000 https://softuni.org/?p=13387 In this article of the series Dev Concepts, we take a look at Digital Units of Measure such as Bits, Bytes, and Kilobytes.

The post What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] appeared first on SoftUni Global.

]]>

For this article, we will take a look at bits, bytes, kilobytes and other digital units in computing. Decimal units such as kilobyte (KB), megabyte (MB), and gigabyte (GB) are commonly used to express the size of data. We will briefly go through them, starting from the smallest unitbit.

As we have said, bits are the smallest unit of data used in computing. A bit is a single unit of data, which takes only two possible values: either zero (0) or one (1).

bit-image

It can store anything, which has two separate states:

  • Logical values (true or false). An example of this will be – “is the registration open now or it’s closed“.
  • Algebraic signs (plus or minus) – positive or negative number.
  • Activation states (on or off) – Similar to the first example – “the lights are switched on” or “the lights are switched off“.

In computer memory, bits don’t stay alone. They are organized in sequences of 8 bits, called bytes. These are the machine “words“. Some devices use 8-bit words, others use 16-bit words, while others use 32-bit words, but usually, bits in memory are accessed in groups (bytes in most systems). That is the reason why the capacity of computer memory is measured in bytes and megabytes (not in bits and megabits).

byte-kilobyte

Kilobytes (denoted by KB or KiB) consist of 1024 bytes. In some contexts, 1 kilobyte can mean 1000 bytes (not 1024), which comes from the widely accepted prefix “kilo“, which means 1000. For example, the hard-drive manufacturers use 1000-based kilobytes to measure the hard drive capacity, so have in mind that hard drives are smaller than their label in the shop says. 

Megabytes (denoted as MB) consist of 1024 kilobytes, which calculates to 1 048 576 bytes. For example, a photo taken with your smartphone camera is several megabytes of compressed data, holding the image pixels.

Gigabytes (denoted as GB) consist of 1024 megabytes. One gigabyte holds 1 073 741 824 bytes. For example, a 1-hour long video compressed in Full HD quality takes a few gigabytes of storage.

In the same way, the next unit is a terabyte. Terabytes (denoted as TB) consist of 1024 gigabytes. One terabyte holds nearly 1.1 trillion bytes. One terabyte hard drive typically stores a few hundred Full HD movies.

MB-GB-Chart

The next unit is a terabyte. Terabytes (denoted as TB) consist of 1024 gigabytes. One terabyte holds nearly 1.1 trillion bytes. One terabyte hard drive typically stores a few hundred Full HD movies. 

What-is-an-ExabytePetabytes (denoted as PB) consist of 1024 terabytes. One petabyte holds nearly 1.13 quadrillions of bytes. Modern data centers provide and manage storage with a capacity of multiple petabytes, sometimes multiple exabytes. The next units after petabyte are exabyte, zettabyte, and yottabyte.

In computing, a unit of information is the capacity of some standard data storage system used to measure the capacities of other systems. The most commonly used units of data storage capacity are the bit, the capacity of a system, and the byte, which is equivalent to 8 bits.

Lesson Topics

In this tutorial we cover the following topics:
  • Bits

  • Bit, Byte, KB, MB, GB, TB, and PB

Lesson Slides

The post What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/feed/ 0
Software Engineering Overview [Dev Concepts #30] https://softuni.org/dev-concepts/software-engineering-overview/ https://softuni.org/dev-concepts/software-engineering-overview/#respond Thu, 10 Feb 2022 06:00:00 +0000 https://softuni.org/?p=11933 In this article of the series Dev Concepts, we take a look at Software Engineering, Quality Assurance, Unit Testing, Source Control and Project Tracking.

The post Software Engineering Overview [Dev Concepts #30] appeared first on SoftUni Global.

]]>

For this article, we will make an overview of software engineering concepts like software development lifecycle, software quality assurance, unit testing, source control system, and project trackers. Each concept is essential for your development as a software engineer. You should have a basic knowledge of each area because they are daily used in software companies. Even if the technologies differ, the concept is still the same but with a different GUI and software.

sdlc-diagram

  • The Software Development Lifecycle is a process used by the software industry to designdevelop, and test high-quality software. It aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates. The benefits of using it only exist if the plan is followed faithfully. Read our blog post about them here.

designer-work-with-internet-vector

  • Software Quality Assurance is a term that covers all aspects of guaranteeing a high-quality software product. It includes creating processes for each stage of development to reduce bugs and flaws during the build. Companies need it to measure the quality of the software. At the heart of the QA process is software testing. Read more about them in our separate blog post here.
  • Unit testing is an important concept and practice in software development. As a term, unit tests are pieces of code that test specific functionality in a certain software component.  Unit testing frameworks simplify, structure, and organize the unit testing process. It executes the test and generates reports. Examples of unit testing frameworks are JUnit for Java and Mocha for JavaScript. Read more here.

unit_testing_guidelines

  • Git is the most popular source control system in modern software development. It is a powerful tool for version control and team collaboration at the source code level. In our article, we work with Git and GitHub by showing a few examples. We clone the repositoryedit a local file, commit the local changes, and then publish the commit. You can read it here.

github-architecture

  • Project trackers, as a term, are a simple tool that manages the project schedule, planassignarrangetrack and visualize project tasks. They are a great way to make your tasks come to life and visualize your upcoming week or month’s tasks. You can read more about them in our blog post here.

trello-design

All of these concepts are important for your future development as a software engineer. Each topic can be separated into a course and studied in detail. Even if you are indifferent to all the concepts, you should know at least the basics about each topic. In almost every interview for a software developer, you will be asked if you are familiar with these areas. Each software company uses different technologies, but the concepts are the same.

Lesson Topics

In this tutorial we cover the following topics:
  • Software Development LifeCycle
  • Software Quality Assurance (QA)
  • Unit Testing and Testing Frameworks
  • Overview of Git and GitHub
  • Project Trackers, Kanban Boards, and Trello

Lesson Slides

The post Software Engineering Overview [Dev Concepts #30] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/software-engineering-overview/feed/ 0