Paradigms of Computer Programming – Fundamentals

Provided by:
9/10 stars
based on  19 reviews
Provided by:
Cost FREE , Add a Verified Certificate for $50
Start Date Upcoming
Paradigms of Computer Programming – Fundamentals

Course Details

Cost

FREE,
Add a Verified Certificate for $50

Upcoming Schedule

  • Upcoming

Course Provider

edX online courses
Harvard University, the Massachusetts Institute of Technology, and the University of California, Berkeley, are just some of the schools that you have at your fingertips with edX. Through massive open online courses (MOOCs) from the world's best universities, you can develop your knowledge in literature, math, history, food and nutrition, and more. These online classes are taught by highly-regarded experts in the field. If you take a class on computer science through Harvard, you may be tau...
Harvard University, the Massachusetts Institute of Technology, and the University of California, Berkeley, are just some of the schools that you have at your fingertips with edX. Through massive open online courses (MOOCs) from the world's best universities, you can develop your knowledge in literature, math, history, food and nutrition, and more. These online classes are taught by highly-regarded experts in the field. If you take a class on computer science through Harvard, you may be taught by David J. Malan, a senior lecturer on computer science at Harvard University for the School of Engineering and Applied Sciences. But there's not just one professor - you have access to the entire teaching staff, allowing you to receive feedback on assignments straight from the experts. Pursue a Verified Certificate to document your achievements and use your coursework for job and school applications, promotions, and more. EdX also works with top universities to conduct research, allowing them to learn more about learning. Using their findings, edX is able to provide students with the best and most effective courses, constantly enhancing the student experience.

Provider Subject Specialization
Sciences & Technology
Business & Management
22043 reviews

Course Description

Louv1.1x and Louv1.2x together give an introduction to all major programming concepts, techniques, and paradigms in a unified framework. We cover the three main programming paradigms: functional, object-oriented, and declarative dataflow.

The two courses are targeted toward people with a basic knowledge of programming. It will be most useful to beginning programming students, but the unconventional approach should be insightful even to seasoned professionals.

Louv1.1x covers fundamental concepts. You’ll learn functional programming, its techniques and its data structures. You’ll use simple formal semantics for all concepts, and see those concepts illustrated with practical code that runs on the accompanying open-source platform, the Mozart Programming System.

Louv1.2x covers data abstraction, state, and concurrency. You’ll learn the four ways to do data abstraction and discuss the trade-offs between objects and abstract data...

Louv1.1x and Louv1.2x together give an introduction to all major programming concepts, techniques, and paradigms in a unified framework. We cover the three main programming paradigms: functional, object-oriented, and declarative dataflow.

The two courses are targeted toward people with a basic knowledge of programming. It will be most useful to beginning programming students, but the unconventional approach should be insightful even to seasoned professionals.

Louv1.1x covers fundamental concepts. You’ll learn functional programming, its techniques and its data structures. You’ll use simple formal semantics for all concepts, and see those concepts illustrated with practical code that runs on the accompanying open-source platform, the Mozart Programming System.

Louv1.2x covers data abstraction, state, and concurrency. You’ll learn the four ways to do data abstraction and discuss the trade-offs between objects and abstract data types. You’ll be exposed to deterministic dataflow, the most useful paradigm for concurrent programming, and learn how it avoids race conditions.

To learn more about the practical organization of the two courses, watch the introductory video.

Reviews 9/10 stars
19 Reviews for Paradigms of Computer Programming – Fundamentals

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
Diego Sepúlveda profile image
Diego Sepúlveda profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
4 years, 8 months ago
Disclaimer: I take the first iteration of this course. The concepts are very interesting, lectures are well presented, short and easy to follow, and Professor Van Roy enthusiasm is contagious and motivating. The excersices are design to help you to grasp the concepts (and they are effective in doing it). Professor Van Roy and his staff were actively involved in the forums and answer every question. Given that I took the first iteration of the course there were some problems, specificly with Mozart2 (the computer language used), specially with the installation. But this course was so good that it didn't affected its quality. In short, If you're interested in Computer Sciences this course is a must, it's enjoyable and insightful.
Was this review helpful? Yes2
 Flag
Luiz Cunha profile image
Luiz Cunha profile image
10/10 starsTaking Now
  • 2 reviews
  • 1 completed
3 months, 3 weeks ago
Excellent MOOC for anyone seriously interested in Computer Science/Programming Languages, and eager to understand the inner works of programs: a great complement to the MOOC Programming Languages Specialization from University of Washington (on Coursera)
Was this review helpful? Yes0
 Flag
