| Dwindling CS enrollments |
|
|
|
| Written by Vince Huston | |
| 09/10/08 | |
|
I keep finding articles that report enrollment numbers in college computer science departments continue to dwindle. A dominant reason suggested is the perception that programming is hard, boring, and no fun. One of those articles reported ... Tucker Balch, an associate professor at Georgia Tech, told the AP that the [school's Robotics course] is an attempt to combat "prime number" syndrome. That disease, he said, afflicts computer science departments that typically ask newcomers to write dull programs performing mathematical algorithms. Other programs use drag-and-drop, GUI driven, multi-media rich, programming environments to stimulate interest. The former approach requires the purchase of (and its labs are constrained by) robotics hardware. The latter requires installing a development environment like Alice or Scratch. Instead - I suggest that games and puzzles are an excellent vehicle for stimulating interest and practicing programming. Consider Mastermind - the simple code-breaking board game. What do you think about the following series of labs? Does this pilgrimage address the "boring and no fun" rap on the study of programming? Does this pilgrimage make the Mastermind domain doable in an introductory course?
Other games and puzzles that could contribute to this approach are: Cracker Barrel peg game, fifteen puzzle, Set card game, alphametics puzzles, Sudoku, Wheel of Fortune, jumble word puzzles ... www.vincehuston.org/teaching Additionally - I propose an earlier emphasis on the concepts of algorithm and data structure. Are we otherwise guilty of low expectations? I'm not talking about: lists, trees, graphs, search, sort, O-notation. I'm thinking about a lunch-bucket worldview that: life-on-the-job is a daily pilgrimage to craft algorithms and data structures. The indirection and leverage of using arrays to access arrays is not a traditional data structures topic, but it is life in the real world. Using a map of pointers-to-function (or the dynamic binding of a virtual function hierarchy) to replace an ungainly "case" statement is an act of obstinate elegance. In the Mastermind example, suggesting that the computation of the "totally correct" response is an algorithm, may seem trivial; but for the beginner - it is an act of algorithm. Computing the "partially correct" response may seem too advanced for the beginner; but I propose that it is an invaluable challenge. Someone once suggested, "If you can only think of one way to solve a problem - you don't truly understand the problem." For the "partially correct" algorithm, I created a "brute force" solution; and then upon further reflection, I created an "elegant" solution whose correctness is demonstrably easier to argue. In the Cracker Barrel peg game: how should jump requests be validated and implemented? Is it algorithm or data structure? Does this strategy to emphasize "a higher moral order" in a first semester programming course address the "boring and no fun" rap on the study of programming? A totally miscellaneous quote ... There are lots of applications in service where the most sophisticated algorithm is bubble sort, and the most sophisticated data structure is linked list. [Scott Meyers] Comments (8)
![]()
Golden Age vs. Now
written by Jack Woehr, September 13, 2008
In the late 1990's my hiring process was overwhelmed in part by CS graduates who had no real calling to programming. There was gold in them thar hills, you see. Perhaps now it is slacking off and increasingly only those who actually want to program computers are attempting to do so. Is there a problem here that needs fixing?
Gotta get over that hump
written by Mark Franjione, September 29, 2008
The point being, too many people are getting into CS and getting caught up in the syntax of C or C++ as their "intro to my major" class. Can you imagine trying to learning simple constructs like if/else, looping, functions, in C?
Alice, Karel the Robot, et. al., can help you get over that initial hump of thinking logically and critically, with just enough syntax. I'd say make it the first 6 weeks of a freshman programming class, then the last 9 weeks you get into Java or C# - some language that has soft corners and round edges. Second semester can get into pointers, resource management, et. al. of C or C++ or... I learned BASIC in 8th grade, then FORTRAN in 9th-12th grade, then Pascal at Carnegie-Mellon, then C and C++ on the job, then a little Java and C# more recently. I honestly can't say I would have embraced Computer Science if my introduction to programming was spent debugging invalid pointer bugs. Don't get me wrong, this needs to be learned, just not in the first semester Freshman course. How many high schools have good CS curriculums? Most? Few? If I was a university with some $, maybe I would even start there.
HS CS
written by Mark Nelson, September 29, 2008
>How many high schools have good CS curriculums? Most? Few
Almost none, here (US).
... written by Mark Franjione, October 01, 2008
I did not mean to imply Java (or C#) as being simple or shallow, but just that the architects of those languages did a great job of making the grammar and syntax (relatively) simple for introductory programming constructs like conditionals, looping, variable initialization, modular programming, et.al. I am blown away by what has been done with Java (and C#) in your browser (or even on your desktop, ala Open Office and JUDE).
I was blessed to have Guy Steele during my junior year Comparative Programming Languages class back in Fall of '82 - the dude knows his languages. That semester, he taught us APL, SNOBOL, and LISP, and showed us just enough FORTRAN grammar to be dangerous with various compiler implementations. I know that I know that I would have been lost if I didn't have a good foundation in an "academic" language like Pascal (although I used MetaWare's Professional Pascal back in the early 90s in an embedded/realtime triple 80186 processor system! ). Write comment
You must be logged in to a comment. Please register if you do not have an account yet.
|
| < Prev | Next > |
|---|
Look Who's Code Talking
|
|
| ||||||
|
|
| ||||||
Dobbs Code Talk Tags
Subscribe to Dr. Dobbs Newsletter
Latest Comments
| Jonathan's Last Day at Sun |
| Implementing Thread Local Storage on OS ... |
| More Technonecrophilia with Snobol One-L... |
| More Technonecrophilia with Snobol One-L... |
| Jonathan's Last Day at Sun |
Latest From The Forums
- TestRail Test Management Software released
Dennis Gurock Jan 28, 2010 - The Borland C++ Builder 6.0 Child Form ...
Oleksandr Grabovskiy Jan 06, 2010 - Test management system easy to use
Sean Stewart Dec 19, 2009 - Why an abstract class can not be instan...
Sumit Saxena Dec 18, 2009 - a brand new query tool is out on beta, ...
Itamar S Nov 07, 2009












Your ideas for punching up the curriculum sound good to me, but there's a problem - computer science already sounds good to me!
I apologize in advance for saying this, but don't you think the world divides into two classes of people: those who think Mastermind is fun and those who would rather have the pegs shoved in their eyes than play such a boring game?
And if that's true, the real challenge (I think) is to get the people who *don't* enjoy problem-solving in and of itself. You know those people. (Hint: if they actually do make it through the CS program, they usually end up floating into either managment or product development.)
- Mark