Development of Android applications for mobile devices. Mobile developer Online courses for mobile application developers for Android

Introduction to Git
Git Basics

Over the course of 13 videos, we will get acquainted with the basics of the Git version control system. Let's find out why it is important in modern development and collaborative programming. Let's get acquainted with the basic concepts of Git: repositories, commits, branches and tags. Let's learn basic operations: creating and cloning a repository, merging branches, querying the change history, and much more. Let's see how to submit homework using Git. This course is basic and after it you can start learning any programming language. In addition, you will be prepared for the interview, where several questions usually focus on the version control system.

Lesson 1. Introduction to version control systems

What is a version control system?
Types of version control systems
Git and its benefits
Documentation

Lesson 2. Working with the command line

What is the command line?
Why is the command line important?
How to open the command line?
Useful commands

Lesson 3. Working locally with a Git repository

Introduction to the Console Client
Git setup
Initializing the repository
Cloning a repository
Graphical git clients

Lesson 4. Basic Operations

Indexing
Publishing changes
Commits
Cancel indexing
Current status

Lesson 5. History of the git project

History of changes
Rollback according to project history
Change credits: git blame
Ignoring .gitignore files
Website gitignore.io
Keeping folders.keep

Lesson 6. Branches

Branch management
Creating and deleting branches
Switching between branches
Conflict methods and their resolution
git merge

Lesson 7: Creating a remote Git repository

Git hosting (GitHub, GitLab, Bitbacket)
Creating your own bare-git repository
Register on GitHub
Publishing changes to a remote repository

Lesson 8. Deleted branches

Repository names
Multiple repositories in one project
.git/config
Managing branches on a remote repository

Lesson 9. Versioning

Versioning methods
Tags and their relationship with commits
Adding a tag
Deleting a tag
Managing a tag on a remote repository

Lesson 10. Merging and transfers

We merge the changes. git merge
We move the branches. git rebase
Moving commits. git cherry pick
We merge the commit into one. git squash
Hooks
Nicknames

Lesson 11. Gitflow

How is it used and why?
Test cycles
Possibly Blue/green
Release branches
Hotfixes

Lesson 12. SSH

SSH protocol
Why is it used?
Creating Keys
Forwarding
SSH agent
Copying files via SSH
Windows: Git for Windows
Using SSH with Git

Lesson 13. Submitting homework via Git

A course for beginner developers, those who want to quickly master the basics of object-oriented programming (OOP) and learn how to create their own projects. The main feature of the course is a combination of studying the theoretical foundations of the Java language and practical online training under the guidance of a mentor.

Lesson 1: Introduction to Java

  1. How Java works. JVM. General principles. Tools.
  2. Hello, world!
  3. Variables and data types.
  4. Methods and their application.
  5. Conditional statements.

Lesson 2. Loops and arrays

  1. The concept of cycles. while loop;
  2. Loops for, foreach;
  3. The concept of an array;
  4. Analysis of homework solutions.

Lesson 3. Workshop. Procedural Tic Tac Toe

  1. Algorithm development;
  2. Logic creation;
  3. Creating computer opponent logic;
  4. Analysis of homework.

Lesson 4. Introduction to OOP

  1. What is OOP and why is it needed? Basic concepts;
  2. Creating classes and objects;
  3. Encapsulation;
  4. Inheritance;
  5. Abstract classes, interfaces and polymorphism;
  6. Analysis of homework.

Lesson 5. Memory, data storage

  1. Data storage in Java: stack, heap;
  2. Garbage collection;
  3. String classes, string pools;
  4. Analysis of homework.

Lesson 6. Graphical interfaces

  1. Swing library and other graphics libraries. Swing Basics;
  2. Placement managers and element alignment;
  3. Events in Swing. Menus and dialog boxes;
  4. Analysis of homework.

Lesson 7. Workshop. "Tic-tac-toe" in OOP

  1. Definition of classes and GUI;
  2. Logic development, part 1;
  3. Logic development, part 2;
  4. Analysis of homework.

Java Core. Advanced level. 1 month.

The course will strengthen your knowledge of Java and teach you how to apply advanced object-oriented concepts specific to the language. Students will learn to create graphic user interfaces, work with I/O streams, exceptions, multithreading and networks. In the practical part, under the guidance of a teacher, they will develop a client-server program - a network chat - from scratch.

Lesson 1: Object-Oriented Java Programming

In-depth study of OOP issues in Java: OOP principles, classes, objects, interfaces, enumerations, internal/nested/anonymous/local classes.

Lesson 2. Exceptions

Concept of exception handling, its comparison with traditional error handling mechanism, try-catch-finally block, types of exceptions, standard exceptions in Java and their role, throwing an exception from a method.

Lesson 3. Collections

Types of containers in Java: List, Map, Set. Basic implementations and usage techniques, walking through collection elements, comparing and sorting collection elements

Lesson 4: Advanced GUI Creation

Create your own controls. Working with graphics. Event processing.

Lesson 5. Multithreading

Threads in Java, ways to create and manage thread states, main problems when working with threads and synchronization

Lesson 6. Working with the network

Sockets; writing a simple echo server and console client.

Lesson 7. Writing a network chat. Part I

Writing the client and server parts of the chat. Multi-threaded processing of client connections.

Lesson 8. Writing a network chat. Part II

Interface development for the client side; authorization; mechanisms of interaction between client and server.

Java Core. Professional level. 1 month.
Programming in Java SE 8.9

