Description

While most of the industry uses either procedural or object-oriented programming languages, there are entire families of other languages with certain strengths and weaknesses that make them attractive to a variety of problem domains. This course will introduce and discuss both the history and relevant features of both imperative and non-imperative programming languages. The course will cover topics such as syntax and semantics, essential concepts including data types, control structures, subprograms and advanced topics such polymorphism, and object oriented programming. The course will explore both functional and logic programming as examples of non-imperative programming languages. This course is a bit different from other courses within the curriculum in that it has no project assignments. Several of the units have non-graded exercises that provide hands on exposure to some of the programming language concepts that will be studied within the course, however, the course is designed to be primarily a theory course. Grades will be determined primarily on the basis of discussions and exams.
This course has been developed to follow the text and course design recommendations provided by M. Ben-Ari of the Weizman Institute of Science. These materials are used with the permission of Professor Ben-Ari. The CIU recognizes and appreciates the contribution made by Professor Ben Ari in the use of his text and supporting materials and resources. The text is available for download from the course site in the references section.