How Software Engineering is Different from Computer Science

    Hello!
    The program I am currently studying is called MSIT-SE (Master of Science in Information Technology - Software Engineering) *. The basic idea of ​​the entire program is expressed in the principle of “Learn by doing”.
    I want to tell you what is the difference between SE and CS and how the program that I go through is different from everything else. We are discussing this issue without a doubt, but my personal opinion is presented below.
    image
    You know, this is some kind of weak program for Computer Science.
    Before I came to SE, I read just that statement in all the comments.

    A person follows [this] link and reads:
    • 17-651 Models of Software Systems
    • 17-652 Methods: Deciding What to Design
    • 17-653 Managing Software Development
    • 17-602 Introduction to Personal Software Process
    • 17-654 Analysis of Software Artifacts
    • 17-655 Architectures for Software Systems
    • 17-677 MSIT Project I
    • 17-678 MSIT Project II
    And conversations begin: hmm, excuse me, but where is at least one classic course on algorithms and data structures? Well, or at least one year-long course on OOP, or C ++, or the basics of distributed systems, or maybe there is a database, where is all this?
    Well, what can I say, all this is not. More precisely, this is not among the main courses indicated above, but each semester you can take 1-2 electives, for example, I took Distributed systems and Data structures for application programmers. More about electives [read here] and [here] . The reason for this attitude is the initially incorrect advertisement of this program in Russia, as well as an indistinct definition of what software engineering is (it is very different for everyone).

    Above is a short clipping from the official site. You can see that there are intersections, but the focus is fundamentally different. There are some things that are not taught on Computer Science programs. I don’t know how else to explain the difference between SE and CS, except how to compare the creation of an IT system with anything from real life. For example, with the construction of a bridge. Here is a list of things that are not taught at CS:
    • how to choose the shape of the bridge
    • how to decide exactly where the bridge should be
    • how to coordinate it with financial or legal issues
    • how the bridge should look from the customer’s point of view
    • how to coordinate 100,500 workers, who will build this bridge
    • how to answer the management (sponsors, investors, etc), at what stage of construction the bridge is now and when will it be completed
    • how BEFORE the bridge is built, evaluate its qualities: carrying capacity, productivity
    • how to document the bridge built so that it can be repaired in the future
    • what actions must be performed, by whom and when, so that the bridge does not fall after 2 years
    ... well, in general, the idea is clear, you can continue for a long time. On the one hand, this is management (17-653 Managing Software Development). You can’t get anywhere from him, because you need to communicate with people, and this is almost the most difficult, and is also the reason for the failure of most projects. Then - the ability to collect requirements (17-652 Methods: Deciding What to Design). Once the requirements are collected, the bridge needs to be drawn on paper (17-655 Architectures for Software Systems), if possible using formal methods for calculating the bridge (17-651 Models of Software Systems). Throughout the process, it is advisable to check the quality of the collected requirements, the construction process, the final result, etc. (17-654 Analysis of Software Artifacts)
    I believe that all of the above courses should be preceded by a powerful undergraduate degree in Computer Science, and then 3-5 years of work in the industry. Only after that it makes sense to talk about management or architecture.

    And so we smoothly move on to the cherry on the cake. The workshop, also known as the MSIT Project, is what glues the entire program together. I already wrote a brief overview of our project [here] . The next post will talk about the workshop in more detail.

    According to the materials of the first-degree student (2013/2014) of the joint program of Innopolis University

    * “Master of Information Technologies - Management of Software Development” - the Master's program of Innopolis University, developed on the basis of one of the best MSIT-SE (Master of Science in Information Technology) programs IT universities of the world Carnegie Mellon University ( No. 3, QS World University Rankings by Subject 2014 - Computer Science & Information Systems ), taking into account best practicesMIPT , ITMO , National University of Singapore and other educational partners. Innopolis University plans to recruit a group of masters at its base for studies in 2014/15.

    Also popular now: