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. |
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 |
Program Requirements | Contribution Level | DK1 | DK2 | DK3 | DK4 | DK5 | Measurement Method |
---|
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 |
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 |