📜 ⬆️ ⬇️

How I created a technique for learning C #

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

In this, I found my vocation - to motivate to study programming.

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

I write programs since childhood


Back in 1992, when I was an eighth-grader, I went to the computer science classroom every day after class, where I sat until the closing time for practical classes with high school students. They studied Basic on the BK-0010. I already had some programming skills, imperceptibly for the teacher, I helped high school students to solve their problems. It was a joy for me to rate them.
')
In the tenth grade, I entered the correspondence school novice programmers. They sent me tasks by mail (paper!), I wrote the texts of programs on A4 sheets and sent them for review. The study of the Pascal language took place in the absence of a compiler, only by books and by 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, in the morning, in the afternoon and in the evening, then one at a time, then in a team, then in pairs, various tasks were solved. There were no theoretical studies, there were practical tasks. Many tasks and programs. The week of that school gave me a lot. It was there that I understood 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 home school, at electives, in a private computer school, I gave private lessons to students and schoolchildren, worked in a house of children's creativity and in a gymnasium. The university led the practice, led computer science classes in the city's physics and technology school (without computers, which is interesting), even organized his own “Formula Programmer” circle at home. In parallel with the main work, I managed to get a job at a vocational school where I worked as an informatics teacher for four years.

Interactive Task Verification System


I talked a lot with schoolchildren, I already knew what could be carried away by, and what was on the drum. Yes, no one wants to read theory. But everyone wants to act.

Working in a vocational school, I began to create a "robot" - a system for distance learning 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 occurred, it 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 times with all the other tests that the student does not know.
6. Puts an assessment of the program: the number of correct tests / total number of tests * 100%.
7. If typed more than 50% - gives access to the next lesson.

What do students like?


Schoolchildren liked that their programs were checked not by a teacher, but by a “robot”. This is more objective, besides, “no need to wait, no need to call,” but you can send as many times as you want to check and get the result. It is noticed that the majority of students are not content with “half-solutions”, I constantly observe multiple sending of decisions until 100% are gathered. It got to the point that my students were solving problems on my website on foreign lessons, which is why other teachers complained about me. I think this is a success! :)

By the way, this system extremely facilitated me the process of grading pupils. I just asked for the house, say, all the tasks from the “Cycles” section, there are 10 of them there. In the next lesson I put the marks according to the points scored. For the first time, it was a column in a journal of 12 units and a pair of twos-threes. Moreover, there were no psychological dramas, which are usually accompanied when setting stakes. Have a solution? Not. Here is a score. Everything. One time was enough. According to some reports, vocational school students did homework only for my lessons ... Yes, it was awesome time. I would like to return it, but at a new level.

Another important aspect of the technique is sequential access to the tasks. This allows you to concentrate on a specific task and not be sprayed. I tried to open access to all tasks at once - efficiency decreased by an order of magnitude - students do not know what to undertake, and as a result do not solve anything at all.

New look at the old project


After working in a vocational school, many years passed, my system was covered with a thick layer of dust. From year to year I was still dreaming about the day when I would finally continue this project. And now, this day has come. I signed up for information business training, got a good Pendel and started acting.

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

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

Most of all I liked the C # language from the micro giant. By that time, I had closed several dozens of various projects in this language, including one very large million project to create a program for recording work schedules, working hours, and wages (although millions did not go to me, I only had a salary).

So, the language is selected. How do I now teach him to others through the Internet, in order to earn more on this in the future?

Need zest


I perfectly understood that on the Internet there was a lot of video tutorials on learning the C # language. There are so many good products, there is an opportunity 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 lessons, not dry books, but live participation! Free, practical webinars. Clean practice, working examples, creating a ready-made program from scratch, on-line. Even better - the game program. Schoolchildren and students like to create their own game programs.

The calculation was as follows. Anyone, just following me, can create a ready-made toy from scratch. It's cool, you can boast about it, it's super, it attracts, it motivates. The toys I created are basic, without glasses, without statistics, without special graphics, without frills. Only the logic of the game. Everyone wants to add something, change, complicate. And here the student is faced with the problem of lack of theoretical knowledge. And he himself, on his own initiative, begins to study the theory, literally biting into the granite of science, because he is motivated from within.

Guys, it works. My calculation was correct.

Of course, there were many critics of my methodology. Pros-programmers say that I will grow bydlokoderov. I disagree with that. I just broke the sandbox and invited everyone to build sandcastles. Those who want to build real houses will go on to study further. And the theory of programming will not be for him some kind of abstraction, but will fit in a bright little head for specific practical memories.

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

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

How to conduct a webinar?


For webinars, I was looking for a site for a long time. For my purposes, I need the following:

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

I’m not going to list here all the sites I’ve tried, I’ll say right away that after a tedious search, my choice fell on join.me. It satisfies all these requirements. The only feature is that all newcomers are faced with the problem of sound settings, for this you need to "call" and download the program to connect. In all other respects - a simple, fast and convenient platform. Price - $ 200 per year. I would be grateful if anyone would recommend an alternative webinar platform that would fit the specified requirements.