The course will open advanced language capabilities for programmers who have already gained basic experience with Java. Students will gain practice in developing multi-component GUI applications, learn how to interact with databases and ensure the reliability of their products using Unit tests and logging. The course includes a training lesson on preparing for a specialized technical interview.

Lesson 1. Generalizations

What are generalizations; generic classes; methods and interfaces; inheritance of generic classes; limitations when working with generalizations.

Lesson 2. Databases

Relational databases; SQL query language; SELECT, INSERT, UPDATE, DELETE statements; connecting to the database via JDBC; sending requests and processing results.

Lesson 3. Input/Output Tools

Overview of input/output facilities; byte, character, buffered streams; networking; serialization/deserialization of objects.

Lesson 4. Multithreading. Part I

Multithreading in Java; shared memory; flow management and synchronization issues; interaction of execution threads, mutual blocking.

Lesson 5. Multithreading. Part II

Classes for working with multithreading; Concurrent collections; analysis of practical examples.

Lesson 6. Review of development tools

Logging; testing using JUnit; writing tests; class Assert.

Lesson 7. Reflection API and Annotations

The concept of reflection; data type Class; class metadata; access to fields and methods; annotations and their use; writing your own annotations.

Android. Basic level. 1 month.
Development for mobile devices on Android Studio v 3

The course provides a theoretical basis and a practical start for Android developers: it teaches how to work in the Android Studio IDE, how to competently design and implement applications, taking into account the form factor of the device. The course program includes the development of a weather application that receives up-to-date information from the Internet.

Lesson 1. Android. First application, custom elements

Getting to know Android. Prospects. How Android works. Creating a project. Activity.

Lesson 2: Application Layouts. Debugging

Lesson 3. Activity life cycle. Saving state

Saving and restoring Activity variables. “Lonely” pattern. Application with two Activities. Launching an Activity using Intent and OnClickListener. Passing parameters.

Lesson 4. Application components. Intents

Coding style. Hotkeys. Debugging in Android Studio. Resources.

Lesson 5. Fragments

Fragments, their life cycle, interaction with activity. Callback stack. Fragment manager. Creating different interfaces using fragments.

Lesson 6: List UI Elements

View class. Layout. Containers. Marking. Review of elements and their properties. Navigation.

Lesson 7. Material Design Elements

Overview of ListView and RecyclerView. Operating principles. Overriding Adapter. Using RecyclerView.ViewHolder, RecyclerView.Adapter, RecyclerView.LayoutManager.

Lesson 8. Going online

Material design elements. CardView. TextInputLayout. CoordinatorLayout. ConstraintLayout. SnackBar.

Android. Advanced level. 1 month.
Development mobile applications on Android Studio v3

As students continue to develop a weather application, they will learn to use the Android SDK system services, content providers, database, and other hardware and software capabilities of the platform. They will gain experience creating an application interface in the Material Design style. Learn about ways to distribute a software product.

Lesson 1. Material design. Menu. Application navigation

Material design. Menu, AppBar, ActionBar and ToolBar. Navigation Drawer. Themes, theme attributes, your own styles.

Lesson 2. View life cycle. Creating a View. Calling a phone number. Sensors

Lifecycle of a View. Creating a Custom View using a specific example. Brief overview telephony, working with sensors.

Lesson 3. Multithreading

Multithreading in Android. Thread, AsyncTask using the example of loading an http page. Handler. Alternatives to AsyncTask. Service. Methods for unloading the main thread. Synchronous and asynchronous execution.

Lesson 4. Internet. Saving application settings and states

HTTP protocol. HTTP requests using HttpUrlConnection. OkHttp. Shared preferences.

Lesson 5. Working with the Internet through Retrofit. Gson and Picasso libraries

Advanced networking: Retrofit, json parsing, Gson and Picasso libraries. Examples of working with the network and open APIs (weather server).

Lesson 6. Databases. How the Content Provider works

SQLite database: creating, updating and connecting. Demonstration of working with Content Provider.

Lesson 7. Broadcast messages and Intent Filter. Push notifications

Broadcast Receiver and Intent Filter. Push notifications. An example of determining whether an application is open.

Lesson 8. Geolocation and GoogleMaps API. Publishing an application on Google Play

Positioning and GoogleMaps API. Publishing an application in the Play Store. How to upload applications to the market. Application versions, localization, and other application attributes required for distribution.

Android. Popular libraries. 1 month.
Professional development for Android

The course teaches you how to create modern and most fault-tolerant client-server applications. Explores popular software solutions and product testing methods in practice. Students will complete the development of their project - a client for Instagram.

Lesson 1: Understanding Application Architecture

MVP Design Pattern; Mosby Library; how the application architecture can and should be designed.

Lesson 2. Reactive programming

Reactive programming, reactive noodles; introduction to rxjava: how to work with asynchronous tasks beautifully and without headaches?

Lesson 3. Lambda expressions. Rxjava 2

lambda expression, rxjava – continued – version 2.

Lesson 4. Interacting with the server

Options for implementing interaction with the server; using the Retrofit library; converting server data to text; downloading a picture from the Internet using Picasso.

Lesson 5. Android. Popular libraries. ORM and data storage

Working with the Room database. Pros and cons of its use: why you can’t use a software solution in a project just because it’s fashionable and popular.

Lesson 6. Dependency Injection

Briefly about Dependency Injection; using the dagger2 library: why is it cool to use these tools?

Lesson 7. Code Testing

Test coverage in general; Why is this important? What, how, with what and why should you test? In what case is this pointless?

