CSCI 4501: Section 601
Instructor: N. Adlai A. DePano, Ph.D.

Programming Language Structure
Fall 2013

Preliminary Remarks:

Welcome to CSCI 4501, Programming Language Structure. This course delves into the structures underlying the definition and implementation of modern programming languages.  The listed prerequisites for this course imply a prior knowledge of programming using an advanced structured language (like Java or C), familiarity with data structures and their use, and that much-sought but hard-to-define commodity needed for an advanced course like this -- mathematical maturity.

Catalog Description:

A study of the concepts of programming languages as realized in a variety of commonly used languages, with emphasis on language definition and structure.

Prerequisites:

CSCI 2125, Data Structures, with grade of C or better.

Learning Objectives:

At the conclusion of this course, the successful student should be able to:

  1. Appreciate and apply the underlying structures that permit the design and use of different programming languages;
  2. Identify the different programming paradigms as adopted in several popular programming languages;
  3. Use terminology and notation that apply to formal definitions from formal language theory; and
  4. Complete assignments that illustrate and reinforce the principles presented in the course.

Text:

Programming Language Pragmatics, 3rd ed., Michael L. Scott, Morgan Kaufmann Publishers, 2009 (ISBN-13 978-0-123-74514-9). We shall try to cover as much of the book as we can. We will certainly discuss Ch. 1-11.  The text should be available at the bookstore.  The following links are intended to assist those who may not be able to avail of the bookstore's services:
Amazon.com page for the Scott text
Barnes & Noble page for the Scott text
Elsevier page for the Scott text

Course Format:

The course will be primarily in lecture format -- questions and discussions are most welcome, however.  Student participation is strongly encouraged.  Problem sets will be assigned and will occasionally be discussed in class with students being asked to talk about their own work.  Students are expected to read ahead. This enhances their chance to participate meaningfully in any class discussion.  Programming exercises may be assigned as necessary.  In such an event, programs must reflect the principles you acquired in your programming courses (i.e., good documentation, clear logic design, and originality). Graduate students will be assigned additional work (such as extra readings of technical papers) to justify the course's graduate credit. Also, grading of tests, programs and papers will be much stricter than for undergraduate students.

Exams:

The exam schedule is tentative. We will have two tests plus the final exam.  Tentative dates for the tests are Sept. 25th and Nov. 4th. The final exam is scheduled firmly for Wednesday, Dec. 11th, from 8:00-10:00 p.m.

Homework:

Homework assignments are a crucial part of the learning process in this course. It is by "getting one's hands dirty" that one absorbs the subtle points of theoretical issues. Only by being able to translate theory into practice can one truly say that the material has been learned. Policies that apply to homework are as follows:

  1. Homework will (typically) be assigned at least a week prior to its due date.
  2. "Late" work will be penalized.  Every full day that an assignment is late doubles the penalty of the previous day, starting with one percentage point deducted on the first day.  So in practice, an assignment that is turned in a week late automatically gets an F, having already incurred a penalty of -64!  However, it is understood that during the course of the semester, life doesn't always follow a smooth path; therefore, everyone is entitled to a "free pass," that is, the lowest homework score will be dropped from the final computation of grades.
  3. Unintelligible=wrong=no credit. You are expected to communicate your thoughts clearly.  Submitted homework is expected to be neat, solutions (if required) appearing in order, and, in general, clearly explained by accompanying explanations in English.  One suggestion is to work out problems on scratch paper and to recopy them for the final submission.
  4. Assignments are expected to be your own personal effort.  However, there is very little one can do to prevent you from "consulting" with each other on homework assignments.  In a limited way, this can be beneficial to you.  After all, teaching one another and working together are important skills.  However, it is essential that your homework submissions reflect your own personal analysis and solution.  It is suggested that you try to work on the problem on your own, and then only when you get stuck should you begin discussion with your colleagues.  The interaction should be two-way -- you contributing to it as well as profiting from it.  When writing the final submission, try to recreate the arguments on your own.  Only when you can do this can you truly say that you have learned from the group effort.  Needless to say, this joint work policy applies only to homework, and not to examinations!

Grading:

The final grade will be computed as follows: Homework will comprise 40%; student "participation" another 10%; and, finally, tests make up the remaining 50%. The test component will be computed as follows: Two "chapter" tests and the final exam counted twice give four grades. The highest three will be used to compute the test component of your final grade. For instance if your in-class test grades are 70 and 80, and your final exam grade is 75, then the grades 80, 75, 75 (i.e., highest three of 70, 80, 75, 75) will be used.

Letter grades will be assigned as [90 - 100] = A, [80 - 90) = B, [70 - 80) = C, [50 - 70) = D, [0 - 50) = F. Final grades may be curved up at the discretion of the instructor, but don't count on it.

Office Hours:

My UNO office is in MTH 308. You are welcome to drop by and visit.  My office hours are:

 

   Mon             10:00 a.m. - 12:00 noon; 8:45 - 9:00 p.m.
   Wed             8:45 - 9:00 p.m.
   Fri             10:00 a.m. - 12:00 noon

                   other times by appointment only

 

If you need to see me, you may make an appointment by contacting me at (504)280-7370 or by e-mail to ndepano@uno.edu) or, if all else fails, via cell phone (504)722-0352.

Academic Dishonesty:

Finally, we must call your attention to the University's policies regarding academic dishonesty (http://www.studentaffairs.uno.edu/pdfs/AcademicDishonestyPolicy.pdf). Academic dishonesty includes cheating, plagiarism, and collusion. In particular, it includes "the unauthorized collaboration with another person in preparing an academic exercise" and "submitting as one's own any academic exercise prepared totally or in part for/by another."

In the event of academic dishonesty, the student will be assigned a grade of 0 on the exam or exercise, the student will be informed in writing of the action taken, and a copy of this letter will be sent to the Assistant Dean for Special Student Services.

Students With Special Needs:

Finally, we provide here a link to the webpage that contains the University's policy with regards to students with special needs (http://www.ods.uno.edu/index.cfm).  As expressed therein, the University pursues two primary objectives:  (1) to ensure compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act (ADA) in regard to equal access for qualified students to academic programs; and (2) to uphold the academic integrity of UNO.  Part of this policy regulates the accommodative testing services.  These accommodations are made available in  the ODS Accommodative Testing and Adaptive Technology Center (ATATC), located in the Science Bldg. (SC 1046)

 

Note that November 11th is the last day to drop classes this term.