Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

The University of British Columbia

How to Code: Simple Data

The University of British Columbia via edX


This programming course takes a unique approach, as it focuses on learning a systematic programming method rather than a programming language. This practical approach will help you channel your creativity so that you can program well in any language.

This course, part of the Software Development MicroMasters Program, presents a core design method with a focus on numbers, strings, images and lists.

You will learn techniques to:

  • Develop program requirements
  • Produce programs with consistent structure that are easy to modify later
  • Make your programs more reliable by building tests as an integral part of the programming process.

This course concludes with the design of a simple interactive game.

Learners who enroll in the Verified track will receive staff grading for the course project and increased interaction with the instructor and staff.

Learner Testimonial

"I have taken and completed tens of MOOCs on programming and computer science, I have even been and I am currently a TA in some of these courses. Among them 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 these two courses on systematic program design." - edX Learner

Taught by

Gregor Kiczales


3.5 rating, based on 15 Class Central reviews

4.1 rating at edX based on 8 ratings

Start your review of How to Code: Simple Data

  • Anonymous
    The course has one thing going for it: it's just about the only MOOC that is an introduction to functional programming and program design. So, if you want that, you really don't have any other options. However, the quality and clarity of this cours…
  • Profile image for Estefania Cass.
    Estefania Cass.
    This is an extraordinary course that I totally recommend taking for everyone looking to learn how to code!!! You will start by learning BSL, the functional programming language used in the course. I promise you that learning BSL will be great, and…
  • Interesting course that has taken much of the guess work out of working with data and designing functions. It teaches a systematic approach for programming with an emphasis on letting the data build the function as well as test-driven development.…
  • Anonymous
    This class teaches really basic concepts at a very slow pace. If you have ever written a function before, I would suggest taking something a bit more advanced. I believe the professor's choice to use a custom language and IDE is ultimately doing a disservice to the students, as the syntax is bizarre and ultimately hard to apply to any reasonable language.
  • Anonymous
    Probably the worst way to learn. You'll be better off pretty much doing any other course with a standard setup and programming language.
  • Anonymous
    It's a weird way to go about introducing well know design concepts like TDD, Design patterns, separation of concerns. Professor come up with different names for all those well know concepts and talks about them in a way like he just discover them. There is got to be a better course on program design.
  • Profile image for Иван Егоров
    Иван Егоров
    It's really basic course about basic concepts at programming and program design. You will learn (but no one will tell you about it explicitly) about TDD (Test Driven Development) and DDD (Domain Driven Design). It's not bad course. But I'm really b…
  • Anonymous
    Great course for learning program design. A gentle introduction to thinking functionally. This course is highly recommended. It has now been updated and is part of the MicroMasters in Software Development on edX.
  • Best course on program design. It is based on How To Design Programs by Mathias Felleisen.
    It uses a functional paradignem and the Racket language to teach you how to design your programs around your data.
  • Robert Ndungu
    This is the first programming MOOC I have ever taken. Prior to taking it, I had attempted to read programming books with the intention of learning how code. It didn't take long before I realized that I hated reading books about programming. Not beca…
  • Profile image for Kochegarova Elena
    Kochegarova Elena
    Perfect course for people who really want to start coding from the very beginning. This course helps you convert tough problems to very small yet functional and easy readable pieces of code with obvious structure. It focuses on the structure of the…
  • Profile image for Luis Galicia
    Luis Galicia
    A very well organized, pleasing, and useful course. You will use Racket, a functional programming language. The course teaches a good deal of test-oriented programming and some basic design principles. The exercises are very rewarding. I thoroughly recommend taking this course and the one that follows, HtC: Complex Data.
  • Profile image for Christian Paez
    Christian Paez
    The course offers very good information on designing simple programs in general, it is taught in Racket, a very simple programming language with easy syntax, this means that it does not take a long time to understand syntax to begin coding, instructor Gregor Kickzales does a great job teaching this course

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.