We’re rewarding the question askers & reputations are being recalculated! Read more.
9

Careful! That's a pretty aggressive statement, and is liable to make folks who really do have trouble feel pretty bad about themselves. You may want to take a look at this question. Whether you believe the answer to ultimately be yes or no, you will find that even the most adamantly "no" teachers admit to some number of students who have enormous ...


8

According to me if people interested in this then nothing is difficult for them. This is a dangerous viewpoint, and I strongly urge you to reconsider. Many students find programming difficult. If you tell them that it should be easy, then you're going to dissuade them from pursuing it. "This programming stuff is really hard for me. My teacher told me that ...


8

One example I've used for students in the past is a shared printer. If I have five people using a printer all at once I will have a problem if two of the five attempt to print at the same time. What can I do? I can put up a sign on the printer--"Only One User At A Time Please" and hope everyone sees and follows it. Of course then the users need to ...


7

This might be a mistake, actually. Everyone is different. People like doing different things. Programming isn't for everyone, nor is the wider world of Computer Science as a whole. My daughter, for example, is perfectly happy as a Philosopher. My son is perfectly happy outside academia. Convincing someone to do something (a kind of advertising) may do them ...


6

I suggest looking into Growth Mindset resources, both to understand why students feel this way and why others excel despite facing difficulties. One way I help students get past that initial hesitation is to implement the Lifelong Kindergarten method from the MIT Media Lab. It's the 4P method: make projects, on a topic that you feel passionate, with your ...


5

I hate to be unkind, but I wonder if you are blaming others for your own lack of effort and commitment. I don't think that everything that you need to study needs to be "interesting" before you make a success of it. Some things just need to be done and done well. It is hard, of course, when it isn't interesting, but if you have a goal then you can work ...


5

The course is often theoretical, taught like a math course, which it is, actually. In fact, my daughter has a doctorate in Philosophy and this was one of her doctoral courses since it relates to Epistemology. There is actually more material than can be covered in a single course, I think. Formal language theory could be introduced as part of a Languages ...


5

Others have already said well why you shouldn't dismiss the difficulties of your students. I'll address this other portion of the question: How can I convince my students that programming is not as difficult as they think? By making it easy. Easy things are those that conform to our mental models, so every person has easy things different from those of ...


5

Everyone finds some things hard. It differs for different people depending on their background and their interests. But it also depends on the quality of their teaching. More important, some people catch on to new things more quickly than other things and more quickly than other people on a given task. I wouldn't be likely to tell a student that this is so ...


5

Actually, this depends much more on the teaching methodology you use rather than the language. The best answer might just be the language that you, yourself, are most productive in. But if you aren't a programmer yourself, it may be very difficult for you to teach them. But, if I had to name a language that is (a) fairly modern and (b) fairly forgiving of ...


4

Do it for the fun of it You say that you have made nothing of your life; You say that you have an obsession with learning CS. If so then what does it matter what the outcome is. If you enjoy it then continue to learn. It's not you I used to have a learning disability, but then I got a new teacher. You seem to blame your self. Autism is not a bad thing, ...


4

Since you are doing this in the context of code correctness, one incentive is to tell student that in some cases, you have to prove code, not test it. Anything critical (pick up your example, nuclear plant command system, plane autopilot, …) requires the highest level of confidence. Tests are always going to be partial. They will test 1, 10, 1000 possible ...


4

Your question immediately reminded me of Andrew Luxton-Reilly's paper, "Learning to Program is Easy" from a couple years ago at ITiCSE Here's the abstract: The orthodox view that "programming is difficult to learn" leads to uncritical teaching practices and poor student outcomes. It may also impact negatively on diversity and equity within the Computer ...


4

The Shunting Yard Algorithm To go along with your example of evaluating RPN, you can convert infix notation into RPN with the Shunting Yard algorithm It uses both a stack and a queue, although the queue is really only used as an FIFO output; the algorithm never reads from it. This algorithm has the benefit of being practical, and its use is immediately ...


4

Ideally, I would like some simpler problems which can be presented with even lesser background. Fortunately, queues are used often in everyday scenarios. If you're just trying to teach the general First In First Out (FIFO) concept of a queue (and not necessarily how it solves more complex computing problems), then there are a lot of opportunities to show ...


4

