Course Title | Code | Language | Type | Semester | L+U Hour | Credits | ECTS |
---|---|---|---|---|---|---|---|
The Principles Of Programming Languages | CE210 | English | Compulsory | 4. Semester | 3 + 0 | 3.0 | 4.0 |
Prerequisite Courses | |
Course Level | Undergraduate |
Mode of delivery | face to face |
Course Coordinator | Dr. Öğr. Üyesi Şeyhmus YILMAZ |
Instructor(s) | |
Goals | The aim of this course is to teach common programming languages structures in comparison and to familiarize the program development techniques in those programming environments. |
Course Content | Introduction to Programming Languages and Paradigms: History and evolution of languages, Advanced programming paradigms. Type Systems and Type Safety: Static and dynamic type systems, Type safety, type inference and the Hindley-Milner system. Programming Languages Semantics: Operational, axiomatic and semantic approaches, Denotational and experiential semantics. Advanced Object Oriented Programming and Design Models: Object-oriented analysis and design processes, Architecture and design patterns. Functional Programming and Lambda Calculations: Functional programming paradigms and languages. Lambda computations and Curry-Howard isomorphism. Logical Programming and Relational Reasoning: Logical programming languages (eg Prolog), Rule-based systems and inference engines. Meta-programming and Domain Specific Languages (DSL): Meta-programming techniques and usage areas, DSL design and applications. Compiler Design and Structure: Internal and intermediate code representations, Compiler optimization techniques Program Analysis and Verification: Static and dynamic analysis methods, Program verification and proofs of correctness. Advanced Concurrency and Parallel Programming: Parallel programming models and techniques, Concurrency control and anti-lock strategies. Advanced Exception Handling and Event Handling: Exception handling and handling models, Event driven programming and reactive programming. Programming Languages for Cryptography and Security: Programming languages and libraries for security and privacy, Data security using cryptography. Quantum Programming Languages and Quantum Computers: Basic principles and properties of quantum computers, Quantum programming languages and algorithms, Quantum superposition, aliasing and the future of quantum computing. |
# | Öğrenme Kazanımı |
1 | Gain knowledge of different programming languages and paradigms and understand the history and evolution of these languages. |
2 | Gaining knowledge on type systems and type safety and understanding the differences between static and dynamic type systems. |
3 | Gain the ability to learn and apply advanced programming techniques such as object-oriented programming, functional programming and logic programming. |
4 | Developing the ability to improve the quality and security of software through program analysis and validation methods. |
5 | Ability to acquire basic knowledge of quantum programming languages and quantum computers and to follow future developments. |
Week | Topics/Applications | Method |
---|---|---|
1. Week | Evaluation of languages, languages applications | |
2. Week | History and evolution of languages | |
3. Week | Semantic analysis | |
4. Week | Syntax analysis | |
5. Week | Lexical analysis | |
6. Week | Data types and data structures | |
7. Week | Names, Addresses, Bindings | |
8. Week | Mid-term exam | |
9. Week | Subprograms | |
10. Week | Parameter passing methods | |
11. Week | Concurrency in programming languages | |
12. Week | Concepts of Object oriented Programming | |
13. Week | Functional Programing concepts | |
14. Week | Logical programming concepts |
Program Requirements | DK1 | DK2 | DK3 | DK4 | DK5 |
---|
Ders Kitabı veya Notu | Ders Kitabı veya Ders Notu bulunmamaktadır. |
---|---|
Diğer Kaynaklar |
|
ECTS credits and course workload | Quantity | Duration (Hour) | Total Workload (Hour) | |
---|---|---|---|---|
Sınavlar |
Midterm 1 | 5 | 16 | 80 |
Homework 2 | 5 | 5 | 25 | |
Total Workload | 105 | |||
*AKTS = (Total Workload) / 25,5 | ECTS Credit of the Course | 4.0 |