BSc in Computer Science / Бакалавр в Області Комп'ютерних Наук

Course Details

Course Information Package

Course Unit TitlePROGRAMMING LANGUAGES
Course Unit CodeACSC371
Course Unit Details
Number of ECTS credits allocated5
Learning Outcomes of the course unitBy the end of the course, the students should be able to:
  1. Differentiate programming paradigms and the theoretical foundations of each and develop criteria for deciding what programming language should be used for a given task for a specific domain.
  2. Demonstrate basic familiarity with languages from imperative, object-oriented, logic and functional paradigms.
  3. Develop an understanding of components of programming languages including control structures, names, bindings, scopes, types, exceptions, etc., evaluate how these properties are implemented in particular languages and argue on their impact in language evaluation.
  4. Examine the basic syntactical structure of a language (BNF, derivation, parsing).
  5. Develop skills to describe, analyse, and learn to use the features of new programming languages.
Mode of DeliveryFace-to-face
PrerequisitesACSC382Co-requisitesNONE
Recommended optional program componentsNONE
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.
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
Control Flow: Expression evaluation. Sequence, selection and iteration - common constructs. The concept of recursion.
Data types: Type checking and strong typing. Arrays, pointers, records and unions. Enforcing type compatibility
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
  • R W Sebesta, Concepts of Programming Languages, Pearson Ed. (latest ed).
References
  • M Scott, Programming Language Pragmatics, Morgan-Kaufmann, 2009.
  • R. Sethi, Programming Languages: Concepts and Constructs, Addison-Wesley.
  • Paul Graham, Hackers and Painters, O’Reilly, 2004.
  • Various books and online sources introducing specific programming languages (eg Scheme, etc).
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
Assignments20%
Test10%
Lab work10%
Final Exam60%
Language of instructionEnglish
Work placement(s)NO

 Друк  E-mail