Rosen, Discrete Mathematics and its Applications, Sec. 8.3, says: This problem arises in many applications such as determining the closest pair of airplanes in the air space at a particular altitude being managed by an air traffic controller.


3

Motivation to work through "boring" material can be from knowing that it is the required foundation for more interesting stuff. Or you might try to find some interesting angle to it. Perhaps it is presented to you in a way that doesn't match your style, look for alternative expositions (other lecture notes, videos on YouTube, rummage around in Wikipedia to ...


3

I try to introduce induction not only as method for proving an algorithm, but as a method for developing algorithms as well. The idea is from Introduction to Algorithms by Udi Manber. Sometimes the way of thinking solve the problem for n=1 think about how you can calculate (n+1) once you know n helps them to develop solutions on their own. And it helps ...


3

Programming is like playing a piano: it's easy after you spend enormous amount of time practicing it. Those who love programming do not notice how much time they spent learning it, because it's so fun to them that time flies. Every time you went to search a new trick didn't feel like work at all. It felt like playing a game. However, it was time that your ...


3

OK, maybe I'm just a contrarian, but the approach that I take is to validate the experience that programming is sometimes hard. I tell my students that pretty much every developer hits patches where programming feels hard. The compensation is that it is also fun, and rewarding, and a "worthy" challenge. I point out that they are learning a new language (...


3

You have a big job. The only way to do it is to just start. The undergraduate CS curriculum, which forms a good basis, is about 500 hours of direct instruction and another 1000 or so hours of practice. The instruction is guided and the topics are selected by experts. You are trying to do all of that on your own. Big job, but not impossible. You could ...


3

It seems to me that your students are asking for external validation: they want evidence that other people (the industry) value what you are teaching. For these students abstract claims such as "This will help you write better non functional code" or "you might need it in the future" usually do not suffice. Toy examples such as computing array/string length ...


3

In addition to the other answers: I'm usually telling my students, that a programming language is easy to learn - the basic vocabulary is just about 10-20 words and in their language courses they learned more words in a shorter period of time. Even the grammar is much simpler then in natural languages. Usually they are a bit shocked when I tell them in ...


3

Nearly everything in Unix Gnu/Linux, e.g. ls | less. Queues make it possible to do interprocess communication without semaphores, locks, mutexes, and all that nasty stuff. (If you can't keep it constant, then a queue is the next best thing) An ethernet switch: it need to read the first 6 bytes, then route the whole lot to the desired port. To do this is ...


3

I will draw on and supplement my answer pointed to in a comment. The main things you need to create for a course are A syllabus, listing topics and how much time (approximately) you will spend on each one. A list of student activities (exercises and projects) that they will be required to do to learn the material. This is the most important element. A ...


3

Understanding people better can enable you to more effectively teach them. Taken as axiomatic, this can be a helpful thought. It can also be a distraction. The value depends on how it's applied. When trying to understand "people", you can aim to understand people as a collective of unknown size, from unknown backgrounds, and unknown individualities; ...


2

This may take more than one edit to finish. Please be patient. There is no reason to give up. There are many highly ranked people in the CS community who are pretty far out on the autism spectrum. But they have learned to act productively. With effort, you can too. But it takes a lot of effort, as you know. My first recommendation is to develop a skills ...


2

Yes, I think you should stick with it. There is much you can learn and achieve. There are different routes you can go depending on what you are comfortable with doing. You could continue to learn informally or you could try and enter a formal program of education at an appropriate level. As mentioned by @Buffy it might be useful to have someone who can ...


2

Abstract definitions are a deep rabbit hole. To illustrate the point: First attempt Imagine a non-English speaker trying to read the dictionary. First word: Aardvark. A nocturnal badger-sized burrowing mammal of Africa, ... Wait, what does nocturnal mean? Done, occurring, or active at night. Wait, what does occurring mean? ... And this is the core of the ...


2

Growth You say they copy the intelligent students, so first watch https://www.ted.com/talks/carol_dweck_the_power_of_believing_that_you_can_improve?language=en Feedback Then stop with the sumative assessment (Stop grading them). Encourage mistakes: I just heard of a company that has a mistakes wall. They seed it with a few famous quotes about mistakes. ...


Only top voted, non community-wiki answers of a minimum length are eligible