CSC-4510 Programming Language Design and Translation
Fall 2024
Instructor: Roger Shore Class Schedule:
Office Location: Couch Hall 153 TTh 9:45-11:25AM CSC-3820
Telephone: 841-9031 TTh 11:40-1:20AM CSC-4510
Office Hours: MWF 9:00-11:00AM MWF 7:50-9:00AM CSC-2342
Th 2:30-4:30PM
E-Mail: rshore@linus.highpoint.edu Web site: linus.highpoint.edu/~rshore

Course Description: Programming Language Design and Translation. A study of the various programming language paradigms and basic program language translation. Emphasis will be on run-time behavior, lexical analysis, parsing context-free languages, translation specifications, and machine-independent code improvement. Each student will participate in programming projects to demonstrate various concepts

Prerequisites: CSC-3310 and CSC-2710

Course Materials:

  1. Sebesta Concepts of Programming Languages (11th Edition) (978-0133943023), 11th Ed., 2016

Course Objectives:
Class Preparation: It is assumed that you will read the assigned chapters. Although the material may be summarized, lectures will be used mainly to further demonstrate other approaches to problem solving and to answer specific questions.

Projects: There will be a variety of projects during the semester. Each project in the series will explore some aspect of one or more langauges from from the major programming paradigms (imperative, object-oriented, functional, and logic).
  1. Write a program in two different langauges and use scripting to automate the process of testing for program correctness.
  2. Explore parameter passing and aliasing.
  3. Generic sorting in two different langauges.
  4. Examining concurrency in several programming languages.
  5. Functional programming.
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 5 Projects,
    Worksheets/Quizzes
    2 Major Tests Cumulative Final Exam Total
    Weight
    40%
    40%
    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. Unless prior arrangements have been made with an excusable reasons, NO make-up test will be given. 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. Course work: Projects, quizzes, and class work sheets will assist you in the understanding of the material presented during class. These will appear in almost every class meeting during the semester. Items completed during class cannot be made up therefore the lowest two grades will be dropped to allow for an occasional absence. Programming projects will have gracious due dates. You must turn in the project by the due date for full credit.
  5. Classroom etiquette:
  6. Lab etiquette:
  7. Students with Disabilities: Students who require classroom accommodations due to a diagnosed disability must submit the appropriate documentation to Disability Support in the Office of Academic Development, 4th Floor Smith Library. Student’s need for accommodations must be made at the beginning of a course. Accommodations are not retroactive.
Course Topics:
Week 1: Why Study Programming Languages?
Week 2: History and the Evolution of Languages
Week 3-4: Lexical and Syntax Analysis
Week 5-6: Syntax and Semantics
Week 7-8: Constructs of Languages
Week 9: Object-Oriented Programming
Week 10: Concurrency
Week 11: Exception Handling and Event Handling
Week 12: Functional Programming Languages
Week 13: Logic Programming Languages
Week 14: Scripting Languages