FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
September 01, 1998
Reading, 'Riting, and R-Trees

In a July 8, 1998 New York Times op-ed entitled, "Needed: Techies Who Know Shakespeare," Ellen Ullman, known for books conveying the programming experience to the masses, wrote, "I hope...students and professors realize that programming instruction can take place in a few classes, and students can spend the rest of their time studying foreign languages, literature, linguistics, philosophy and history of science."
CareersFall98: Editorial


In a July 8, 1998 New York Times op-ed entitled, "Needed: Techies Who Know Shakespeare," Ellen Ullman, known for books conveying the programming experience to the masses, wrote, "I hope...students and professors realize that programming instruction can take place in a few classes, and students can spend the rest of their time studying foreign languages, literature, linguistics, philosophy and history of science."

But with organizations complaining about the programmer shortage, and pundits poohpoohing the poor qualifications of programmers fresh from college, Ullman's suggestion is hard to swallow. Do we need programmers who can quote Shakespeare and Nietzsche, or do we need programmers who know the difference between a struct and a class? And just what are the benefits of a course in the Humanities, other than a guaranteed job offer from Starbucks or Barnes & Noble?

Clearly, a strong understanding of the fundamentals of computer science is vital to the success of a software developer. If you don't know whether to use a quicksort or heapsort, or when to use a tree or trie, you are not going to be successful as a programmer. Just as important is real programming experience -- and the more of it, the better. Most computer-science departments offer courses with a strong emphasis on programming, ranging from graphics to operating systems.

But practical experience entails more than classroom programming. Programming real systems that may have hundreds or even thousands of users, is different from completing a programming assignment for a class. Additionally, companies require programmers to work in teams, make decisions based on more than technical factors, and master new topics quickly.

Students who jam their course curriculum with programming and computer-science courses will only marginally enhance their abilities as professional programmers. If they combine a proper balance of theory and programming courses with part-time jobs or internships, however, they will have the necessary programming skills, with plenty of units available for other courses.

Is Ullman correct, then, in claiming that students should spend the rest of their time on history and literature courses? Could those courses actually add value to their abilities as programmers?

Grace Hopper, one of the pioneers of our industry, was designing the A-0 compiler, when she came across this problem: When the source code specified a jump to a subroutine defined later in the program, the compiler would not know the memory location of that subroutine. How could Hopper design a one-pass compiler that did not already know the memory locations of all the subroutines?

While mulling over this problem, Hopper remembered her basketball-playing days at Vassar in the 1920s. Inspired by the "give-and-go," Hopper set aside a chunk of memory and called it the "neutral corner." When the compiler came across a jump to a subroutine whose memory location had not yet been determined, it would jump to a location in the neutral corner. When the compiler finally did compile the subroutine, it placed an instruction in the neutral corner to jump to the now-specified memory location of the subroutine. Hopper later enthused, "It was possible to make a single-pass compiler and the concept did come from playing basketball!"

Hopper's inspiration is not an isolated example. Inspired by cell biology, Alan Kay created the Smalltalk language. Larry Wall modeled Perl after the English language, and a section of his book, Programming Perl, is devoted to Perl poetry. Students who read Wittgenstein will find elements of his philosophy remarkably similar to some of the tenets of object-oriented programming.

People sometimes forget that programming is an art as much as it is a science, and as such, a broad, interdisciplinary curriculum can have tremendous value. More importantly, such a curriculum can bring great value to one's life, which is, after all, what college is all about.

-- Eugene Eric Kim


Copyright © 1998, Dr. Dobb's Journal
RELATED ARTICLES
No Related Articles
TOP 5 ARTICLES
No Top Articles.
DR. DOBB'S CAREER CENTER
Ready to take that job and shove it? open | close
Search jobs on Dr. Dobb's TechCareers
Function:

Keyword(s):

State:  
  • Post Your Resume
  • Employers Area
  • News & Features
  • Blogs & Forums
  • Career Resources

    Browse By:
    Location | Employer | City
  • Most Recent Posts:
    MEDIA CENTER  more
    NetSeminar
    Modernize your Development by Moving Build and Code Quality Upstream
    Moderated by Jon Erickson, Editor-in-Chief of Dr. Dobb's, this interactive panel discussion brings industry experts Anders Wallgren, CTO of Electric Cloud and Gwyn Fisher, CTO of Klocwork together for a candid discussion of the cost savings, productivity and quality benefits that can be achieved by stabilizing builds and code quality as early in the development cycle as possible.

    The reality of today's development environment - geographically distributed teams, the use of Agile development practices, increasing application complexity, etc. - is straining the viability of the traditional coding, build and release process. To stay ahead of the curve, development teams are modernizing their approach to dealing with these issues, and as a result are achieving new levels of development productivity. Register for the webcast.
    Date: Wednesday, July 15, 2009
    Time: 11 am PT/2 pm ET
    Modernize your Development by Moving Build and Code Quality Upstream
    Moderated by Jon Erickson, Editor-in-Chief of Dr. Dobb's, this interactive panel discussion brings industry experts Anders Wallgren, CTO of Electric Cloud and Gwyn Fisher, CTO of Klocwork together for a candid discussion of the cost savings, productivity and quality benefits that can be achieved by stabilizing builds and code quality as early in the development cycle as possible.

    The reality of today's development environment - geographically distributed teams, the use of Agile development practices, increasing application complexity, etc. - is straining the viability of the traditional coding, build and release process. To stay ahead of the curve, development teams are modernizing their approach to dealing with these issues, and as a result are achieving new levels of development productivity. Register for the webcast.
    Date: Wednesday, July 15, 2009
    Time: 11 am PT/2 pm ET
                                   
    INFO-LINK

    Resource Links: