Java programming training. Java developer

Hello. If you are reading these lines, then I confirm that these are Java lessons. The course is just crammed with practice (1200+ practical tasks) and is designed for an adult audience. I hate boring lectures, so JavaRush is made as an online game (quest).

Did you have to play and upgrade characters? Sometimes you don’t notice how you get involved, right? Guess where I'm heading? In JavaRush, you also have to upgrade your character. From level 1 to level 40. If you pass the entire course, you will become a cool Java programmer.

Pass 40 levels - you can get a job Java job junior. Although there are individuals who already at the 20th level have found a job. Because there are a lot of practical tasks in JavaRush. So many.

The game takes place in the far, far future, in the year 3017, where people live on Earth along with robots, and anyone can travel through space.

Once a spaceship crashed on an unknown planet...

background

The Galactic Rush team crash-landed on an unknown planet. When falling, the ship crashed into a mountain and was almost completely covered with rock fragments. Several days were spent in vain attempts to free the ship. The crew lost all hope of returning home and began to settle down in a new place ...

A week later, Ellie, the ship's navigator, accidentally discovered that the planet is inhabited by ... thousands of wild robots! They could help dismantle the stones and free the ship. But they are very primitive and stupid - they don't have any skills. They don't even know how to carry stones. Which would be very helpful.

The scientific head of the expedition, Professor Noodles, later recalled:
- A few days later I found a way out. I thought of taking the firmware of the robot Diego, a member of our crew, converting it to the firmware of a bricklayer and uploading it to wild robots.

But failure seemed to haunt us. After a little research, it turned out that the robots do not have a connector for downloading the firmware. They did not have any connector for flashing at all!

Bilaabo, the only alien on the crew, recalled seeing a robot on his home planet that knew programming. And not only did he know, but he himself corrected bugs in his own firmware.

It was at that moment that I had a brilliant idea. After all, once upon a time I taught one capable robot programming in Pascal.

I ordered the most talented young robot to be captured and taught Java programming. Knowing how to program, he could write any firmware for himself and help us!

In general, we caught one quick-witted specimen. Diego suggested naming him Amigo, after his brother, whom he never had.

I offered Amigo metal beads for each month of training, and ten dollars a year for subsequent work to remove the blockage. Savages and this is a lot, because we are engaged in their education for free.

Diego later writes in his memoirs:

I was outraged by such an open robbery of my colleague, but the whole team took the side of the professor and Rishi. Of course, I agreed (for show) and offered to help teach Amigo. Hehe! Especially since no one can train a robot better than another robot.

Everyone was so happy about my compliance that they also decided to take an active part in teaching Java to the Amigo robot.

You start at the first level. Your task is to upgrade Amigo to level 40. But let's start small. First, get to the second level. Maybe you will like it so much that you will not notice how you complete the course and go to work;)

And now let's move on to learning from scratch - click on the button "Open next lecture...".

Sergey
Torchikov

Program.

Teacher.

Team OTUS

Result.

Nicholas
Dobrovolsky



Anton
Matveev

Alexei
Mayanov

Paul
Strekalov

Michael
pollin

Daniel
Klipov

The course left only positive impressions for me, it allowed me to structure and deepen the knowledge gleaned from various articles and manuals for beginners, as well as set the direction for further development. From positive aspects I would like to note rather difficult homework assignments, an interesting presentation and the quality of material selection by teachers. The distinctive features of the course include the presence of an entrance threshold and a high intensity of classes. I can recommend it to those who have already mastered the basics of the language, but do not know in which direction to continue moving.

Sergey
Novozhilov

I have been looking for a course like this for a long time, not for beginners. It was very interesting and helpful. I especially want to mention the teachers. Not everyone who even knows the subject very well can tell and explain in an accessible way. Vitaly and Dmitry are good at it. Another big plus is the analysis of homework by the teacher, it is very useful to get comments and recommendations. Overall, 5 points out of 5.

Olga
bayonet

In general, I liked the course very much. Non-trivial homework, understandable and accessible lectures of teachers. The topics of the classes themselves are relevant, sometimes you don’t think about their significance in the current development, but during the discussion it becomes clear the degree of need for their understanding. Homework is checked relatively quickly, I handed it in for checking on the weekend and during the week they were checked with detailed comments. The only negative is the delicate situation with payment. I paid separately for each month. All homework handed in on time. For the project, I immediately understood that there was not enough time physically, so I refused to complete it. And it turns out that the payment of the last month (in which there are no homework) involves only the issuance of a certificate. 10000 for a certificate? Not comme il faut.

Alexei
Potekhin

Almost a year has passed since April 2018, and I only saw the button now).
In short, the course is awesome!

I liked the way the material was presented, the preparedness of the teachers for the lesson, if questions arose during the lesson, they answered them immediately, there was even an opportunity to ask in a voice. I liked homework, at first it was dz aimed at understanding the language or technology (web, jdbc). Then we started more fun, our own junit-framework for example. I really liked the design pattern homework and the json serializer. Homework was often checked, tips and hints where to dig were always on point. Sometimes it was seen that the inspector was trying to hint at the error in different ways. Those. there was no such thing that fix it here and I'll accept it. Also, the inspectors could give a task with + homework. True, I remember I refused, I really wanted to finish everything, but in fact I was in debt.

I didn’t like the platform through which the webinar passed, it was changed several times - it lags, freezes, the Internet breaks, horror in a word). Hope it's better now. Some of the topics that were considered were very much crumpled and galloped over them. There are objectively large topics in java and you can’t explain them within 1-2 lessons (Topics related to the database).

I would still go, let them teach me, but I am preparing for OCA / OCP
Good luck to all!

Yuri
Suvorov

In April, it was a year since I started programming in java, meaning that I started right from the basic course. The summary in terms of java-experience does not shine, but independent experts who give test tasks and check the code say that I write like a middle man, and that a junior needs six months of work to write "so". In fact, OTUS courses are a powerful booster in writing practice. Having half a year of little experience in java, I took two courses here at OTUS at once, these are "Java Developer" and "Java Enterprise Developer". Completed over the next six months (actually noticeably less) 28 homework assignments with reviews by teachers (actually special inspectors) were definitely not in vain. This amount of homework is certainly an incredible time-kill, so think hard before taking two courses at once. In this course "Java Developer" you will have "only" 16 assorted tasks, but not all of them are taken out. In general, it will be interesting. What will not happen is coercion in the form of testing after each topic covered, although I don’t know, maybe the administration will start (start). And also there will be no compulsion to write a project paper at the end of the course, and, worse, those who decide to take on the project will be left alone with it, but with the opportunity to ask questions. But the opportunity to gain experience in industrial development as part of the design work will not be provided, so get it on the solution of DZ.

Dmitriy
Oleinik

The course includes current technologies. Homework assignments reinforcing the lecture material are as close as possible to combat missions. There is a feeling that you are creating something really valuable and not simple. The final project provides an excellent opportunity to apply new knowledge and receive valuable recommendations from teachers on the further path of development. I thank all the teachers for their professionalism and interesting webinars!

Alexander
Ivanov

Only positive impressions.
Initially, I thought that it would not be convenient to study due to the large time difference (+7 from Moscow time), but as it turned out, it was in vain: on a weekday you watch a recording of a webinar, and on weekends you participate online.
got a lot useful information and "chips" that have already come in handy in the work. It is impossible not to note the interaction with teachers and inspectors in the process of working on the DZ. This is especially useful if there was no such experience before: an imitation of real work, so to speak.

Thanks to the teachers and the whole Otus team :)

Novel
Musiy

In my opinion, the course format is very well suited for those who want to expand their horizons and get an idea of ​​the state of affairs in Java development. For example, such a course can be useful as an intensive for a quick dive into Java development, or for more experienced developers who are learning Java and who want to gain new knowledge. Live communication with the opportunity to ask your question and get an answer is what distinguishes the course format from traditional MOOCs. A lot of practical exercises with feedback reinforce the material covered. I would like to note the very good preparation for the classes of Sergei Petrelevich. The lecture material is well structured and well presented. There were also several successful lectures from Vadim. From the lectures of Vitaly Kutsenko I probably expected more - it seems a competent teacher, but the material of the classes seemed insufficiently developed.

I also liked that the difficulty of the tasks can be chosen independently, depending on the availability of free time and your preferences.

Wishes for teachers. I usually reviewed the lectures, sometimes 2-3 times. As a rule, I do this on rewind 1.25, 1.5, 1.75. I could set the rewind speed to 1.75 only with Sergey - his speech is competent, measured, not interrupted - special thanks to him for that.

In general, I am pleased that I took this course and, as Sergey said at the last lesson, this course is not only about the ability to solve problems, but also about the ability to organize one's time.

Sergey
Torchikov

It was quite simple for me to make a decision to take a course in the Java language, it was enough to look at the teacher and the structure of the course, it was also a huge plus to see the company in which I wanted to work in the partners of the site. It is very important that before the start of the course there is an Open Doors Day, where you can personally ask questions about the course and get to know the program in more detail. I would like to sort out the main components of the course in order.

Program.

