15-625-511
20-260-511
Organization of Programming Languages Winter, 1999
Meets: TR 2:00-3:15 in Baldwin 641 (Section 001).
    TR 5:00-6:15 in Baldwin 841 (Section 002).

Instructor: John Franco

Office: 821 Rhodes (Office Hours: T-R 10:00-11:00AM)
Phone: 556-1817
Email: franco@gauss.ececs.uc.edu  for general mail.
              franco@boole.ececs.uc.edu   for an account on boole.
Web:    http://www.ece.uc.edu/~franco   homepage of instructor.
              http://www.ececs.uc.edu/~franco/HTML/C511W99.html  homepage of course.

Description:

The student shall learn the fundamental tools needed for critical evaluation of existing and future programming languages and constructs. The material taught in this course also is helpful when learning compiler design and construction. It is assumed that the student has a good working knowledge of the ``C'' language and/or Pascal. We will not learn new languages as much as fundamental language concepts such as imperative programming, object-oriented programming, and functional programming. The student is not expected to become proficient in any one language unless he or she spends extra time to do so. Rather, the student will learn fundamental programming language concepts and see how these are or are not implemented in existing languages.

On occassion I may cover material in lectures that is not given in the book; you are responsible for both. (Feel free to ask questions in class about reading assignments.) Try to stay a little ahead on the reading assignments. You are responsible for all assignments and announcements made in class, even if you cannot attend. You should probably get to know someone whose notes you can copy.

Prerequisites:

Most introductory computer science courses such as C321-C323. See course descriptions in department office for more details.

Grading (approx):

The midterm and final scores will be normalized to a scale of 0-35. Five or six homeworks will be given. Each will be graded on a scale from 0-10. The aggregate, normalized to a scale of 0-30 and added to the midterm and final scores to produce a total score that determines your grade. Class participation helps to bias things a bit. Grades are assigned on an informal "curve".

Please be aware that a new grading scheme is now in effect. This includes extending the grading scale to include + and - modifiers (e.g. B+, C-) and, as I understand it, no provision for a grade of N. That means you will either be assigned a grade by the end of the quarter or you will have withdrawn, somehow, from the course. Please consult Linda Gruber for exact details.

Homework Policy:

Five or six homeworks will be assigned this quarter. Each will be graded on a scale from 0-10.

Policy on Incompletes:

None given except in extreme emergency (death etc.)

Textbook:

Concepts of Programming Languages by Robert Sebasta, Fourth Edition, Addison-Wesley Publishing Company (1998), ISBN: 0-201-38596-1.

Accounts:

We will need to use machines that have Java, C/C++ and Scheme. If you have a UCENG account you are set. If not, and if you have a (DOS) PC at home, you can download
  • Sun Java 1.2 from http://java.sun.com/products/jdk/1.2/,
  • C from http://www.delorie.com/djgpp/dl/ofc/,
  • MIT Scheme from http://www-swiss.ai.mit.edu/ftpdir/scheme-7.4/.
  • Symantec Visual Cafe (Java) from http://shop.symantec.com
  • IBM Visual Age (Java) from http://www7.software.ibm.com. If none of these options is available to you, ask yourself whether you really want to be in computer science.
  • Joint Work:

    Of course, students may discuss homework assignments with each other, may write solutions together, copy, or cheat in any way they can think of (except on the exams). However, it is customary that any significant help from another student or book should be acknowledged in a comment when you ask me to review what you have.

    Approximate Schedule, SUBJECT TO CHANGE

    WeekClass Material Reading
    1 Syntax and SemanticsChapter 3,4
    2 TypesChapters 4,5
    3 TypesChapter 5,6
    4 Assignment and ControlChapter 6,7
    5 SubprogramsChapter 8
    6 Review, Midterm----
    7 Implementing SubrogramsChapter 9
    8 Object-Oriented ProgrammingChapter 11
    9 ConcurrencyChapter 12
    10 Functional ProgrammingChapter 14