Няколко дни преди началото на програмата “Академия на Телерик” за задълбочено безплатно обучение и работа в областта на софтуерното инженерство в един от най-добрите работодатели в България имам радостта да обявя класирането на кандидатите за участие в програмата.
Нови специалности и по-голям брой места
Тази година, във втория пореден сезон на Академията, разширяваме броя на обучаемите и броя на направленията за кариерно развитие в областта на професионалното разработване на софтуер в работодател #1 в България за 2010 г. – корпорация Телерик.
За първи път обучаемите в Академията на Телерик, които преминат успешно началното ниво на безплатните обучения (първите три месеца), ще могат да кандидатстват за няколко посоки на кариерно развитие в Телерик:
.NET софтуерен инженер (след още 4 или 5 месеца допълнително обучение)
инженер по осигуряване на качеството (software QA engineer, след 1 месец допълнително обучение)
софтуерен инженер по поддръжка на клиенти (започват работа веднага)
За настоящия сезон на програмата “Академия на Телерик” сме събрали статистика за кандидатите:
над 280 кандидати, изпратили документи за участие в програмата
215 души допуснати до приемните изпити (отговарящите на изискванията)
195 души явили се на приемните изпити
115 души класирани за участие в програмата (5 групи по 23 души)
Приети за обучение в програмата “Telerik Academy” за сезон 2010/2011
Класирани за започване на безплатно обучение по програмата “Академия на Телерик” за сезон 2010/2011 са 115 кандидата. Всички класирани кандидати ще получат инструкции по e-mail най-късно утре (17 ноември 2010 г.).
Неодобрени кандидати за програмата “Telerik Academy” за сезон 2010-2011
Въпреки положените усилия в процеса на кандидатстване и силната мотивация за участие в предстоящия сезон на програмата “Академия на Телерик” за нея не успяха да се класират 99 кандидата, които преминаха първоначалното отсяване по документи. Пълният брой кандидати е по-голям, но не всички отговаряха на изискванията за участие в програмата или не бяха подали изисквания набор документи, заради което не бяха поканени да положат приемните изпити.
Причините за некласиране за участие в програмата може да са най-различни:
неявяване на приемни изпити
недостатъчно добри резултати на приемните изпити
несъгласие с условията на програмата
неподходящо CV или мотивационно писмо
отговори в анкетната карта, несъвместими с програмата за обучение или с ценностите на Телерик
Всички кандидати, явили се на приемните изпити за участие в безплатните обучения по програмата “Академия на Телерик” ще получат до края на седмицата своите резултати от изпитите, а одобрените кандидати ще имат възможност да изберат с коя от групите да посещават учебните занятия.
За въпроси и допълнителна информация можете да се обръщате към организаторите на програмата за безплатно обучение и работа “Telerik Academy”: email@example.com.
It is important that in the United States in one of the top universities, Harvard, the acceptance rate for new students is about 7%. This means that 93% of the candidates get rejected during their entrance assessment. I will be happy to see something like 40-50% for the top Bulgarian universities, but this is far away from the case. Now most of the candidates applied for the Bulgarian top university “Sofia University St. Kliment Ohridski” are accepted in their first or second choice of specialty.
The Ranking System for the Bulgarian Universities
Now let’s discuss the official Bulgarian University Ranking System:
The site holds very rich information and visitors can easily compare universities targeting some specialty of interest and see the rankings. The evaluation criteria are too much and thus this gives a way to distort the ranking just by changing few key parameters.
Now let’s examine the computer science and software engineering related specialties. In the ranking system we have only three computer-related specialties:
Communication and Computer Technology (hardware)
Electrical, Electronics and Automation (hardware)
Informatics and Computer Science (software)
Ranking for the Bulgarian Universities for Computer Science
Since I am interested primary in software engineering and software technology related specialties, I made the most standard query for the specialty “Informatics and Computer Science”. The results are the following (as of 8 November 2010 ):
The leadership of Sofia University “St. Kliment Ohridski” and its faculty of Mathematics and Informatics (SU-FMI) is clear and there is no doubt that Sofia University is the best Bulgarian university for software engineering and computer science higher education. This does not mean that SU-FMI is outstanding, it just states that SU-FMI is the leader and it is better than the others.
TU-Sofia is not in the Top 10 Bulgarian Universities for Computer Science and Software Engineering
The interesting fact is that the Technical University of Sofia (TU-Sofia) in not in the top 10 of the ranking. This asks the logical question: if you want to become a software engineer, shall you study at TU-Sofia? I could fully confirm that TU-Sofia is not the best choice. My experience shows that even the Burgas Free University and Rousse University have better software engineering and software technologies training than TU-Sofia. This does not mean that TU-Sofia is not a leader in different areas like computer hardware. In this article I am focused only in computer science, software engineering and software development technologies and it is clear that TU-Sofia could not get in top 5 for these specialties (in November 2010).
Once in 2008 I was an advisor of a student defending his master’s thesis in software technologies in TU-Sofia and I was amazed that at the defense students brought paper posters because there was no multimedia projector (or they didn’t know how to use it). Students defending a development of software systems did not demonstrate them, just talked in front of piece of paper. This is another nice story to support the “superior” level of TU-Sofia in training software engineering, computer science and software technologies and IT specialists as general.
My Ranking for Software Engineering Universities
My ranking is slightly different by the official ranking of the Bulgarian Ministry of Education published above. About the American University in Blagoevgrad (AUBG), I don’t think the computer science training there is better than in New Bulgarian University. In AUBG students have iron discipline (American style) and this makes them more successful after graduation (which is important indicator for the ranking system of the Ministry), but the New Bulgarian University (NBU) seems to have better technical training, more focused in practical software engineering and cutting edge software technologies (e.g. Java, .NET, mobile development, etc.).
My ranking about computer science and software engineering Universities in Bulgaria is as follows:
Sofia University “St. Kliment Ohridski”, Faculty of Mathematics and Informatics (SU-FMI)
New Bulgarian University in Sofia (NBU)
American University in Blagoevgrad (AUBG)
Plovdiv University, Faculty of Mathematics and Informatics (PU)
I also think that TU-Sofia is out of this ranking and if you want to become a software engineer and you want to be professional computer programmer, TU-Sofia is not the best choice for you!
A good confirmation is that when students organize training courses like the recently stopped Java EE development and ASP.NET, the university authorities do their best to stop and destroy them.
Yes, there are many software engineers graduated or studying at TU-Sofia, but this is due to the fact, that TU-Sofia is the largest university in Bulgaria. The software engineering training in TU-Sofia is not competing with the better universities (like SU-FMI, NBU and AUBG) but the students in TU-Sofia are so much that some of them howsoever become software engineers when they start working in the industry despite of the university education. TU-Sofia produces many times more graduates in computer science related specialties than any the other university in Bulgaria but in the software industry still Sofia University graduates are dominant. Again, to be specific, I talk about the software development companies like SAP, VMWare, Telerik, Musala Soft, OBS, etc. not about the system integrators and other IT companies (like HP for example).
Please consider the above opinion and my ranking as my own contribution and I do not necessary bind this general feeling with the companies and organizations I am affiliated to (BASD, Telerik, FMI @ Sofia University, CITA, and few others).
I would like to thank to colleagues from the Technical University of Sofia who sent me a well-founded explanation why TU-Sofia is not in the ranking for computer science and software engineering. This is due to the fact that TU-Sofia does not participate in the category “Informatics and Computer Science”. It just do no train students in this educational / scientific direction. In the same time TU-Sofia is leader in the category “Communication and Computer Technology” in which Sofia University (SU-FMI) do not participate. Thus someone applying the same reasoning to compare these two universities could conclude that SU-FMI is not the best choice if you want to be trained in communications or computer hardware, and this is clearly true.
We could conclude that TU-Sofia is not the best choice for computer scientists / software engineers and SU-FMI is not the best choice for hardware engineers and communications engineers. This strongly correlates with the main idea of my article, which is clearly stated:
TU-Sofia is not the best place in Bulgaria for studying practical software engineering and computer science
TU-Sofia is strong in computer hardware, communications and other hardware-related specialties.
We cannot directly compare TU-Sofia and SU-FMI in their competences in training informatics, computer science, software engineering and software technologies because TU-Sofia focuses primary on producing hardware engineers and SU-FMI focuses primary on producing computer scientists and software engineers. I do not compare the quality of the provided education by both TU-Sofia and SU-FMI, just their primary focus, and I still believe that TU-Sofia is not the best choice if you want to become a skillful software engineer.
I had few talks and demonstrations about high-quality programming code, refactoring of bad source code and unit testing. All interested students can download the presentations and demonstrations from the links below.
The final round of the Bulgarian IT Olympiad for school students was held on 29-30 May 2010 in Varna. I was invited to be part of the judge team in the category “Software Applications”. The reglament of the Olympiad says that students develop software at home and presents the results at the Olympiad. The most interesting and well done projects were a 3D-Studio like modeling engine, a coding and collaboration platform, universal remote control software and embedded device and platform for measuring motions and accelerations. Nice contest and nice students, very tallanted.
High-Quality Code Lecture
One of the criteria for the judge was the quality of code of the source code of the presented software. Some people could be amazed but half of the projects were written really in “coding horror” style and had variables like TextBox4 and Button2_Click. To reduce this percentage I had a talk in “High-quality programming code”.
The „High-quality programming code” course objective is to introduce the students to the principles of high-quality programming code construction during the software development process. The quality of the code is discussed in its most important characteristics – correctness, readability and maintainability. The principles of construction of high-quality class hierarchies, classes and methods are explained. Two fundamental concepts – “loose coupling” and “strong cohesion” are defined and their effect on the construction of classes and subroutines is discussed. Some advices for correctly dealing with the variables and data are given, as well as directions for correct naming of the variables and the rest elements of the program. Best practices for organization of the logical programming constructs are explained. Some methodologies for testing, debugging and code optimization are introduced. Attention is given also to the “refactoring” as a technique for improving the quality of the existing code. The principles of good formatting of the code are defined and explained. The concept of “self-documenting code” as a programming style is introduced. The techniques and practices for constructing high-quality programming code discussed in the course are independent of the programming languages.
Course Overview. Introduction to High-Quality Programming Code. Entrance Project
Fundamentals of Software Engineering
Naming Identifiers in the Source Code. Naming Classes, Methods, Variables, Parameters and Other Elements of the Code
Designing High-Quality Classes and Class Hierarchies. Best Practices in the Object-Oriented Design
High-Quality Methods. Strong Cohesion and Loose Coupling
Using Variables, Data, Expressions and Constants Correctly
Using Control Structures, Conditional Statements and Loops Correctly
Correctly Formatting the Code. Code Documentation, Comments and Self-Documenting Code. Code Conventions
Defensive Programming. Using Exceptions Correctly. Performance Tuning and Code Optimization
Code Integration. Refactoring Existing Code to Improve Its Quality
Software Quality Assurance. Testing and Debugging. Unit Testing. Test-Driven Development
Development Tools. Development Environments. Change Management Systems. Code Analysis Tools. Automated Testing Tools. Automated Build Tools. Continuous Integration Tools
Test Covering the All Studied Topics
Course Projects: Assignment, Guidelines and Discussion
Assessment is based on test (theory) and course project (practice). The test consists of 40 questions covering the course content. The course project has two parts: entrance project (small programming problem that should be solved in C#, Java or C++) and final project (refactoring of low-quality code and adding unit tests).
Software engineering defines the software development project lifecycle as sequence of activities, such as requirements analysis, architecture, design, code construction, testing, debugging, integration, deployment, maintenance, etc., which are performed following the practices of given development methodology applying a set of project management activities for planning, monitoring and controlling the project.
In this talk the speaker Svetlin Nakov will introduce the audience with the most important software engineering activities and will explain the typical software project lifecycle. Comprehensive examples will be given along with the theoretical fundamentals. Typical documents and templates used during the software development process will be presented including: software requirements specifications (SRS), software design documents (SDD), test plans, project plans, etc.