Initially, of course, doubts crept into my head, but is there any point in listening to lectures on programming that touch on the very basics (data types, for example), but as they say, repetition is the mother of learning, I decided to listen, and did not regret it. We really analyzed everything in detail and the homework assignments are very interesting, one task of measuring the work of various garbage collectors is worth something. It's nice that Hibernate and Spring are included in the program, although the basics, but this is really enough to understand in which direction to dig in which case. It was enough and footnotes to additional material expanding the topic of the lesson.

Teacher.

I don’t know if it’s worth pointing out third-party learning resources here, but let’s say I’ve been familiar with Vitaly’s lectures for a long time. I always liked that Vitaly gives many examples from life. For me personally, this is a huge problem in programming, I can learn something, understand how it works, but absolutely do not know where to apply it. All explanations are intelligible and understandable. Constantly asks what students would like to hear more about. There are examples with code for every topic, and we even experimented several times right at the lectures, trying to break something, it was quite interesting.

Team OTUS

I won’t say much here, since I didn’t really come across. But from personal observations, all questions in the general chat for programmers were resolved and in a fairly short time. The team is very loyal to the students and goes to meet. So, if you have any questions or doubts, you can always contact.

Those minuses that I can note, as far as I know, have already been fixed. For example, a platform.. All programmers treated this with understanding, because. we were the first set, so to speak pioneers

The second minus is not even a minus at all, but rather an inconvenience - one teacher. Future groups are lucky, as far as I know, they will have two teachers. This mainly refers to checking homework, 48 hours were given for checking, and if there are comments on the solution, there is a chance not to hand it in on time, because. Submit the corrected version for review. Although this was also treated loyally and no one cursed, the problem here is more likely in my perfectionism, I need to hand over everything on time

Result.

In a few days I go to work in Moscow in the very company where I wanted to work. All interviews were organized by Otus employees, so I'm certainly pleased with the result. By the way, the knowledge about garbage collectors that I mentioned earlier came in handy during the interviews. So I would like to thank once again the entire site team for their professionalism and work, as well as all the guys from the course for interesting discussions and for sharing their knowledge. I will continue to follow the courses and if there is something interesting for me, I will definitely come again!

Nicholas
Dobrovolsky

I signed up for the course mainly because Vitaly Chibrikov was announced as a teacher. I knew the teacher in other courses, plus previously listened to recordings of lectures at the Moscow State Technical University. Bauman within the framework of the TECHNOPARK project (Moscow). So I immediately decided to join the group.

Liked the course very much. The impression is very positive. A fairly large list of topics was consecrated. Some points before the course were not very familiar (for example, the topic about GC - there was theoretical knowledge, but without practical skills).

I liked the presentation of the material itself, the topics covered were considered without interruption from real life, accompanied by specific examples from real projects. A bunch of interesting examples from the teacher.

The course helped not only to systematize existing knowledge, but also to acquire new ones. I especially liked the topics about GC, JVM, multithreading in Java, interprocess communication in Java.
After the end of the course, invitations to interviews are guaranteed, so this is a huge plus)
In my opinion, it would be great to take a closer look at Spring as part of the course, but the main direction of the course was originally declared to be Java Core, so it might be worth enrolling in a Java EE course for this topic.

Anton
Matveev

The OTUS Java Developer course was very helpful for me, who had no previous experience in commercial Java development. It was he who helped bring together the knowledge gained through self-study and other courses. Unlike other courses, there was an emphasis on developing an understanding of the process: how this or that technology works and what tasks it solves, and not on a general description of its capabilities. Homework assignments are selected in such a way that they make you show creativity and re-read a lot of useful information. The tasks were especially interesting: write a json serializer, a simplified test framework, your own small orm, a message exchange server between the database and frontends. Although the homework assignments, maybe with the exception of the first ones, did not fit in at all with the declared time for homework of 4 hours a week - in order to have time to do the last 2 assignments in the course, I had to take a vacation.

Of course, the main value of the course is due to the instructor. A very high-quality explanation: I don’t remember that at least some question asked on the topic remained unanswered, it was also very pleasant and useful to receive from Vitaly not only information about the shortcomings in the remote sensing, but also suggestions for their possible improvement already beyond the scope of the task.

And, of course, the opportunity to pass interviews in large companies is very important. Each such interview is a very interesting experience in itself, regardless of the result. Personally, I found a job for myself and I am very glad that I did not regret the money for training!

Alexei
Mayanov

Before joining the course, I programmed in Java on an occasional basis. For me, the course has largely become the starting point in systematizing and expanding my own, already existing knowledge. I can say with absolute certainty that after graduating my Java skills moved to a new level, first of all I am grateful to the course authors.