Let's discuss an effective set of tools that can be used in a project; Why is this necessary and what does each individually improve? Use and principle of operation of the Proguard tool, Crashlytics service, Leakcanary library; some solutions to help improve the application.

Lesson 9. Consultation with the teacher.

Lesson 10. Consultation with the teacher. Project delivery

At the new level of the database course package, students will receive comprehensive information about long-term storage. They will work closely with MySQL, a database management system that has proven itself on popular large projects. Designing databases and working with them is explained step by step. The course also introduces alternative databases: MongoDB, Redis, ElasticSearch and ClickHouse.

Lesson 1. Quick start

1.1. Types of databases.
1.2. Fundamentals of relational databases.
1.3. MySQL and clients.
1.4. Database management.
1.5. Analysis of homework.

Lesson 2. SQL Query Language

2.1. Introduction to SQL.
2.2. Numeric and string data types.
2.3. Calendar data types and sets.
2.4. Indexes.
2.5. CRUD operations.
2.6. Analysis of homework.

Lesson 3. Operators, filtering, sorting and limiting

3.1. Operators.
3.2. Conditional sampling.
3.3. Sorting and restrictions.
3.4. Predefined functions.
3.5. Predefined functions (continued).
3.6. Analysis of homework.

Lesson 4. Data Aggregation

4.1. Grouping data.
4.2. Aggregation functions.
4.3. Special features GROUP BY.
4.4. Analysis of homework.

Lesson 5. Complex queries

5.1. Types of multi-table queries and UNION
5.2. Nested Queries
5.3. JOIN table joins
5.4. Foreign Keys and Referential Integrity
5.5. Homework analysis

Lesson 6. Transactions, variables, views

6.1. Transactions.
6.2. Internal implementation of transactions.
6.3. Variables, temporary tables and dynamic queries.
6.4. Performances.
6.5. Analysis of homework.

Lesson 7. MySQL Administration

7.1. MySQL administration.
7.2. MySQL Administration (continued).
7.3. User rights.
7.4. Replication.
7.5. Replication (continued).
7.6. Analysis of homework.

Lesson 9. Query optimization

9.1. Types of tables.
9.2. Learn more about indexes.
9.3. Query optimization.
9.4. Analysis of homework.

Lesson 10. NoSQL

10.1. NoSQL databases.
10.2. Key-Value of the Redis store.
10.3. Document oriented DBMS MongoDB.
10.4. DBMS Full text search ElasticSearch.
10.5. ClickHouse columnar DBMS.
10.6. Analysis of homework.

Internship at GeekBrains. 2 months.
In webinar format

During the internship, students will have to work remotely on an Open Source project or startup. Students will be asked to choose from a set of projects available for development. Students will learn to work in a team, communicate with other developers, product and project managers, designers, learn flexible methodologies, the SCRUM framework, and master the principles of remote work. The result of the internship is the ability to work in a team, the addition of a portfolio, and the opportunity to indicate work on a project as core work experience in your resume. The internship takes place in the format of part-time remote work, weekly status meetings with the teacher in webinar format.

Lesson 1. Introduction, project selection

What roles are there in development? Product Manager, Project Manager, developer, designer. What is MVP. Architecture of modern service. How developers interact with each other. REST API, Web Socket. Backend, Frontend, mobile applications. Microservice architecture. Basics of remote work. Sign up for teams.

Lesson 2. Development methodologies

Review of methodologies. Cascade (waterfall), Agile manifesto, Kanban, Scrum. Where and for what they are used. Mixed methodologies.

Lesson 3. SCRUM methodology

Work using SCRUM. Sprint planning. Backlog grooming. Sprint goal. Increment. Flexible methodology in remote working conditions. Task trackers (Trello, Favro)/

Lesson 4. User Story Mapping

Types of tasks. Decomposition of tasks. Mapping user stories. Working on user stories. Working with technical specifications using waterfall and flexible methodologies.

Lesson 5. Responsibility, motivation, personal growth

What and how to motivate yourself. What are the levels of motivation? How not to burn out at work. And how not to forget about work.

Lesson 6. Writing a resume

How to write a resume so that HR doesn’t reject it. How to interest an employer. How to demonstrate the skills acquired in your studies if you don’t yet have relevant work experience.

Lesson 7. Preliminary summing up, preparation for project defense

Analysis of student resumes. Preliminary summary. A little about startups, monetization, investors.

Lesson 8. Summing up, demonstrating the final project

Demonstration of a working prototype by students. Discussion of the results obtained. Feedback from the teacher. Parting words.

How to become a programmer. 13 lessons.
Step by step instructions for job search

A career in programming is an exciting journey into the world modern technologies. Each developer has his own story and experience. However, there is basic algorithm, which will help you take the first steps correctly and lead to your goal. We have prepared 13 video lessons in which we answered the most pressing questions about a programming career in companies and in the freelance market. Do you often think about getting a job and feel that you are ready to start earning money? Then this video course is for you.

Lesson 1. Profession “Programmer”

Features of the profession; frequently asked questions; demand in the labor market.

Lesson 2. Career guidance

Will I become a successful programmer? Success factors.

Lesson 3. Let's start writing a resume

The most important thing is the first impression; what to name the position.

Lesson 4. Choosing a programming language: web development

Review of languages ​​for website development: HTML, CSS, JavaScript, PHP, Python, Ruby, C#, Java; the right choice.

Lesson 5. Mobile development. Universal programming languages

