site/page-data/en/pages/kotlin/page-data.json
2020-03-21 20:12:32 +03:00

1 line
12 KiB
JSON

{"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 environments.</li>\n</ol>\n</li>\n<li>\n<p><strong>Kotlin language</strong></p>\n<ol>\n<li>Variables, classes and objects.</li>\n<li>Control flow. Procedural and functional approach.</li>\n<li>Short circuits.</li>\n<li>Data structures and operations on them.</li>\n<li>Properties and Delegates.</li>\n<li>Parametric types.</li>\n<li>Extensions.</li>\n<li>Boxing.</li>\n<li>Multiplatform projects</li>\n</ol>\n</li>\n<li>\n<p><strong>Program Architecture</strong></p>\n<ol>\n<li>Abstractions and interfaces.</li>\n<li>basics of collective development with the help of modern tools.</li>\n<li>Ideology of object programming. Separation of behavior.</li>\n<li>Ideology of functional programming.</li>\n</ol>\n</li>\n<li>\n<p><strong>Scientific programming</strong>.</p>\n<ol>\n<li>Basics of numerical methods. The concept of numerical accuracy. Complexity of algorithms.</li>\n<li>Numerical differentiation and integration.</li>\n<li>Random Number Generators and Monte Carlo Modeling.</li>\n<li>High-performance parallel and competitive computing.</li>\n<li>The problem of I/O and the main methods to solve it.</li>\n<li>Data collection systems. Protocols of data exchange.</li>\n<li>Basics of work with big data.</li>\n<li>Streaming data processing.</li>\n</ol>\n</li>\n</ol>\n<h2>Reporting</h2>\n<p>The offset is held in the form of a presentation based on the materials of an individual project. Interim reporting in the form of assignments is also provided.</p>\n<h2>Recommended literature</h2>\n<ul>\n<li><a href=\"https://kotlinlang.org/docs/reference/\">Official documentation(en)</a></li>\n<li><a href=\"https://kotlinlang.ru/\">Official documentation(ru)</a></li>\n<li><a href=\"https://dmkpress.com/catalog/computer/programming/java/978-5-97060-497-7/\">Kotlin in action</a></li>\n</ul>","frontmatter":{"title":"Introduction to Kotlin scientific programming","shortTitle":"Scientific programming","path":"/pages/kotlin","parent":"education","slug":"/en/pages/kotlin"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"intl":{"language":"en","languages":["ru","en"],"messages":{"title":"NPM GROUP","language":"en","description":"Nuclear physics methods laboratory","header.news":"News","header.group":"Group","header.projects":"Projects","header.partners":"Partners","notfound.header":"NOT FOUND","notfound.description":"You just hit a route that doesn't exist.","jumbotron.labintro":"Nuclear physics methods laboratory","jumbotron.lead":"Features of our approach to solving scientific problems of today: ","jumbotron.list":"<ul><li>The laboratory was established on the basis of MIPT, which allows involving a large number of interested students.</li><li>By combining scientific work with educational process, we ensure continuity of scientific experience.</li><li>The structure of our laboratory allows even junior students to take part in world-class experiments.</li><li>We use the most modern methods in our work on physical experiments.</li></ul><p />","jumbotron.about":"About our laboratory","more.nuclear_title":"Nuclear physics","more.nuclear_body":"The laboratory participates in several international particle physics experiments, such as the GERDA neutrine-free double beta decay experiment, the Troitsk nu-mass neutrino mass search experiment and so on.","more.nuclear_more":"More »","more.education_title":"Education","more.education_body":"The tasks of the laboratory include the development of new educational programs in physics and methods of physical experiment, as well as improving the existing methodological and information base in MIPT and in academic institutes.","more.education_more":"More »","more.software_title":"Computational methods","more.software_body":"One of the main activities is the development of computational methods and open source software for use in education and scientific activities.","more.software_more":"More »","more.news":"Latest news","about.title":"Nuclear physics methods group","about.descr":"The group was created in 2015 on the basis of the Department of General Physics, MIPT, several laboratories of the INR RAS and with the support of the Laboratory of High Energy Physics, MIPT. The purpose of the creation is the development of methods for conducting and analyzing data from experiments in the field of particle physics and nuclear physics. In addition, members of the group are engaged in the implementation of modern information technologies in experimental physics and education.","about.pubs.title":"Publications","about.pubs.available1":"Group`s publications are available at ","about.pubs.available2":"this page","about.contacts.title":"Contact information","about.contacts.mail":"Email: ","about.contacts.telegram":"Telegram: ","partners.mipt.title_fund":"MIPT department of general physics","partners.mipt.description_fund":"The Department of General Physics is the main point of contact for scientists and teachers on the one hand and students on the other. Close cooperation with the department is the key to a constant influx of young employees, as well as continuous self-improvement of group members working with students.","partners.mipt.title_energy":"MIPT laboratory of high-energy physics","partners.mipt.description_energy":"Close cooperation with the laboratory of high-energy physics allows for direct contact between education and the scientific community, without going beyond the bounds of MIPT.","partners.jb.description":"Laboratory actively cooperates with JetBrains in introducing Kotlin into scientific programming, teaching Kotlin and developing libraries on it.","partners.jbr.description":"The software development group is a part of an international scientific association JetBrains Research.","partners.ras.title_exp":"Department of experimental physics, INR RAS","partners.ras.description_exp":"Very close cooperation is being maintained with the OEF of the INR RAS in the framework of the Troitsk nu-mass and KATRIN collaborations, as well as in terms of training qualified personnel for work on the NICA experiment and in other accelerator experiments. Within the framework of cooperation, both scientific and educational tasks are implemented.","partners.ras.title_beam":"Beam Laboratory, INR RAS","partners.ras.description_beam":"The Laboratory of a Linear Accelerator Beam Laboratory of the INR RAS is responsible for wiring and diagnostics of the accelerator beam, and is also developing the beam diagnostic systems used around the world. The group runs several joint educational projects with this laboratory.","partners.ras.title_education":"Scientific and educational center, INR RAS","partners.ras.description_education":"Some of the students participating in the group study at the Scientific and Educational Center of the INR RAS.","partners.ras.title_iki":"SRI RAS","partners.ras.description_iki":"The group is involved in the mathematical modeling of electrical discharges in the atmosphere.","physics.bc_title":"Physics","physics.title":"Nuclear physics","physics.description":"Traditionally, nuclear physics includes not only research related to the structure of the atomic nucleus and nuclear reactions, but also the entire physics of elementary particles, as well as partly some sections of astrophysics and cosmology. Currently, the efforts of our group are concentrated in the field of so-called non-accelerator experiments in elementary particle physics.","education.bc_title":"Education","education.title":"Education","education.description":"Educational projects in the field of nuclear physics and methods for conducting and analyzing the results of a physical experiment are one of the key activities of the group.","education.course1":"Details available at ","education.course2":"the course page","math.bc_title":"Maths","math.title":"Mathematical methods","math.description":"Mathematical modeling of physical processes and mathematical methods of data analysis are an integral part of modern experimental physics. There is a constant need for both improving existing methods and developing fundamentally new approaches.","software.bc_title":"Software","software.title":"Scientific software","software.description":"Modern experiments in particle physics are inconceivable without special software, which is required both at the stage of the experiment and data collection, and in processing the results. The development of scientific software is an additional, but significant area of work for the group.","quarks":"Physics"},"routed":true,"originalPath":"/pages/kotlin","redirect":true}}}}