I was recently warned by students from the Faculty of Mathematics and Informatics (FMI) at Sofia University that our course “High-Quality Programming Code” was offered for only 100 students like most elective courses at FMI. We are looking for a way to extend the maximum allowed attendees but we cannot go aside the official administrative rules at the Faculty.
All Students from FMI will be Accepted
The course organizers agree that all FMI students who want to attend this course are welcome to take part in all training activities (lectures, exercises and course projects) even when not officially joined through the official university information system “SUSI”. We hope we will be given large enough hall to fit all attendees. Students who pass successfully all their exams and graduate this course will be allowed to reuse their grades for the next year.
For more information keep checking the “News” section at the course’s official Web site: http://codecourse.telerik.com.
Posted by nakov as news, blog at 4:42 PM EET
Comments Off
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
- 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
Lecturers Team
- Svetlin Nakov – Manager Technical Training, Telerik Corporation, Telerik Academy, Blog: http://www.nakov.com/blog
- 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: http://blogs.telerik.com/jordandimitrov/
- Radoslav Kirilov – Software Engineer, Telerik Corporation, Blog: http://radoslavkirilov.blogspot.com/
- Stefan Dobrev – Software Engineer, Telerik Corporation, Blog: http://blogs.telerik.com/stefandobrev/
- 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”: http://codecourse.telerik.com/.
Posted by nakov as news, blog at 2:01 PM EET
Comments Off
Starting from February 2010 I will lead a team of .NET software engineering professionals who will teach the course “Web Applications Development with .NET Framework and ASP.NET” at the Technical Univesity - Sofia (TU-Sofia). The course complements the fundamental university education with contemporary Web development technologies. The outcomes for the students are the acquisition of practical skills for building rich-data Web applications based on .NET Framework, LINQ-to-SQL, SQL Server, ASP.NET, AJAX and Silverlight.
Course Organizers
The course is organized by the Students Council in TU-Sofia who invited Svetlin Nakov and his team to teach it for all students in TU-Sofia. The course is supported and sponsored by Telerik Corporation (large Bulgarian software development company which was recently listed in the Red Herring: Global 100 Winners).
Course Annotation
The „Web Applications Development with .NET Framework and ASP.NET” course objective is to introduce the students to the fundamentals of C#, .NET Framework, databases and Web application development with ASP.NET and AJAX. Students will learn how to build dynamic data-driven Web applications with SQL Server and ASP.NET. The course starts with the basics of C# language (data types, expressions, statements, loops, arrays, methods, strings, collections, exceptions, etc.), object-oriented programming with C# (classes and interfaces, constructors, properties, events, methods, etc.), relational databases, SQL language and SQL Server, data access technologies (LINQ and LINQ-to-SQL). The main focus is on Web technologies, starting from HTTP, HTML, CSS and JavaScript, through the fundamentals of ASP.NET and ASP.NET Web Forms. Advanced topics include building rich-data applications with ASP.NET data-bound controls, using master pages, AJAX and Silverlight. All topics covered in the course will be demonstrated in a practical session demonstrating how to build building a sample dynamic rich-data Web application from scratch, step-by-step.
Training Program
- Course Overview – Presenting the Course Objectives, Lecturers, Exams, etc..NET Framework Overview – .NET, .NET Framework, CLR, MSIL, Assemblies, CTS, .NET languages
- C# Language Overview – Part I – Data Types, Operators, Expressions, Statements, Console I/O, Conditional Statements, Loops, Arrays, Methods
- C# Language Overview – Part II – Creating and Using Objects, Exceptions, Strings, Generics, Collections, Attributes
- Object-Oriented Programming with C# – Defining Classes, Constructors, Properties, Methods, Delegates, Events, Static Members, Interfaces, Inheritance, Polymorphism
- Databases, SQL and MS SQL Server – RDBMS, SQL Language, SQL SELECT, Joins, Aggregate Functions, Grouping, SQL INSERT, SQL UPDATE, SQL DELETE, MS SQL Server, SQL Server Management Studio
- LINQ and LINQ-to-SQL – LINQ Operators and Expressions, Projections, Conversions, Aggregations, LINQ-to-SQL, Visual Studio LINQ-to-SQL Designer, Using DataContext to Read / Create / Update / Delete Data
- Web Technologies Basics – HTTP, HTML, Text, Images, Tables, Forms, CSS, JavaScript
- ASP.NET – Part I – ASP.NET Web Forms, Code Behind Pages, Page Execution Model, Web Server Controls, HTML Server Controls, Creating Simple Web Applications
- ASP.NET – Part II – Data Binding and Data-Bound Controls: Data Sources (LinqDataSource, ObjectDataSoucre), GridView, FormView, DetailsView, DataList, Repeater, ListView, Pager
- ASP.NET – Part III – Session and State Management, Master Pages and Navigation, User Controls, Web.config, ASP.NET Membership, IIS and Deployment
- ASP.NET AJAX – ScriptManager, UpdatePanel, AJAX Control Toolkit
- Silverlight – XAML, Text, Images, Graphics, Shapes, Creating Silverlight Applications, Text Controls, Buttons, List Controls, Data Binding and Data-Bound Controls
- Practical Project Demo – Creating Dynamic Rich-Data ASP.NET Web Application – Step-by-Step Live Demo
- Additional Topic #1 – Student will Suggest Interesting Topics
- Additional Topic #2 – Student will Suggest Interesting Topics
Lecturers Team
- Svetlin Nakov – Manager Technical Training, Telerik Corporation, Telerik Academy, Blog: http://www.nakov.com/blog
- Ivaylo Hristov – Managing Partner, Komfo Bulgaria, Blog: http://ivaylo-hristov.net/
- Mihail Stoynov – Technical lead, Materna Bulgaria, Blog: http://mihail.stoynov.com/blog/
- Ventsislav Popov – Developer, Crossroad
- Branislav Abadjimarinov – Senior .NET Developer, ProPeople, Blog: http://abadjimarinov.net/
- Svetlin Ralchev – software engineer, Telerik Corporation, Blog: http://blog.ralch.com/
- Ivaylo Bratoev – software engineer, Telerik Corporation, Blog: http://blogs.telerik.com/ivaylobratoev/
Requirements to Attend the Course
- Basic computer programming skills
- Basic understanding of object-oriented-programming (OOP) concepts
- English language
Assesment and Exams
Students will be assigned to develop as a practical project dynamic Web application based on .NET Framework, ASP.NET Web Forms, SQL Server and LINQ-to-SQL. Sample projects: dynamic photo album, CMS system, blog system, dating site, online game, Web mail, etc.Authors of the best projects will be awarded by our sponsor Telerik.
Official Web Site
Visit the official Web site of the course “Web Applications Development with .NET Framework and ASP.NET”: http://aspnetcourse.telerik.com/.
Posted by nakov as .net, news, blog at 3:24 PM EET
Comments Off
I was recently invited by the Board of European Students of Technology (B.E.S.T. Sofia) to give a talk on “Practical Software Engineering Fundamentals” in the Technical University of Sofia. The event is designed for students who wants to become software engineers.
- Venue: TU-Sofia, hall 1153
- Date: 8 February (Monday), 18:00
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.
The event is supported by Telerik Academy.
Posted by nakov as news, blog at 4:01 PM EET
Comments Off