Title: ICS%20313%20Fundamentals%20of%20Programming%20Languages
1ICS 313Fundamentals of Programming Languages
Spring Semester 2004 - 2005 (042) King Fahd
University of Petroleum Minerals Information
Computer Science Department
2Section 04, 1000-1115am UT, 24250
- Instructor Dr. Wasfi Al-Khatib ???? ??????
- Office 22 133-1
- Office Hours UT 900 - 950am and 230
330pm M 300 - 400pm Or by
appointment - Phone 1715
- email wasfi_at_ccse.kfupm.edu.sa
- WebCT Page http//webcourses.kfupm.edu.sa
3Catalogue Description
- Concepts of Programming Languages Syntax and
semantics, Data types, Control structures,
Subprograms, Exception handling, Run-time storage
management. Programming paradigms Imperative,
functional, logical, object-oriented and
concurrent programming
4Course Objectives
- Outline the history and describe the rationale of
different programming languages. - Describe grammar and syntax specifications and
analyze their implementations. - Describe, analyze and use the various mechanisms
in procedural languages e g. data types, scope,
control structures subprograms, etc. - Describe and use the major programming paradigms
Imperative, Functional, Logical and
Object-Oriented. - Explain and describe how concurrency and
exception handling are used in programming
Languages
5Text Book
- Concepts of Programming Languages, By. R.
Sebesta, 6th Ed, Addison Wesley, 2004.
6Course Outline
- Preliminaries
- Evolution of the Major Programming languages
- Describing Syntax and Semantics
- Imperative Programming (Introduction to C)
- Functional Programming
- Logic Programming
- Names, Bindings, Type Checking and Scopes
- Data Types
- Expressions and the Assignment Statements
- Statement-Level Control Structure
- Subprograms
- Implementing Subprograms
- Abstract Data Types
7Grading Policy
Programming Assignments 20
Pop Quizzes 10
Major Exam 1 10
Major Exam 2 15
Major Exam 3 20
Final Exam 25
8Important Dates
Task Date and Time Location Weight
Help Session I TBA TBA N/A
Major Exam I Saturday March 5, 2005 630 800pm TBA 10
Help Session II TBA TBA N/A
Major Exam II Saturday March 26, 2005 630 800pm TBA 15
Help Session III TBA TBA N/A
Major Exam III Saturday April 30, 2005 630 800pm TBA 20
Help Session IV TBA TBA N/A
Final Exam TBA TBA 25
9Attendance Policy
- Attendance will be checked each class.
- Unexcused Absences Policies
- The first THREE absences are FREE of charge.
- The fourth absence is worth 3 points of your
overall score (out of 100). - Each subsequent absence, up to the sixth absence,
is worth -0.75 of your overall score. - The seventh absence will result in an automatic
DN grade. - An unexcused absence can become an excused
absence ONLY by an official letter from the Dean
of Students office.
10General Rules
- Students are expected to be courteous toward the
instructor and their classmates throughout the
duration of this course. - All cell phones and pagers must be turned off
during class and exams. - Assignments are due at the beginning of class. No
late assignment will be accepted. Discussing
questions among your classmates is highly
encouraged. Copying solutions from each other is
NOT permitted and will be considered CHEATING and
will be dealt with accordingly.
11Pop Quizzes
- 10 minute
- Each covers material given during the current
lecture. - They require you to be attentive during class
time as you will be subject at any point in time
to answer a pop-quiz.
12IMPORTANT RULE
- ZERO-TOLERANCE for CHEATING.
13Exam Policies
- 24-Hour Policy One has 24 hours to object to the
score of an assignment, a pop quiz, or a major
exam from the end of the class time in which the
graded assignment/quiz/exam papers have been
distributed. If for some reason you cannot
contact me in person within this period, send me
an email requesting an appointment. The email
should be sent within the 24-hour time period. - Exams, assignments and pop-quizzes are generally
CHALLENGING.
141. Preliminaries
15Reasons to study concepts of PLs
- Increased capacity to express programming
concepts - Improved background for choosing appropriate
languages - Increased ability to learn new languages
- Understanding the significance of implementation
- Increased ability to design new languages
- Overall advancement of computing
16Programming Domains
- Scientific applications
- Business applications
- Artificial intelligence
- Systems programming
- Scripting languages
- Special purpose languages
17What is a Programming Language
- A programming language is
18Programming Language Definition
- Language Syntax
- Grammar and punctuation.
- Superset of legal languages.
- Language Semantics
- What the syntax means.
- Restricts syntactically correct programs.
19Computer Program Development
Algorithm
Human brains
Problem
Semantics
Algorithm
Translation
Syntax
Syntax
Computer Program
20Why Take This Course?
- In order to graduate
- True
- False
- Not necessarily
- None of the above
- Learning a new language depends on how many
languages you learn - True
- False
- Not necessarily
- None of the above
21Programming Paradigms
- Imperative
- Program Algorithms Data
- Functional
- Program Function o Function
- Object-Oriented
- Program Objects Messages
- Logic
- Program Facts Rules
- Special-purpose
22Imperative Programming
- Oldest style of Programming
- Algorithm is expressed as a sequence of
instructions, e.g. assignment, looping, - For example, assembly, Fortran, Algol, Pascal,
and C.
23Example in C
- Finding the greatest common divisor between two
elements
includeltstdio.hgt void main() int x,y
printf("enter any two numbers") scanf("d
d",x,y) if(xlt0)x-x if(ylt0)y-y
while(x!y) xgty?(xx-y)(yy-x)
printf("gcd of the numbers is d",x)
24Functional Programming
- Comes from traditional Mathematics.
- Description of computation is based on the
evaluation of functions or the application of
functions to known values. - No notion of variables or assignment to
variables! - Loops are replaced by recursion!
- For example Lisp, Scheme, ML, Haskell.
25Example in Scheme
- Finding the greatest common divisor between two
elements
(define (gcd u v) (if ( v 0)
u (gcd v (remainder u v))))
26Object Oriented Programming
- Based on class and inheritance
- Instead of applying global functions to
variables, methods associated with instances
are invoked (message passing) - For example, C, Java, Smalltalk,
27Example in C
- Finding the greatest common divisor between two
elements
- // gcd.cpp - long integer greatest common divisor
- class BadGcdArgumentsException
- long gcd(long a,long b) // Euclidean algorithm -
returns 0 // if a and b are both 0. - long r // First make sure everything is gt 0.
- if(a lt 0) a -a
- if(b lt 0) b -b
- // If both arguments are 0, throw an exception.
- if(a 0 b 0)
- throw BadGcdArgumentsException()
- // Otherwise the gcd of 0 and x is x.
- if(a 0) return(b) if(b 0) return(a)
- // Keep dividing until we get a zero remainder.
The last - // nonzero remainder is the gcd.
- while(b gt 0)
- r a b
- a b
- b r
-
28Logic Programming
- Like functional programming, but through formal
logic. - A program is a set of predicates, i.e. rules
governing the problem. - Either the truthfulness of a given formula or the
deduction of new formulae results from running a
logic program. - For example, prolog.
29Example in Prolog
- Finding the greatest common divisor between two
elements
gcd(U,V,U) - V0. gcd(U,V,X) - Vgt0,
Y is U mod V, gcd(V,Y,X).
30Special-Purpose Languages
- Shell, Awk, Perl, Python
- System administration
- Program configuration
- Postscript, Tex, RTF
- Text and document setting
- HTML, XML
- Markup Language
31Example in Perl
- Make up one pdf file from separate postscript
files.
This script takes as input the desired output
filename (without the extension) and the
number of input files. It is assumed that the
input filenames are of the form 1.ps 2.ps ...
99.ps and so on and so forth. It then combines
all postscript files into one file with a .ps
extension. Finally, it will generate the pdf
version of the postscript file. Docs_Dir
'C\\Program Files\\ScannerU\\' OutputFile
ARGV0 NumOfInputs ARGV1 FileList
"" for (i 1 i lt NumOfInputs i i 1)
FileList FileList . i . ".ps
" chdir(Docs_Dir) system("gswin32c -dNOPAUSE
-sDEVICEpswrite -dBATCH -sOutputFile" .
OutputFile . ".ps " . FileList) system("ps2pdf
-r720 " . OutputFile . ".ps " . OutputFile .
".pdf ")
32Language Evaluation Criteria
- Readability
- The most important criteria
- Factors
- Overall simplicity
- Too many features is bad
- Multiplicity of features is bad
- Orthogonality
- Makes the language easy to learn and read
- Meaning is context independent
- Control statements
- Data type and structures
- Syntax considerations
- Writability
- Factors
- Simplicity and orthogonality
- Support for abstraction
- Expressivity
33Language Evaluation Criteria (cont.)
- Reliability
- Factors
- Type checking
- Exception handling
- Aliasing
- Readability and writability
- Cost
- Categories
- Programmer training
- Software creation
- Compilation
- Execution
- Compiler cost
- Poor reliability
- Maintenance
- Others portability, generality, well-definedness
34Language Design Trade-offs
- Reliability versus cost of execution
- Writability versus readability
- Flexibility versus safety
35Layered View of a Computer
36Implementation Methods
- Compilation
- Interpretation
- Hybrid Implementation Systems
37Compilation
- Translate high-level program to machine code
- Slow translation
- Fast execution
38Interpretation
- No translation
- Slow execution
- Usually found in functional and logic-based
programming languages.
39Hybrid Implementation Systems
- Small translation cost
- Medium execution speed
40Programming Environments
- The collection of tools used in software
development - UNIX
- An old operating system and tool collection
- Borland JBuilder
- A PC environment for Java
- Smalltalk
- A language processor/environment
- Microsoft Visual C
- A large, complex visual environment