How to Code: Systematic Program Design - Part 3

Provided by:
10/10 stars
based on  8 reviews
Provided by:
Cost FREE
Start Date On demand

Course Details

Cost

FREE

Upcoming Schedule

  • On demand

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
22210 reviews

Course Description

In part 3 of the How to Code – Systematic Program Design series, you will design programs that even experienced developers would find challenging. The design method you have been learning since How To Code - Systematic Program Design Part 1 will really deliver here, because you will be able to crank out these programs with relative ease.

By learning how to capture common data and control structures using abstraction, your programs will get shorter and better tested.

In this part of the course we will learn how to design search programs. You will design a program to solve Sudoku puzzles, and will be able to design many other puzzle solvers as well.

This course is part of the How to Code - Systematic Program Design XSeries Program

Reviews 10/10 stars
8 Reviews for How to Code: Systematic Program Design - Part 3

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
Student profile image
Student profile image

Student

10/10 starsCompleted
3 years, 6 months ago
I have taken and completed tens of MOOCs on programming and computer science, I have even been and I am currently TA in some of these courses. Among them there are a few that deserve without hesitation the highest rate. But if I had to choose only one at the top of them it would be the SPD series. I took it when it was offered on Coursera years ago. The current incarnation is even better, with added materials (accumulators and graphs). The course relies on and takes advantage of the best modern intro to programming I know, the book "How to Design Programs" by Matthias Felleisen et al. and the gigantic project behind. Materials are carefully designed. There are a lot of practice problems of different levels of difficulty for a really step-by-step learning. The professor and TAs constantly monitor the forums even though the course is now self-paced. No, it is not based on a general purpose programming language like Java or... I have taken and completed tens of MOOCs on programming and computer science, I have even been and I am currently TA in some of these courses. Among them there are a few that deserve without hesitation the highest rate. But if I had to choose only one at the top of them it would be the SPD series. I took it when it was offered on Coursera years ago. The current incarnation is even better, with added materials (accumulators and graphs). The course relies on and takes advantage of the best modern intro to programming I know, the book "How to Design Programs" by Matthias Felleisen et al. and the gigantic project behind. Materials are carefully designed. There are a lot of practice problems of different levels of difficulty for a really step-by-step learning. The professor and TAs constantly monitor the forums even though the course is now self-paced. No, it is not based on a general purpose programming language like Java or Python, but on a subset of teaching languages created on top of Racket (a descendant of Scheme with many enhancements). The idea is to focus just on concepts freeing students from language particularities and gory details. Don't worry, these teaching languages can be learnt in a couple of hours at most, and everything taught on them is applicable to any real language once one grasp the whole picture. In this regard I believe that SPD is a course to be completed entirely up to SPD3. Although this is not an easy course at all, it is perfectly doable even for total beginners if they put the effort required. If you really want to learn to program well, even if you are a programmer and want to see how a systematic way of tackling problems can help to get correct, elegant, readable and maintainable code, SPD is the best course you can take. If apart from that you are fond of functional programming you'll fall in love with SPD for sure. After SPD you'll never have the blank-page syndrome nor you'll consider those beautiful programs you may have seen sometimes the achievement of incredible wizards. It's all about systematically approaching problems, and there is actually such a systematic way of doing so.
Was this review helpful? Yes1
 Flag
student profile image
student profile image

student

10/10 starsTaking Now
4 months ago
While I'm writing this review, i have almost completed the second part of the course. the method taught in this course is very powerful. I was many times surprised when i produced the solution to complex problems using the design method. A great example for that is the final project of the first part of the course which was to design a " SPACE INVADERS" game! I do recommend the course for everyone who looks for a good start in his path of learning software design .
Was this review helpful? Yes0
 Flag
Yao-Ting Lyu profile image
Yao-Ting Lyu profile image

Yao-Ting Lyu

10/10 starsTaking Now
2 years, 3 months ago
I decided to learn programming an year ago. At first I took a MOOC about CS101. Although I passed the course, I still confused by some basic concept like recursion, BST... Then I found a book called "How to design program" and this course. This course follows a principle called "design recipe". By following the recipe and course material. You will learn a lot fundamental concepts of computer scicnce without frustration. Although this course is taught in a teaching language called "BSL", you can use these concepets in any programming languages. In my opinion, this course is one of the best introductory courses in CS.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 4 months ago
I was skeptical at first with the language selection, but I went through the course anyway and I was amazed how great it was. I completed the whole series and you learn so much in this, functional programming, algorithms, different data structures and more. The biggest plus of this course is that you will make complex program and they will come so easy to you when you follow the systematic approach describe by prof. Gregor Kiczales.
Was this review helpful? Yes0
 Flag
Student profile image
Student profile image

Student

10/10 starsCompleted
2 years, 6 months ago
After part one and part two, where one learns the basics, here new complicated structures and more difficult tasks are introduced. In solving these problems, the systematic approach to programming presented here can really save you a lot of time, and bring to an easily readable solution.
Was this review helpful? Yes0
 Flag
Mohsin Sayyed profile image
Mohsin Sayyed profile image

Mohsin Sayyed

10/10 starsCompleted
2 years, 11 months ago
I had signed up for this course when it was first offered at course. I would strongly recommend this course right from a no programmer to and experienced program at least once due to its singular structure. It highly concentrates on designing data definition within a problem domain as to not come up with the exact solution in the first go and rather being an incremental approach going backwards and deciding what would work best and redesigning the data definition which is very unique to bsl/asl that the language itself forces the programmer to do so with lot of inline check-expects(unit test) in place. The course seems to be very simple in the initial few weeks and gradually the difficulty level increases towards the end of course as it highly uses linear data structures(lists) and hierarchical(graph, trees) being very practical to be solved as part of your assignment. Having said that learning it under the guidance of Prof Gregor Ki... I had signed up for this course when it was first offered at course. I would strongly recommend this course right from a no programmer to and experienced program at least once due to its singular structure. It highly concentrates on designing data definition within a problem domain as to not come up with the exact solution in the first go and rather being an incremental approach going backwards and deciding what would work best and redesigning the data definition which is very unique to bsl/asl that the language itself forces the programmer to do so with lot of inline check-expects(unit test) in place. The course seems to be very simple in the initial few weeks and gradually the difficulty level increases towards the end of course as it highly uses linear data structures(lists) and hierarchical(graph, trees) being very practical to be solved as part of your assignment. Having said that learning it under the guidance of Prof Gregor Kiczales is very much worth for your time to be invested in this course.
Was this review helpful? Yes0
 Flag
Lau Sandt profile image
Lau Sandt profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
3 years ago
An excellent course in how to think about programming in a systematic way. Not depending on libraries to do the complicating things. This is not about coding. This is about learning how to program in such a manner that even complicated functions are easily manageable. The program method is an easy step up to the functional programming paradigm. Two noteworthy points. At times explaining the mathematics behind what your doing is going to be helpful. It is of no use to be afraid that your students will walk away from your course if you shy away from the maths. For people interested in webprogramming and design should in my opinion find another course. That would be the second point. A third not so noteworthy point I now know more about Harry Potter than I ever wanted to... Thanks
Was this review helpful? Yes0
 Flag
H. David Levine profile image
H. David Levine profile image

H. David Levine

10/10 starsCompleted
3 years, 8 months ago
I had taken UBC's mooc with Prof. Kiczales when it had been offered via Coursera, and it is the best study experience to be had, period. I'm looking forward to repeating it through edX as soon as my schedule will allow.
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.