Dr. Dobb's Journal October 2000
For the most part, traditional computer-science education has been defined by the extremes. On one end of the spectrum you find high-level courses that focus on fundamentals such as data structures and algorithms, sometimes delivered via Scheme or other less than mainstream languages. On the other end, you have skill-development classes that crank out Visual Basic programmers on an assembly line. The end results are far too often that neither approach wholly prepares students for the real world of software development. The Carnegie Technology Education program (http://www.carnegietech.org/) hopes to change all this.
CTE, a wholly owned nonprofit subsidiary of Carnegie Mellon University (http://www.cmu.edu/), delivers courses via the Internet for students studying software development -- not computer science. This is an important distinction, says CTE president Allan Fisher. Yes, CTE does offer coursework in high-level topics such as, say, object-oriented programming, design and testing, and data structures and algorithms. However, these courses are delivered using mainstream languages such as Java, Visual Basic, and C++ (and the STL), respectively. In other words, CTE's goal is to combine immediately useful, hands-on practice of current tools and technologies, with an understanding of the fundamental principles that persist across rapid technology changes. CTE's intent is to put people in jobs now and prepare them for continued employment in the future.
CTE currently offers 10 courses, ranging from the aforementioned classes, to systems programming, databases, networks and distributed systems, project management, and the like. Classes can last from six to 15 weeks and consist of lectures and labs. Upon completion, students are eligible for either a certificate in: Computer Programming (requires five courses covering object-oriented programming, UI design and evaluation, data structures, and programming in C++, Java, and Visual Basic and leads to jobs typically titled "computer programmer"); or Software Systems Development (requires five additional courses in system-level programming, databases, networks, distributed systems, software methods, and software project management and leads to jobs such as "programmer/analyst" and "software engineer").
But CTE isn't just another distance education web site. What's unique about CTE's approach is its focus at the organizational level, rather than the individual. That is, CTE is a tool and content provider supporting instructors in academic and industrial settings. By not dealing with students directly -- focusing instead on course content (and updating it at least three times a year) -- CTE can concentrate on developing the most appropriate and up-to-date tools and content for faculty in the field. Actual teaching is left to CTE's instructional partners. (CTE's current list of partners includes both 2- and 4-year colleges and technical institutes around the world.) CTE also provides a web-based infrastructure that supports homework, testing, feedback, grading, and general student/teacher interaction. CTE instructs the instructors in course content and use of the delivery system and assigns mentors who support instructors. Students participating in CTE-based programs enroll in and attend classes at partner schools.
According to Fisher, initial results are positive. Student performance is as good as, if not better than, nonCTE programs, with CTE-based students exhibiting better retention rates. However, since the system has only been "live" a few months, the coming year will tell the tale in terms of results.
In all likelihood, the CTE program will evolve over the coming two or three years and flexibility to accommodate such change is built into the model. This mirrors the rapid change in software development tools, techniques, and job markets. Fisher and the CTE crew deserve applause for tackling today's problems while planning for the future in a creative, yet sensible, way.
Dr. Dobb's Journal
Editorial Calendar 2001
January Programming Languages: Scripting, Alternative, and More
February Java Programming
March Testing and Debugging
April Algorithms and Data Structures
May Communications & Networking
June Object-Oriented Design
July High-Performance Computing
August Database Development
September Distributed Computing
October C++ Programming
November Computer Security
December Operating Systems
We're already looking for articles for next year. If you have an article in mind on these or other topics, drop us a line at editors@ddj.com. By the way, DDJ's author guidelines are available at http://www.ddj.com/ ddj/authors.html.
Jonathan Erickson
editor-in-chief
jerickson@ddj.com