I conducted the first webinar on December 25, 2013 on the topic “Creating a program for SMS distribution”. He invited all his friends. It all turned out to "Hooray!".

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

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

I came up with the following scheme:
1. Choose a game to create, I write it myself.
2. I spend a webinar on its creation.
3. Save the webinar recordings to create your video course.
4. Repeat.

At the beginning, webinars turned out to be crumpled, many technical difficulties arose, only a few people attended the webinars. It was just a shame to post such recordings, so at first I recorded video lessons separately from the webinar. It was longer in time, but the quality is much higher.

So, the process of creating video tutorials was already established and worked successfully with the weekly cycle:
Webinar => Video Tutorial => Webinar => Video Tutorial.

What to do next?

Create a simple website


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

I chose a sonorous name for a long time, eventually settled on videosharp.info . The letter "tse" / "si" inside this word did not want to become, 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 a cover myself, beating the associations of the name of the language with the note “C sharp”.
image

The site had two sections: "Webinars" and "Video Tutorials". But how to make video lessons "work"? My answer was already ready. First, only one lesson should be available at a time. Secondly, for the implementation of each lesson you need to report.

For several days on PHP and MySQL, I sketched an algorithm for sequential access to video lessons with the form of sending an 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, looked forward to new programs. However, the amount of work went on and this occupation began to take a lot of time. One student from the most active listeners volunteered to help me. He was engaged in this business very responsibly, with comments, answers to questions, analysis of the code. 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 the auto access to the next lesson. Still better than nothing. However, this is contrary to 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 learning, but empty entertainment.

What to do? Give to check other students? 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 excluded.

So what to do? For several weeks this question did not give me rest. What to do? Finally it dawned on me: reports for the tasks needed 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”. Go to the next task is possible only when you will receive, say, ten positive reviews. Make it possible for everyone to check the work, not just the project participants.

This approach fully justified itself by making of the “minuses” - “pluses”:
1. To go 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) boast, 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 get more air into the lungs and blow a huge layer of dust from my super-duper interactive task-checking system to implement it in my project. This section is called “Console” because it is written in console tasks.

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

In C #, you can't do that easily. I had to create a separate topic with puzzles only for reading numbers in various forms. The analogue of the Pascal line in C language is the following:
  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, it did not take a lot of time, as I clearly imagined what I wanted to receive. This is how “Robot Sharp” appeared - a program for checking students' decisions.

In more detail the process of the work of the robot Sharpe - how it compiles and checks the tasks - you can look at this video that I recorded specifically for this article.


To ensure the work 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, Robot Sharp saves it to the user's folder, compiles it, runs it through the tests, and writes back to the database the result of the check with a text message. This may be a compiler error message, an incorrect result of the program when passing a zero test, a list of tests with test results. If a task gets more than 50% of points, it is counted and the student can proceed to the next task.


Video problem solving


When I created this system before, I dreamed of the idea of ​​placing theoretical material at the beginning of a lesson. I actually compiled several such text lessons. But ... Nobody read them. But everyone always had a lot of questions: “How to solve this problem? Why doesn’t my program start? ”

Therefore, I decided to give the 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 the options are and write the code of the program itself. That is, the student must dial the pens independently, in his head at least something will remain, but the quantity will sooner or later become quality. I must add that video solutions are rarely used, and this is pleasant. Many people want to "finish off" the task on their own.

New design


After half a year the life of my project has already become more than 1024 students. There are already 32 video tutorials on creating a variety of gaming and application programs. At least 16 people attended the webinars.

The free template of the site, which was taken as a basis, was no longer suitable. I started designing the project. I redraw the layout of my site at least ten times.
Freehand drawing of the project

Freelancer created me a template for my site on Bootstrap. Beautiful, simple, user-friendly design, two menu levels, bread crumbs, input / output buttons. Everything was beautiful, but dead. To transfer the entire project from one design to another is how to move to another city. In fact, I was rewriting everything again. And I am very pleased with this, the code turned out better, better.
Screenshot of the site

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 video lessons were stored right in my PHP files, now I transferred them to the database. Moreover, I made a small own 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 superfluous, just what I really need.

Project Promotion


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

Statistics


At the end, some project statistics,
Data is given on October 9, 2014.

Registered users: 1861
Newsletter Subscribers: 840
Webinars held: 42

VIDEO COURSES
Total participants: 305
Created video lessons: 44
Viewed lessons: 1351
Lessons completed: 325
Delivered "Good": 3384
Poor ratings: 74

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

Conclusion


In this project, the most important thing for me is not the goal, but the process itself. I like to conduct webinars, record lessons, prepare letters for distribution, 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 be my main occupation. Project address: www.videosharp.info

Source: https://habr.com/ru/post/239825/


All Articles