programming languages

wael's picture
Course Code: 
131311
Course Outline: 

University Guide Course Description

This course dwells on syntax and semantics specification, discussion and comparison of basic programming styles and their underlying paradigms, such as imperative, functional, logic, and object oriented programming, data types, subprograms, run-time stack, parameter passing methods, exception handling.

Course Objectives

1. Learn Issues related to designing a new language.

2. Make it easier learning new languages.

3. Language critique.

4. Choosing a language that suits a particular application.

 

Course Contents

 

week

Topics

1

Introduction, History of programming languages, programming domains

2

language evaluation, Language implementation, compilation vz interpretation, hybrid implementation, describing language syntax, alphabet, language, BNF grammar, derivation, parse tree

3

BNF examples, a BNF for simple language, ambiguity, associativity, precedence, Extended BNF, syntax graphs, Names issues, Variables issues

4

binding and binding times, Binding variable type, static vz dyanamic type binding, storage binding and life time, types of variables according to life time, Type checking, time of type checking, strongly typed languages, name compatability, structure compatability

5

First exam, type equivalence in Ada, static and dynamic scope

6

 

7

Primitive data types, integer, floating point, decimal, boolean, character, strings, strings in Ruby

8

Non primitive data types, array design issues, array types, array operations, Jagged arrays, slices, associative arrays, array implementation

9

Arrays in Ruby, records, union, pointer data type, dangling pointer, lost object

10

Side effect problem, Subprograms design issues, terminology, Parameter passing methods: value, result, value-result, reference, run-time stack

11

Passing parameters by name, type checking parameters, matrices as parameters

12

Generic functions, functions as parameters, overloaded functions, overloading in Ruby

13

Pure functional language characteristics, Scheme: S-expressions, built-in functions, function definition, conditional expressions, recursion

14

Scheme: lambda expressions, functions as returned values, map, eval, trees in scheme, Introduction to object oriented programming in Ruby: class definition

15

Object-oriented programming in Ruby: class variables and methods, getters and setters, operators and methods, operator overloading, Inheritence and polymorphism Java vs Ruby

Office Hours

Sunday, tuseday, Thursday: 10-11

Mon, Wed: 9-11, 12.5-1.5

 

Grade distribution

Three exams 90%: First Exam 20%, Second Exam 20%, Final Exam 50%.

Assignments and Quizzes 10%.

 

References

Text Book: Concepts of Programming Languages, Fifth Edition, Robert W. Sebesta