How I Created a C # Learning Technique

Since childhood, I love not only programming, but also sharing my skills, knowledge, telling about my programs, explaining how they work, how to create them.

In this I found my calling - to motivate to learn programming.

I do not set as my goal “to teach to write programs”, because this cannot be taught, this can only be learned independently. My goal is to make this process as interesting, exciting, exciting as possible, organize a “party”, a community where you can and want to solve problems, develop your programming skills. A society in which one can see the successes of colleagues so that there is something to strive for, whom to overtake.

I have been writing programs since childhood

Back in 1992, as an eighth-grader, every day after school I went to the computer science room, where I sat until practical classes at high school students until closing time. They studied BASIC on BK-0010. I already had some writing skills, imperceptibly for the teacher I helped high school students solve their problems. It was a joy to me, to their appreciation.

In the tenth grade, I enrolled in a correspondence school for novice programmers. Tasks were sent to me by mail (paper!), I wrote the texts of the programs on A4 sheets and sent them for verification. Learning the Pascal language took place in the absence of a compiler, only for books and listings.

In the summer, a camp was organized at this school, in which we wrote programs for a week and a half without a break (already at the computer). Every day, morning, day and evening, one at a time, then in a team, then in pairs, they solved a variety of problems. There were no theoretical studies, there were practical tasks. A lot of tasks and programs. The week of that school gave me a lot. It was there that I realized what I want to devote my life to.

Thirst for teaching

After school, after university, where I just didn’t teach the Pascal programming language ... In my native school, in electives, in a private computer school, I gave private lessons to students and schoolchildren, worked in the home of children's creativity and in the gymnasium. He taught at the university, taught computer science at the city physical-technical school (without computers, which is interesting), even organized his own circle “Formula of the programmer” at home. In parallel with the main work, he managed to get a job at a vocational school, where he worked for four years as a computer science teacher.

Interactive task verification system

I talked a lot with schoolchildren, I already knew how they could be carried away, and what they could do with the drum. Yes, nobody wants to read the theory. But everyone wants to act.

Working in vocational schools, I began creating a “robot” - a distance learning system for programming. This is a list of tasks that can only be solved sequentially. The correctness of the written programs is checked by pre-prepared tests.

After sending the program for verification, the "robot" operates according to the algorithm:
1. Compiles the program.
2. If an error occurs - returns a compiler message.
3. Runs the program with an example from the condition.
4. If the answer does not match, returns the response of the program for analysis.
5. Runs the program several more times with all other tests that the student does not know.
6. Evaluates the program: the number of correct tests / total number of tests * 100%.
7. If you earned more than 50% - gives admission to the next lesson.

What do schoolchildren like

The schoolchildren liked that their programs were checked not by the teacher, but by the “robot”. This is more objective, besides “no need to wait, no need to call”, but you can send as many times as you want for verification and get the result. It is noticed that most students are not satisfied with the “half-solutions”; I constantly observe multiple sending solutions until a clean 100% is reached. It got to the point that my students solved problems on my site in other people's lessons, which is why other teachers complained about me. I think this is a success! :)

By the way, this system made it extremely easy for me to rate students. I just asked, for example, all the tasks from the “Cycles” section, there are 10 of them. In the next lesson I put grades according to the points I got. For the first time, it was a column in a magazine of 12 units and a pair of twos and triples. Moreover, there were no psychological dramas that are usually accompanied by the presentation of stakes. Any solutions? Not. Here is an estimate. All. One time was enough. According to some reports, vocational school students did homework only for my lessons ... Yes, it was a cool time. I would like to return it, but at a new level.

Another important point of the methodology is consistent access to tasks. This allows you to concentrate on a specific task and not spray. I tried to open access to all tasks at once - the efficiency decreased by an order of magnitude - the students did not know what to do, and as a result they didn’t solve anything.

A new look at the old project

Many years passed after working in vocational schools, my system was covered with a thick layer of dust. From year to year, I dreamed about the day when I finally continued this project. And now, this day has come. I signed up for an information business training, got a good pendell and started acting.

The question of choosing a niche was not for me, because I can, I want, and I will act only in that area that I cannot live without. Yes, it is rather narrow, programmers are a closed people, there are a lot of difficulties when working in this niche, but I made this choice when I was 12 years old, when I spent every day in computer games salons and in the computer science office, where I went to work.

The only thing I could choose was a programming language. You need to choose a language that I myself know well, have experience with it. Most of the programs I wrote in the languages: Pascal, Delphi, C #, Java, PHP. The languages ​​Pascal and Delphi no longer stand up to criticism, since they are losing popularity. I was not very lucky with Java, it seems to me difficult for this purpose. I don’t like PHP because there is no strict structure, there are no clear ways to create a user interface, I don’t like that every time the page loads from scratch, I want to have an application that doesn’t live for a couple of seconds, but to have a full desktop application . All these discussions about programming languages ​​are purely subjective, based solely on my feelings and are not subject to discussion :).

