We continue to talk about our experience in building "the best magistracy in Computer Science" =) and get interested in the opinion of the IT community. Let me remind you that our goal was to create a magistracy with a strong program in which there would be no “extra” courses. And thanks to the collaboration with the
Academy of Modern Programming and the
Laboratory of Mathematical Logic of the St. Petersburg Branch of the Mathematical Institute. V.A. Steklov RAS we have successfully managed to do it.
Last time we wrote about how the department was created and what we managed to achieve in 5 years.
In this post we will discuss what needs to be taught in a master's degree in Computer Science.

')
Summary for the past year
In general, everything is fine with us, one course was
released ,

another scored.

... and some answers
Last year we asked a few questions.
How to solve the problem with the need to read basic (bachelor) courses in the master's program?The level of education is different everywhere, and unfortunately, not always high. We recruit students from all over Russia and the CIS, and therefore we have to read some basic courses in the first semester so that all students have enough knowledge to understand the master’s level courses (for example, we have to read mathematical logic, because without it it's hard to understand something about functional programming).
The most reasonable thing to do to solve this problem is to open your own undergraduate degree. But this is far from the simplest solution.
Nevertheless, we decided to go along this path and open
our own bachelor degree with blackjack and such a program that after it there will be no need to read undergraduate courses in the master's program. However, this will somehow affect the magistracy only after 4 years.
We also listened to your advice and began to move in the direction of online courses.
We will write more about this next time.
What areas of study would interest you?As before, we have
three areas : theoretical informatics, software development and algorithmic bioinformatics. We did not increase the number of directions, because we can choose the direction of specialization by changing the list at the expense of elective courses.
How to attract strong students?We believed that strong students could be attracted by a
free pizza with a strong program, plenty of practice, participation in projects under the guidance of engineers from
leading IT companies , an increased scholarship, and the opportunity to do science under the guidance of existing scientists. This is all preserved.
This year, the
St. Petersburg Department of the Mathematical Institute of the Russian Academy of Sciences , whose staff are directly involved in the training at the department, received a mega-grant to create a laboratory of algorithms and complexity theory under the guidance of Professor
F.V. Fomina (University of Bergen, Norway,
list of publications ). Now students of our department will be able to do science under the guidance of scientists from this new laboratory.
Let me remind you that the Academic University already has a
laboratory of algorithmic biology headed by Professor of the University of California
Pavel Pevzner (
list of publications ), which was also created for a megagrant.
Invited Courses
Another way to attract strong students is through unique courses. To do this, we will invite leading scientists from different countries to read our courses with us, as is already done at the
Computer Science Club .
In this regard, a few questions. Suppose you have the opportunity to call anyone to give courses at your university.
- Which (foreign) courses would you consider exceptional (that is, unparalleled in Russia)?
- What kind of scientists would you call for reading courses? (I wonder how many times in the comments mentioned Knut =))
- Here is a sample list of our master’s courses (courses in all three areas, with the exception of seminars, molecular biology and foreign languages):
Mathematical disciplines:
- Algebraic structures
- Algorithms and data structures
- Computational Geometry
- Discrete Math
- Combinatorics
- Constructive cryptography
- Mathematical logic
- Machine learning
- Complexity cryptography
- Structural complexity theory
- Graph theory
- Theory of Formal Languages
Applied disciplines:
- Database
- Unix Introduction
- Virtualization and Virtual Machines
- High performance and parallel computing
- Computer graphics
- Computer vision
- Methods of formal program verification
- Generalized and Generative Programming
- Operating Systems
- Software Engineering Basics
- Processing a large amount of data
- Linux kernel programming
- Programming in the Windows kernel
- Software design
- Interactive Interface Development
- Language processors development
- Network technologies
- Software Testing
- Functional programming
Programming languages:
- C ++ programming
- Java programming
- Scripting languages
- JVM based languages
What courses are missing here? Maybe some extra courses?
(We are already talking to several scientists who will come to give courses this fall, but it would be interesting to know the opinion of the IT community.)
Thanks for attention! Looking forward to hearing your comments.