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