Difference between revisions of "Programming paradigms"

From Marek Běhálek Wiki
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 29: Line 29:
  
 
[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf Basics of functional programming]
 
[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf Basics of functional programming]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=14 Page 12] [[File:Video logo.png|80px|link=https://youtu.be/641a45ILdkc]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=28 Page 26] [[File:Video logo.png|80px|link=https://youtu.be/6eXCGAlI3FM]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=36 Page 34] [[File:Video logo.png|80px|link=https://youtu.be/RlQumT3LNfI]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=44 Page 42] Lists [[File:Video logo.png|80px|link=https://youtu.be/qJyi7fuICT0]] Tuples [[File:Video logo.png|80px|link=https://youtu.be/axb0WOROuf0]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=50 Page 48] Theory [[File:Video logo.png|80px|link=https://youtu.be/XINafdmXTIE]] Example [[File:Video logo.png|80px|link=https://youtu.be/6jawdNysjs8]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=57 Page 55] [[File:Video logo.png|80px|link=https://youtu.be/QHtGADjvwCU]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=72 Page 70] [[File:Video logo.png|80px|link=https://youtu.be/Tf7tyJbHDuo]]
 +
*[http://linedu.vsb.cz/~beh01/wiki_data/Basics_of_FP.pdf#page=82 Page 80] [[File:Video logo.png|80px|link=https://youtu.be/tOmNZNCWICg]]
 +
 +
[http://linedu.vsb.cz/~beh01/wiki_data/Advanced_FP.pdf Introduction to advanced topics of functional programming]
  
 
Schedule:
 
Schedule:
Line 39: Line 49:
 
* Lecture 6: [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=1 Page 1] - [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=20 Page 20]
 
* Lecture 6: [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=1 Page 1] - [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=20 Page 20]
 
* Lecture 7: [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=1 Page 1] - [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=20 Page 20]
 
* Lecture 7: [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=1 Page 1] - [http://linedu.vsb.cz/~beh01/wiki_data/Functional%20programming.pdf#page=20 Page 20]
 
  
 
== Laboratories ==  
 
== Laboratories ==  
 
+
* [[FP_Laboratory_1 | Task 1]]
* [[FP_Laboratory_2 | Task 1]]
+
* [[FP_Laboratory_2 | Task 2]]
* [[FP_Laboratory_3 | Task 2]]
+
* [[FP_Laboratory_3 | Task 3]]
* [[FP_Laboratory_4 | Task 3]]
+
* [[FP_Laboratory_4 | Task 4]]
* [[FP_Laboratory_5 | Task 4]]
+
* [[FP_Laboratory_5 | Task 5]]
* [[FP_Laboratory_6 | Task 5]]
+
* [[FP_Laboratory_6 | Task 6]]
* [[FP_Laboratory_7 | Task 6]]
+
* [[FP_Laboratory_7 | Task 7]]
* [[FP_Laboratory_9 | Task 7]]
+
* [[FP_Laboratory_9 | Task 9]]
* [[FP_Laboratory_10 | Task 8]]
+
* [[FP_Laboratory_10 | Task 10]]
 +
* [[FP_Laboratory_11 | Task 11]]
 +
* [[FP_Laboratory_12 | Task 12]]
  
 
Solutions to tasks form laboratories: [[FP_Solution | Solution]]
 
Solutions to tasks form laboratories: [[FP_Solution | Solution]]
Line 59: Line 70:
  
 
* [[FP_Homework_1 | Homework 1]]
 
* [[FP_Homework_1 | Homework 1]]
* [[FP_Homework_1_extension | Homework 1 Extension]]
+
* [[FP_Homework_2 | Homework 2]]
 +
* [[FP_Homework_3_extension | Homework 3]]

Latest revision as of 11:44, 26 October 2021

Basic introduction

Currently, the most widely used programming languages (such as C ++, Java, PHP, C #) are imperative and integrate object-oriented programming. The aim of Programming Paradigms course is to show students less frequently used programming languages and alternative methods of software development. Examples of such technologies are a declarative style of programming, constraint programming or verification.

The course does not provide a complete overview of such technologies and it does not aim to show these technologies in detail, but alternative approaches for solving different types of problems are shown. The course is practically oriented. Students learn discussed technologies on prepared examples. Together with selected programming paradigms and technologies, also appropriate tools to work with them will be demonstrated.

After completing the course, students should know about a wide range of alternative technologies, and they should be able to recognize tasks, where they are simplifying the solution.

Subject aims expressed by acquired skills and competences

After completing the course, students should know about a wide range of alternative technologies, and they should be able to recognize tasks, for which they are simplifying the development.

Recommended literature

  • Lipovaca M.:Learn You a Haskell for Great Good!: A Beginner's Guide (1st ed.). No Starch Press, San Francisco, CA, USA, 2011 - for free at: http://learnyouahaskell.com/
  • O'Sullivan B., Goerzen J., Stewart D.: Real world Haskell, O'Reilly Media, Inc. 2008. ISBN:0596514980 - for free at: http://book.realworldhaskell.org/read/
  • Thompson S.: The Haskell: The Craft of Functional Programming (3nd ed.). Addison-Wesley Professional, October 2, 2011, ISBN-10: 0201882957.

Way of continuous check of knowledge in the course of semester

During the exercises, students will be given various homework's. This will be the crucial part of the final evaluation.

Software

We will start with Haskell. A guide how to set up the development environment for Haskell using Visual Studio Code can be found here.

Presentations

Presentation used in our lectures:

Basics of functional programming

Introduction to advanced topics of functional programming

Schedule:

Laboratories

Solutions to tasks form laboratories: Solution

Cheat sheet containing basic functions in PDF

Homework