Overview of languages: Java, Objective-C, Swift; C#, C++, Python: the right choice.

Lesson 6. Rules for an effective resume

List of technologies; portfolio; diplomas and certificates; personal qualities. View of a technical specialist and HR.

Lesson 7. Job search: what, where, when

Dream job, psychological aspects; request technique.

Lesson 8. Interview and probationary period

Interviews for programmers: how to behave, what to say, what to listen to; probationary period and rules for passing it.

Lesson 9. Freelancing: first steps

Review of freelancing platforms; registration features; account registration; how to stand out among the majority of performers.

Lesson 10. Freelancing: getting started and finding orders

Order search strategy; order priority: what to take on; negotiations; tasks and pitfalls of technical specifications; methods of contacting the client; writing answers and attracting clients' attention; the right questions.

Lesson 11. Freelancing: order fulfillment and payment

Payment methods: bank transfer or cash; prepayment or postpayment; an overview of situations in which each method will work better; preparation for work and binding agreements with the client; features of the work process; final stages of cooperation; sharing feedback; "consult" technique.

Lesson 12. Specialties in the field of IT

How does development work in large companies? Who are analysts, designers, testers, architects, project managers, team leads, etc.

Lesson 13. Career ladder in IT

What does it look like career ladder in the IT field? Which specialties are easier to start your career in? What are the development prospects?

The course, developed jointly with the EnglishDom school, will help you master key English-language topics that are relevant for beginning IT specialists. Maximum practice and focus on IT vocabulary. 10 lessons cover the preparation of CVs, technical specifications and business letters, interviews and negotiations, international communication when promoting your project. In live dialogues in English, students will reinforce phrases that will be useful in their work for developers and testers, marketers and designers.

Lesson 10. Start up

We talk about our project and introduce the team in English.

MOOCs (Massive open online courses) are increasingly gaining popularity. You can learn anything from them, and, naturally, various aspects of mobile development. We have selected mobile development courses for you: for beginners and experienced developers and designers of applications for iOS and Android.

There are plenty of options - you can start with proven: well-known MOOC platforms. Thus, several courses in English will soon begin on Coursera.

For those who still prefer to communicate with teachers, thinkful.com is suitable. Every week you will call your personal tutor. For example, with an iOS developer (Swift course) or an Android developer. Duration: depends on your productivity - from 3 months.

A very interesting offer for those who have little time - learn how to make applications on iOS in a month. Pre-registration is currently underway.

Also on YouTube there is a set of videos “iOS Development Course Beginner” - a course on learning Objective-C (50 lessons) and Swift (40 lessons, updated). The course is completely free and, as they say, the best in RuNet:

Finally, right now e-Legion and Google are hosting a free online school for Android developers - LearnDroid. These are 13 video lessons with tests that are released every week starting March 30th. All topics in the program were selected and agreed upon with Google representatives. Teachers are leading developers of e-Legion, Google, Tinkoff, Mail.ru, OK.ru, JetBrains, Kaspersky Lab, Parallels, LinguaLeo, Aviasales and ABBYY. At the end, the most diligent will receive a pleasant bonus in addition to knowledge - a company certificate.

If you have taken or know of any other courses, write to us and we will tell our readers about them!

If you find a typo, highlight it and press Ctrl + Enter! To contact us you can use .

Mobile developer is a specialist who develops software applications for various mobile devices: tablets, smartphones. Profession on at the moment the most fashionable, promising and in demand. After all, it is in the field of mobile development that such interesting new products as voice and gesture interfaces have appeared. The profession is suitable for those who are interested in computer science (see choosing a profession based on interest in school subjects).

There is an acute shortage of specialists in this profile on the job market. And in the future the situation will only get worse, since the modern world can no longer be imagined without mobile devices, which are used not only by advanced youth, but also by all segments of the population. More and more people access the Internet from mobile devices. The Russian mobile device market is the fastest growing. The man of the future does not want to be tied to the office with its heavy computer equipment, when there is real opportunity solve any issues using mobile devices literally on the go.

Many computer programs moved to mobile devices and functions successfully there. And in the future their “mobilization” will only intensify.

The advantage and uniqueness of the profession of a mobile developer is that everything depends only on you: having an initially good idea and competently implementing it into the world mobile technologies Without investing resources, you can create an international project similar to Instagram in the shortest possible time and become a millionaire.

Mobile applications are extremely popular among entrepreneurs of all levels. If an application is relevant, easy to use, functional, and solves important user problems, it will significantly increase the number of customers and increase business profits.

Features of the profession

The functional responsibilities of a mobile developer are not clearly defined at the moment due to the youth of the profession. He has to be a designer, layout designer, and programmer at the same time. In general, the activities of a mobile developer can be divided into several stages:

  • preparatory period in creating the application - determining specific customer requirements in the form of technical specifications;
  • creating a mobile application that combines such mandatory qualities as trouble-free operation on one of the mobile operating platforms ( Apple iOS, Google Android, Windows Mobile), convenient user interface, multifunctionality, profitability for the customer.

Pros and cons of the profession

Pros

  1. A highly paid, in-demand profession.
  2. The clarity of standards and guidelines greatly facilitates the design part of a mobile developer’s work. Guideline is detailed descriptions elements in mobile applications, and they are different for each platform.
  3. The resource investment for mobile development is low.

Cons

  1. The policy of companies producing mobile devices does not allow the developer to quickly make amendments to the application, since any action is checked by company employees. So, Apple checks for any update within a week.
  2. Users' pickiness about the design and functionality of applications causes many unpleasant moments.

Place of work

There have been no boundaries in the IT field for a long time. You can work without leaving home for any transnational company in the world or private business. Jobs for a mobile developer can be found on freelance exchanges and job sites. Or you can create your own mobile application development business.

Important qualities

One of the most important qualities of a mobile developer is the ability to respond constructively to criticism from users who leave their feedback on the operation of applications in Google Play And App Store. After all, negative reviews are not always aimed at offending the developer. As a rule, they indicate some specific problems in the mobile application and the developer should solve them.

Required personal qualities:

  • analytical mind;
  • attention to detail;
  • high performance;
  • ability to plan and meet deadlines;
  • desire to improve professional skills;
  • studying new technologies for mobile operating systems.

Professional skills and knowledge

knowledge of programming languages:

  • Apple iOS - Objective-C, Swift
  • Google Android - Java, Scala
  • Windows Mobile - C#, VB.NET;
  • ability to create applications for Android, iOS, Windows Mobile;
  • application debugging;
  • knowledge of the basics of programming for iPhone and iPad;
  • knowledge of new technology libraries
  • for iOS - Siri, for Android - “OK, Google”;
  • working with a SQLite database.

Mobile developer training

An international educational institution that provides training. Operating since 1999. 42 branches in 16 countries. Largest authorized training center Microsoft, Cisco, Autodesk. Students receive international certificates and an international diploma. The main goal is the employment of every graduate.

The peculiarity of mobile applications is that they are created using ready-made solutions like a designer. This makes it possible to obtain the necessary education in the shortest possible time by completing special courses. Many experienced users of mobile applications independently master the skills of developing mobile applications on various Internet services, but this is a long journey of trial and error, which is better to go through under the guidance of an experienced developer. In addition, the theory must be immediately supported by the practical application of the acquired knowledge, which is provided for in the course programs. The courses are taught remotely, which is very convenient in terms of saving time and money.

But even after completing the coolest courses, independent work on self-improvement of professional skills is necessary on an ongoing basis.

Introduction to Git
Git Basics

Over the course of 13 videos, we will get acquainted with the basics of the Git version control system. Let's find out why it is important in modern development and collaborative programming. Let's get acquainted with the basic concepts of Git: repositories, commits, branches and tags. Let's learn basic operations: creating and cloning a repository, merging branches, querying the change history, and much more. Let's see how to submit homework using Git. This course is basic and after it you can start learning any programming language. In addition, you will be prepared for the interview, where several questions usually focus on the version control system.

Lesson 1. Introduction to version control systems

What is a version control system?
Types of version control systems
Git and its benefits
Documentation

Lesson 2. Working with the command line

What is the command line?
Why is the command line important?
How to open the command line?
Useful commands

Lesson 3. Working locally with a Git repository

Introduction to the Console Client
Git setup
Initializing the repository
Cloning a repository
Graphical git clients

Lesson 4. Basic Operations

Indexing
Publishing changes
Commits
Cancel indexing
Current status

Lesson 5. History of the git project

History of changes
Rollback according to project history
Change credits: git blame
Ignoring .gitignore files
Website gitignore.io
Keeping folders.keep

Lesson 6. Branches

Branch management
Creating and deleting branches
Switching between branches
Conflict methods and their resolution
git merge

Lesson 7: Creating a remote Git repository

Git hosting (GitHub, GitLab, Bitbacket)
Creating your own bare-git repository
Register on GitHub
Publishing changes to a remote repository

Lesson 8. Deleted branches

Repository names
Multiple repositories in one project
.git/config
Managing branches on a remote repository

Lesson 9. Versioning

Versioning methods
Tags and their relationship with commits
Adding a tag
Deleting a tag
Managing a tag on a remote repository

Lesson 10. Merging and transfers

We merge the changes. git merge
We move the branches. git rebase
Moving commits. git cherry pick
We merge the commit into one. git squash
Hooks
Nicknames

Lesson 11. Gitflow

How is it used and why?
Test cycles
Possibly Blue/green
Release branches
Hotfixes

Lesson 12. SSH

SSH protocol
Why is it used?
Creating Keys
Forwarding
SSH agent
Copying files via SSH
Windows: Git for Windows
Using SSH with Git

Lesson 13. Submitting homework via Git

A course for beginner developers, those who want to quickly master the basics of object-oriented programming (OOP) and learn how to create their own projects. The main feature of the course is a combination of studying the theoretical foundations of the Java language and practical online training under the guidance of a mentor.

Lesson 1: Introduction to Java

  1. How Java works. JVM. General principles. Tools.
  2. Hello, world!
  3. Variables and data types.
  4. Methods and their application.
  5. Conditional statements.

Lesson 2. Loops and arrays

  1. The concept of cycles. while loop;
  2. Loops for, foreach;
  3. The concept of an array;
  4. Analysis of homework solutions.

Lesson 3. Workshop. Procedural Tic Tac Toe

  1. Algorithm development;
  2. Logic creation;
  3. Creating computer opponent logic;
  4. Analysis of homework.

Lesson 4. Introduction to OOP

  1. What is OOP and why is it needed? Basic concepts;
  2. Creating classes and objects;
  3. Encapsulation;
  4. Inheritance;
  5. Abstract classes, interfaces and polymorphism;
  6. Analysis of homework.

Lesson 5. Memory, data storage

  1. Data storage in Java: stack, heap;
  2. Garbage collection;
  3. String classes, string pools;
  4. Analysis of homework.

