|
|
| COM2002 | Programming Languages | 3+0+0 | ECTS:5 | | 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. | 1.2 - 1.3 - 2.1 | 1,3 | | LO - 2 : | quickly begin to write programs in new languages given basic outlines of syntax and semantics. | 1.2 - 1.3 - 2.1 | 1,3 | | LO - 3 : | analyse and evaluate new programming languages. | 1.2 - 1.3 - 2.1 | 1 | | LO - 4 : | apply the functional programming style and write Haskell programs requiring multiple functions. | 1.2 - 1.3 - 2.1 | 1,3 | | LO - 5 : | distinguish the differences between statically and dynamically typed languages. | 1.2 - 1.3 - 2.1 | 1 | | LO - 6 : | apply the imperative and object-oriented features such as polymorphism, typing, overloading, early versus late binding. | 1.2 - 1.3 - 2.1 | 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/2024 | 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 |
|