CSC 270
Survey of Programming Languages

Instructor: Dr. Stephen Bloch

Fall, 2003

This course meets from 9:00 to 9:50 AM Mondays, Wednesdays, and Fridays, in HHE 110 (formerly known as Business 110).

Syllabus Calendar Grading Assignments PSP Examples Design recipes


Note: Please look through the examples directory; I've put a lot of examples there, many of them improved or "cleaned up" from the versions I showed you in class. For example, I showed 15 versions of the GUI program on November 7, but there are 21 versions on the Web. And on November 10, I demonstrated console and file I/O; there are cleaner versions of those on the Web, and there's an example of network I/O (reading from a Web page).

Getting Help

My office hours (in Alumnae Hall 113A; if I'm not there, look around the corner in 112) are



General Development Environments

I recommend Eclipse, which is available for free download and works with several different languages.

Another possibility is jGRASP, which has fewer bells and whistles, but provides a cute graphical annotation of the control flow of your program.

Yet another is BlueJ, a Java environment designed for teaching introductory programming.

C++ and C
I believe Microsoft Visual C++ is installed on the Windows machines in the lab, but I don't particularly like it. If you want to use Eclipse, you'll need to install a C/C++ compiler for Eclipse to use. On Windows, probably the best choice is Borland's free C++ compiler. Downloading this requires registration, but no money. By itself, it's just a fast, reliable, command-line-driven C++ compiler, but Eclipse, jGRASP, and several other development environments know how to work with it.
Most people start by downloading the Java Software Development Kit from Sun; make sure to get the Software Development Kit (SDK) rather than only the Java Runtime Environment (JRE). The Software Development Kit by itself provides a fast, reliable, command-line-driven Java compiler and runner, but most integrated development environments (such as Eclipse, BlueJ, JBuilder, jGRASP, NetBeans, and DrJava) know how to work with it. Sun makes it convenient to download and install NetBeans at the same time as you download and install the SDK, but you can use any of these development environments.
There are several Scheme implementations available, but the one most widely-used in education is DrScheme, freely downloadable for Windows, Macintosh, Unix, etc. One of its nice features is language levels: if you're a "Beginning Student", you'll get error messages for certain things that are technically legal in Scheme but which a beginning student doesn't need. If you decide you do need a certain feature, you can promote yourself to "Intermediate Student", "Advanced Student", etc. with a few mouse-clicks. The latest version of DrScheme, by the way, includes two language levels which are subsets of Java rather than of Scheme....

For learning Prolog on Windows I recommend the Amzi Prolog + Logic Server. The latest release (7.0.7) of Amzi Prolog is actually an Eclipse plug-in; you can download it for free for Windows or Linux. If you've already got Eclipse, you can download only the 6MB Amzi! Core ; if not, you'll need the 40MB package which includes the Eclipse IDE as well. In either case, you'll need to have already installed Java.

I've installed the documentation for Amzi's Eclipse IDE and the language tutorial Adventure in Prolog on Adelphi's Web server; if you install Amzi Prolog on your own machine, you'll have your own local copies of these.

  • On the history of programming languages: see Eric Levenez's
  • Software support

    I've set up some forms for entering and viewing PSP data. You may use these forms to record defects, time allotted, time spent, and program size, but I won't require this information. To use the forms successfully, make sure your browser accepts JavaScript and cookies. (For those with a moral opposition to cookies, I assure you that they're all "temporary" -- they disappear as soon as you quit the browser.) (For more information about PSP, see the PSP page at Carnegie-Mellon or read Watts Humphrey's Introduction to the Personal Software Process.)

    Who should take this course?

    This course is intended primarily for students majoring or minoring in computer science or information systems. It assumes CSC 171 and 172 as prerequisites. If you're taking 172 concurrently with 270, you'll have a more difficult time, but you should be able to survive the course; talk to the instructor.

    Subject matter

    The official subject of this course is programming languages. But I feel it would be irresponsible to teach programming languages without discussing software engineering at the same time. Software engineering includes such simple ideas as the "edit-compile-run-debug" cycle you all learned in last year's CS courses, the aspects of "programming style" I've discussed in class (and many others), and lots of other techniques people have learned over the years for writing good, working, efficient, readable, modifiable programs quickly. For some of these ideas, please read my List of Adages on Software Engineering.

    The precise coverage of this course changes from year to year, depending on how many students have what background. This year, about half of you have studied C++, half Java, half Scheme, one or two C, and probably none have studied Prolog. So we'll discuss all those languages at various times in class; when I'm talking about things that are old hat to you, feel free to work on your homework instead. I expect that most days in the lab will be either help-with-your-homework or "mini-lectures" in one corner of the room for those people interested in a particular topic.

    Last modified:
    Stephen Bloch /