Lesson 6. Graphical interfaces

  1. Swing library and other graphics libraries. Swing Basics;
  2. Placement managers and element alignment;
  3. Events in Swing. Menus and dialog boxes;
  4. Analysis of homework.

Lesson 7. Workshop. "Tic-tac-toe" in OOP

  1. Definition of classes and GUI;
  2. Logic development, part 1;
  3. Logic development, part 2;
  4. Analysis of homework.

Java Core. Advanced level. 1 month.

The course will strengthen your knowledge of Java and teach you how to apply advanced object-oriented concepts specific to the language. Students will learn to create graphical user interfaces, work with I/O streams, exceptions, multithreading and networks. In the practical part, under the guidance of a teacher, they will develop a client-server program - a network chat - from scratch.

Lesson 1: Object-Oriented Java Programming

In-depth study of OOP issues in Java: OOP principles, classes, objects, interfaces, enumerations, internal/nested/anonymous/local classes.

Lesson 2. Exceptions

Concept of exception handling, its comparison with traditional error handling mechanism, try-catch-finally block, types of exceptions, standard exceptions in Java and their role, throwing an exception from a method.

Lesson 3. Collections

Types of containers in Java: List, Map, Set. Basic implementations and usage techniques, walking through collection elements, comparing and sorting collection elements

Lesson 4: Advanced GUI Creation

Create your own controls. Working with graphics. Event processing.

Lesson 5. Multithreading

Threads in Java, ways to create and manage thread states, main problems when working with threads and synchronization

Lesson 6. Working with the network

Sockets; writing a simple echo server and console client.

Lesson 7. Writing a network chat. Part I

Writing the client and server parts of the chat. Multi-threaded processing of client connections.

Lesson 8. Writing a network chat. Part II

Interface development for the client side; authorization; mechanisms of interaction between client and server.

Java Core. Professional level. 1 month.
Programming in Java SE 8.9

The course will open advanced language capabilities for programmers who have already gained basic experience with Java. Students will gain practice in developing multi-component GUI applications, learn how to interact with databases and ensure the reliability of their products using Unit tests and logging. The course includes a training lesson on preparing for a specialized technical interview.

Lesson 1. Generalizations

What are generalizations; generic classes; methods and interfaces; inheritance of generic classes; limitations when working with generalizations.

Lesson 2. Databases

Relational databases; SQL query language; SELECT, INSERT, UPDATE, DELETE statements; connecting to the database via JDBC; sending requests and processing results.

Lesson 3. Input/Output Tools

Overview of input/output facilities; byte, character, buffered streams; networking; serialization/deserialization of objects.

Lesson 4. Multithreading. Part I

Multithreading in Java; shared memory; flow management and synchronization issues; interaction of execution threads, mutual blocking.

Lesson 5. Multithreading. Part II

Classes for working with multithreading; Concurrent collections; analysis of practical examples.

Lesson 6. Review of development tools

Logging; testing using JUnit; writing tests; class Assert.

Lesson 7. Reflection API and Annotations

The concept of reflection; data type Class; class metadata; access to fields and methods; annotations and their use; writing your own annotations.

Android. Basic level. 1 month.
Development for mobile devices on Android Studio v 3

The course provides a theoretical basis and a practical start for Android developers: it teaches how to work in the Android Studio IDE, how to competently design and implement applications, taking into account the form factor of the device. The course program includes the development of a weather application that receives up-to-date information from the Internet.

Lesson 1. Android. First application, custom elements

Getting to know Android. Prospects. How Android works. Creating a project. Activity.

Lesson 2: Application Layouts. Debugging

Lesson 3. Activity life cycle. Saving state

Saving and restoring Activity variables. “Lonely” pattern. Application with two Activities. Launching an Activity using Intent and OnClickListener. Passing parameters.

Lesson 4. Application components. Intents

Coding style. Hotkeys. Debugging in Android Studio. Resources.

Lesson 5. Fragments

Fragments, their life cycle, interaction with activity. Callback stack. Fragment manager. Creating different interfaces using fragments.

Lesson 6: List UI Elements

View class. Layout. Containers. Marking. Review of elements and their properties. Navigation.

Lesson 7. Material Design Elements

Overview of ListView and RecyclerView. Operating principles. Overriding Adapter. Using RecyclerView.ViewHolder, RecyclerView.Adapter, RecyclerView.LayoutManager.

Lesson 8. Going online

Material design elements. CardView. TextInputLayout. CoordinatorLayout. ConstraintLayout. SnackBar.

Android. Advanced level. 1 month.
Development of mobile applications on Android Studio v3

As students continue to develop a weather application, they will learn to use the Android SDK system services, content providers, database, and other hardware and software capabilities of the platform. They will gain experience creating an application interface in the Material Design style. Learn about ways to distribute a software product.

Lesson 1. Material design. Menu. Application navigation

Material design. Menu, AppBar, ActionBar and ToolBar. Navigation Drawer. Themes, theme attributes, your own styles.

Lesson 2. View life cycle. Creating a View. Calling a phone number. Sensors

Lifecycle of a View. Creating a Custom View using a specific example. Brief overview of telephony, working with sensors.

Lesson 3. Multithreading

Multithreading in Android. Thread, AsyncTask using the example of loading an http page. Handler. Alternatives to AsyncTask. Service. Methods for unloading the main thread. Synchronous and asynchronous execution.

Lesson 4. Internet. Saving application settings and states

