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:
- Sebesta Concepts of Programming Languages (11th Edition) (978-0133943023), 11th Ed., 2016
Course Objectives:
- Design, implement, test, and debug programs from the major programming paradigms (imperative, object-oriented, functional, and logic)
- Summarize the evolution of programming languages and how historical languages have influenced the current paradigms.
- Understand implementation issues surrounding each of the programming paradigms. Specifically:
- Demonstrate different forms of binding, visibility, scoping, and lifetime management.
- Demonstrate understanding of type systems including strong vs weak typing, polymorphism, abstract versus concrete types.
- Describe various parameter passing mechanisms.
- Describe the phases of program translation from source code to executable code.
- Recognize the underlying formal models such as finite state automata, push-down automata and their connection to language definition through regular expressions and grammars.
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).
- Write a program in two different langauges and use scripting to automate the process of testing for program correctness.
- Explore parameter passing and aliasing.
- Generic sorting in two different langauges.
- Examining concurrency in several programming languages.
- Functional programming.
Course Policy:
- 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.
- 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+.
- 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.
- 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.
- Classroom etiquette:
- Cell phone usage during class is prohibited. Turn off cell phones (or place on vibrate). Please do not interrupt any aspect of the class due to your cell phone. This includes text messaging, picture messaging, etc.
- Do not listen to your ipod, cd player, etc. during class (even if we are in the computer lab).
- Profanity will not be tolerated. This includes lewd remarks printed on your clothing.
- Hats are not to be worn during class.
- Laptops are allowed in the class and can only be used for class related stuff. Since I cannot see you screen, you will be called out if I suspect otherwise.
- Lab etiquette:
- The lab was created with student input. Please help respect and maintain the lab.
- Do not eat while sitting at a workstation. If you must eat while in the lab, sit a the larger table where no equipment may be damaged except your own. Clean up the area after you finish eating.
- Clean up your area before you leave the lab. Unless you are planning to return in a few minutes, please take all books, paper, etc with you.
- DO NOT lock your workstation when you leave!
- 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?
- Brief survey of programming paradigms
- Week 2: History and the Evolution of Languages
- Week 3-4: Lexical and Syntax Analysis
- FSA's
- Pushdown Automata
- recursive-descent parsers
- Week 5-6: Syntax and Semantics
- BNF Grammars
- Context-Free Grammers
- Recursive-descent parsers
- LL/LR algorithms
- Week 7-8: Constructs of Languages
- Names, Bindings and Scopes
- Data types
- Expressions and Assignments Statements
- Sequence Control: Implicit and Explicit
- Subprograms and Parameters
- 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