Most of all I liked the C # language from the micro-giant. By that time, I had closed several dozen different projects in this language, including one very large millionth project to create a program for recording work schedules, working hours, and wages (though I didn’t get millions, I only had a salary).

So, the language is selected. How do I now teach him to others over the Internet, so that I can also make money on this in the future?

I need a highlight

I perfectly understood that on the Internet a dime a dozen of all video lessons on learning the C # language. There are so many good products, it is possible to find professional courses for free. What can I offer, for which I can have the courage to ask for money?

Webinars! Not dead video tutorials, not dry books, but live participation! Free, practical webinars. Pure practice, working examples, creating a finished program from scratch, online. Even better is the game program. Pupils and students like to create their own game programs.

The calculation was as follows. Anyone just following me can create a finished toy from scratch. It's cool, you can brag about it, it's super, it's luring, it's motivating. The toys I created are basic, without glasses, without statistics, without special graphics, without bells and whistles. Only the logic of the game. Everyone will want to add, change, complicate something. And here the student is faced with the problem of a lack of theoretical knowledge. And he himself, on his own initiative, begins to study theory, literally biting into the granite of science, because he is motivated from the inside.

Guys, this works. My calculation was correct.

Of course, there were many critics of my methodology. Pro programmers say that I grow bydloderov. I do not agree with this. I just broke the sandbox and invited everyone to build sandcastles. Who wants to build real houses will go on to study further. And the theory of programming will not be for him an abstraction, but will fit into the bright head for specific practical memories.

My goal is not to teach, but to captivate, to show how cool it is, to give me the opportunity to practice, to organize a party for novice programmers. And everyone can learn and accumulate skills only by himself.

So, the method is selected. I will conduct webinars on creating programs in C #.

How to conduct a webinar?

For webinars, I have been looking for a venue for a long time. For my purposes, I need the following:

1. Sharing the entire screen without distortion;
2. Broadcast sound without delay, synchronously with the screen;
3. Adequate price.

I will not list all the sites that I tried here, I’ll say right away that after a tiring search my choice fell on She satisfies all these requirements. The only peculiarity is that all beginners are faced with the problem of adjusting the sound, for this you need to “call” and download the program to connect. In everything else - a simple, fast and convenient platform. The price is $ 200 per year. I would be grateful if anyone would recommend an alternative webinar site suitable for the specified requirements.

The first webinar I held on December 25, 2013 on the topic "Creating a program for SMS mailing." He invited all his friends to it. Everything turned out on “Hurray!”.

To record the screen and voice, I use the free oCam program, it is very convenient, compact and fast. I upload the recorded video lessons to YouTube.

Webinar Desktop: Visual Stuido, Join.Me, oCam
Desktop during the webinar: Visual Stuido, Join.Me, oCam.

I came up with the following scheme for myself:
1. I choose a game to create, I write it myself.
2. I conduct a webinar on its creation.
3. I save the webinar entries to create my own video course.
4. Repeat.

At the beginning, the webinars were crumpled, a lot of technical difficulties arose, only a few people came to the webinars. It was a shame to upload such recordings, so at first I recorded the video lessons separately from the webinar. It was longer in time, but the quality is much higher.

So, the process of creating video tutorials has already been established and successfully worked with a weekly cycle:
Webinar => Video lesson => Webinar => Video lesson.

What to do next?

Create a simple website

It was probably necessary to create a site. And there lay out the recordings of these webinars. And there to invite the people.

I chose a sonorous name for a long time, in the end I settled on . The letter "tse" / "si" did not want to become inside this word, so I decided to do without it.

I found a free template, on my knee I made a website on a green background, I drew the cover myself, beating the association of the name of the language with the note “C sharp”.

The site had two sections: Webinars and Video Tutorials. But how to make video tutorials “work”? The answer was already ready. First, only one lesson should be available at a time. Secondly, each lesson needs to be accounted for.

For several days on PHP and MySQL, I sketched an algorithm for sequential access to video lessons with a form for sending the archive of the created program. And made an interface for checking homework.

Who will check the work

At first it was interesting - I watched all the homework, answered questions, and looked forward to new programs. However, the number of works has grown and this occupation has become a lot of time. One student from the most active students volunteered to help me. He dealt with this matter very responsibly, with comments, answers to questions, and code analysis. Then he began a diploma and again I was left alone with a mountain of work.

What to do? While there was no solution, I set auto-access to the next lesson. Still better than nothing. However, this contradicts the principle of my methodology: consistent access to lessons! After all, you can send anything, get a new lesson. Send the dummy again and move on again. Not training, but empty entertainment.

What to do? Allow other students to check? Firstly, few people are interested in watching other people's programs (I tried), and secondly, the option of sending a virus in the archive is not ruled out.

