Scott and I returned to Searcy yesterday after attending the morning paper presentations. We both agreed that this was one of the better academic conferences we had attended.
As I mentioned before, collaborative learning was a huge theme at SIGCSE. Some of the big curriculum pushes included game programming, robotics, and parallel programming. A number of the presentations stressed how introducing games, graphics, and robotics in CS1 would probably help in retention and expanding interest to CS minorities (mostly women). However, many of the presentations also failed to show conclusive evidence that this was true. In fact one of the presenters admitted that he spent so much time discussing peripheral concepts in regards to game programming that there was no time left to teach some of the core concepts.
Ideally, I think it would be very worthwhile for our department to offer intro to programming courses that use either robotics, graphics, or games in their approach. Then incoming freshmen could pick the course that most interested them. Certainly it would be a good recruitment tool. The only problem is we don't have enough majors or teachers to offer so many courses. I may at least try to mix in more of these attention getters in my CS1 course next fall.
Something else I heard repeatedly was how we should be using Python in CS1. I can certainly see some benefits of doing so, but there's a number of benefits to teaching C++ first. One presentation showed that using Python in CS1 was no better than using C++ at preparing students for CS2. Until we see some solid research showing that Python is in fact better at increasing retention, I think we should stay where we are.
Next year's SIGCSE is in Milwaukee where the average high is 34 F this time of the year. Brr.
I'd have to agree with sticking with C++ for a learning language. I honestly wouldn't want to code in it on a daily basis, but the low-level basis it taught (including things like pointers and how they work) is so much easier to understand than from a higher level language. Python certainly has many benefits, as do other dynamic languages, but my opinion is that C++ helps me to understand what Python is actually doing.
ReplyDeleteWhen I took COMP 170 last semester, I actually wondered why Harding wasn't teaching basic programming with Python, as opposed to C++.
ReplyDeletePython seems like a simpler and more natural language, and it allows new programmers to focus more on learning how to break down and teach a computer to solve problems algorithmically, instead of worrying about the more low-level stuff.
Of course, I'm just a low-level CS student (who has way more experience with Python than C++), so I won't go against people with doctorates who regularly attend conferences.
You're probably right that Python does free the programmer to focus more on the problem and less on the syntax. The question is, does the extra complexity make students drop the major, stop potential students from trying out CS, or significantly hinder new programmers from becoming good programmers? At some point students have to learn C++, so do we teach it up front or wait until later?
ReplyDeleteIt's definitely a good point that C++ needs to be learned sometime, and I was just as happy to learn it in COMP 170 as in some other class. Also, the sooner students start learning C++, the sooner they'll feel natural with it.
ReplyDeleteOne thing to consider is that at Harding, CS students aren't the only ones who take CS1- math and mechanical engineering majors also take it, for example.
Although I definitely see the benefit in these majors learning how to program, do they need to learn low-level programming, or simply how to get a computer to solve particular problems they'll encounter in their major? (I'm actually curious about the exact reason they take it, although I definitely think it's beneficial for them.)
I'm certainly not criticizing anything about the Harding CS program. So far it's been great and I've learned a lot.
I believe a number of non-majors are required to take programming because it is "applied math" and gets them to learn about algorithmic thinking. It would be interesting to see someone do a long-term study on Python vs. C++ for non-majors... does it affect their later schooling or education? Do they still use Python or C++ later in life?
ReplyDelete