Patriciu Vasile Vlaicu profile image
Patriciu Vasile Vlaicu profile image

Patriciu Vasile Vlaicu

10/10 starsCompleted
5 months, 1 week ago
A really nice course! Oz really helped getting the hang on recursivity. Prior to this I wouldn't have imagined that you could do so many things with single instantiation.
Was this review helpful? Yes0
 Flag
Alexander Pinskiy profile image
Alexander Pinskiy profile image

Alexander Pinskiy

10/10 starsCompleted
1 year, 4 months ago
A great course, would recommend to both CS students and professional developers alike. Students will get an introduction to programming concepts in a language-agnostic manner, while professionals might broaden their perspective.
Was this review helpful? Yes1
 Flag
Tom Koenig profile image
Tom Koenig profile image

Tom Koenig

10/10 starsCompleted
1 year, 5 months ago
This is an excellent and unique introduction to programming. Peter Van Roy avoids focusing on the syntax of a particular language or a particular programming style. Instead he provides the concepts needed to deeply understand what is going on and the techniques to correctly program. One way he does this is by pointing out that different programming paradigms will be appropriate for different problems. Be warned that this course only covers one paradigm (functional programming), and you will need to continue on with the next course to get the full benefit. I highly recommend this class and look forward to the next.
Was this review helpful? Yes0
 Flag
Joachim Houyoux profile image
Joachim Houyoux profile image

Joachim Houyoux

8/10 starsCompleted
1 year, 5 months ago
The instructor is very interesting and I like the way he explains the course. The content was interesting and different fom java we have learn last year. If I had to say something bad, sometimes, we had to do some exercices and the content to do these exercices was in further videos. Sorry for my bad english.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 4 months ago
The topics were very interesting and well presented. It was challenging but just as rewarding. It provides insights into techniques not used widely but still can be useful. It has a good level of detail. I would definitely suggest to anybody interested in programming. Anyway, it is not a programming 101 course, you need some basic experience.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 5 months ago
Deep and enriching, even for experienced software developers. Clarifies the different paradigms and how they relate and extend each other. It gives tools to understand the underlying semantics and reasons for doing things in particular paradigms.
Was this review helpful? Yes0
 Flag
Freddy Veloz profile image
Freddy Veloz profile image

Freddy Veloz

8/10 starsCompleted
2 years, 5 months ago
This is a very good course. It covers many important topics and the programming tasks grow harder as the course goes on. The only thing that might be a little discouraging is that the programming language used for the course is Oz, which can be a little odd at times. Anyway, excellent course overall.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 5 months ago
I've recently completed this course I must say that would recommend it (as well as the book "Concepts, Techniques, and Models of Computer Programming") to any person studying CS or working in software development. I explains the concepts behind computer programming from a deeper perspective and gives a new outlook on them. If you're currently studying programming, be it in a university or on your own, work through this course and it will help you immensely. And if you're a professional, still listen to it, it never hurts to expand one's knowledge.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 5 months ago
Great introductory course in programming for those who want to understand the fundamentals. Maybe, the next best thing after Structure and Interpretations of Computer Programs
Was this review helpful? Yes0
 Flag
Alex Lu profile image
Alex Lu profile image

Alex Lu

9/10 starsTaking Now
2 years, 6 months ago
Instructor makes those "fancy terminologies" easy to understand. And the text book Concepct ,technique ,model of computet programming is really awesome. But emacs is really hard to use, if Oz can run in browser then it would be perfect.
Was this review helpful? Yes0
 Flag
Adam Streck profile image
Adam Streck profile image

Adam Streck

8/10 starsCompleted
3 years ago
This was an excellent course. It really helped me to build a mental map of the programming paradigms and prof. Van Roy has, without a shadow of a doubt, a a far reaching understanding of the matter. I felt compelled to finish the exercises and had fun with both the lectures and the practical tasks. The only downside from my perspective is the use of the Oz language, which adds additional load since probably nobody taking the course is not familiar with the syntax and rules of the language. It's use is well justified, however it is not a language that would otherwise be of a practical use. Still, I can only recommend.
Was this review helpful? Yes0
 Flag
Beroal Beroal profile image
Beroal Beroal profile image
10/10 starsCompleted
  • 3 reviews
  • 1 completed
