Answer the question
In order to leave comments, you need to log in
What programming languages to teach in college?
I'm going to teach programming to students. Profile specialty - Programming in computer systems (PCS).
I set myself two unrelated tasks:
1) teach programming, at least a little (everyone)
2) make at least a few good programmers :)
I was given carte blanche in languages, so now I choose which language / languages to teach.
The task is complicated by the fact that many will go to this specialty because it is the most prestigious in this college, or because they will be placed there, and the students themselves are not very interested in their education ... But usually there are 2-3 nuggets in the group for which they wanted would try.
I would like not to be limited to web programming that has been popular in recent years, and to give (including?) a language for desktop development.
I'm leaning towards the idea of starting in PHP and then moving on to C#. I am considering Delphi, but something is not sure about its relevance these days. PHP due to its C-likeness and easy start on it.
I myself know PHP and Pascal (Delphi) well. Not bad Javascript and C, quite a bit of basic (I don’t mention assembler :). I'm a bit unsure if I'll be able to teach C# if I only wrote a couple of helloworlds on it, but there's still time.
There are two similar questions: habrahabr.ru/qa/20824/ and habrahabr.ru/qa/12448/ .
The first offered many rare languages. This is definitely not needed here, the choice will be from the most common.
I cherish the hope to at least bring students (who want) closer to the level of Junior ...
In general, I turn to the collective habrareason for advice.
PS Please do not offer functional/rare languages - they won't just pull it.
PPS If PHP is still chosen, I take on the responsibility to the Habra Society not to produce shit coders of bad programmers, but to immediately accustom students to the correct style and best practices.
Answer the question
In order to leave comments, you need to log in
Teach what you know well. Otherwise, you will not have any confidence, and therefore you will not teach anything. I had C at the university, before that I did not come across programming at all. Those. was a complete zero. Anyone who wanted to be able to learn it. And those who did not want to, would not have learned anything else, anyway.
There, someone wrote above about the console, and about the fact that the student does not need anything else. For me personally, programming became really interesting when I was in BC3.1. turned on the mouse and divided the screen into 4 segments by drawing 2 lines. Everything that happened before with the console was not interesting.
It's better to start learning with Java. It can explain the basic things and principles well. And then the student himself will choose what is more interesting for him - web, mobile applications, etc.
Ruby has had a lot of goodies lately. IMHO as the first language just right! As a plus, you can even touch on a little sinatra, or even rails (of course, the very basics).
You know, I have shoveled many languages, I have been connected with programming since school, more than 10 years have passed since my first acquaintance with languages, and if you had asked this question 5 years ago, I would have said Pascal / Delphi with 100% certainty, but now on they were replaced by the python. This is a universal language, you don't need exe files, you need to teach children the language, programming in general, and how to think. You can write an algorithm in any language, for this it is not necessary to compile it. I would also recommend c#/java or javascript, but they are very difficult for beginners, but at the end of the course it would be nice to introduce them to these languages. But with php, I would advise you not to get involved =) I myself am a php-person with more than 6 years of experience and I can say for sure: only not php.
I tend to either Ruby or Python. As the first languages, this is it.
You can also touch on both just PHP and PHP, along with all sorts of frameworks ala Codeigniter, Yii, Symfony, etc., all the same, in our time it is one of the most popular languages and many will still have to deal with it.
From personal experience:
- If students have layout experience (they are familiar with HTML and CSS), then with PHP.
- If there is no layout experience, then with Delphi (Pascal - as a last resort).
— I do not recommend other popular languages (except VBA), because from scratch is very difficult to understand.
> I myself know PHP and Pascal (Delphi) well. Not bad Javascript and C
Teaching what you don't know very well is definitely a bad idea.
In order to learn PHP and JS, people must have an understanding of how HTTP works, the web server, what layout is, and many, many other things. I taught specifically these things at the institute and came across precisely the fact that FROM ZERO it’s not even PHP itself (the language itself is quite simple - I don’t argue!), but the essence of what is happening in web programming is quite difficult if the student does not know what a client, server, protocol, and the like are. Even the simplest form submission to the server, although it is written in an elementary way, in fact pulls a bunch of (albeit simple) concepts, and if the student is not familiar with them, then the simplicity of the language itself does not solve anything at all - for him it still looks like magic. And using PHP just as a console C-like language is kind of a dubious undertaking, as for me.
Delphi is outdated - there is nothing to discuss here.
C remains - take it. In the volumes in which you have time to train students, it is fundamentally no more difficult than other languages - this is a myth that has been walking for decades, of which I myself became a victim at one time. You will not force them to pick the source codes of the Linux kernel or any drivers. Plus, to learn C, you don’t need to know anything about IT, in fact, NOTHING at all. Take a regular text editor with syntax highlighting, gcc (mingw for windows) and go ahead and sausage examples from K&R, compiling them with the cc test1.c command. If you have a lot of semesters and study hours, then you can then smoothly get down to C # - students will already understand the logic of the program and, in general, the meaning and essence of what is happening, the syntax is generally similar there, and you will simply show how to hook algorithms to buttons and lists. If there are even more hours, then you can dig into ASP. NET, etc. etc. Perhaps it makes sense to start right away with C # - it will be faster and more efficient. But if you yourself don’t know it well, then it’s not worth it - start with C and simultaneously improve your knowledge of C #.
I wouldn’t pick C++ - even the simplest task of creating a form with 2 fields and 1 button, even for a person who understands C well, is not so easy and not very logical - again, you need to have a lot of additional knowledge - WinAPI, MFC or Qt, OOP at a decent level. For the simplest level of C #, it is enough to explain to them the very basics of OOP using the example of buttons and lists, and that's all - the simplest programs can already be written.
There is an opinion that JavaScript is very well suited as a first programming language. You don’t need to bother with its web application - run programs in the console through node.js, focus on algorithms. You can even try to follow SICP but use JavaScript instead of Scheme.
And the prototype OOP model, if it is the first, will go very well. And after it there will be no problems to master the class approach to OOP, as is often the case if you first study class inheritance, and then try to understand the prototype.
What PHP, are you completely crazy here? To teach programming by diving into this vat of shit, sorry for the expression? It's full of porridge there. If you are interested in the WEB, then look towards python or ruby. But THAT, given that this is a college, you can not touch the web at all. They will learn when the time comes.
Start with C. No garbage, purest language, with a low level of abstraction. Exactly what is needed. Learning to program is the way it should be, from a low level of abstraction, step by step, to a high one. They will come to the high on their own, WITHOUT THE SMALLEST PROBLEM, if they understand Xi. No GUI, just console and algorithms. Sorting, lists, queues, stacks, all the basics from A to Z. This is the only way you will reveal the nuggets. By pouring php into your ears, you will only confuse and repel students.
I will ask experts about C # to write more. How easy is it to learn/initial setup?
I definitely won’t give pluses - the majority won’t pull, so it makes no sense. But with Sharp, things can go.
I am a computer science teacher by diploma, and when I myself explained to children about Pascal, I am also a php programmer at work.
A few of my thoughts:
1. It seems to me that you will take the interpreted language or the compiled one, it does not matter at all. Much more important is the syntax of the language.
2. Python is good because it has a clear syntax that makes people immediately make beautiful code design. But I assure you that you will be tired of correcting all the indents.
3. Pascal . I thought a lot about why Pascal is taught everywhere and I understand, I explain why:
3.1 It is with static typing in this way the concept of data types is simplified for students than “Here, the variable was an integer, and here, that’s why it became a string.”
You must explicitly write var integer x;
3.2 That same famous assignment operation ":=" It is difficult for people who are not yet programmers to explain why "=" is not equal to assignment and what the assignment operation is in general. Everyone remembers from mathematics that equal is equal, and "==" is some kind of nonsense.
3.3 begin end allows you to more clearly and clearly show code blocks and program structure than "{}". While a person writes begin, he may have time to think at least a little bit about what he is doing. The main thing is not to blindly explain "Here you need to write begin because it is necessary."
3.4 This is a common practice throughout the post-Soviet space, I think you can easily find a lot of information about the teaching of pascal.
Of the minuses, it is worth noting that there is no OOP in it, or there is, but it is somehow not like that. If the course includes OOP, then you should think about it.
4. Please do not take php there are too many nuances that are simply not needed for beginners, they should not think about them.
Now, for example, I know in which variable which data type automatically, I don’t think about it. But when I started dynamic typing brought me a lot of problems.
I will not tell other disadvantages of php, everyone already knows them, I will only note that it should not be taken as a teaching language, maybe as an elective or just to acquaint people with it.
5. Please remember that a programming language is only a tool, you need to teach people to think and learn on their own, and a programming language is a thing, technologies come and go, and the ability to think is “not on drink”.
PS By the way, there is such a small basic thing, it's very cool, take a closer look :)
I will join the opinion about the python.
GUI: My acquaintance with programming began with Delphi, it was interesting to write programs that could be clicked on (then I thought these were real programs). Then I got acquainted with Qt a little , it was even more interesting there, but it was always difficult for me with C ++. Then I got acquainted with Python and after a while I needed to write a GUI application, which I did using PyQt (Python + Qt ). This bundle ( PyQt ) contained for me the ease of creating Delphi forms, the power of Qt , and the simplicity of Python. While Python can be written using GTK , Tk ,wxWidgets and other
Web. Now I'm most interested in the web (html + css + js), so perhaps the ability to make a page like in VKontakte will be more interesting for students, and the server part can easily be done in python using, for example, flask (a simple and powerful web framework in python) . Here python can compete with PHP or Ruby.
Algorithms. Algorithms have always seemed boring to me, but without them, nowhere. Python is also suitable for this (you can look at the book with examples in python: Toby Segaran - Programming the Collective Mind), but C or C ++ is probably better. Although there are all sorts of SciPy and NumPy for python , which I think will be much easierfor students than matlab that I did not understand.
Also, in addition to Python, it would be useful and interesting to learn html + css + js, as well as C. In general, the number of languages \u200b\u200btaught to me at the university (Delphi, C, C ++, asm, java, matlab, prolog) is clearly excessive. But the main thing is that the student should be interested in your classes and, faced with difficulties, he would not score on everything and would just try to get a credit.
My opinion is of course subjective and I will not say anything about other languages, but still I really like python, its philosophy and the tool that it provides.
In summary:
Python is a very simple language, which is a huge plus for students, especially if there is no programming experience.
Python is a very correct language that forces you to write readable and compact code.
Python is an interesting language, using it you can write simple applications that solve almost any problem.
Python is a powerful and practical (pragmatic) language that is very popular and used and has a huge standard library, not to mention third party tools.
Python has convenient and powerful development tools, for example, PyCharm is free for students.
At school, for show, I studied BASIC, but there was no sense from this. At the university, in the course of high-level languages, they taught C / C ++, in the Assembler course, of course, assemblers. After that, I studied PHP and Python on my own from books.
Therefore, I would advise you to show students that there are strongly typed (C/C++/etc) and dynamic languages (PHP/Python/etc).
Based on what you yourself know, I suggest six months of C / C ++ (at the learning stage, it will seem to all students that this is the same thing, so it’s worth making some distinction so as not to be confused), the second half of PHP (after C, students will find it easier to study) and the web for most seems easier to access the audience and the fact that their work will not be in vain. It would be better to learn Python so that you understand the existence of various syntaxes and programming patterns. But since you didn’t work out with him, then you shouldn’t experiment.
If the specialty is profile - and if the students are ready for this - it is better to start learning programming with C. Then C ++. And then it will be easy for students to switch to any languages, except perhaps functional ones. And if not profile - or students are weaker - then Python will work fine.
I think the most optimal would be a bunch of php, java, python.
Well, attach html, css, javascript to the web.
Don't forget about frameworks.
If I were a schoolboy/first language student now, I would like to be taught Python.
Author, don't even think about PHP!
No!
A specific language needs to be trained in specialized courses, or independently. No need to tie the thinking of students to a particular language. Let them teach more theory. When a student has an understanding of the basics of programming, it will not be difficult for him to take a book on any language and master its syntax and specifics on his own.
Theory, algorithms are an important basis for a future programmer.
Surely, they themselves met “gifted” graduates who could well write “Hello World!”, but who do not understand what variables are ...
Well, in order to inspire students with real examples, show them on what you yourself know well.
No need to tie students' thinking to a particular languageAnd on what these algorithms practically to work out? "Compile" flowcharts? The base language is still needed.
Theory, algorithms are an important basis for a future programmer.It's true. The main part of my future work :) To teach how to build algorithms. Raise the question "Why" more often than "How".
who don't understand what variables are...Met, of course. I took exams from such people, it was disgusting to put a “troika” myself.
C, and then maybe C++. For modern development, the second practically replaces the first (I'm not talking about low-level development). Why these 2 languages? C is a fundamental basis, a low level of abstraction, but which is understandable to the programmer - "assembler with a human face". C ++ is an introduction to OOP, and it is not necessary to use WinAPI, because there is Qt, Visual C ++, and for GUI - wxWidgets. After such a course, it will be easy for them to switch to C #, Java, PHP (fortunately, the syntax is similar), or learn something like Python, Ruby (as abstraction increases), or even learn assembler (low-level C skills will not let you think that " real programming” is PHP, Java, C#).
What about the theory - algorithms and data structures (you can even use the AHU book of the same name).
And I am for PHP and Basic (in the version of VBA or AutoIT)
It is important that the students will be able to apply the acquired knowledge during their studies.
And since you know PHP, you will be able to give not only the alphabet and primitive examples, but teach students to solve their own applied problems.
Depends on the starting level and abilities of the students of course, and their goals.
Python and Ruby are the least risky option on average.
https://www.youtube.com/watch?v=0nl9JPh9lTk
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question