Wednesday, September 12, 2012

What Have I Gotten Myself Into?

One of the things I hear from university computer science faculty on a regular basis is that they have trouble retaining students. What happens is that students sign up to be computer science majors but after a course or two they give up. Computer science isn’t what they expected it to be. Professors hear things like “I didn’t know there would be programming involved.” Seriously! Or it is harder than they expected. Some students expect it to be all fun and games. But basically students didn’t understand what they were signing up for. And why would they if they never had any real computer science in school before university?

This is sad and it is a real waste. It is a waste of time and energy on the professor’s part. It is a real waste of time and energy and money on a student’s part. Students who have had computer science in high school are much more likely to finish a computer science major than students without HS CS in their background. It’s not just that they know more computer science. In fact often students, even AP CS students, aren’t ready to skip courses in college. Oh some may skip a course or two but many find it better to still start with the first course for majors. The big difference is that they know what they are getting into.

This is not universal by any means. Some people do take their first computer course in college and fall in love with the subject. I did. And some who took a CS course in HS find out that the university level is not for them. This happens in all majors from time to time. But the odds are improved the more a student knows what they have gotten themselves into.

Now some people say “computer science is hard and that scares some away.” If hard work were enough to scare people away how do we wind up with so many students in pre-med that many American students have to go to medical school outside the US? A motivated student is not afraid of hard work but challenged by it.

If we had more high school CS programs a) more students would get a chance to be exposed to the subject in a somewhat less stressful environment at a lower cost. And b) more students would get to university knowing what they are getting into. We might not have more students going into the major (though we might) but we’d have a lot better chance of retaining those students. Now that would be a good thing.

4 comments:

Thomas Ho said...

I hope to get MY school district to take up this idea:

http://dmlcentral.net/blog/cathy-davidson/why-we-need-4th-r-reading-writing-arithmetic-algorithms

Algot Runeman said...

Curriculum matters, too.

Jumping directly (in pre college courses) into compiled languages places barriers that are unnecessary. Two of the sometimes acknowledged benefits of BASIC were that it was built into computers in the 1970s and that it was accessible by being interpreted.

Languages like today's Python come close to the mark. The majority of programming structure can be implemented while avoiding the complexity of the compilation tool chain.

Python also has the huge benefit of being widely available. It also can be installed at the school and the student's home without license restrictions. Making it easy to do creative work at home is a significant benefit.

Another element helps, too: Teaching a broad curriculum. A pre-university curriculum needs to avoid making programming just an extension of the math curriculum. There's nothing wrong with math, but coding logic mainly depends on relatively basic math. Making students think that programming is math limits its attractiveness.

It still may happen that students who are engaged by programming during high school will balk at the early CS courses in college, but the pool of applicants will probably be larger than it currently is.

Leigh Ann said...

Computer Science courses also have different expectations when it comes to the everyday work of the course. Instead of attempting a problem, submitting the solution you worked on and receiving feedback (at which point you move on regardless of the correctness), instead you are asked to struggle with problems until they are correct.

Its very frustrating for students who are used to attempting something, getting a grade, and moving on. We need more coursework earlier on in schools that emphasize problem solving as an iterative process and not just a "first attempt" one.

Shadrack said...

I think the situation where students sign up and later drop out is a common problem in many faculties, not just Computer Science. I saw it happen in the final year of my Bachelor of Arts degree when I took Archaeology at first-year level because I needed a single credit to complete my degree. In the beginning, the lecture room was so full that all the seats were taken and there were students sitting in the aisles but by the end of the first quarter, a third of the students had dropped out. By the mid-year break, another third had gone. We’d all heard that Archaeology was an ‘easy credit’ (which it wasn’t) but unlike those of us who were genuinely interested in studying archaeology, acing an easy course was their sole reason for signing up. Had the university offered a week-long introductory course for prospective students of Archaeology, this would never have happened. Then again, the archaeology department would not have benefited from the injection of cash resulting from the tuition fees of these misguided drop outs.

Shadrack, webmaster for http://www.boston.co.za