In my opinion, the course is quite intensive, which, in principle, was announced at the start of training. It is not always possible to dive into the topic being studied in detail, which may leave gaps in knowledge. Therefore, it is important to periodically return to the studied materials on your own, where recordings of all past lectures and seminars are of great help.

According to my feelings, the project month turned out to be quite crumpled: it was not possible to get enough feedback by project. I think the reason is that many students have accumulated debts, and the entire teaching resource has gone to check them. I believe that in the last month, teachers should give priority to working with projects, otherwise it turns out that students who handed in all assignments on time and switched to working with projects became hostages of the debts of other students.

Separately, I want to note that the entire series of interviews that I went through gave me a certain positive experience.

Paul
Strekalov

In general, the impression of the course is positive, the course was very useful for me.

As a drawback (or feature), I would like to note that isolation from the group was felt. When completing assignments, it seemed that you were one-on-one with the teacher (chat in slack did not really help in this regard). It seems to me that communication between students through code review would have a good effect. First, the teacher checks the assignment, accepts it, and then the student must still look, give comments / comments on two or three completed and accepted works.
Vitaly also mentioned that it would be nice to do an "exhibition of interesting works" - also, I think it's worth it, but it's not clear in what format, because. debts are accumulated for the entire duration of the course and some assignments are handed over at the end.

It would be nice to add a block of theoretical questions on each topic (but Vitaly has also already talked about this). Start work on the project in the middle of the course (from the third month), and not at the end.

Michael
pollin

Hello. I have already thanked for the courses many times, but I want to do it again - many of the courses that are now in Runet are rather superficial and only give the basics. Your courses just give deeper knowledge of programming. The course itself is very interesting, but I did not have enough homework assignments - no, the assignments themselves are interesting and there are quite a lot of them, especially the last one, but, unfortunately, they do not cover all the material. Vitaliy is a highly qualified specialist and teacher, I think, for the sake of him, many enrolled in courses. Honestly, the arranged interviews, although they were announced, came as a surprise, since it was not believed that this was possible. Part of the interviews and the completion of the test task fell through due to personal circumstances. Now I'm going through several final interviews - there is a small chance to get my first job in Moscow in the field of programming. I would like more in-depth topics on Spring / Spring MVC / Spring Boot / Hibernate / Sockets / Data exchange over a network or the Internet / more data on ConcurrentCollection. And so - I will advise your courses. I really want a separate course on the topics that I wrote above + Java ee (in the part that is most in demand now by employers).

Java. Fast start
Java language basics on the example of developing a small game

The video course will introduce you to one of the most popular, beautiful, widely used, reliable programming languages ​​- Java. In the first part, you will learn the basics of the language and learn how to write simple console applications. Next, we will show you how you can create a simple game with a graphical interface in just a few minutes and not use third-party libraries. The purpose of the course: to reveal some of the features of the language and show that Java is simple and fun. After successfully completing the course, you will be able to use the model we created to develop your own games. To effectively master the material, minimal programming experience is required, therefore, for completely novice developers, we recommend that you first take the free online course “Programming Fundamentals”.

Lesson 1

Brief description of the language; installation of necessary development tools; writing the first program.

Lesson 2

Description of the fundamental concepts of the Java language using the example of a simple console calculator.

Lesson 3 Guess the number game

We are starting to write the Guess the Number console game, on the example of which we will continue to study the basics of the language.

Lesson 4

Demonstration of methods on the example of improving the game "Guess the Number".

Lesson 5

We bring the game code to the final version.

Lesson 6 Part 1

Create a game window.

Lesson 7 Part 2

Learning to upload and draw pictures; implement the game loop.

Lesson 8 Part 3

We catch mouse events and finish the development of the game.

Lesson 9

We collect the project into one jar file so that it is convenient to run it without a development environment; summing up.

Programmers are not born, they are made. And that means you have to at least try. To do this, we have created an interactive course "Fundamentals of Programming". You will learn all the most useful and relevant about modern programming languages ​​and get the first experience of writing code. We thought about how to create such an online course so that it becomes a bright and memorable event in the life of every novice programmer. After all, further interest in this direction largely depends on the first acquaintance with the code. We will tell and show how what works, what professions are in demand and what are the development prospects in each direction of the IT sphere. During the course, we will create a website with browser games and publish the project on github.com. This site will be the first case in your future portfolio, which is very important, because the portfolio is the first thing that people pay attention to when applying for a job. After completing this course, you will take the first step towards serious learning and will be able to clearly define the direction of your interests!

Lesson 1. The concept of an algorithm, variables, data types.

Introduction: what will we do on the course?
Will I become a successful programmer?
The concept of an algorithm. Installing the working environment. hello world.
Introduction to variables.
Computer architecture
Data types: strings and numbers. Operations with numbers and strings.

