55

The difficulty of CS (true or imagined) and the drop out rates are not the same thing. Let me start an answer, but it might take several iterations to get all my thoughts together on the two ideas. Two themes come immediately to mind. The first is periodic and I don't know where we are in the period at the moment. But in certain combinations of economic ...


39

First, I somewhat dispute the premise of the question. I don't necessarily believe that it is harder. I think there may be some other elements at play. Unlike many other college fields, students often have little to no formal background in the topic prior to entry -- in fact, many have little to no relevant background at all. That means that they're ...


23

Here's an attempt at an answer, with some reflections, and then hopefully at the end a concise reply that we could deliver to an introductory student. For the purposes of this answer, I'll assume that in the first year or so, teaching computer science is synonymous with teaching software engineering. Motivating Quote Edsger Dijkstra wrote in his paper, On ...


17

From my experiences (I studied about 15-20 years ago, and my cohort lost 50% of students within the first four semesters), the main reasons are these: Many students do not really know what CS is about. They might think that it's about learning how to work with computers, or become "power users", or programmers, or something along these lines. I ...


12

Maybe some of those who "fail" should have been somewhere else rather than funneled into computer science. There needs to be a differentiation between those who want to study computer science (advance the state of the art) and those who just want to write programs (make use of existing techniques and tools.) I'm in the "just write programs&...


12

Share their own struggles. Period. The instructor can start dispelling the myth by sharing his/her own story (replete with self-doubt, struggle, and frustration most likely) about studying computer science. In Harvard's CS50 course, the professor shares his experience of not starting as a CS major and of essentially taking CS50 himself pass/fail. That's in ...


10

The kinds of things suggested in your question and many similar things won't help them. Learning some other "tool" or "language" or "technique" at a beginners level will still leave them with just a bunch of tools they don't really know how to use. Instead give them a project - preferably a hard project - in which they can use what they have learned, but ...


9

Actually, what you want to do is commendable. And no, at the scale of things you talk about, I don't think you are likely to get yourself confused. In fact, you may have the opportunity to learn different things in an integrated way. In some ways the educational system, which puts different topics in different boxes, isn't optimal and everyone needs some ...


8

Looking back on my experience and education as a software engineer, I think the largest inherent contributors of difficulty in computer science are that it has exceptionally strict and unforgiving standards for correctness, and that solving problems in it often requires an exceptional degree of questioning or ignoring "common sense" basic ...


7

First, your classroom needs to be comfortable. No one's going to do well if they fear being called nerdy or some such nonsense. I myself have unfortunately been insulted along those lines, and though I ignored them (I figured, well, I've got better grades than them, so probably a good thing) it was hard to. Second, start small, work up. When I first ...


6

In addition to the many good answers on here, as a past student, TA and instructor in CS — most programming assignments and projects often take large amount of time, even if slimmed down to just fundamentals. There is a definite learning curve to build the skills, and personal mental model surrounding syntax, compilation, building, layout, debugging and ...


5

Look at their skills, look at their passion. It they have passion for something, then they will do much better. This passion can not be based on, I think there is money in this. If their passion is Free Software, or systems administration: Then Gnu/Linux. If it is web design, aesthetics, user interaction: Then web design. If it is mobile gaming, or other ...


5

Give the grade not yet, when they don't pass. Don't give grades that they can compare with each other. Praise effort, strategy, progress “This is an interesting strategy”, do not praise achievement. Tell them, that every time that they push outside of the comfort zone, they will grow more neurons, and they will get smarter. Transform the meaning of ...


5

Computer science demands a set of qualities, some of which are somewhat antithetical. One is the attention to detail. Another is the creative ability to build strong abstractions that are both powerful and useful. This involves some pretty heavy lifting in the big picture thinking department. However, it is hard to get off the ground in programming if ...


4

When I want a student to look something up or learn something new on their own, I find that they resist that task, often because they think what I'm asking them to do is challenging. I have found that framing the task with specifics such as "I read through that tutorial myself last week and it took me about an hour to do the task" helps students understand ...