HTTP protocol. HTTP requests using HttpUrlConnection. OkHttp. Shared preferences.

Lesson 5. Working with the Internet through Retrofit. Gson and Picasso libraries

Advanced networking: Retrofit, json parsing, Gson and Picasso libraries. Examples of working with the network and open APIs (weather server).

Lesson 6. Databases. How the Content Provider works

SQLite database: creating, updating and connecting. Demonstration of working with Content Provider.

Lesson 7. Broadcast messages and Intent Filter. Push notifications

Broadcast Receiver and Intent Filter. Push notifications. An example of determining whether an application is open.

Lesson 8. Geolocation and GoogleMaps API. Publishing an application on Google Play

Positioning and GoogleMaps API. Publishing an application in the Play Store. How to upload applications to the market. Application versions, localization, and other application attributes required for distribution.

Android. Popular libraries. 1 month.
Professional development for Android

The course teaches you how to create modern and most fault-tolerant client-server applications. Explores popular software solutions and product testing methods in practice. Students will complete the development of their project - a client for Instagram.

Lesson 1: Understanding Application Architecture

MVP Design Pattern; Mosby Library; how the application architecture can and should be designed.

Lesson 2. Reactive programming

Reactive programming, reactive noodles; introduction to rxjava: how to work with asynchronous tasks beautifully and without headaches?

Lesson 3. Lambda expressions. Rxjava 2

lambda expression, rxjava – continued – version 2.

Lesson 4. Interacting with the server

Options for implementing interaction with the server; using the Retrofit library; converting server data to text; downloading a picture from the Internet using Picasso.

Lesson 5. Android. Popular libraries. ORM and data storage

Working with the Room database. Pros and cons of its use: why you can’t use a software solution in a project just because it’s fashionable and popular.

Lesson 6. Dependency Injection

Briefly about Dependency Injection; using the dagger2 library: why is it cool to use these tools?

Lesson 7. Code Testing

Test coverage in general; Why is this important? What, how, with what and why should you test? In what case is this pointless?

Let's discuss an effective set of tools that can be used in a project; Why is this necessary and what does each individually improve? Use and principle of operation of the Proguard tool, Crashlytics service, Leakcanary library; some solutions to help improve the application.

Lesson 9. Consultation with the teacher.

Lesson 10. Consultation with the teacher. Project delivery

At the new level of the database course package, students will receive comprehensive information about long-term storage. They will work closely with MySQL, a database management system that has proven itself on popular large projects. Designing databases and working with them is explained step by step. The course also introduces alternative databases: MongoDB, Redis, ElasticSearch and ClickHouse.

Lesson 1. Quick start

1.1. Types of databases.
1.2. Fundamentals of relational databases.
1.3. MySQL and clients.
1.4. Database management.
1.5. Analysis of homework.

Lesson 2. SQL Query Language

2.1. Introduction to SQL.
2.2. Numeric and string data types.
2.3. Calendar data types and sets.
2.4. Indexes.
2.5. CRUD operations.
2.6. Analysis of homework.

Lesson 3. Operators, filtering, sorting and limiting

3.1. Operators.
3.2. Conditional sampling.
3.3. Sorting and restrictions.
3.4. Predefined functions.
3.5. Predefined functions (continued).
3.6. Analysis of homework.

Lesson 4. Data Aggregation

4.1. Grouping data.
4.2. Aggregation functions.
4.3. Special features GROUP BY.
4.4. Analysis of homework.

Lesson 5. Complex queries

5.1. Types of multi-table queries and UNION
5.2. Nested Queries
5.3. JOIN table joins
5.4. Foreign Keys and Referential Integrity
5.5. Homework analysis

Lesson 6. Transactions, variables, views

6.1. Transactions.
6.2. Internal implementation of transactions.
6.3. Variables, temporary tables and dynamic queries.
6.4. Performances.
6.5. Analysis of homework.

Lesson 7. MySQL Administration

7.1. MySQL administration.
7.2. MySQL Administration (continued).
7.3. User rights.
7.4. Replication.
7.5. Replication (continued).
7.6. Analysis of homework.

Lesson 9. Query optimization

9.1. Types of tables.
9.2. Learn more about indexes.
9.3. Query optimization.
9.4. Analysis of homework.

Lesson 10. NoSQL

10.1. NoSQL databases.
10.2. Key-Value of the Redis store.
10.3. Document oriented DBMS MongoDB.
10.4. Full-text search DBMS ElasticSearch.
10.5. ClickHouse columnar DBMS.
10.6. Analysis of homework.

Internship at GeekBrains. 2 months.
In webinar format

During the internship, students will have to work remotely on an Open Source project or startup. Students will be asked to choose from a set of projects available for development. Students will learn to work in a team, communicate with other developers, product and project managers, designers, learn flexible methodologies, the SCRUM framework, and master the principles of remote work. The result of the internship is the ability to work in a team, the addition of a portfolio, and the opportunity to indicate work on a project as core work experience in your resume. The internship takes place in the format of part-time remote work, weekly status meetings with the teacher in webinar format.

Lesson 1. Introduction, project selection

What roles are there in development? Product Manager, Project Manager, developer, designer. What is MVP. Architecture of modern service. How developers interact with each other. REST API, Web Socket. Backend, Frontend, mobile applications. Microservice architecture. Basics of remote work. Sign up for teams.

Lesson 2. Development methodologies

Review of methodologies. Cascade (waterfall), Agile manifesto, Kanban, Scrum. Where and for what they are used. Mixed methodologies.