Lesson 2. Branching. cycles.

Branches: if/else
Loops: while, for
logical operations. do while loop.
Development of the game "Guessing"

Lesson 3

Introduction to array. Program for the development of memory.
Changing the length of an array. Multidimensional arrays. Program for the study of English.
Introduction to functions. Functions without a return parameter.
Functions with return parameters.
recursive functions. Development of a program for teaching touch typing.

Lesson 4

Introduction to HTML
Introduction to CSS
We place the game in riddles on the site
We place the game "Guessing Game" on the site
Publishing a site for hosting

Lesson 5

How to choose a programming language and direction?
Choice of programming language: web development
Mobile development. Universal programming languages
How to learn to be a programmer?

A course for beginner developers, those who want to quickly learn the basics of object-oriented programming (OOP) and learn how to create their own projects. The main feature of the course is the 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

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

Lesson 3 Tic-tac-toe procedural style

  1. Algorithm development;
  2. Creation of logic;
  3. Creation of the enemy-computer logic;
  4. Analysis of homework.

Lesson 4

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

Lesson 5

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

Lesson 6

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

Lesson 7 Tic-Tac-Toe in OOP

  1. Defining classes and GUIs;
  2. Development of logic, part 1;
  3. Development of logic, part 2;
  4. Analysis of homework.

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. We will learn basic operations: creating and cloning a repository, merging branches, querying the change history, and much more. Let's see how to turn in homework using Git. This course is basic and after it you can start learning any programming language. In addition, you will be ready for an interview, where several questions are usually about 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

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

Lesson 3

Introduction to the console client
git setup
Repository initialization
Cloning a repository
Graphical git clients

Lesson 4

Indexing
Publishing Changes
Commits
Cancel indexing
Current status

Lesson 5

History of changes
Rollback through project history
Authors of changes: git blame
Ignoring .gitignore files
Site gitignore.io
Keep folders.keep

Lesson 6

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

Lesson 7

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

Lesson 8

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

Lesson 9

Versioning methods
Tags and their relation to commits
Adding a tag
Deleting a tag
Managing a tag on a remote repository

Lesson 10

We merge changes. git merge
Moving branches. git rebase
We transfer commits. git cherry pick
Merge the commit into one. git squash
Hooks
Aliases

Lesson 11

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

Lesson 12

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

Lesson 13

Database fundamentals. 20 lessons.
Database design and SQL queries

Databases (DB) are data storage and processing systems accessed using SQL (Structured Query Language). Any modern site, game or desktop application need to store data. At the moment, there are many different database management systems (DBMS), the most popular being MySQL. “Database Fundamentals” is 20 intensive video lessons (10 minutes each), where we will go through all the stages of database design together using the example of an online store using the SQL query language. After this course, you will be able to use various databases such as MS SQL and Postgre Sql, since the syntax of the SQL language is almost the same for them.

Lesson 1

What is the difference between a database and a DBMS? what databases are called relational; review of modern DBMS.

Lesson 2

Installing the MySql DBMS and the Mysql Workbench graphical application.

Lesson 3

Data design in Excel; normal forms; primary key.

Lesson 4

Creating tables in the MySql Workbench GUI; CREATE command; data types; work in the console.

Lesson 5

Populating tables with data using GUI; INSERT command; AUTO INCREMENT.

Lesson 7

Retrieving and filtering data using the DISTINCT and LIMIT SQL commands; sorting with the ORDER BY command.

Lesson 9

The concept of consistency or data consistency.

Lesson 10

The concept of a foreign key and constraints on column values; FOREIGN KEY CONSTRAINTS.

Lesson 11

Adding a shopping cart to the online store database.

Lesson 12

Using a composite primary key when designing a many-to-many table.

Lesson 13

Getting data from several interrelated tables; the inconsistency of the approach using multiple SELECTs.

Lesson 14

Joining data from multiple tables using the INNER JOIN statement.

Lesson 15

Joining data from multiple tables using the LEFT JOIN and RIGHT JOIN statements.

Lesson 16

Combining the results of multiple SQL queries using the UNION operator.

Lesson 17

Aggregating functions COUNT, SUM, MIN, MAX.

Lesson 18

Grouping the selected set of rows using the GROUP BY clause.

Lesson 19

Filtering in GROUP BY using HAVING; increasing the speed of query execution using indexes.

Lesson 20

The concept of a transaction; TRANSACTION statement; ACID requirements for a transactional system.

Course for those who want to strengthen their knowledge in Java. On the course, students master the theory and at the same time, under the guidance of a teacher, develop a full-fledged project in Java from scratch, thus gaining practical experience in applying the complex object-oriented concepts characteristic of the language. Before taking the course, it is recommended to master the course for beginners: "Java. Level 1".

