Course “High-Quality Programming Code” in FMI and TU-Sofia
Starting from February 2010 I will lead a team of software engineering professionals from Telerik Corporation who will teach the course “High-Quality Programming Code” in the Faculty of Mathematics and Informatics (FMI) at Sofia University and at the Technical Univesity – Sofia (TU-Sofia). The course complements the fundamental university education with important software development and code construction concepts and best practices. The outcomes for the students are the acquisition of knowledge and skills for building high-quality programming code, practical skills for code refactoring and unit testing.
The course is organized by Svetlin Nakov and his team with the cooperation of the Department of Software Technologies in FMI and the Students Council in TU-Sofia. The course is supported and sponsored by Telerik Corporation (large Bulgarian software development company recently listed in the Red Herring: Global 100 Winners).
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
- Psychology of Computer Programming
- Svetlin Nakov – Manager Technical Training, Telerik Corporation, Telerik Academy, Blog: https://nakov.com
- Vesko Kolev – Software Engineer, Telerik Corporation, Blog: http://veskokolev.blogspot.com
- Tsvyatko Konov – Software Engineer, Telerik Corporation, Blog: http://tsvyatkokonov.blogspot.com/
- Yordan Dimitrov – Software Engineer, Telerik Corporation, Blog: https://softuni.bg
- Radoslav Kirilov – Software Engineer, Telerik Corporation, Blog: http://radoslavkirilov.blogspot.com/
- Stefan Dobrev – Software Engineer, Telerik Corporation, Blog: https://softuni.bg
- Nikolay Ganchev – Software Engineer, Telerik Corporation
- Ivaylo Bratoev – Software Engineer, Telerik Corporation
Requirements to the Students
- Computer programming skills
- Knowledge of object-oriented programming
- English language
Assesment and Exams
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).
Official Web Site
Visit the official Web site of the course “High-Quality Programming Code”: https://softuni.bg.