SYLLABUS CMPS 5113: Advanced Programming Languages Concepts Techniques for specifying the syntax and semantics of programming languages are introduced. Language concepts, such as data structuring, information binding, control structures, execution environments and extensibility are examined by studying scientific, data processing, list processing, and multi-purpose languages. Programming assignments are in the various languages. Instructor: Office: Office phone: E-mail: Office Hours: Dr. Catherine V. Stringfellow Bolin Science Hall, Room 128C 397-4578 catherine.stringfellow@mwsu.edu MWF 11:00am-12pm, 1:30-2:30pm, TR 9:30-11am, 2:30-3:30pm and by appt Prerequisites: CMPS 2084 and concurrent enrollment in CMPS 2133 or permission of instructor. Required Text: Programming Languages: Principles and Practrice 3rd ed by Louden Texts in Library : Be nice, SHARE and do not check out, just go over and read/Xerox what you need. Principles of Programming Languages: Design, Evaluation and Implementation of Programming Languages by MacLennan ( A good source for lecture material.) QA76.7.M33 1983 Programming languages : design and implementation by Pratt QA76.7 .P7 1984 FORTRAN, LISP, PROLOG, Ada, Perl, Java, as well as a few others.) (A good brief in-depth study of The library has many books (including e-books) available on specific programming languages. Check those out!!! General Course Objectives: a) To develop an understanding of the organization of programming languages, especially the run-time behavior of programs; b) to introduce the formal study of programming language specification and analysis; c) to introduce the students to a variety of programming languages, especially those which were instrumental in the evolution of programming languages d) to introduce the concepts associated with the design and development of language processors, such as lexical analysis, syntax analysis, parsing, semantics, and code generation. Specific Course Objectives: Upon completion of this course students should be able to: a) describe at least two methods of programming language syntax specification; b) write moderately complex programs in at least four new programming languages and know how to use reference manuals; c) describe the run-time behavior of both block-structured and non-structured programming languages; d) understand concepts of variables, expressions, statements, typing, scope, procedures, data types, exception handling, and concurrency and how they are realized in different programming languages. Instructional Method: Primarily lecture. Students and the instructor will share their experiences of coding programs in different languages. Students will be grouped in pairs for the different programming assignments by the instructor. Class participation is highly recommended. Course Assignments and Evaluation: Students will be required to write four moderately complex programs in four different languages. There might be a few very small programming assignments that will aid in developing the larger assignments. These programs will involve applying some of the general concepts learned in class. Industry level documentation will also be expected. A short paper and a few homework assignments will also be required. Final grades will be based on the following criteria. activity written assignments and participation small programming assignments paper programming assignments midterm final percentage of grade 10% 5% 10% 40% 15% 20% Grading Scale is as follows based on percentage. letter grade A B C D F percentage earned 90-100 80-89 65-79 60-64 0-59 Makeup Exams and Quizzes: There is one midterm and one final exam. The only acceptable reason for missing an exam is with a valid university excuse (e.g., excuse from the doctor, death in the immediate family, etc.) Documentation will be required. A makeup exam will only be given to those students who have a valid excuse. If you know ahead of time that you will miss an exam, please see me. Program Due Dates: Programming assignments are due at the beginning of class. Any program not handed in at the beginning of class will be considered late (unless the time on the header page is before the class starting time). Late labs are penalized as follows. If the lab is turned in within 24 hours from the start of class on the due date, then 10% of the maximum possible lab score will be deducted from the lab grade. If the lab is turned in after the 24 hour period, but before the start of the first class following the class on the due date, then the penalty is 30% of the maximum possible score. Programs turned in after the start of the first class following the class on the due date will not be accepted. One exception to this is the last programming assignment, it must be turned at the start of class on the last class meeting; there will be no late credit for this programming project. Lab Grading Policy: The following will be considered in grading a programming assignment. i. ii. iii. iv. v. correct results programming method program style (use of language's special features) comments user friendliness and output format (I will run your programs) Sequence of Topics: week Jan 14 21 1 Feb 4 11 18 25 Mar 4 11 18 25 Apr 1 8 15 22 29 May 2 topics Readings Programs Course Overview; Early History Pseudocode Language; FORTRAN Language Design Issues Chap 1 suppl. Chap2 prog 1 assg Syntax OOP Concepts ; C#; C# Files; Basic Semantics; Data Types Data Structures Chap 6 Chap 5, suppl. Chap 7 and 8 Chap 8 C# Arrays; C# namespaces SPRING BREAK REVIEW; MIDTERM Abstract Structures; PERL; slides (chap 11.3 has general concepts) Perl2; Seq. Control.; Logic/ Programming; PROLOG Func.Prog. and LISP C# Exceptions; Subprograms Scoping; Parallelism; REVIEW suppl ; Chap 9.2-9. Chap 4 Chap 3 Chap 9.5, 10 Chap 10, 12 FINAL Tuesday, May 7 @ 3:30-5:30pm Chap11 prog 1 due prog 2 assg prog 2 due prog 3 assg prog 3 due prog 4 assg prog 4 due