Thoughts on Software Engineering

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.

Course Organizers

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).

Course Annotation

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.

Training Program

  1. Course Overview. Introduction to High-Quality Programming Code. Entrance Project
  2. Fundamentals of Software Engineering
  3. Naming Identifiers in the Source Code. Naming Classes, Methods, Variables, Parameters and Other Elements of the Code
  4. Designing High-Quality Classes and Class Hierarchies. Best Practices in the Object-Oriented Design
  5. High-Quality Methods. Strong Cohesion and Loose Coupling
  6. Using Variables, Data, Expressions and Constants Correctly
  7. Using Control Structures, Conditional Statements and Loops Correctly
  8. Correctly Formatting the Code. Code Documentation, Comments and Self-Documenting Code. Code Conventions
  9. Defensive Programming. Using Exceptions Correctly. Performance Tuning and Code Optimization
  10. Code Integration. Refactoring Existing Code to Improve Its Quality
  11. Software Quality Assurance. Testing and Debugging. Unit Testing. Test-Driven Development
  12. Development Tools. Development Environments. Change Management Systems. Code Analysis Tools. Automated Testing Tools. Automated Build Tools. Continuous Integration Tools
  13. Test Covering the All Studied Topics
  14. Course Projects: Assignment, Guidelines and Discussion
  15. Psychology of Computer Programming

Lecturers Team

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”:

Previews (5,109), Views (262), Comments (0)

RSS feed for comments on this post. TrackBack URL