Course Information

Course Information
Course Title Code Semester L+U Hour Credits ECTS
The Principles Of Programming Languages CE210 4. Semester 3 + 0 3.0 4.0
Prerequisites None
Language of Instruction English
Course Level Undergraduate
Course Type
Mode of delivery face to face
Course Coordinator Assist. Prof. Dr. Şeyhmus YILMAZ
Instructors Şeyhmus YILMAZ
Assistants
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.
Learning Outcomes - Gain knowledge of different programming languages and paradigms and understand the history and evolution of these languages.
- Gaining knowledge on type systems and type safety and understanding the differences between static and dynamic type systems.
- Gain the ability to learn and apply advanced programming techniques such as object-oriented programming, functional programming and logic programming.
- Developing the ability to improve the quality and security of software through program analysis and validation methods.
- Ability to acquire basic knowledge of quantum programming languages and quantum computers and to follow future developments.
Weekly Topics (Content)
Week Topics Learning Methods
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
Recommended Sources
Relations with Education Attainment Program Course Competencies
Program Requirements Contribution Level DK1 DK2 DK3 DK4 DK5 Measurement Method
*DK = Course's Contrubution.
0 1 2 3 4 5
Course's Level of contribution None Very Low Low Fair High Very High
Method of assessment/evaluation Written exam Oral Exams Assignment/Project Laboratory work Presentation/Seminar
ECTS credits and course workload
Event Quantity Duration (Hour) Total Workload (Hour)
Midterm 1 5 16 80
Homework 2 5 5 25
Total Workload 105
ECTS Credit of the Course 4.0