📜 ⬆️ ⬇️

The course "Development in Java" from Mail.Ru Group on Tekhnostrim channel



This spring we posted on the channel Technostream recording course on Java . For several semesters in a row, it has been read as part of the Tehnosphere educational project, implemented by the Mail.Ru Group together with Moscow State University. M. V. Lomonosov. The course includes all the topics needed by a novice developer in the Java world. The authors do not go into the details of the syntax, but immediately take on practical tasks: developing a game with a console interface and a functional chat. At the end of the course, you’ll learn frequent questions from junior and middle Java-developer interviews.

The lecture notes and course materials are free and available to anyone.
')
Most homework can be done and checked in the course repository.

For whom


It is assumed that students did not come across Java, but are familiar with any modern programming language (JS / Python / C # / C / C ++) and the basics of OOP.

Duration


The course consists of 3 parts, includes 13 lectures and 1 hakaton. Duration of lectures - 1-2 hours.

Course content


Part 1. Introduction to Java Development


Lecture 1. Java intro 1
In the first lecture you will be briefly acquainted with the syntax of the language and deal with HelloWorld. The course is built around Github, so at the first lesson you will learn how to work with Git, build a project using gradle and pull a request to Github.

Lecture 2. Java intro 2
Familiarity with the object model of the language.

Lecture 3. Generics & collections
Familiarity with collections and exceptions.

DZ
At the end of three lectures you will get the task: to develop a small game with a console interface (bulls and cows). Authors advise those who take a course on Youtube to perform this task in order to deal with the material in practice. Doing your hands is not watching videos on Youtube;)

Part 2. Web services


Java is an industrial language that dominates the field of large web applications. In the second part you will learn how to make web-services.

Lecture 4. Web basics
You will learn how HTTP works and learn how to make HTTP requests from Curl and Java.

Lecture 5. Spring, Threads, Annotations
Familiarity with the popular Spring framework, which simplifies the development of web applications.

In order for students to practice working with Spring, after the fifth lecture, a team hackathon will take place. For a limited time, you need to develop a chat and make it as functional as possible. If you watch the course on Youtube, you can independently make a chat and experiment with it.

Lectures 6-7. Java + DB, Hibernate
You will learn to work with databases. In full-time course, we raised databases for students at AWS. For those taking an online course, we recommend raising databases locally or using in-memory databases (H2).

Part 3. Game


You will receive an assignment to develop a client-server game Bomberman. The JS game client, created on the basis of the Mat Scala project , is in a separate repository .

A formal description of the interaction of game services can be found here , but an illustrative diagram .

Lecture 8. Full-duplex WebSocket protocol
For communication between a client and a multiplayer game server is much better than HTTP, the full-duplex WebSocket protocol is suitable. You will learn how to work with it and redo your chat, previously written on the basis of HTTP, on WebSocket. Unfortunately, there are no videos of this lecture on Youtube, but all materials are available on Github.

Lecture 9. Game architecture
You will understand the structure of the game and the mechanism of interaction of services.

Part 4. Advanced Topics


In this part, we analyze two topics that are traditionally considered advanced, but any Java developer should have basic knowledge of these topics.

Lectures 10-11. Game threads, Practical concurrency
In Lecture 10, examples of the dangers of multi-threaded development are considered by example, and Lecture 11 deals with ways to circumvent them. Pay attention to the flow model of the game service .

Lecture 12. Garbage collection
You will learn how heap works and how garbage collection works. At the same time, knowledge about the structure of data structures is used to evaluate the objects' layout.

Lecture 13. Interview questions
The last lecture of the course is devoted to the analysis of the most popular questions in interviews on Java (junior-middle developer).

General course information


All course materials: https://github.com/rybalkinsd/atom

Bomberman game client: https://github.com/rybalkinsd/atom-bomberman-frontend

Course channel in Telegram - here you can get answers to all questions related to the course.

Please note that at the end of some lectures there is a description of homework, and in the code of lectures there are tests. Make a pull request to the branch of the lecture. If the tests on the travis are green - you have completed the task correctly.

DZ students enrolled in an online course are not verified. However, you can freely do pull requests to the project and see if the travis tests pass successfully. In addition, any questions on the course you can ask in the chat. Authors appreciate feedback, especially in the form of pull requests with suggestions and corrections.

The authors



Alexander Pomosov, Senior Engineer in Alibaba


Sergey Rybalkin, Principal Engineer at Alibaba

Recall: the course is available to everyone on our educational channel Tehnostrim . You can chat with other participants and ask questions to teachers in the comments under the course playlist and in a chat in Telegram .

Programming is engineering, much more open to experimentation than other areas of engineering. Make your project, experiment with it, and you will get not only experience, but also a lot of fun!

Source: https://habr.com/ru/post/420693/


All Articles