3 years, 3 months ago
First, I should say that I am no newbie in programming, so I don't know how newbies will perceive this course. As you probably know, there are two courses: “Fundamentals” and “Abstraction and Concurrency.” I took “Fundamentals” as a prerequisite to “Abstraction and Concurrency.” This course starts with functional programming which is a good thing because it prevents the imperative mindset. The course introduces an operational semantics of a programming language and its use in verification. This heavy lean to computer science is unusual among programming courses. Even some elementary exercises got me thinking. So this approach definitely is good. It's a pity that it is almost neglected in “Abstraction and Concurrency.” There are lectures on data structures (for example, trees) and efficiency (complexity) of algorithms. IMHO, they are a bit shallow. The Courseware of this course is short on code examples and exercises. If this is... First, I should say that I am no newbie in programming, so I don't know how newbies will perceive this course. As you probably know, there are two courses: “Fundamentals” and “Abstraction and Concurrency.” I took “Fundamentals” as a prerequisite to “Abstraction and Concurrency.” This course starts with functional programming which is a good thing because it prevents the imperative mindset. The course introduces an operational semantics of a programming language and its use in verification. This heavy lean to computer science is unusual among programming courses. Even some elementary exercises got me thinking. So this approach definitely is good. It's a pity that it is almost neglected in “Abstraction and Concurrency.” There are lectures on data structures (for example, trees) and efficiency (complexity) of algorithms. IMHO, they are a bit shallow. The Courseware of this course is short on code examples and exercises. If this is your first programming course, read the provided textbook. Exercises should be done in the Oz programming language. Oz is exotic. I recommend you to read the part of the textbook on its syntax and semantics. Thus you avoid frustration. And the semantics of Oz studied here will be used in “Abstraction and Concurrency.” So this course really is required for “Abstraction and Concurrency.”
Was this review helpful? Yes1
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
3 years, 5 months ago
This course introduces functional programming as a first step towards several other paradigms (in Lov1.2). In the way it explains several other things like data structures (lists, trees and records), formal semantics and complexity of programs. It does a very good job in explaining a lot of abstract concepts to people with few programminv experience. The language used is Mozart-Oz, a research language that implements in a clear way all the explained concepts. The exercises of the course are of two kinds: multiple choice or fill the gap ones to test if you understand the theory and practice exercises in Oz, graded by an automatic grader. These programming exercises are very interesting and the real test for knowing if you have learned how to apply the theory to real programming. All in all, I strongly recommend the course, as it has been an open-minder course for me. I'm sure that you will enjoy it if you really like programming.
Was this review helpful? Yes1
 Flag
Student profile image
Student profile image

Student

8/10 starsTaking Now
4 years, 1 month ago
The content is interesting, but the course is a bit hard to understand. The audio- and videoquality is quite bad. A bit to much focused on OZ as programming language.
Was this review helpful? Yes0
 Flag
Albert Vila profile image
Albert Vila profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
4 years, 8 months ago
I recommend this course. I already knew enough functional programming, so the first part wasn't mind blowing, but it helped me to reinforce the topic (with assertions like "in functional programming, there is no notion of time"). I liked how Peter introduced the Imperative Paradigm by adding mutable cells to the Functional Programming paradigm. Another interesting topic is concurrency. The course teaches deterministic dataflow, which is a very particular form of concurrency. There was a bonus lecture from a host professor (Seif Haridi) which covered actor based concurrency (like Scala's Akka or Erlang). At the first edition there were many frustrations with the software installation and cryptic error messages. It was clear what was needed to be fixed. Looking at the changes done for the 2nd edition, the course will be much pleasant. So you'll enjoy it more, with less frustration.
Was this review helpful? Yes1
 Flag
John Beattie profile image
John Beattie profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
4 years, 8 months ago
The course is both rigorous and an introduction. It is at undergraduate level but shows how the different programming paradigms are connected to each other, in terms of principles. The key is the picture which shows these paradigms, each connected to the next by the addition of one new feature. In many ways this enables you to understand what is actually different about different languages, leaving aside the surface level of the syntax. The surface level of languages is important as well but this is one of very few places where you can get to see the underlying differences. ('Completed' is slightly inaccurate. I audited the course, meaning that I wanted to see a description of the different principles and how they connected the different paradigms.)
Was this review helpful? Yes1
 Flag
Bilal Korir profile image
Bilal Korir profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
4 years, 8 months ago
This a great course, especially if you are a programmer or want to be. I believe anyone who wants to be a great programmer should take this course. I haven't finished the course -and I was so sad for that- but I'm definitely will re-take it in the future as soon as I get a chance.
Was this review helpful? Yes0
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.