Lesson 1: Java Object Oriented Programming

An in-depth study of OOP issues in Java: the basic principles of OOP, abstract classes, interfaces.

Lesson 2

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

Lesson 3

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

Lesson 4

Create your own controls. Work with graphics. Event Handling

Lesson 5

Threads in Java, ways to create and manage thread states, common problems with threads, and synchronization.

Lesson 6

Sockets. Writing a simple echo server and console client.

Lesson 7 Part I

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

Lesson 8 Part II

Development of the interface for the client side. Authorization. Mechanisms of interaction between the client and the server.

Java. Level 3. 2 months.
Professional Development software

The course is intended for those who want to learn about the advanced features of the Java language and gain practical experience in writing applications. To successfully complete the course, students need to understand the basic concepts of programming and have an initial experience with Java. The course covers all the main topics necessary for professional work.

Lesson 1

What are generics, generic classes, methods and interfaces, generic class inheritance, limitations when working with generics

Lesson 2

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

Lesson 3

Overview of input-output facilities. Byte, character, buffered streams. Networking, object serialization/deserialization

Lesson 4. Multithreading. Part I

Multithreading in Java, shared memory, thread management and synchronization issues, interaction of threads of execution, deadlock

Lesson 5. Multithreading. Part II

Classes for working with multithreading, Concurrent collections, analysis of practical examples

Lesson 6

Logging. Testing with JUnit, writing tests, Assert class

Lesson 7. Reflection API and Annotations

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

The course focuses on the use of data structures and algorithms in Java programming. Data structures define how data is stored in computer memory. The course will cover the following data structures: arrays, stacks, queues, lists, graphs, trees, hash tables. For each data structure, algorithms will be considered that provide various operations on these structures, such as searching or sorting. The course is designed for students who have mastered the basic Java SE course.

Lesson 1

Introduction to algorithms and data structures.

Lesson 2

Working with arrays and how to sort them.

Lesson 3

An overview of the data structure, stack, queue, and priority queue.

Lesson 4

Learn how to create and use lists.

Lesson 6

Consider working with binary trees.

Lesson 7

Consider working with one of the most flexible and versatile structures.

Lesson 8

Quick lookup and insertion with hash tables.

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 how 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, replenishment of the portfolio, the ability to indicate the work on the project as a core work experience in the resume. The internship takes place in the format of part-time remote work, weekly status meetings with the teacher in the webinar format.

Lesson 1

What are the roles 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. Fundamentals of remote work. Signing up for teams.

Lesson 2

Survey of methodologies. Cascade (waterfall), Agile manifesto, Kanban, Scrum. Where and why are they used? Mixed methodologies.

Lesson 3. SCRUM Methodology

Work on SCRUM. Sprint planning. Backlog grooming. Sprint Goal. Increment. Flexible methodology in conditions of remote work. Task trackers (Trello, Favro)/

Lesson 4

Task types. Decomposition of tasks. Building a user story map. Working on user stories. Work with TK on the waterfall and in flexible methodologies.

Lesson 5

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

Lesson 6

How to write a resume so that HR does not weed it out. How to get an employer interested. How to demonstrate the skills acquired in studies if there is no relevant work experience yet.

Lesson 7

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

Lesson 8

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

How to become a programmer. 13 lessons.
Job search step by step guide

A career in programming is an exciting journey into the world modern technologies. Every developer has their 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 tutorials in which we answered the most pressing questions about the career of a programmer in companies and in the freelance market. Do you often think about employment and feel that you are ready to start earning? Then this video course is for you.

Lesson 1

Features of the profession; FAQ; demand in the labor market.

Lesson 2

Will I become a successful programmer? success factors.

Lesson 3

The most important thing is the first impression; how to name the job.

Lesson 4

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

Lesson 5 Universal programming languages

Language overview: Java, Objective-C, Swift; C#, C++, Python: the right choice.

Lesson 6

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

Lesson 7

Dream job, psychological aspects; query technique.

Lesson 8

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

Lesson 9

Overview of freelance sites; features of registration; account registration; how to stand out among the majority of performers.

Lesson 10

Order search strategy; order priority: what to take into work; Negotiation; tasks and pitfalls of TK; methods of contacting the client; writing responses and attracting the attention of customers; the right questions.

Lesson 11

Payment methods: non-cash or cash; prepaid or postpaid; an overview of situations in which each of the methods will work better; preparation for work and binding agreements with the client; features of the work process; final stages of cooperation; feedback exchange; "consult" technique.

Lesson 12

How is development in large companies? Who are analysts, designers, testers, architects, projectmanagers, team-leads, etc.

Lesson 13

What does the IT career ladder look like? In what specialties is it easier to start your journey? What are the development prospects?

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

Lesson 10

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

Moscow is a huge metropolis. This means that almost everything is here. Programming courses in Moscow can be found for every taste, but for a beginner, this variety does not make it easier. He has a reasonable question: on what basis to search? Who can be entrusted with their own education? In this article, we will not consider universities as a source of knowledge and skills for a future programmer, but will talk about private courses. About what they are, what are their features and what you should pay attention to when choosing.

Courses can be divided into face-to-face (offline) and online.

Full-time form of education

Paid programming courses

To begin with, consider paid Java courses in Moscow. They involve working in a computer class with a teacher plus doing homework. Typically a student should write 1 to 3 programming problems per week. Everything is about the same as in a university, only the audience is usually smaller and, theoretically, there is more attention to each student.

Location

Everyone who lives in the capital knows that the first question that needs to be clarified is where the programming courses are geographically located, Moscow is big. If you are lucky enough to find a school near where you work or live, then you can look at the following factors. If not... Even serious people sometimes drop out of school after missing classes several times in a row due to two-hour traffic jams.

Visiting schedule

Usually two weekday evenings after work are allocated for classes. Classes last 2-3 hours. Some programming courses in Moscow offer weekend groups. Perhaps this is convenient: the head is fresher, there are fewer traffic jams. However, this option is most often not suitable for family people.

Computer classes

Before starting classes, you need to clarify whether the courses offer computers or whether it is necessary to carry your own laptop. The second option is becoming more and more common. This has its pros and cons. If you already carry your computer with you to work, then you will not experience much discomfort, but if you don’t really want to carry your iron friend with you on the subway, you may need to look for other options.

Teacher

Very important factor! Before you pay for the course, you need to find out:
  1. Teacher qualification. Is he a professional programmer or a technical university teacher who decided to earn some money in the evenings? If he is a programmer, what company does he work for, what does his position sound like (Junior, Middle or Senior Java Developer)? It is desirable that you come across a person who knows the programming industry from the inside, and not from the stories of others.
  2. How busy is the teacher? Will the teacher have assistants or does he work alone. How many groups will this teacher lead at the same time? This is also important. Imagine: there are usually 10-15 people in a group, everyone needs to check their homework. And if the teacher has a lot of such groups? He will not physically be able to carefully study the code of each student.
  3. How long has he been taking these courses? If so, try to find forums and reviews about him: the combination “a good teacher (that is, someone who can explain complex material well) + a good programmer” is very rare. If you happen to find one, consider yourself very lucky.

Price

The number of treasury tickets that you have to pay for programmer courses in Moscow depends primarily on the previous paragraph. That is, from the qualifications and requests of the teacher. good programmer Middle level earns at least $2,000 a month, feel free to multiply by two if he is a Senior. As you understand, it is not easy to interest such a person in a part-time job. If your teacher is a recent student himself, then the courses will be cheaper, but here's the quality ... However, we won't judge. There are natural born teachers who just love teaching. Such people can earn a lot on their main job, and consider teaching as their hobby.

Training program

