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.