Course Details
Course Information Package
Course Unit Title | PROGRAMMING LANGUAGES | ||||||||||
Course Unit Code | ACSC371 | ||||||||||
Course Unit Details | |||||||||||
Number of ECTS credits allocated | 5 | ||||||||||
Learning Outcomes of the course unit | By the end of the course, the students should be able to:
| ||||||||||
Mode of Delivery | Face-to-face | ||||||||||
Prerequisites | ACSC382 | Co-requisites | NONE | ||||||||
Recommended optional program components | NONE | ||||||||||
Course Contents | · Introduction to Programming Languages: Why programming languages? Why different languages, Main programming languages paradigms. Goals and tradeoffs. Domains of application. Comparison of programming languages. Historical development for PL. · Languages and Grammar: Language definition languages – Grammar Definition. Derivations and parse trees. Chomsky hierarchy. Regular expressions and finite state automata. Context free grammars. Overview of the compilation process and links to grammar definition. Compiled vs interpreted languages · Von-Neumann architecture and imperative programming: Processors and memory. o Names, Scopes, Binding: Lifetime of objects and storage management, variables and the concept of binding (sextuple definition). Scope rules. Static, stack dynamic and heap dynamic storage allocation. Garbage collection o Control Flow: Expression evaluation. Sequence, selection and iteration - common constructs. The concept of recursion. o Data types: Type checking and strong typing. Arrays, pointers, records and unions. Enforcing type compatibility o Subprograms: Implementing the call stack, parameters and return values. · Overview of data abstraction and core OO features · Exception handling: The need for exception handling and abstraction from error handling. Error handling mechanisms (Java) · Lambda calculus and functional programming: Reductions in lambda-calculus. Functional programming paradigm. Scheme programming language. Functional calculations, Recursion and tail recursive definitions. List processing in Scheme. The ‘let’ statement and efficiency considerations. · Logic Programming Introduction: Introduction to Prolog. Clauses, functors, facts and rules. Variables and Unification. Recursion. Lists in Prolog. · The emergence of Scripting languages: Common characteristics and problem domains. Examples of impact and importance. | ||||||||||
Recommended and/or required reading: | |||||||||||
Textbooks |
| ||||||||||
References |
| ||||||||||
Planned learning activities and teaching methods | The course is delivered in three-hour lectures per week. Two cover the theoretical aspects of the course. A period per week is reserved for delivering the lecture in computer laboratories. This is used for practical experimentation with the concepts and demonstration of various programming paradigm examples. Students are handed out a series of assignments and homework both of practical nature (e.g. programming exercises) and for investigation (e.g. investigate and critique specific design characteristics of a given language). For laboratory needs, the Prolog, Scheme, Java, and C languages will be used. The course material (notes, exercises, forum, etc) is maintained on the university’s e-learning platform | ||||||||||
Assessment methods and criteria |
| ||||||||||
Language of instruction | English | ||||||||||
Work placement(s) | NO |