COP 5555 - PRINCIPLES OF PROGRAMMING LANGUAGES

                       Spring 2013

Instructor:      Dr. Manuel E. Bermudez
Schedule:        M,W,F: 9th period NEB 102
Office:          E574 CSE
E-mail:          manuel@cise.ufl.edu
Phone:           352-505-1549 
Office Hours:    M,W,F: 8 periods
Website:         http://www.cise.ufl.edu/~manuel/
Text:            Programming Language Pragmatics 3rd Edition,
                 Michael Scott, Morgan Kaufman, 2009.
                 (second edition is OK)
Class Notes:     available on this site.
		


COURSE DESCRIPTION:

This  course  will cover the central principles of designing
and implementing   programming   languages.  The  four  main
paradigms of programming will becovered: imperative, object-
oriented, functional, and logic  programming.    Programming
language specification (syntax and semantics) is emphasized,
and special attention is given to  the  functional  paradigm
because of its usefulness in  specifying  the  semantics  of
imperative languages. There  will  be  a  class  project, in
which students  will  implement  portions  of  a programming
anguage.

At the end of this course, students should be able to:

1. Understand the  central  issues  and principles governing
   the design of modern programming languages.
2. Understand the  fundamental  differences between the four
   major programming language paradigms.
3. Understand  the  value  of  operational  and denotational
   semantic specifications of programming languages.
4. Implement a syntax analyzer for any programming language.
5. Understand the  process  of  translation  of a program in
   a high-level language to a low-level language.



PREREQUISITES:

COP-3530  Data  and  Program  Structures, graduate standing
and/or consent of instructor. Further, you should be a  pro-
ficient  programmer, capable of understanding and implement-
ing sophisticated data  structures  modularly,  quickly  and
efficiently.   Familiarity  with several high-level program-
ming languages is useful but not necessary.

PROJECTS: There will a class project, involving the implementation
of a programming language.  Projects are to be done individually,
and the implementation language must be in either Java or
C++.


GRADING:   Project (2 reports)   30%   Averages:   A    92-100
           Homeworks             10%               A-   90-91
           Midterm               25%               B+   87-89
           Final                 35%               B    83-86
                                                   B-   80-82
                                                   C+   77-79
                                                   C    73-76
                                                   C-   70-72
                                                   D+   67-69
                                                   D    63-66
                                                   D-   60-62
                                                   E    0-59

DISHONESTY:

     Electronic copying of source code is  strictly  prohib-
ited.  Students are encouraged to exchange advice and infor-
mation about programming  projects,  but  working  together,
especially at the computer, is not allowed unless explicitly
permitted by the instructor.  Source code in this  class  is
collected  by  the  instructor,  and compared against source
code from other students, and code from previous  semesters,
with  great  effectiveness in detecting similarities.  Inci-
dents of students copying the work of other students will be
referred  to  the Student Honor Court, with the minimal pun-
ishment being a grade of 'E' in the course.