CSC-350 Programming Languages

Spring 2012
Instructor: Roger Shore Class Schedule:
Office Location: Congdon Hall 150 MWF 1:25-2:30PM CSC-1720
Telephone: 841-9031 MWF 2:40-3:45PM CSC-3360
Office Hours: MWF 9-11:00AM TTh 8:00-9:30AM CSC-2210
TTh 11:30-1:10PM CSC-4210
Others by appointment Th 3:10-4:40PM COM-3881 3/1/12 - 4/19/12
E-Mail: rshore@linus.highpoint.edu Web site: linus.highpoint.edu/~rshore
Course Description: A study of the various programming languages. This will include languages currently being used in conjunction with the Internet. Some emphasis will be placed on the run-time behavior, lexical analysis and parsing of a language. Students will participate in programming assignments involving the use of several languages.

Prerequisites: CSC-262 Advanced Programming

Course Materials:
  1. Robert W. Sebesta, Concepts of Programming Languages, 9th ed. Addison Wesley

  2. An account on linus.

Course Objectives:
  1. To provide an overview of the key paradigms used in developing modern programming languages.
  2. To highlight several languages, which provide those features, in sufficient detail to permit programs to be written in each language demonstrating those features.
  3. To explore the implementation of each language in sufficient detail to provide the programmer an understanding of the relationship between a source program and its execution behavior.
  4. To provide sufficient formal theory to show where programming language design fits within the general computer science research agenda.
  5. o provide a sufficient set of problems and alternative references to allow students the opportunity to extend their knowledge of this important topic.

Class Approach and Methods: IT IS ASSUMED THAT YOU WILL READ THE ASSIGNED CHAPTERS. Although the material may be summarized, lectures will be used mainly to further demonstrate various aspects of languages and to answer specific questions. The writing of 8-12 programs/assignments will dominate your activities outside the class during this course. You will use a top-down design with step-wise refinement. You should use pseudo-code or flowcharts to describe each level of refinement.

  1. STYLE 30%
    1. Indenting and layout. Is the program readable? Does indenting help debugging and reading? Are parts of the program clearly labeled?
    2. Identifiers. Are the identifiers meaningful and mnemonic? Do they describe their purpose?
    3. Documentation/Comments. Is the program reasonably commented? Does the commenting help both the programmer and the grader? Could another student in the class figure the program out?
    4. Attractive output?
  2. PROGRAM 70%
    1. Algorithm. Is the program sensible? Does it solve the problem in a reasonable manner?
    2. Modularity. Does the program take advantage of subroutines and functions? Are its separate parts easy to isolate for testing and debugging?
    3. Working. Does the program work? Does it fulfill the problem description, or does it solve some other problem? Is it written in a way that it lets shortcomings be recognized and fixed?
    4. Use of required commands?
  3. Late Penalty:Programming assignments will have due dates. You will automatically get an extension of 7 days if you miss the due date. The penalty will be 1 point per day late. No program will be accepted after 7 days of the assigned due date.
Course Policy:
  1. Attendance: Attendance will be taken daily at the beginning of class. You are expected to be present in every class meeting. If absent from class, you are responsible for all lectures, in-class exercises, assignments, and handouts. Caution: Being absent from class does not change the due date of assignments.
  2. Grades: Your final grade will be determined as follows:
    Component 10-12 Programming Assignments/problem sets/quizzes
    3 Major Tests
    Cumulative Final Exam Total
    Weight
    35%
    45%
    20%
    100%
    Range
    93-100
    90-93
    87-90
    83-87
    80-83
    77-80
    73-77
    70-73
    67-70
    63-67
    60-63
    0-60
    Grade
    A
    A-
    B+
    B
    B-
    C+
    C
    C-
    D+
    D
    D-
    F
    You must score at least the minimum of a category to be given the associated grade, i.e. an average of 80 is a B- not a C+.
  3. Make-Up test will not be given. No make-up test will be given unless arrangements have been made prior to the day of the test. If you miss a test your final grade will be used in place of the missed grade. This means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.
  4. In-class worksheets, quizzes, and non-programming assignments must be completed on the assigned date and cannot be made-up.
  5. Homework: This will be assigned frequently. Some assignments will take minutes to complete others will take days. Opportunity for homework questions is given at the beginning of each class. Homework may be collected and graded occasionally.
  6. Cheating Policy: Don't Cheat! There will be no second chances. If you are caught cheating, you will receive an F for that test, assignment, program.
  7. Classroom etiquette:
  8. Lab etiquette:
Course Topics:
  1. Why Study Programming Languages
  2. Evolution of Languages
  3. Syntax and Semantics
  4. Lexical and Syntax Analysis
  5. Chapters 5-9: Constructs of Languages
  6. Other topics:
Languages