{"id":null,"code":"DTEK0071","name":{"valueFi":"Programming Paradigms in Practice","valueEn":"Programming Paradigms in Practice","valueSv":"Programming Paradigms in Practice"},"credits":5.0,"minCredits":5,"maxCredits":5,"tags":[{"code":"KEKE","title":{"valueFi":"Kestävä kehitys","valueEn":"Sustainable development","valueSv":"Sustainable development"}}],"createdAt":1790534314786,"contentList":[{"title":{"valueFi":"Osaamistavoitteet","valueEn":"Learning outcomes","valueSv":""},"content":{"valueFi":"The student learns to:\r\n - discuss the context and history of language theory and technologies\r\n - identify and analyze the strengths and domains of different programming paradigms and languages, e.g. in the cloud context\r\n - develop basic grammars and language tools with language frameworks\r\n - set up and interface with different language runtime environments\r\n - categorize languages based on their core linguistic features\r\n - analyze advanced topics of object oriented programming (e.g. inheritance, variance, dispatch methods)\r\n - develop using functional programming principles in both purely functional and multi-paradigm languages\r\n - discuss the operating principles of other forms of declarative programming (logic, data flow, reactive, deterministic concurrency)\r\n - identify, locate and obtain information about programming languages and paradigms  \r\n\r\n  The course strengthens the following working life skills: presentation skills, creativity, multi-professionalism, problem solving skills, information and communication technology skills and communication skills.","valueEn":"The student learns to:\r\n - discuss the context and history of language theory and technologies\r\n - identify and analyze the strengths and domains of different programming paradigms and languages, e.g. in the cloud context\r\n - develop basic grammars and language tools with language frameworks\r\n - set up and interface with different language runtime environments\r\n - categorize languages based on their core linguistic features\r\n - analyze advanced topics of object oriented programming (e.g. inheritance, variance, dispatch methods)\r\n - develop using functional programming principles in both purely functional and multi-paradigm languages\r\n - discuss the operating principles of other forms of declarative programming (logic, data flow, reactive, deterministic concurrency)\r\n - identify, locate and obtain information about programming languages and paradigms   \r\n\r\n  The course strengthens the following working life skills: presentation skills, creativity, multi-professionalism, problem solving skills, information and communication technology skills and communication skills.","valueSv":"The student learns to:\r\n - discuss the context and history of language theory and technologies\r\n - identify and analyze the strengths and domains of different programming paradigms and languages, e.g. in the cloud context\r\n - develop basic grammars and language tools with language frameworks\r\n - set up and interface with different language runtime environments\r\n - categorize languages based on their core linguistic features\r\n - analyze advanced topics of object oriented programming (e.g. inheritance, variance, dispatch methods)\r\n - develop using functional programming principles in both purely functional and multi-paradigm languages\r\n - discuss the operating principles of other forms of declarative programming (logic, data flow, reactive, deterministic concurrency)\r\n - identify, locate and obtain information about programming languages and paradigms  \r\n\r\n  The course strengthens the following working life skills: presentation skills, creativity, multi-professionalism, problem solving skills, information and communication technology skills and communication skills."}},{"title":{"valueFi":"Sisältö","valueEn":"Content","valueSv":""},"content":{"valueFi":"The main goal of the course is to provide a structured general view of programming languages and techniques, both from theoretical and pragmatics point of view. The languages are studied via so called cross-cutting concerns (e.g. syntax, semantics), and classified according to different paradigms and concepts. The course begins with an introduction of the evolution of languages and programming up until modern day of cloud computing, followed by a more focused study of general purpose, domain specific, and visual languages. Advanced programming concepts and language features (e.g. syntax, control flow, names, binding, state) are demonstrated. The topics of inheritance (also multiple and non-class based), generics, and advanced object abstractions are covered in the field of object-oriented programming. The latter part of the course focuses on declarative techniques, concurrency, parallelism in the cloud and web. Among covered declarative topics are the background theory and basic abstractions of functional programming, powerful type systems (Haskell), data-flow oriented techniques (e.g. reactive). A list of other topics are available for further experimentation via a research seminar project.","valueEn":"The main goal of the course is to provide a structured general view of programming languages and techniques, both from theoretical and pragmatics point of view. The languages are studied via so called cross-cutting concerns (e.g. syntax, semantics), and classified according to different paradigms and concepts. The course begins with an introduction of the evolution of languages and programming up until modern day of cloud computing, followed by a more focused study of general purpose, domain specific, and visual languages. Advanced programming concepts and language features (e.g. syntax, control flow, names, binding, state) are demonstrated. The topics of inheritance (also multiple and non-class based), generics, and advanced object abstractions are covered in the field of object-oriented programming. The latter part of the course focuses on declarative techniques, concurrency, parallelism in the cloud and web. Among covered declarative topics are the background theory and basic abstractions of functional programming, powerful type systems (Haskell), data-flow oriented techniques (e.g. reactive). A list of other topics are available for further experimentation via a research seminar project.","valueSv":"The main goal of the course is to provide a structured general view of programming languages and techniques, both from theoretical and pragmatics point of view. The languages are studied via so called cross-cutting concerns (e.g. syntax, semantics), and classified according to different paradigms and concepts. The course begins with an introduction of the evolution of languages and programming up until modern day of cloud computing, followed by a more focused study of general purpose, domain specific, and visual languages. Advanced programming concepts and language features (e.g. syntax, control flow, names, binding, state) are demonstrated. The topics of inheritance (also multiple and non-class based), generics, and advanced object abstractions are covered in the field of object-oriented programming. The latter part of the course focuses on declarative techniques, concurrency, parallelism in the cloud and web. Among covered declarative topics are the background theory and basic abstractions of functional programming, powerful type systems (Haskell), data-flow oriented techniques (e.g. reactive). A list of other topics are available for further experimentation via a research seminar project."}},{"title":{"valueFi":"Suoritustavat","valueEn":"Study methods","valueSv":""},"content":{"valueFi":"- Exercise project\r\n- Seminar work","valueEn":"- Exercise project\r\n- Seminar work","valueSv":""}},{"title":{"valueFi":"Toteutustavat","valueEn":"Course unit methods","valueSv":""},"content":{"valueFi":"- Lectures (15 h)\r\n- Programming assignment (35 h)\r\n- Seminar presentations + preparation (30 h)\r\n- Reading scientific literature (25 h)\r\n- Weekly assignments (30 h)","valueEn":"- Lectures (15 h)\r\n- Programming assignment (35 h)\r\n- Seminar presentations + preparation (30 h)\r\n- Reading scientific literature (25 h)\r\n- Weekly assignments (30 h)","valueSv":""}},{"title":{"valueFi":"Oppimateriaalit","valueEn":"Learning material","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}},{"title":{"valueFi":"Lisätiedot","valueEn":"Further information","valueSv":""},"content":{"valueFi":"The content of the course has a connection to the following UN sustainable development goals: 8. Decent work and economic growth, 9. Industry, innovation and infrastructure, 10. Reduced inequalities, 11. Sustainable cities and communities, 13. Climate action and 17. Partnerships for the goals.","valueEn":"The content of the course has a connection to the following UN sustainable development goals: 8. Decent work and economic growth, 9. Industry, innovation and infrastructure, 10. Reduced inequalities, 11. Sustainable cities and communities, 13. Climate action and 17. Partnerships for the goals.","valueSv":""}},{"title":{"valueFi":"Kurssikirjallisuus","valueEn":"Literature","valueSv":""},"content":{"valueFi":"1. Michael L. Scott: Programming Language Pragmatics. 4th ed. Morgan Kaufmann, 2015. 978-0124104099\n2. Robert W. Sebesta: Concepts of Programming Languages, 11th ed., Peason, 2015 978-0133943023","valueEn":"1. Michael L. Scott: Programming Language Pragmatics. 4th ed. Morgan Kaufmann, 2015. 978-0124104099\n2. Robert W. Sebesta: Concepts of Programming Languages, 11th ed., Peason, 2015 978-0133943023","valueSv":"1. Michael L. Scott: Programming Language Pragmatics. 4th ed. Morgan Kaufmann, 2015. 978-0124104099\n2. Robert W. Sebesta: Concepts of Programming Languages, 11th ed., Peason, 2015 978-0133943023"}},{"title":{"valueFi":"Esitietovaatimukset","valueEn":"Qualifications","valueSv":""},"content":{"valueFi":"Advanced course on object oriented programming","valueEn":"Advanced course on object oriented programming","valueSv":""}},{"title":{"valueFi":"Arviointiasteikko","valueEn":"Assessment scale","valueSv":""},"content":{"valueFi":"0-5","valueEn":"0-5","valueSv":"0-5"}},{"title":{"valueFi":"Arviointikriteerit","valueEn":"Assessment criteria","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}},{"title":{"valueFi":"Arviointikriteerit 2","valueEn":"Assessment criteria 2","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}},{"title":{"valueFi":"Arviointikriteerit 3","valueEn":"Assessment criteria 3","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}},{"title":{"valueFi":"Arviointikriteerit 4","valueEn":"Assessment criteria 4","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}},{"title":{"valueFi":"Kielet","valueEn":"Languages","valueSv":""},"content":{"valueFi":"englanti","valueEn":"English","valueSv":"engelska"}},{"title":{"valueFi":"Taso","valueEn":"Level","valueSv":""},"content":{"valueFi":"Syventävät opinnot","valueEn":"Advanced Studies","valueSv":""}},{"title":{"valueFi":"Oppiaine","valueEn":"Subject","valueSv":""},"content":{"valueFi":"Tietotekniikka","valueEn":"Information and Communication Technology","valueSv":"Information and Communication Technology"}},{"title":{"valueFi":"Vastuuhenkilöt","valueEn":"Person in charge","valueSv":""},"content":{"valueFi":"Jari-Matti Mäkelä","valueEn":"Jari-Matti Mäkelä","valueSv":"Jari-Matti Mäkelä"}},{"title":{"valueFi":"Luokittelu","valueEn":"Classification","valueSv":""},"content":{"valueFi":"Kestävä kehitys","valueEn":"Sustainable development","valueSv":"Sustainable development"}},{"title":{"valueFi":"Linkit","valueEn":"Links","valueSv":""},"content":{"valueFi":"","valueEn":"","valueSv":""}}]}