So what to do? For several weeks this question haunted me. What to do? Finally, it dawned on me: reports for tasks need to be done with screenshots and answers to simple questions, such as “how long it took”, “what was the most difficult”, “how do you evaluate the lesson”. You can proceed to the next task only when, say, ten positive reviews are collected. To make sure that everyone can check the work, not just the project participants.

This approach has fully justified itself, having made from the “minuses” - “pluses”:
1. To proceed to the next lesson, you need to report on the previous one.
2. Students can send a link to their reports to their friends to a) brag, b) get ten "good" grades.

Now I can already state: it works. The verification process is very simple: view pictures, read reviews, click the "Good" or "Bad" button.

The project worked successfully!

Robot Sharp

It is time to take more air into your lungs and blow a huge layer of dust from my super-duper interactive task verification system to integrate it into my project. This section is called the “Console” because it contains console tasks.

It turned out to be not so simple, there are too many fundamental differences between the Pascal and C # languages, so each task had to be adapted. More problems were with data entry. In Pascal, to read two numbers entered on one line with a space, it is enough to write:
        readln (a, b);

In C #, it’s not so easy to do. I had to create a separate topic with tasks only for reading numbers in a variety of forms. The analogue of the Pascal line in the C Sharp language for me looks like this:
        string [] line = Console.ReadLine().Split();
        int a = int.Parse (line [0]);
        int b = int.Parse (line [1]);

Needless to say, all the algorithms for compiling and testing programs had to be re-created. However, this did not take much time, since I clearly imagined what I wanted to receive. So there was “Sharp Robot” - a program for verifying student decisions.

In more detail, the process of Sharpe’s work - how he compiles and checks tasks - can be seen in this video, which I recorded specifically for this article.

To ensure the operation of the "Console" section, a VPS server with Windows XP is used, on which the Visual Studio C # 2008 compiler is installed. Robot Sharp is a program written in the same C # that connects to the MySQL database where it expects new solutions to be tested.
When a new program appears, the Sharp robot saves it to the user’s folder, compiles, runs the tests and writes back the result of the check with a text message back to the database. This may be a compiler error message, an incorrect result of the program when passing the zero test, a list of tests with test results. If the task scores more than 50% of the points, it is counted and the student can proceed to the next task.

Video Problem Solving

When I created this system earlier, I dreamed of placing theoretical material at the beginning of the lesson. I actually composed some of these text lessons. But ... Nobody read them. But everyone always had a bunch of questions: “How to solve this problem? Why doesn’t my program start? ”

Therefore, I decided to give students what they want - problem solving. But not just the text of the finished program, but a video solution in which I explain in detail and clearly how this task is solved, what are the options and write the code of the program itself. That is, the student must manually dial the code on his own, at least something will remain in his head, and the quantity will sooner or later turn into quality. I must add that video solutions are rarely used, and this is nice. Many people want to "finish off" the task on their own.

New design

After six months of the life of my project, more than 1024 students have already become. There are already 32 video tutorials on creating a wide variety of game and application programs. At least 16 people attended webinars.

The free site template, which was taken as a basis, was no longer good at all. I started redesigning the project. I redrawn the scheme of my site by hand at least ten times.
Hand-drawn design diagram

A freelancer created a template for my site on Bootstrap. Beautiful, simple, convenient design, two menu levels, breadcrumbs, entry / exit buttons. Everything was beautiful, but dead. Transferring an entire project from one design to another is like moving to another city. In fact, I rewrote everything again. And I am very happy about this, the code turned out to be better, better.
Site screenshot

The following technologies were used to create the site: HTML, CSS, JavaScript, jQuery, Bootstrap, as well as PHP, Smarty and MySQL.

Previously, the texts of all the video lessons were stored directly in my PHP files, now I transferred them to the database. Not only that, I made my own small CMS in order to facilitate the process of adding publications to the site, editing, sorting and moving them. The system, of course, turned out to be primitive, and this is all its charm - nothing more, just what I really need.

Project Promotion

About ten new members are registered on the site per day. I started advertising campaigns on Yandex and Google, from where 2-3 people come in a day. The project has no more progress, in this area I have little experience, the desire to do this is even less. The project develops on its own, sometimes I even wonder where people come from.


At the end, some statistics on the project,
Data are shown on October 9, 2014.

Registered participants: 1861
Subscribers to the mailing list: 840
Conducted webinars: 42

Total participants: 305
Video lessons created: 44
Lessons viewed: 1351
Lessons completed: 325
Rated "Good": 3384
Rated "Bad": 74

Total participants: 402
Created tasks: 140
Total number of tests: 615
Solved problems: 3769
Solved 100% of tasks: 3642
Sent programs: 10651
Written lines of code: 56069


In this project, for me the most important thing is not the goal, but the process itself. I like to conduct webinars, record lessons, prepare letters for distribution, and monitor the development of the project. This is exactly what I dreamed of as a child. I hope that in the near future this will become my main occupation. Project Address:

Also popular now: