
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 1In 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 2Familiarity with the object model of the language.
Lecture 3. Generics & collectionsFamiliarity with collections and exceptions.
DZAt 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 basicsYou will learn how HTTP works and learn how to make HTTP requests from Curl and Java.
Lecture 5. Spring, Threads, AnnotationsFamiliarity 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, HibernateYou 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 protocolFor 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 architectureYou 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 concurrencyIn 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 collectionYou 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 questionsThe 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/atomBomberman game client:
https://github.com/rybalkinsd/atom-bomberman-frontendCourse 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 AlibabaRecall: 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!