COSC3308 Syllabus Fall 2006 Instructor: Dr. Hikyoo Koh Professor of CS Office: MA68 Phone: 880-8779 E-Mail: KOH@HAL.LAMAR.EDU (or HKPK32@YAHOO.COM) HTTP: HAL.LAMAR.EDU/~KOH Office hours: MW: 14:40-15:30 and 20:20-21:00 Thurs: 13:00-15:00 Sat: 13:00-16:00 (About every other Saturday, preferably with appointments made) Required textbook: Concepts of Programming Languages, seventh edition, by Robert W. Sebesta, Addison Wesley, 2006 Objectives of the course: By completing this course, students are expected to: 1. Understand language application domain evolution 2. Understand language evaluation factors (criteria) 3. Understand some basic techniques for language implementation including Scanning, Parsing, Intermediate Code generation 4. Understand Context-Free Grammars for syntax definition 5. Understand design issues of key language components such as Loops, Recursions and Subprograms, and 6. Be able to program in several languages intended for distinct application domains such as simulation, string processing, artificial intelligence, and functional programming. Topics to cover: 1. Preliminaries Programming Domains Language evaluation criteria Readability Writeability Reliability Cost, Simplicity, Orthogonality, Expressivity 2. Syntax and Semantics 3. FORTRAN: First compiled scientific language Data types: Integer, Real, Double Precision, Logical, Character, ARRAY Shared Data: Equivalence, Common Operators: Arithmetic, Relational, Logical Loop: DO, WHILE Selection: Logical IF, Arithmetic IF Subprograms: FUNCTION, SUBROUTINE TEST-1 4. SNOBOL Statements: Assignment, Pattern Matching, Replacement Patterns: Alternation, Concatenation, Recursive Patterns. Modes of Scanning: Unanchored/Anchored, Quickscan/Fullscan. Value Assignment through Patttern Matching: Immediate and Conditional. Primitive Pattern Functions: LEN, SPAN, BREAK ANY, NOTANY, TAB, RTAB, REM, POS, RPOS FAIL, SUCCEED, BAL, ARB, ARBNO Function Definition: DEFINE Statement, Parameter passing, Local variables, RETURN, FRETURN, NRETURN. Recursive functions. 5. Subprograms Scope and Referencing Environments Design issues Parameter passing Implementation Symmetry and Concurrency TEST-2 6. Logic Programming: PROLOG Declarative Semantics and Non-procedural Predicates, Clauses, Facts, Goals Backward Chaining, Unification 7. Functional Programming: LISP/Scheme First Class Procedures Lambda Expressions Function Compositions Currying Transformations Variable Arity Procedures Combinators Course review. FINAL EXAM. (11AM, Wednesday, 12/6/2006) Grading method: 2 tests: 200 points Final Exam: 100 points 7 or more programs/Assignments: 140 points Pop Quizzes: 40 points ------------------------------------ TOTAL MAX: 480 points Your final grade will be determined by your class average as follows: 88% or higher: A else 78% or higher: B else 68% or higher: C else 58% or higher: D else: F Students with Disabilities: This course complies with the University Policies on Disability, Accommodations and Academic Honesty as published in the Student Handbook and also in the Computer Science Department Policy (on Academic Honesty) NOTE: 1. Every thing you turn in to the instructor to be graded is expected to be your own work at least for the most part. In an unpleasant event of the instructor identifying two or more students having submitted an identical or a very similar program, all students involved will get ZERO credit. In particular, NO solution programs available on a computer locally or through the INTERNET should be copied without the instructor's prior approval. 2. All programs/assignments will be accepted only in class and only when they are due. No sooner or no later. 3. It is to your advantage if you highlight all PRINT or WRITE or cout statements of your programs to clearly indicate where in your programs outputs are being actually done. 4. Your program must have a comment at the VERY beginning that includes: a. Your Full-name and the course number (COSC3308) b. Program number and title c. Date of your actual submission (at least intended) d. Self-assessment of the program indicating i. whether the program does its intended task/job/functions. ii. if not, to what extent it does not. iii.what you think is causing your program not to get the job done. Without this assessment in a comment, a program will NOT be graded at all. 5. The main function or program must appear at the VERY end of your program if the language syntax permits. 6. Every four unexcused absences will lower your final grade by one letter grade.