📜 ⬆️ ⬇️

What needs to be taught in the Master in Computer Science?

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.
  1. Which (foreign) courses would you consider exceptional (that is, unparalleled in Russia)?
  2. What kind of scientists would you call for reading courses? (I wonder how many times in the comments mentioned Knut =))
  3. 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:
    1. Algebraic structures
    2. Algorithms and data structures
    3. Computational Geometry
    4. Discrete Math
    5. Combinatorics
    6. Constructive cryptography
    7. Mathematical logic
    8. Machine learning
    9. Complexity cryptography
    10. Structural complexity theory
    11. Graph theory
    12. Theory of Formal Languages

    Applied disciplines:
    1. Database
    2. Unix Introduction
    3. Virtualization and Virtual Machines
    4. High performance and parallel computing
    5. Computer graphics
    6. Computer vision
    7. Methods of formal program verification
    8. Generalized and Generative Programming
    9. Operating Systems
    10. Software Engineering Basics
    11. Processing a large amount of data
    12. Linux kernel programming
    13. Programming in the Windows kernel
    14. Software design
    15. Interactive Interface Development
    16. Language processors development
    17. Network technologies
    18. Software Testing
    19. Functional programming

    Programming languages:
    1. C ++ programming
    2. Java programming
    3. Scripting languages
    4. 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.

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


All Articles