CS 362: Principles of Programming Languages II

Winter 2012

Meeting Times

Lect: 1:00 - 1:50 MTuW, HB 106

Labs: 1:00 - 1:50 Th, HB 203


Dr. Razvan Andonie, HB 219-B, Office hours


David Greninger,


Modern Programming Languages: A Practical Introduction
Adams Brooks Webber, Franklin, Beedle & Associates, second edition, 2011.



Exams (2 @ 20%)


Projects (6 @ 10%)



Grading Scale

95 - 100


90 - 94

A -

87 - 89

B +

83 - 86


80 - 82

B -

77 - 79

C +

73 - 76


70 - 72

C -

67 - 69


63 - 66


60 - 62

D -

0 - 59



The primary goal of CS 362 is to provide students with the tools necessary for the critical evaluation of existing and future programming languages and constructs. A secondary goal is to prepare students for the study of compiler design and construction.

The CS 362 class provides a wide-ranging and in-depth discussion of programming language concepts. Fundamental concepts of programming languages are presented through the design issues of the various language constructs, by examining the design choices for these constructs in a few common languages, and critically comparing the design alternatives. The class also covers the most widely used methods of syntax description and introduces the most common approaches to describing the semantics of programming languages. Discussions of implementation methods and issues are integrated throughout the class.

Learning Outcomes

Upon completion of this course, you will demonstrated the ability to:

         Classify and identify the major categories of languages.

         Describe and apply the categories of syntax and semantics, including formal methods of syntax, attribute grammars, and static and dynamic semantics.

         Demonstrate general knowledge in naming, binding, type checking, and scoping.

         Elaborate the theory of data types, expressions and assignment statements.

         Demonstrate through construction of solutions to problems an understanding of (i) functional, (ii) object-oriented, (iii) scripting, and (iv) logic programming languages.


Lectures & Projects: The slides for lectures can be found in the shared directory on Neve.





Programming Examples: PROLOG: Basic || PROLOG: Puzzles || PYTHON


If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered.

Course Schedule



Readings - Item Due

Jan 4



Jan 5

Lab Day (ML Program 1)

Jan 9

ML 1

Ch. 5

Jan 10

ML 1

Ch. 5

Jan 11


Ch. 6

Jan 12

Lab Day

Jan 16

No School, M. L. King

Jan 17

ML 2

Ch. 7

Jan 18

ML 2

Ch. 7

Jan 19

Lab Day (ML Program 2)

ML Program 1 Due

Jan 23


Ch. 8

Jan 24

ML 3

Ch. 9

Jan 25

ML 3

Ch. 9

Jan 26

Lab Day

Jan 30


Ch. 10

Jan 31

ML 4

Ch. 11

Feb 1

ML 4

Ch. 11

Feb 2

Lab Day

Feb 6

Memory Locations for Variables, Q & A

Ch. 12

Feb 7

Exam 1 (open book)

Feb 8

Scripting Languages

Reading: notes

Feb 9

Lab Day (Python Program 1)

ML Program 2 Due

Feb 13

Python 1

PYTHON Examples

Feb 14

Python 2

Reading: A Byte of Python and Python Tutorial

Feb 15

Python 3

Reading: A Byte of Python and Python Tutorial

Feb 16

Lab Day (Python Program 2)

Python Program 1 Due

Feb 20

No School, Presidents Day

Feb 21

Object Orientation

Ch. 16

Feb 22


Ch. 18

Feb 23

Lab Day (Prolog Program 1)

Python Program 2 Due

Feb 27

Prolog 1

PROLOG: Basic & PROLOG: Puzzles Examples

Feb 28

Prolog 1 & Prolog 2

Ch. 19 - 20

Feb 29

Prolog 2

Ch. 20

Mar 1

Lab Day (Prolog Program 2)

Prolog Program 1 Due

Mar 5

Prolog 3

Ch. 22

Mar 6

Prolog 3 & Formal Semantics

Ch. 22 + 24

Mar 7

Formal Semantics

Ch. 22 + 24

Mar 8

Lab Day

Prolog Program 2 Due

Mar 13

Final Exam (open book): noon - 2:00

Honor Code: All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here.

Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution. All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code.

First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment, an incident letter will be placed on file in the Computer Science Department, and the matter referred to the Computer Science Department Chair.

Class Attendance: Class attendance is expected and recorded.

ADA Statement: Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or or 963-2171.

Caveat: The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.