site/page-data/en/pages/kotlin/page-data.json

1 line
12 KiB
JSON
Raw Normal View History

2020-03-21 20:12:32 +03:00
{"componentChunkName":"component---src-components-templates-course-template-js","path":"/en/pages/kotlin","result":{"data":{"course":{"html":"<p><strong>On Thursdays, at 17.05 in 432MB. The first lesson will be held on February 20.</strong></p>\n<p>Recording of lectures in 2019 is available <a href=\"https://www.youtube.com/playlist?list=PL4_hYwCyhAvZzRpbK4iTy9S6_OWZNEiVk\">here</a>.</p>\n<h2>Course purpose</h2>\n<p>As physics (and science in general) develops, computer methods are becoming more and more important in the daily work of a scientist. In conducting an experiment, computer methods and tools are used at all stages of the work: planning the experiment, preparing the installation, collecting data, processing and publishing it. In such a situation, the quality of the programs used is beginning to play an important role. In addition, there is a need for specialists who understand both science and programming and who develop and improve software tools. </p>\n<p>Most students (and scientists) are more or less familiar with the basic tools of a programmer, for example, writing simple programs in Python. This is not enough for serious scientific development, so the course aims at a more advanced understanding of hardware, program structure and modern development tools.</p>\n<p>As the main programming language we will use <code>Kotlin</code>, which appeared recently and managed to gain a large market share. Kotlin has several significant advantages as an initial language for advanced scientific programming:</p>\n<ul>\n<li>Strict typing, a clearly constructed system of types.</li>\n<li>High performance.</li>\n<li>Automatic memory management.</li>\n<li>Fully compatible with a huge number of Java libraries.</li>\n<li>Better toolkit.</li>\n<li>Extensive community.</li>\n<li>Possibility of commercial use.</li>\n</ul>\n<h2>Lecturer</h2>\n<p><a href=\"https://www.researchgate.net/profile/Alexander_Nozik\">Alexander Nozik</a> - experimental physicist, data analysis specialist in physical experiment and scientific software. Senior researcher at the INR RAS, Deputy Head of the MIPT LNPM.</p>\n<p>Experience in scientific software development (mainly in Java) - 8 years. Experience at Kotlin - more than two years.</p>\n<h2>Course format</h2>\n<p>In 2020, the course is held with the participation of JetBrains and the support of JetBrains Research. The most active students will have the opportunity to participate in summer internships at JetBrains. There is also an opportunity for senior students to do research at the MIPT Laboratory of Nuclear Physics Experiments Methods (participant of JetBrains Research) and at the JetBrains Moscow office.</p>\n<p>In this course we will learn to work in Kotlin language and apply it to scientific problems. We will focus on practical aspects and examples, so that no additional knowledge is needed to understand it. For practical examples we will use the development environment <a href=\"https://www.jetbrains.com/idea/\">IntelliJ IDEA Community Edition</a>.</p>\n<p>All questions related to the course will be discussed in telegram groups <a href=\"https://t.me/mipt_npm\">@mipt-npm</a> (scientific) and <a href=\"https://t.me/joinchat/EpV1201A_i0rTOCxHHnxXQ\">Kotlin at MIPT</a> (any questions about Kotlin).</p>\n<p>All those wishing to participate should complete the <a href=\"https://docs.google.com/forms/d/e/1FAIpQLSeNZT8B90pT6fM9oABHFbrtv6pKfoYKfO-ANAjLlgWynMnh_g/viewform\">form</a>.</p>\n<h2>Course content</h2>\n<ol>\n<li>\n<p><strong>From hard to soft</strong></p>\n<ol>\n<li>Program as a set of instructions. Evolution of programs.</li>\n<li>Memory structure. Segmentation fault.</li>\n<li>Programming paradigms. Genealogy of languages.</li>\n<li>Virtual machines, byte-code.</li>\n<li>Compilation and optimization.</li>\n<li>Static and dynamic linking. Libraries.</li>\n<li>Program structure. Entry points.</li>\n</ol>\n</li>\n<li>\n<p><strong>The tools of the modern programmer</strong></p>\n<ol>\n<li>Automatic assembly systems.</li>\n<li>Version control systems.</li>\n<li>Integrated development environm