4

I have seen instructors call a wide range of documents "study guides". They have ranged from test "simulations" which are old tests with tweaked questions to a 1 page .txt print out with a bullet list of important topics to study. I have also seen instructors spend an entire lecture on just test review mail but not hand out any documents. In my ...


4

I do study guides because some students may need to list the information just once more to get it. What if they hadn't had that opportunity? They may have missed it. And, let's face it, do a lot of students, especially those at the high school level, have the self-discipline to go over the material once more unless they have a compelling reason? Even a ...


4

In many ways the best study guide is one that the students themselves write. This can be done incrementally throughout the course and is useful even in the absence of exams. There are two ways to go about it, and you can, perhaps do both. Each student should have a deck of index cards and they should carry a few around with them. They can take notes of ...


4

Goal-oriented action Part of this really depends on your goals in administering the exam. If your goal is the traditional idea of creating a nice bell-curve to rank students, having a study guide makes very little sense. You can separate the wheat from the chaff without providing any assistance to the students prior to the test. However, if you want to ...


4

First of all, kudos to you for wishing to enrich yourself! In addition to Buffy's fine answer, I might recommend an approach to self-studies that I once learned that ensures steady progress on multiple fronts. My understanding is that the technique itself is an old Jewish approach, used for hundreds of years by people becoming talmudic scholars. Put aside ...


3

tl;dr Approximate the "real world" practice/environment as the assessment. Pre-setup To begin with, I'm going to presume that there is some form or pre-screening, and/or qualification process. I.e.: having taken such & such course(s), being actively enrolled in some, possibly specific, institution, passed through an interview, etc. The process below ...


3

If you are doing a good job of teaching then your students probably think you are smarter than you really are. They may also think that you arrived magically at your current position without effort or setback. It is good for them to know the truth. That what looks to them like brilliance was more likely just hard work and never giving up. It is also good ...


3

Computer Science, as taught, is a combination of Mathematics and Computer Programming. Mathematics is the part that is the theory of computing, and programming is the art of applying it. I'll dub the Mathematics party "theoretical", and the programming part "applied". Now, both parts are hard. But are hard for somewhat different reasons....


2

Essential Web - HTML, CSS, Javascript and jQuery. - This is something that is a basic requirement for a lot of jobs where I live. I also believe this is something anybody can learn, even if they are short on time. Java (with Android) - Learn to build an app. Android is pretty straight forward, and does not really require a thorough knowledge of Java itself....


2

Off course it is a broad question and depends totally on the: Student's Interest Student's Aptitude Checking whether that tool/domain has some scope - Say someone wants to work in VB, then I would have really think about it. This survey can serve as a good measure but a word of precaution is needed to check the demography of participants to compare it with ...


2

My opinion is that Essential Web is the way to go in this specific situation. 1. It is clearly employable. I'm inferring from the post that at least one of the motivations of the students in question is to be as employable as possible. When I look at the 3 options presented, I feel like Essential Web is the most generally employable. Also, while I haven't ...


2

Another classification criterium would around the type of exercise. Some exercises are 'here is a problem, write a piece of code to solve it' or 'design a (piece of a) software system'. Others are 'here is some partial code, or code with a mistake, complete or fix it'. Another type is given correct code with the lines in randomised order, put the lines in ...


2

In one sense this is hopeless as you probably can't come up with a classification that everyone would agree with. On the other hand, it is certainly possible for you to come up with a classification that is useful to you and to other people who think and teach like you do. However, the real problem is that "what is elementary" is bound up with teaching ...


2

Seems to me like you should have everyone submit a project within some theme you select every year (to prevent copying of previous projects). (This wouldn't be a general assignment, but more a sort of "show me something cool".) Provide some boundaries - e.g., must be written in Java, must be submitted as a github repo, etc, that test some of what you need (...


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