|
COM2014 | Programming Languages | 3+0+0 | ECTS:4 | Year / Semester | Spring Semester | Level of Course | First Cycle | Status | Compulsory | Department | DEPARTMENT of COMPUTER ENGINEERING | Prerequisites and co-requisites | None | Mode of Delivery | Face to face, Practical | Contact Hours | 14 weeks - 3 hours of lectures per week | Lecturer | Doç. Dr. Hüseyin PEHLİVAN | Co-Lecturer | ASSIST. PROF. DR. Hüseyin PEHLİVAN, | Language of instruction | | Professional practise ( internship ) | None | | The aim of the course: | The course aims to present the basic principles of modern programming languages through source code written in a variety of languages such as C, Java and Haskell, examining the execution models of major programming paradigms (imperative, object-oriented, functional and logical) , the language structures at different layers (lexical, syntactic, contextual and semantic) and other important programming language issues (types, polymorphism, overloading, scopes, activation records and parameter passing) . |
Learning Outcomes | CTPO | TOA | Upon successful completion of the course, the students will be able to : | | | LO - 1 : | use the formal techniques to define programming language syntax and semantics. | 2,3,4 | 1,3 | LO - 2 : | quickly begin to write programs in new languages given basic outlines of syntax and semantics. | 2,3,4 | 1,3 | LO - 3 : | analyse and evaluate new programming languages. | 2,3,4 | 1 | LO - 4 : | apply the functional programming style and write Haskell programs requiring multiple functions. | 2,3,4 | 1,3 | LO - 5 : | distinguish the differences between statically and dynamically typed languages. | 2,3,4 | 1 | LO - 6 : | apply the imperative and object-oriented features such as polymorphism, typing, overloading, early versus late binding. | 2,3,4 | 1,3 | CTPO : Contribution to programme outcomes, TOA :Type of assessment (1: written exam, 2: Oral exam, 3: Homework assignment, 4: Laboratory exercise/exam, 5: Seminar / presentation, 6: Term paper), LO : Learning Outcome | |
Language paradigms: Imperative, object-oriented, functional and logic programming. Program syntax: Backus Naur form, grammars, lexical and phrase structures, other grammar forms. Syntax and semantics: Operators, precedence, associativity, other ambiguities, parse trees. Language systems: Classical sequence, interpreters, virtual machines, delayed linking, profiling, dynamic compilation, binding times. A first look at Haskell: Hugs system, types, classes. Types: Primitive and constructed types, enumerations, arrays, unions, subtypes, uses for types. A second look at Haskell: Defining functions, list comprehensions. Polymorphism: Overloading, parameter coercion, parametric and subtype polymorphism. A third look at Haskell: High-order functions, functional parsers. Scope: Definitions, scoping with blocks, scoping with labeled namespace, scoping with primitive namespace, dynamic scoping. A fourth look at Haskell: Interactive programs, declaring types and classes. Memory locations for variables: activation-specific variables, activation records, static allocation, dynamic stacks, handling nested functions, functions as parameters, long-lived functions. Memory management: A memory model, stacks, heaps, fragmentation, current heap links. Object-orientation: Classes, prototypes, inheritance, encapsulation, polymorphism. Parameters: Correspondence, parameter-passing methods. Cost models: a cost model for lists, a cost model for function calls, a cost model for arrays. |
|
Course Syllabus | Week | Subject | Related Notes / Files | Week 1 | Language paradigms
Determination of multidisciplinary project teams and subjects | | Week 2 | Program syntax | | Week 3 | Syntax and Semantics | | Week 4 | Language Systems | | Week 5 | A First Look at Haskell | | Week 6 | Types | | Week 7 | A Second Look at Haskell | | Week 8 | Polymorphism and Scope | | Week 9 | Mid-term exam | | Week 10 | A Third Look at Haskell | | Week 11 | Memory Locations for Variables | | Week 12 | A Fourth Look at Haskell | | Week 13 | Memory management and Object-orientation | | Week 14 | Parameters
Proje sunumları | | Week 15 | Cost Models | | Week 16 | End-of-term exam | | |
1 | Webber, A. B., 2011, Modern Programming Languages: A Practical Introduction, Franklin Beedle & Associates, 572 p.
| | |
1 | Sebesta, R. W., 2019, Concepts of Programming Languages, Pearson, 784 p. | | 2 | Hutton, G., 2016, Programming in Haskell, 2nd ed., Cambridge University Press, 272 p. | | |
Method of Assessment | Type of assessment | Week No | Date | Duration (hours) | Weight (%) | Mid-term exam | 9 | 17/04/2024 | 2 | 50 | End-of-term exam | 16 | 10/06/204 | 2 | 50 | |
Student Work Load and its Distribution | Type of work | Duration (hours pw) | No of weeks / Number of activity | Hours in total per term | Yüz yüze eğitim | 3 | 14 | 42 | Sınıf dışı çalışma | 3 | 14 | 42 | Arasınav için hazırlık | 10 | 1 | 10 | Arasınav | 2 | 1 | 2 | Uygulama | 1 | 14 | 14 | Dönem sonu sınavı için hazırlık | 15 | 1 | 15 | Dönem sonu sınavı | 2 | 1 | 2 | Total work load | | | 127 |
|