Lesson 3. SCRUM methodology

Work using SCRUM. Sprint planning. Backlog grooming. Sprint goal. Increment. Flexible methodology in remote working conditions. Task trackers (Trello, Favro)/

Lesson 4. User Story Mapping

Types of tasks. Decomposition of tasks. Mapping user stories. Working on user stories. Working with technical specifications using waterfall and flexible methodologies.

Lesson 5. Responsibility, motivation, personal growth

What and how to motivate yourself. What are the levels of motivation? How not to burn out at work. And how not to forget about work.

Lesson 6. Writing a resume

How to write a resume so that HR doesn’t reject it. How to interest an employer. How to demonstrate the skills acquired in your studies if you don’t yet have relevant work experience.

Lesson 7. Preliminary summing up, preparation for project defense

Analysis of student resumes. Preliminary summary. A little about startups, monetization, investors.

Lesson 8. Summing up, demonstrating the final project

Demonstration of a working prototype by students. Discussion of the results obtained. Feedback from the teacher. Parting words.

How to become a programmer. 13 lessons.
Step-by-step instructions for finding a job

A career in programming is an exciting journey into the world of modern technology. Each developer has his own story and experience. However, there is a basic algorithm that will help you take the first steps correctly and lead to your goal. We have prepared 13 video lessons in which we answered the most pressing questions about a programming career in companies and in the freelance market. Do you often think about getting a job and feel that you are ready to start earning money? Then this video course is for you.

Lesson 1. Profession “Programmer”

Features of the profession; frequently asked questions; demand in the labor market.

Lesson 2. Career guidance

Will I become a successful programmer? Success factors.

Lesson 3. Let's start writing a resume

The most important thing is the first impression; what to name the position.

Lesson 4. Choosing a programming language: web development

Review of languages ​​for website development: HTML, CSS, JavaScript, PHP, Python, Ruby, C#, Java; the right choice.

Lesson 5. Mobile development. Universal programming languages

Overview of languages: Java, Objective-C, Swift; C#, C++, Python: the right choice.

Lesson 6. Rules for an effective resume

List of technologies; portfolio; diplomas and certificates; personal qualities. View of a technical specialist and HR.

Lesson 7. Job search: what, where, when

Dream job, psychological aspects; request technique.

Lesson 8. Interview and probationary period

Interviews for programmers: how to behave, what to say, what to listen to; probationary period and rules for passing it.

Lesson 9. Freelancing: first steps

Review of freelancing platforms; registration features; account registration; how to stand out among the majority of performers.

Lesson 10. Freelancing: getting started and finding orders

Order search strategy; order priority: what to take on; negotiations; tasks and pitfalls of technical specifications; methods of contacting the client; writing answers and attracting clients' attention; the right questions.

Lesson 11. Freelancing: order fulfillment and payment

Payment methods: bank transfer or cash; prepayment or postpayment; an overview of situations in which each method will work better; preparation for work and binding agreements with the client; features of the work process; final stages of cooperation; sharing feedback; "consult" technique.

Lesson 12. Specialties in the field of IT

How does development work in large companies? Who are analysts, designers, testers, architects, project managers, team leads, etc.

Lesson 13. Career ladder in IT

What does the career ladder in IT look like? Which specialties are easier to start your career in? What are the development prospects?

The course, developed jointly with the EnglishDom school, will help you master key English-language topics that are relevant for beginning IT specialists. Maximum practice and focus on IT vocabulary. 10 lessons cover the preparation of CVs, technical specifications and business letters, interviews and negotiations, international communication when promoting your project. In live dialogues in English, students will reinforce phrases that will be useful in their work for developers and testers, marketers and designers.

Lesson 10. Start up

We talk about our project and introduce the team in English.

Whether you like it or not (it’s possible that you don’t even care about it at all), the mobile application market is growing and expanding. All more people They can’t imagine their life without a smartphone, with which you can do anything: call a taxi through the appropriate application, transfer money, and finally, track your daily activity and count calories. These are the most banal examples that convey the essence of the phenomenon - mobile devices have organically entered our daily lives.

This trend currently looks quite long-lasting. There is simply no reason to believe that people will stop using smartphones and tablets en masse in the near future. Accordingly, they will need applications, games and all that stuff. So it turns out that mobile developers will definitely not sit idle and have no money.

Now is perhaps the best time to master this profession. The market is rapidly developing, but is not yet oversaturated with personnel, so you have a very real chance to offer your services and receive a decent reward for them. Don't you know how? Learn. :)

Where to learn

I’ll say right away, don’t waste your time and energy, go to the courses. Of course, you can try to figure out the intricacies of creating applications on your own, but this is an option for those who have absolutely nothing to do. Theory without practice is worthless, and it is better to apply knowledge in practice under the guidance of professionals.

Actually, it is the professionalism of the mentors that will become the first criterion in choosing a school. Educational portal GeekBrains gathered the best of the best: teachers from the country's leading universities, employees of large IT companies - in general, people who understand how things are in the industry and can tell others about it.

The impressive length of the courses is another plus. To learn a completely new area of ​​activity and understand all the intricacies, it will take about a year of high-quality and regular work.

If someone promises to teach you how to create mobile applications in a month, don’t believe it, it’s impossible by definition.

Finally, find out how things are going with the further employment of graduates. Will you be offered an internship or will you be sent to find your place in life on your own? GeekBrains gives you three options to choose from: work within an IT incubator, in one of the partner companies, or under the guidance of educational portal specialists.