Usually one programming course, for example “Java from scratch” lasts 2-3 months, and there are 1-2-3 such courses offered. Two classes per week, 2-3 assignments in the same week. This is about 36 tasks per course - for a novice programmer, this is catastrophically small. Almost any educational company offers programming courses from scratch, in Moscow there are a lot of such courses for beginners. But if you already have some experience, the choice narrows sharply. The reason is the same: there are too few programmers willing to teach. And if courses for beginners are still acceptable for a green teacher or professor of computer science, then this will no longer work with “continuing” ones. In summary, advantages:
  • Personal communication with a teacher-programmer (if you're lucky);
  • Equally personal communication with other students;
  • There is a training program that you can "go to".
Flaws:
  • You need to spend time on the road to the courses;
  • A strict schedule that is easy for a working person to fall behind;
  • Few practical tasks;
  • Often - high price or low quality courses;
  • Usually - a high workload of teachers.
Of course, we give only generalized advantages and disadvantages of face-to-face courses. If you are lucky to find courses with a good teacher and a convenient location, the shortcomings are immediately leveled.

Courses / internships at companies

Courses at IT companies are very different from the face-to-face courses that we discussed above. Typically, such courses are unpaid (and sometimes paid) internships. Typically, large IT companies recruit for such courses several times a year. This is very useful, and Moscow residents should keep track of such events. Only now they need to enter, and it is not easy to do this, since there are a lot of candidates for each place. And one more important point: such courses are designed for the so-called “ experienced beginners”, in fact - almost ready-made Junior Developers with no real work experience. Accordingly, such courses usually last six months. They are very complex and require a lot of effort. From the initial group, ⅔ is eliminated by the end. As a result, the best can already be taken on regular work, on the salary of "juna". Benefits of corporate courses:
  • Free;
  • Teachers are active programmers;
  • A lot of relevant practice (the one that is needed in modern IT);
  • Almost real work experience in an IT company;
  • Chance to get a job in the company.
Disadvantages (for beginners):
  • To enter the courses, you need to be a near-ready programmer and pass a difficult selection;
  • Huge workload (often incompatible with the main work);

Form of study: online courses

Group online programming courses

This type of course is not much different from full-time courses. We have the same 2 classes per week in strictly certain time during three months. Only a group of students and a teacher do not gather in the classroom, but each at their own computer. Everything else is the same. Probably, such courses are preferable for busy Muscovites: at least the problem of wasting time and nerves on the road to the programming school disappears. In addition, these courses can be somewhat cheaper than face-to-face courses, since their organizers do not need to spend money on renting classrooms and buying equipment. There is another option for group online courses. Students do not watch live lectures, but records of webinars, and at a certain time the teacher conducts a series of consultations on theory and homework. Advantages:
  • No need to waste time and money on the road
  • Communication with the teacher and other students
Flaws:
  • Same as face-to-face courses (except for travel time)

Individual online Java courses in Moscow

Such courses are somewhat similar to mentoring, so they are usually expensive. As a rule, you move according to the program compiled by the teacher, listen to the recordings of his lectures, do your homework, get their verification and short personal consultations. A good and flexible option: there is no longer a rigid reference to the time of classes, you watch lectures when it is convenient for you and agree with the teacher about a consultation at a time convenient for you. Advantages:
  • Personal schedule
  • "Live" mentor
Flaws:
  • High price
It is possible to imagine a more budget option, in which one teacher is “shared” on a large number of students. Accordingly, not too much attention is paid to each (it all depends on the responsibility of the author of the courses). Tasks with this approach are very often checked by a simple autovalidator, in worse cases - by comparing with someone else's code on GitHub.

“Platform” Online Courses

The platforms Coursera, Udemy, edX and others contain a huge number of programming courses. There are many free ones among them, recorded by masters of their craft (the same “Harvard CS50. Fundamentals of Programming” in English is on edX, and on the JavaRush website there is a Russian of this most popular course for beginners). On some platforms, there is an approximate schedule for completing courses (most often tasks are divided into weeks) and it is better not to get out of this schedule. Usually such courses consist of videos, additional materials, tests and homework. Sometimes tasks can be verified using simple built-in validators, but more often than not, the correctness of the code cannot be reliably verified. Advantages:
  • Flexible schedule
  • Often free or not very expensive
Flaws:
  • Lack of feedback, which is why students most often drop out of such courses;
  • Few practical tasks.

Special Java courses: JavaRush

JavaRush is up to the level of Java Junior Developer.

The course is divided into 4 blocks (quests), each of which has 10 levels. While taking the course, you, like in a computer game, move from level to level, thereby pumping your knowledge and ability to program. Each level contains several short text lectures, written in the form of a dialogue of highly original characters, as well as many tasks. Only by solving most of the tasks of the level will you score enough points (here they are called “dark matter”) to go further. Each task is provided with a list of requirements, which makes it easier for beginners to understand. Also included in the course automatic check decisions and a system of recommendations - a kind of "virtual mentor". You simply press a button and the solution is sent to the “mentor”. In a moment, a response comes in which you receive information about the correctness of the solution and a list of recommendations on how to correct errors, if any. So, attention: there are more than 1200 such tasks on JavaRush! Their study is the very valuable first programming experience that beginners lack so much. Because of this feature, teachers of face-to-face or online courses often recommend JavaRush as a source of additional tasks. Most of the tasks are quite simple, but starting from the middle of the course, JavaRush offers mini-projects - these are large tasks with step by step instructions, which help students create the first complex programs. For example, the game 2048 or a restaurant emulator. Depending on the workload of the student and his skills before the start of the course, JavaRush can be completed in 3 months to a year. At the end of the course, you can sign up for an online internship, study the stack Java technologies EE and create your own project. Those who seek courses are often afraid that there is no meaningful feedback in the online environment, which makes serious problems almost intractable. JavaRush has successfully dealt with this problem with the help of the JavaRush community and the "Help" section, where you can ask questions about tasks and theory. Usually students' questions are answered fairly quickly. This is done either by other students or someone from the JavaRush team.

conclusions

Conclusions are up to you! No matter what, we wish you to find best courses for programming in Moscow or online!
What else to read: