Learn more Learn more

Upcoming Deadlines


Recent Discussions

Loading threads...
Browse all discussions »

Announcements

FYI - New Modules Now Up in 2nd Offering of Part 1

Many people asked us to let them know when added the new material to SPD part 1. The first of three new modules is now up in the 2nd offering. This one is numbered 6A, and it is about binary search trees. Another will come up shortly having to do with simplifying functions that consume two one-of types using a model of the code.

We won't be posting these in the original SPD1 offering though. As it turns out, its been a bit of a chore to offer an improved version of the course without taking the old version offline. There are some funny sharing relationships between the two versions that can be confusing.

So if you'd like to see the new materials there's two ways to do it:

If you want the in-video questions, please register for the second offering of SPD1 and see them there.

If you just want to see the video check out the SPD YouTube Channel.
Wed 9 Oct 2013 5:24 AM CEST

Revised Final Grades

Someone discovered an error in the implementation of our grading formula, which has now been fixed.

This will raise the grade of everyone who:
- got at least 1 final exam question right
- did not already have a 100 in the course

Your online records have now been updated.

Someone raised a concern earlier that the grade curve for the course was too highly skewed, which meant that the course assessments had been too easy, and that this was a serious concern. Since this correction in the formula may exacerbate that concern let me address it here.

Our main focus in the first offering of the course was on learning and challenging all of you to learn new material. The ability of our assessment to sort you in a fine grained way in terms of your mastery of the material was of secondary importance to us. I believe most of you did feel challenged, and I am confident that everyone who participated in the course learned something. People who finished it learned a lot. I would ask you to think about the course primarily in terms of what you learned as opposed to whether the grade curve is shifted too far to the right.

As we go forward I believe the assessment will become more and more rigorous, and the "average grade of people who complete" will go down. But we will have to introduce a lot more peer assessment in order to achieve that. We may also have to introduce some kind of hard final exam problem that everyone has a fixed period of time to do. Because simple checks of correctness just aren't going to be enough for this course. I'm thinking about the suggestions people made in terms of mechanical style checkers, I'm not yet convinced that would work for what we really want to check.

So goodbye again! Whether the curve is skewed too high or not, all of you who worked through a significant amount of the course should feel very happy with your effort. We covered a lot of material in a short time. We're already seeing some of you in the second offering of SPD1, and I hope to see more of you in SPD2.

Gregor
Thu 12 Sep 2013 6:26 PM CEST

All Done - Certificates Released

I just pressed the "release certificates" button for the 001 offering of Systematic Program Design Part 1.

It is done! All of you who completed the material should now have your certificates available to you.

One last time, thanks to all of you for signing up for the first offering of SPD1. We appreciate the faith you placed in us, and we appreciate all the work and contributions you made throughout the course. We enjoyed helping you learn about Systematic Program Design, and we appreciate all that we learned from you about the MOOC context.

All of you know that the second offering of SPD1 is now running. In fact we've seen some of you over there already! We have been working pretty hard at incorporating what we learned from you into our second offering. We will also be adding additional material to the second offering and we will let you know when that happens.

I'll just say one last time that if you are inclined to share your thoughts about SPD1 please do so. Tell friends, write reviews etc. We've enjoyed working with lots of people to learn the material and we want to keep doing that! Note that I am explicitly not encouraging you to just be positive. Please say whatever it is you have to say! My encouragement is just to take the time to say it if you feel so inclined.

I also hope we'll see lots of you in SPD2.

Finally now that you have learned the recipes I think you can safely relax the details (like the form of a signature) and focus on what matters: write down what you know, write it in different forms, constantly compare the forms, use examples, test, be consistent, use proven rules to base one part of the design on another and so on. In other words, work systematically.

Gregor on behalf of all of us at UBC.
Wed 4 Sep 2013 1:10 AM CEST

Project 2 Self-Assessment

The self-assessment for project 2 is now up. It is in the form of a quiz which you can find on the all quizzes page.

The quiz walks you through the rubric for the project, when you click submit your grade is calculated.

NOTE: Once you start the quiz you will have one hour to complete it. So complete the project before starting the self-assessment quiz.
Fri 2 Aug 2013 4:08 PM CEST

Course Wrapping Up

Congratulations - we are coming to the end of the official schedule for Week 8!

Yes, the last two weeks have been difficult, and we can tell from the forums that a number of you are taking advantage of the extra time we offered for weeks 7 and 8 which is great. But we do miss the energy that came from having everyone working on the same problems at the same time. It is great to see though that people who have already finished week 8 are helping people who are on week 6. That has been a truly great aspect of this course.

As a reminder, here's the schedule for the rest of the course:

  • Project 2 has been posted, check the announcements page for it. Next week we will post the self-assessment rubric for it.

  • The Final Exam has now been posted. Once you open the Final Exam you will have 24 hours to complete it. We believe it should take less than 3 hours, but be sure to open when you will have time to complete it. You do NOT have to have done the project before you do the final (or vice versa).

  • Both Project 2 and the Final Exam must be completed by August 30th at 9:00pm Vancouver time (UTC -7:00).

  • Final grades will be posted about 1 week after August 30th.


  • Some people have asked for guidance on whether they should continue the course based on their grades so far. There have been many good answers, including a BSL program for computing your grade in the course. But here's our answer.

    We believe the main reason to take a Coursera course is to learn. You've invested a lot in this course, and finishing it will complete that learning. The people who have worked through that final hard example all report getting real satisfaction out of it. Doing the exam and the project should give you that same sense of satisfaction. (But both the final and the project are easier than the Sudoku program!) So we would encourage you to complete the course for the learning and the sense of satisfaction alone.

    At the same time we know that for many people the certificates of different kinds are important. Some people use them to get an employer to pay for the course. Some people list them on school and job applications. So in terms of guidance based on grades, the formula as you know is (this is from the course information page):

  • 40% - Homework: There are 8 weekly homework assignments. The actual assignments are not handed in or graded. Instead there is a short graded homework-quiz you will do after completing the homework. (Everyone will get 100% for quiz 6.)

  • 30% - 2 peer graded projects.

  • 30% - Final Exam


  • I would argue that however you have been doing so far you should be able to keep doing going forward. So if you have a 70% on the work so far, then you should be able to keep doing that. The final was deliberately written not to be overwhelming. It has 18 problems, many of which are quite short, and only a couple of which are intended to be quite difficult. Most are based on designing functions and data as we have been doing the last 4 weeks. You have 24 hours to do the final, and the best way to complete it is to pick a time when you have time, and then solve the problems in DrRacket before making a choice on the exam.

    The project has been posted to the announcements page you can take a look at it there. When you first read it you might find it hard. But read it once a day for a few days. Then go back and watch the Sudoku videos again. Borrow some from the Sudoku starter and then... ... ... follow the recipes. You will get all or most of the way to a working design. And remember, the rubric will be heavily weighted towards systematic design, as opposed to a necessarily perfect solution.

    So the short answer is YES, you can and should finish. We're ending on truly fascinating search problems. We think you will (and should) feel very happy to understand how programs like that work.

    We'll send (at least) one more wrap up message when we get to the end of the final and project period. But for now let us just say thanks for working with us on this course. Its really been a privilege to have so many of you take this course. We hope to see many of you again in part 2. And for those of you who might have run out of time for this course maybe we will see you in a future part 1.

    Gregor
    Caroline
    Dina
    Ennas
    JJ
    Lynsey
    Michael
    Thea
    Thomas
    Victoria



  • Mon 29 Jul 2013 7:10 AM CEST

    Final Deadlines Friday

    For those of you for whom it is summer I hope you are enjoying your last weeks of it. Here in Vancouver its the final week of summer before classes start again.

    This message is just a reminder that the final deadlines are coming up this Friday. Please finish the final exam quiz and the project 2 self assessment before the deadline. Grades including certificates will be released a few days after the deadline.

    We'll send out a course wrap up message at that time. But again, thanks to all of you for having taken this course with us! We've learned a lot about how to improve it from your very helpful feedback and are working to incorporate that in our next offering. If you feel so inclined tell your friends that the next run starts next week.
    Sat 27 Jul 2013 6:06 PM CEST

    Project 2

    This message contains the instructions for Project 2. All the instructions are in this announcement - read it carefully. There is no starter file. At a later time we will post the self-assessment rubric for Project 2. Expect the rubric to be similar in spirit to the one from Project 1 -- well structured code matters a lot to us in this course!

    This project involves the design of a program to solve the 4 queens puzzle. The key to solving this problem is to follow the recipes! It is a challenging problem, but if you understand how the recipes lead to the design of the Sudoku solver then you can follow the recipes to get to the design for this program. This problem is also easier than Sudoku. In particular, while you will end up needing to design a function like valid-board?, that function is much simpler for the queens problem.

    The four queens problem consists of finding a way to place four chess queens on a 4 by 4 chess board while making sure that none of the queens attack each other. The four queens puzzle is one version of the more general n queens problem of placing n queens on an n by n board. Here's what you need to know about the board and queens to solve the four queens problem:

    - The BOARD consists of 16 individual SQUARES arranged in 4 rows of 4 columns. The colour of the squares does not matter. Each square can either be empty or can contain a queen.
    - A POSITION on the board refers to a specific square.
    - A queen ATTACKS every square in its row, its column, and both of its diagonals.
    - A board is VALID if none of the queens placed on it attack each other.
    - A valid board is SOLVED if it contains 4 queens.

    There are many strategies for solving queens, but you should use the following:

    - Use a backtracking generative search that is trying to add 1 queen at a time to the board. So at each step you generate the next boards by finding all the empty squares, adding a queen to each empty square and discarding invalid boards. If the search reaches a valid board with 4 queens (a solved board) produce that result. So its A LOT like the Sudoku solver.
    - You should design a function that consumes a board - which will initially be empty - and tries to find a solution. Call your function queens.

    NOTE 1: You can tell whether two queens are on the same diagonal by comparing the slope of the line between them. If one queen is at row and column (r1, c1) and another queen is at row and column (r2, c2) then the slope of the line between them is: (/ (- r2 r1) (- c2 c1)). If that slope is 1 or -1 then the queens are on the same diagonal.

    NOTE 2: We have described the problem as working for 4 queens. Feel free to make your design have a constant, SIZE, that controls how many queens it works for. You can also just make your function work for any board, but that will slightly complicate some of your functions.

    A more detailed rubric will be published when the self-assessment period begins, but suffice to say that it will be substantially similar to the rubric for Project 1. Significant weight will be put on following the recipes and producing a program that is easy to read. Less weight will be put on final correctness. Remember, a program that is partially complete and is easy to read is easy to get help with. But a program that almost works and is hard to read is hard to get help with!

    Thu 25 Jul 2013 11:17 PM CEST

    One More Sudoku Video

    A couple of forum threads have talked about how challenging it is to complete the valid-board? function design for the Sudoku solver.

    We expected it to be challenging, and we deliberately didn't post a video right away, to give as many of you as possible a chance to work through it independently. But it is a hard problem, so we have now posted a video showing how we worked through it. Enjoy!

    Unsurprisingly its 21 minutes long. I'll say again since there has been some discussion about this. We have made a deliberate decision to make videos like this work through the whole problem, rather than just the highlights. We could of course shorten these videos to 6 minutes, but the feedback we have gotten from students is that seeing how the whole problem is solved, hard parts and easy parts helps people understand how it all fits together.

    As part of providing this new video a few other things changed slightly:

    sudoku-v1.rkt, sudoku-v2.rkt, sudoku-v3.rkt were all revised to have their proper filename at the top
    sudoku-v4.rkt is a new file that starts at the beginning of the new video
    sudoku-solution.rkt is slightly different to match the new video
    Thu 25 Jul 2013 2:36 AM CEST

    Week 8 Is Starting

    We've made it to week 8.

    Before it starts let me congratulate everyone who has made it this far. Way back in week 1 many thought the course was too slow and too easy. The recipe seemed like something designed for make-work. We said then that we had to take the time to learn the recipe on easy problems, because later we would work on hard problems. Over the past few weeks the problems have definitely gotten harder. So seriously, congratulations for staying with the course this far -- I know its difficult for many of you to find the time each week to do it, and as the weeks have gotten tougher that has been harder.

    If you made it to here then you can definitely make it through week 8. We're going to look at a new form of recursion. We're going to design some relatively easy fractal functions. Then we will design a Sudoku game solver. A program that takes a Sudoku puzzle and produces the solution. In some ways it will be the most complex program we have done so far. But at the same time, only two things from this week are needed to solve it! After that its really just a bunch of HtDF problems. So you will see the most significant example yet of the recipes working to make a hard problem tractable.

    Like the other "large problem" videos, a couple of the Sudoku videos are long. That's because they work through the design step-by-step; as always, the intent is for you to be able to type-along with the video solving the problem on your own.

    News about the final exam and the project will be posted at the end of the week.

    You've made it here. Make it to the end. Work through Sudoku, even if you have to get help from the video, or on the forums. Truth be told, many practicing programmers would likely make a muddle of a Sudoku solver before coming up with a solution. Being able to work through it systematically and arrive at a well structured solution is something you can truly feel quite proud of.
    Mon 22 Jul 2013 6:31 AM CEST

    Peer Grading Deadline Reminder

    This is just a reminder that the peer evaluations for Project 1 (Editor) are due Wednesday, July 17th at 11pm PDT.
    Wed 17 Jul 2013 10:05 PM CEST

    Week 7 Has Started

    Sorry for the late announcement! Week 7 has started.

    Good news -- in this week you will be writing less code than last week. Most of the problems this week involve refactoring existing programs. But that doesn't mean you won't be designing programs!

    Instead the work this week will mostly involve different ways that we can refactor programs to improve their quality. A refactoring is a reorganization of the program that changes its structure, not its functionality. One of the things that separates good programmers from the other kind is taking the time to improve the structure of their code once it is written. (And one of the things that separates good employers from the other kind is giving employees the time to improve the structure of their code now and then.)

    This material is super important. It will seem deceptively simple. By that I don't mean to say its hard. What I do mean to say is... (wait for it) it is really, really important to practice this material. I know you've heard us say it before. All I'm saying is that its still true.

    One of the refactorings we will work on this week is abstraction. We will see that abstract is another key technique for managing complexity in programs. Abstraction can make programs smaller and it also helps separate knowledge domains more clearly in code. All the work you've done understanding templates is about to give you a nice surprise.

    See more details about the week at the Week 7 page on the website.

    Tue 16 Jul 2013 3:59 AM CEST

    Schedule for rest of course, Project 2 and Final exam.




    With week 7 about to be posted we are ready to provide an answer to the many messages about workload, extensions, schedule etc.

    In developing this plan our main goals have been to:

    - Avoid reducing the course. (In our 8 weeks we do nearly all of the first 9 weeks of the UBC course, and this takes us to the logical end of part 1.)

    - Be sensitive to the fact that for many people August is vacation time (at least in North America and Europe), and scheduling required activities like the final and project 2 well after the 8 weeks of the course is a legitimate problem for a number of people.

    - Avoid overwhelming people with the remaining material. The last two weeks contain material that will expand your abilities significantly beyond what you have learned in the first 6 weeks. We want you to have time to absorb that.

    So here's the plan.

    (1) We are going to continue to make all the planned material available on the planned schedule. So you will be able to complete the course on the current schedule (or even more quickly - see below). (Note that a little bit of week 7 might come up a a day late because we decided to redo a couple of videos entirely and that got other things behind. This is likely to include some captioning and the quiz.)

    (2) We are going to extend the deadlines for any remaining quizzes by several weeks to allow people who need more time to take more time. Similarly we are going to extend the final exam deadline until August 30th.

    (3) The toughest thing has been working out a balance between project 2 assessment and August schedule flexibility. Peer grading wants everyone to be on the same schedule -- schedule flexibility is the opposite of that! To handle that we are going to continue to have project 2, with an extended deadline of August 30. But we are going to make the project self-assessed. This will mean that no matter when you finish the project (up to the deadline) there will be someone available to assess it -- you! We will give you our solution, and a rubric to use in assessing the quality of your solution. So you will be able to learn from the assessment exercise how you might have done better. You won't get the learning that comes from reading other students solutions unfortunately.

    Of course self-assessment is vulnerable to a form of cheating if people just give themselves 100%. We are aware of that. But the reason we are doing this Coursera course is to give people who want to learn new material a chance to learn it. We also want to give people who take the assessment seriously a chance to have a certificate that says how they did in the course. We can see how hard all of you are working, so we don't expect cheating on the assessment to be a big problem. (Its also important to note there is no grading on a curve here, so if a few people cheat it doesn't detract from anyone else's grade. Its more like cheating at solitaire.)


    We understand that the above schedule may not be perfect for everyone. But we hope you will all appreciate that it represents our best efforts to balance important goals above and that you will try to work with it from that perspective. It should allow each of you to cover all the originally planned material, and to do so with as much scheduled flexibility as we can reasonably allow.

    Note that for those of you registered for the course, you will still have access to the material for some time after the course. So you can complete it even beyond August 30th. Its just that we will compute final grades based on what we have the 30th.
    Fri 12 Jul 2013 2:10 PM CEST

    Week 6 Solutions

    We have now posted solutions to Homework 6, as well as more practice problems for week 6.
    Thu 11 Jul 2013 4:03 PM CEST

    Welcome to Week 6 of Systematic Program Design

    The focus this week is on new rules for breaking larger function and data design problems down into smaller parts. We will cover three new rules for splitting a function into parts. We will also cover mutually recursive types which support more complex arbitrary sized data than lists. The good news is that while the problems get larger, the work to do at any moment in time does not get harder. Most of the work is HtDD and HtDF work you already know how to do. That's the contribution of the design method, to reduce ever more complex problems to smaller pieces you know how to solve.

    Of course the first big event this week is the project deadline Wednesday. We really like this project and its been exciting to see so many of you go through the stages of first feeling its too much, then stepping back and letting the recipes help you and finally being excited to see the editor work. While that is exciting, we also hear a lot of you say that its been tiring and that you are working very hard. We know that. Our goal was to remove only very small amounts of material from the UBC course, so there is a fair amount of material here. Our goal is for it to be rewarding in proportion to that -- we can only hope you will feel that way when its all done.

    To help a little bit with the workload we have eliminated the quiz this week. We are also looking at some plans that would allow us to reduce the workload over the final three week stretch. We will have more to say about that in a couple of days.

    It has also been very nice to see how much support you all offer each other when someone is having a hard time. In a UBC course that's something we can do for students directly. We can't do it as well in a course of this size, so its really been nice to see some many of you step in to do it.

    Please don't take the cancelled quiz (everyone gets a 10) as a reason not to do the homework. The reason we have quizzes with deadlines in this course is to encourage you to stay caught up with working through the actual problems. We have learned at UBC that if students aren't actively solving problems from scratch every week they usually cannot master the material. So do the homework this week please!
    Mon 8 Jul 2013 6:47 AM CEST

    Office Hours, Quiz 6, Project 1 FAQ

    This message covers three topics: Office Hours, Quiz 6, Project 1 FAQ.

    For this week I'm going to stick with the plan of not having live office hours. I feel like I'm able to answer many more posts on the forums and get a lot more said than when I'm fighting with Hangouts on Air to keep it from muting my microphone all the time. So I feel like its more value to students on average for me to spend the time on the forums.

    For quiz 6 we have great news -- everyone in the class is going to get 100%, and that's without even doing the quiz. No, but seriously. With the project and everything we want to remove one bit of work from next week. So we are removing quiz 6. But you should still be sure to do homework 6. If you don't, you won't be prepared for week 7 or the rest of the course. I think its clear at this point that its not fun in this course to have to catch up from being behind.

    Finally here are the answers to a number of questions we have seen come up in different form about the project.

    Q: Does my editor have to handle characters like "!"? Does it have to handle lines that are longer than the width of the window? Does it have to have a drop-shadow? Does it have to specifically filter out “enter”? Does my editor need to handle cases when the cursor is outside the text?

    A: Remember two key things about the course:

    • Design is the process of going from poorly formed problems to well structured solutions.

    • When in doubt, start with something simple, and then you can add behavior later if required.


    We aren't going to clarify every last detail of what the editor should do. Working out that ambiguity is part of the project. Make reasonable assumptions and keep things simple. The goal is a well structured solution, not Microsoft Word like functionality.

    Q: Can I submit a file type other than .rkt?

    A: No. You must submit your code as a .rkt file so that your peers can open the file in Racket and run it easily. It is not acceptable for your peers to have to copy/paste, change settings or otherwise massage your file before they can grade it. The rubric will subtract significant points for solutions that cannot be run by the peer grader.

    Remember, programming is a social practice. Our code is written to be read by other people (and also to be run by computers). Be kind to those other people and they will be kind to you. Part of our goal in having a peer grading assignment is to allow you to fully absorb some of the implications of this aspect of programming.

    Q: Am I allowed to include extra requires? Am I allowed to in other ways make my solution more sophisticated? Am I allowed to use material from Week 5 and later in my solution?

    A: In this project, as well as in professional programming practice, making your code more complex than it needs to be is probably not going to work out well for you. On large projects programmers who make things more complex than they need to be don't get reviewed very well by their colleagues. The same is likely to be true here. And please don't say that isn't fair - it also isn't fair to ask your peers (or colleagues) to have to study new features in order to understand your code.

    (Refrain) Remember, programming is a social practice. Our code is written to be read by other people (and also to be run by computers). Be kind to those other people and they will be kind to you. Part of our goal in having a peer grading assignment is to allow you to fully absorb some of the implications of this aspect of programming.

    Q: Can I format my code and or comments differently?

    A: Your code should look the same way the code you see in lectures and the starter/solution files does. For more on this compare your code carefully to our solution files and see the style guidelines page. Among the many things this includes are properly formatted names, proper number of semi-colons and lots of other details.

    (Refrain) Remember, programming is a social practice. Our code is written to be read by other people (and also to be run by computers). Be kind to those other people and they will be kind to you. Part of our goal in having a peer grading assignment is to allow you to fully absorb some of the implications of this aspect of programming.

    Q: How much extra credit do we get for the challenge?

    A: The challenge is not for extra credit. We do not intend to include grading for it in the rubric because that would either require people who did not do the challenge to grade that extra functionality (refrain) or it would require us to split the class in two to do the peer grading.

    The challenge is for extra learning. For more learning try implementing this behavior using both stop-when and stop-with. Which is easier? Can you see how GUI Frameworks (like big-bang) get to have more and more features as time goes by?

    Q: What design recipe elements must be included in the solution?

    A: For data definitions, you should include everything but the template rules used. For functions, you may omit the stubs and templates, but you should include everything else. This doesn’t mean that you should skip the stubs and templates when you work on the project. Stubs and templates are still important parts of your design process, because they help you complete your solution; you just don't need to leave copies of them behind for the grader to see.

    Q: Are we allowed to work with others?

    A: You are allowed to work with others. But the solutions that you submit should be your own work. The project is designed to help you learn. We want it to be a project that you will be proud to have completed. We hope it will leave you with a sense of "wow, I figured that out". You will learn the most if the solutions you submit are your own work. We encourage you to discuss ideas on the forums, but we will delete posts that contain specific details about your solutions.


    Thu 4 Jul 2013 10:47 PM CEST

    Project 1 is Active

    Many of you have noticed that the project has been active since yesterday. You can find information about the project at the Project 1 (Editor) page. You can clarify possible issues about the project using the Project 1 (Editor) forum.

    You may submit the project multiple times, but only the last submission before the deadline will be graded.
    Tue 2 Jul 2013 7:16 PM CEST

    Week 5 Starting (4 is wrapping up)

    Week 4 ends this evening and week 5 starts tomorrow.

    Good news: Week 5 problems are much much smaller!

    In week 5 we begin learning how to work with arbitrary sized data. This is how we can represent information of non-pre determined size, such as all our favorite books, all the students in a course etc. We will learn about an interesting phenomena in type comments called self-reference, and how that propagates through to templates, tests and functions.

    We've noted a number of messages complaining about the amount of time week 4 material takes. We are keeping those and will look at them once again when we review how the course went after it ends. But just a few quick points:

    - Some messages talk about the time it takes to memorize the recipes. Don't memorize them! Print them, use a browser tab, do whatever. You need to use them, not memorize them.

    - The geometry of rolling lambda was an unfortunate example, we missed that it would be difficult for people; we should have phrased the problem as make a lambda that goes back and forth, now make it spin, and finally if you want to then you can get the ration of spinning to sliding right and it will look like its rolling.

    - At UBC this is a difficult week too. But our students manage to work through it. And at UBC we complete up to this point in 3 weeks rather than 4. But our UBC students have a resource you don't have, which is a three hour lab with TAs trained specifically in helping with the recipes and BSL. A lab like that is not easy to replicate on the Coursera platform, but the Community TA model may be a help to us in future offerings.

    - Our experience does tell us that *usually* people who have been solving lots of problems from scratch -- typing along with the videos and working the practice problems through -- do *much* better with week 4 than people who have been more following along and reading solutions. This phenomena is going to continue, so be sure to take the little break that week 5 provides to start typing along with the videos and working on the practice problems before looking at the solution.

    - And keep using the forums. We are here to help, as are your fellow students who may be going through week 5 more quickly.

    Sun 30 Jun 2013 3:42 PM CEST

    Project 1 Schedule

    The schedule for project 1 will be as follows:
  • July 1 - project published

  • July 10 at 11pm PDT - project due

  • July 17 at 11pm PDT - peer evaluations due


  • The first project will be published on July 1st. You will have one and a half weeks to complete your project submission.

    After the submission deadline, the evaluation phase will start. Once the evaluation phase opens and before you are permitted to peer grade, you are required to pass a training phase. During the training, you will grade at least 2 sample project submissions that we have already graded. You will pass training by giving evaluations that fall within an acceptable range of the grade we produced. Whenever you fail a training exercise, you are told that you failed and whether you undermarked or overmarked but not by how much, and you are shown feedback from us. If you fail the 2 training exercises, you must continue training up to a maximum of 20 training exercises. Once you either successfully pass 2 training exercises or complete all 20 training exercises, you will be assigned projects to grade. You are required to grade the projects of at least 5 of your peers, but you may grade more if you choose. If you do not complete the required number of evaluations, you will receive a 20% deduction from your project grade. We expect that it will take you around an hour to complete the peer evaluations.

    You should submit both your project and your 5 peer evaluations by the appropriate deadlines. You will not be able to participate in peer grading if you do not submit your project by the deadline.

    There is a dedicated forum for the project, where you can clarify possible issues about the project. Your fellow students and TAs are a great resource, and we encourage you to discuss with them in the forums. Please do not post solutions to the project in the forum, use it instead to discuss clarification of the project.
    Fri 28 Jun 2013 1:59 AM CEST

    Peer Grading

    Our two projects in this course will use peer grading. We have decided to use peer grading for several reasons.

  • Peer grading is better able to assess the main learning goals of the course. (Which are listed on the Course Information page if you'd like to review them.) Automatic grading is best at checking correctness of functions and we want to assess more than that.

  • Programs are meant to be both read by people and run on computers. Peer grading is better able to assess readability in general and adherence to our design method in particular.

  • Peer grading makes personal feedback possible in large classes that have thousands of students.

  • Peer grading gives you a chance to learn from reading other student's work. You can learn what it is like to read code you didn't write and also learn by example about alternative solutions to a problem.


  • The Coursera peer grading system is a work in progress, so we ask in advance for patience with any technical and logistical issues that arise. TAs will continue to monitor the forums most of the day, so we will respond to any issues as soon as possible. Make sure you pay careful attention to the instructions and the deadlines, as you are required to both submit your own project and grade the projects of your peers.

    The peer graded assignment will have several phases, the details of which will be posted later this week. But, in brief, after submitting your work, you will get the opportunity to grade the work of three of your peers according to a rubric that we provide. Your own work will also be assessed by your peers. The grades given by your peers will be used to determine your final grade. The system includes a training period in which you graded training assignments to be sure you are following the rubric correctly.

    It will take you a little time to get used to the peer grading system and complete the peer evaluations. But again, reading and grading the programs of your peers will accelerate your learning and improve your understanding of the material.

    Perhaps the main point for us to make about peer grading now is to ask you to plan to take it very seriously - we know that you will work hard on your project submission and you will want your peers to do a good job of assessing your project. So we ask you to plan to take your time to do a good job of assessing your peer's projects in return.
    Thu 27 Jun 2013 1:39 AM CEST

    Live Office Hours This Week Cancelled

    I'm going to cancel the live office hours this week and try a new approach - I'm going to try to answer more questions posed in the forums. I'll look for questions that seem most important to answer. You can help me find those questions by voting them up. You can find my answers to those questions by being sure to search the forum for similar questions before you post.

    I'm doing this because I think it will be more useful. The technology behind the online hours wasn't working well. (I'm being polite here.) So far no one really joined the office hours live for more than a minute. And most of the questions we took came from the forums. So I hope this new approach will be more helpful for everyone.
    Wed 26 Jun 2013 8:36 AM CEST

    Grab Bag of Updates

    This announcement is a grab bag of several issues.

    (1) With respect to Quiz 3, we understand that there was unhappiness about different aspects of the quiz. We decided that question 1 and question 7 were flawed and they are now worth 0 marks. (This will be retroactive for all students.) Some other complaints had to do with things like using proper casing conventions etc. We explained earlier today the role quizzes play so hopefully you will understand why we are picky about things like using proper names - we are trying to assess whether you have started to use those names. Finally some complaints were about questions that we fully intended to work the way they did. For example, a function that consumes and produces a direction has a signature Direction -> Direction because Direction is the specific type that lets us know we are talking about directions. Saying it can produce String means it could produce "pineapple" and that's not what we want to say. Remember, the fact that your functions pass your tests doesn't mean you have a good enough answer.
    If you had problems with the signature and stub questions please go back and review them to be sure you understand why the correct answer is what it is.

    (2) Solutions to homework 3 are now posted on the Problems page (and the week 3 page). We will continue to post solutions after the homework is due.

    (3) We have eliminated content tags on all the problems. We were always worried these could give away the answer to a problem. Now its clear they can also lead away from the answer if they are incorrect.

    (4) There's been a number of complaints about the schedule for the second project and the final. August is clearly a very busy time for people in terms of vacation and the like. We are going to extend the period somehow, details to be announced.

    (5) A number of people have asked for statistics on enrollment etc. Here's a few numbers:
    - 59769 registered students
    - 12837 were active last week
    - 9802 have done some quiz
    - 5347 did quiz 3
    - 629 signature track signups
    Tue 25 Jun 2013 8:57 AM CEST

    The Nature and Scope of Quizzes and Problems Sets

    We continue to be working through problems and concerns with the quizzes and problem sets, so I want to take a minute to give you all some context that may be helpful to you. By which I mean it may help you do better on the quizzes and enjoy the course more. I recommend you read this entire message carefully.

    First of all, this is the first time we have worked with this kind of multiple choice quiz. At UBC we don't use any automatic grading. Instead TAs grade every submission using a rubric based on following the design recipes. That most directly assesses what we want people to learn, which is working systematically. This approach is also the most flexible in terms of allowing some leeway on how students do their work. But note that our rubrics put very few points on "correctness", nearly all the points go to following the recipes. I will repeat that, at UBC we grade primarily for quality of design and adherence to recipes in the first part of the course - code that just works correctly gets very few points. We do this because getting people to learn the recipe in the early part of the course is what lets us cover much harder problems later in the course.

    To replicate that style of grading in a MOOC we would have to use peer grading. For this course we did not think it would be a good idea to start doing peer grading in week 1 of the course. We still don't. The Coursera peer grading infrastructure is a work in progress, and MOOCs tend to have a very unstable student population for at least the first 3 weeks of the course. That's just not a good mix for peer grading.

    So we decided to save peer grading for the two projects and to use our homework+quiz approach for weekly homework. In this approach the quiz is our way of grading the homework. I will repeat that too: the role of the quiz is to grade your homework - that is why we don't publish homework solutions before the quiz.

    So far we've seen three kinds of problems with our homework+quiz approach for weekly homework.

    - Some just plain errors on our part. There have been too many of these, for which I take responsibility. But in our defense I will just repeat that we have ever developed quizzes like this before. The good thing about the MOOC setting is that some students are so eager to tackle the next week's material that they report these errors right away and we can fix them. Coursera's quiz system also regrades any questions if we change the quiz scheme, so students who submit early are not penalized. So we thank those early students each week, ask them to keep it up, and also ask them to remember that leading edge is sometimes cutting edge and all that.

    - Some places where our wording wasn't sufficiently clear. Thankfully what solves just plain errors also solves this.

    - Some cases where more experienced programmers produce different solutions based on additional insights they bring to the problem.

    For this last category all we can do is repeat what we've said before: the course is designed around students with no prior experience. We have said before that our experience shows that UBC students with a couple years of prior experience often get something from the course. But our experience also shows that in order for that to happen they must approach the course from a position of no experience. So anytime you solve a homework or quiz problem try to do so from the perspective of just what you have seen in our videos or our web pages. Also focus just on the narrow problem in front of you.

    If you see a problem that seems to be asking for a mixed-data itemization solution then please use that solution, even though you might rightly think that different functions might want to caste the data differently.


    In summary thanks to all of you for being patient with us as we seek to incorporate this kind of automatic grading into our approach.

    Gregor



    Mon 24 Jun 2013 7:49 PM CEST

    Week 4 Starting

    Week 4 starts tomorrow!

    This is an important week in several ways.

    First is that we are going to start working on interactive programs like animations, games and apps you might use. They are going to be simple but at their core they will be very much like the real programs you use every day. We hope that many of you will find it interesting to work on these programs and get a sense of how the programs you use work.

    Week 4 is also where your hard work to master the recipe is going to begin to pay big dividends. By following the recipe the problems at the end of this week, and Project 1 should be quite manageable. In addition your code will be well-structured, clear and consistent. If by chance you have been cutting corners on the recipe -- perhaps because you already knew how to program -- this would be a good week to stop cutting the corners!

    Week 4 has more material than weeks 1-3 did. Although again, if you have been learning the recipe carefully the work in this week should be pretty straightforward. But we are starting to write larger programs, and so that inherently involves more work.

    To help you with all this some of the week 4 videos are notably longer than before. That's because they work through the complete design of a larger program. Now much of that work is just material from weeks 1-3. So in that sense the videos are largely review. We include the complete design, rather than just showing the "new parts", because we have gotten a lot of feedback from students saying that seeing the complete design, with the new parts in context, is very helpful for putting all the material together.

    So enjoy the week. And practice, practice, practice.
    Mon 24 Jun 2013 6:39 AM CEST

    Schedule for Project 1, Project 2 and Final Exam

    This message includes the schedule for the two projects and the finals. Details about the actual projects and final will come closer to each event. Note that all times below are PDT (UTC -7).

    Project 1
    - Posted sometime July 1.
    - Due July 10 by 11pm.
    - Submission of your peer grading due July 17th by 11pm.

    Project 2
    - Posted sometime July 29.
    - Due Aug 7th by 11pm.
    - Submission of your peer grading due Aug 14th by 11pm.

    Final Exam
    - Posted sometime july 31.
    - Due Aug 11th by 11pm

    Fri 21 Jun 2013 11:14 PM CEST

    Office Hours 3

    Office Hours have now ended. You can watch the recorded video on youtube at the link below:



    Our third office hours will be Friday at 9:00 am PDT (UTC -7). (Convert Time.)

    We strongly encourage you to submit questions and/or sign up to participate live. The office hours are only as good as the questions we get.

    We are going to stick with Google Hangouts. But Gregor and Dina will both have headsets this week!

    Please read the rest of this message carefully so you can know how to take advantage of the office hours. In particular note that there are several ways of consuming office hours: you can watch the recording after the fact, you can watch live, you can ask questions online ahead of time, you can ask questions online live, or you can join the hangout and ask questions live by video. We encourage everyone who can to participate live, or at least to ask questions ahead of time, because your questions are what drive the office hours.

    Depending on how you want to participate here's what you need to do:

  • If you want to watch the recorded office hours after they are over, look for an announcement with the url shortly after the office hours end.

  • If you want to watch the office hours live, look for an announcement just when office hours start where we will post the url for the stream. This announcement will not go out by email, because that involves long delays. You will have to go to the Announcements page to see it.

  • If you want to suggest questions for the office hours then go to the Week 3 Office Hours sub forum and vote for an existing question thread and/or post a new one. Be sure to search the existing question threads first to see if your question has already been asked and vote for it if that is the case! We will be using the vote totals to prioritize questions, so if the same question is asked in ten separate threads with 1 vote each we may miss it, whereas if it is asked once and has 10 votes we are more likely to see it.

  • If you want to ask questions via text during office hours you can do one of two things. (1) Post it in the Week 3 Office Hours sub forum, or (2) Post it as a comment on the youtube video.
  • Finally if you want to participate live on video during the office hours then send an email ahead of time to sys-program-design@cs.ubc.ca (Note: you must have a google account to join the hangout). Please send the email from that Google account. To help us better plan the office hours please include in your message a description of the question(s) you want to ask. If you sent an email last week asking to join, you will have to send one again this week. Please note that if you don't have any questions to ask, and simply want to watch, you do not need to send us an email and join.
  • Fri 21 Jun 2013 2:00 AM CEST

    Forum Guidelines

    The course staff has become concerned with a couple different kinds of problems on the forums. This message is intended to help with that by laying out some guidelines we believe would help everyone. Please read this entire message carefully.

    - First there are many very good messages asking good questions about course content, practice problems, lecture videos etc. Most of the forum content is of this form and that's great.

    - Civility is essential. If you have something to say then make sure that both the content and the form of what you are saying are something you would say in a physical classroom. That is a minimum requirement for something you are going to post to the forums.

    - If you disagree with some aspect of the course then by all means feel free to say it. But don't keep repeating it.

    - Remember that the course is intended for beginners. It is fine to post messages not for beginners, but always mark those as such. And please, please, please don't reply to beginner requests for help with advanced comments. I know these replies are well-intentioned, but unfortunately they are often not as helpful as intended. Our experience is that they can confuse and or discourage beginners. Instead please try reply to help messages from the perspective of the course content to date.

    - Feel free to post anonymously, but do not use anonymity as a way to get around the above guidelines.

    - If you see a message which you feel is truly inappropriate please use of the flag option. Coursera can then take action to prevent further problems. But only flag material that you believe is rude, hostile, offensive etc. Civility also mandates listening to opinion's we don't like. The up/down arrows are for liking and disliking. The flag button is more serious and Coursera is unlikely to take kindly to its being over-used.

    Thanks

    Gregor
    Wed 19 Jun 2013 4:45 AM CEST

    Week 2 Ending - Week 3 Starts Monday

    First just a reminder that week 2 ends on Sunday, with the week 2 quiz deadline being Sunday evening. So be sure to wrap up week 2.

    A number of students have just recently joined the course. The first thing we'd like to say to you is don't worry, you can still catch up. But definitely take advantage of the coming weekend to work carefully through weeks 1 and 2. We can't give you an extension on the week 1 quiz; but the grading policy gives you one free quiz.

    In Week 3 we will begin learning how to design data representations. You will also begin to see that data design is in many ways a point of leverage for function design. This is a theme we
    will keep seeing throughout the course.

    You will also be glad to know that this week should start to make some of the why the recipe is the way it is more clear. No one week can do that, you will be discovering why the recipe works the way it does throughout the course. But this week does answer some more of those questions, especially what is the difference between the template and the stub and why do we have the template.

    As always, you should read the Week 3 page carefully, type along with videos, re-work lecture problems and work the practice problems. One thing to watch out for in week 3 is to remember that data designs and function designs are two different things, and that in particular data examples and function examples (check-expects) are two different things. (You'll see what we mean by this after you watch a couple of videos this week.)

    Keep making use of the forums for questions. As you know the course staff is monitoring them, and a number of your fellow students are posting very good answers there as well.

    PS And for those of you itching for more, next week we will start doing interactive programs like simple animations and games. For the rest of you don't stress!!! You will be able to do it, because by that point the recipe will be a powerful tool for breaking a problem into small pieces.











    Fri 14 Jun 2013 9:44 PM CEST

    Office Hours 2 Live Stream

    The live stream is
    Fri 14 Jun 2013 5:44 PM CEST

    Office Hours 2

    Our second office hours will be Friday at 9:00 am PDT (UTC -7). (Convert Time.)

    Once again we will be using Google Hangouts for our office hours. We've learned some things from last time and our trial runs and we hope we can streamline things this time.

    Please read the rest of this message carefully so you can know how to take advantage of the office hours. In particular note that there are several ways of consuming office hours: you can watch the recording after the fact, you can watch live, you can ask questions online ahead of time, you can ask questions online live, or you can join the hangout and ask questions live by video. We encourage everyone who can to participate live, or at least to ask questions ahead of time, because your questions are what drive the office hours.

    Depending on how you want to participate here's what you need to do:

  • If you want to watch the recorded office hours after they are over, look for an announcement with the url shortly after the office hours end.

  • If you want to watch the office hours live, look for an announcement just when office hours start where we will post the url for the stream. This announcement will not go out by email, because that involves long delays. You will have to go to the Announcements page to see it.

  • If you want to suggest questions for the office hours then go to the Week 2 Office Hours sub forum and vote for an existing question thread and/or post a new one. Be sure to search the existing question threads first to see if your question has already been asked and vote for it if that is the case! We will be using the vote totals to prioritize questions, so if the same question is asked in ten separate threads with 1 vote each we may miss it, whereas if it is asked once and has 10 votes we are more likely to see it.

  • If you want to ask questions via text during office hours you can do one of two things. (1) Post it in the Week 2 Office Hours sub forum, or (2) Post it as a comment on the youtube video.
  • Finally if you want to participate live on video during the office hours then send an email ahead of time to sys-program-design@cs.ubc.ca (Note: you must have a google account to join the hangout). Please send the email from that Google account. To help us better plan the office hours please include in your message a description of the question(s) you want to ask. If you sent an email last week asking to join, you will have to send one again this week. Please note that if you don't have any questions to ask, and simply want to watch, you do not need to send us an email and join.
  • Fri 14 Jun 2013 12:00 AM CEST

    Welcome to Week 2

    With week 1 now wrapping up it is time to start week 2. For full details about week 2 see the link to the left. Please read the rest of this message all the way through because it contains important news you need to know.

    As you know, week 1 was about learning BSL. Don't worry if you feel like you didn't learn all the primitives. The basic rules of evaluating expressions and some of the most common primitives (like + and -) are what matter. You can always look up the others.

    Week 2 is where we start to learn the design method. As we've said before, the design method is going to seem a little clunky when you use it to design really simple functions. But please trust us, learning it now will be a big help to you later. So please do all the steps of it even though you may already know what the function definition should be. We assure you it works better to learn the recipe with simpler problems and then go on to harder ones.

    We had our first office hours on Friday. Suffice to say that we suffered some "technical difficulties" thanks to those of you who stuck with us! We had actually done a dry run a week prior, and had tried to do a dry run the day before but Hangouts on Air was down that day. So we just didn't manage to get all the kinks out ahead of time. Sorry! The office hours covered a lot of points, and you can find a link to the recorded versions on the Announcements page. But let me mention just two of the things things that came up:
    - Beginners can do well in this course! Don't get faked by the experts posting on some of the forum threads. The course is designed for beginners and you can succeed and do well in it!
    - If you get a chance take a look at the style rules page. Style rules exist because programming is really a social act. Programmers write code to be read by other people as well as to be run by computers. Programming is kind of like working with lots of other people writing a library full of books. How well your code reads is super important, and in addition to the design recipe we will start learning this week, the style page contains important conventions to use in this course.

    Finally we are going to change the quiz policy again. But this will be the last time! Please read the following carefully so that you can understand our approach to the quizzes. A really key point is that the quizzes are really just a proxy for the homework. They are our way of grading how you do on the recipe aspects of the homework assignment. In an ideal world we would actually use peer grading for every homework assignment, but in a MOOC course peer grading has problems if it starts in the first week. So we are using homework-quizzes for most weeks and will use peer grading just for the two projects.
    Changes
    - As mentioned in the announcement at the beginning of week 1, you will only be allowed one attempt to complete each quiz.
    - We also decided to give 24hr time limit for each quiz, which will give you more than enough time to carefully answer the questions, and review you answers.
    - This time limit will also allow you to resolve any interruptions or issues you might have while attempting the quiz, but remember to save your work often by clicking "Save Answers" so that you don't lose it when you reopen the quiz (within the 24hr time limit)
    Immediate feedback stays
    - We will still give you feedback on your solutions right after you submit the quiz, because immediate feedback has been shown to improve learning outcomes.
    - Again, please do not post quiz solutions (working or non-working) on the forums before the quiz deadline has passed.

    Finally keep making good use of the forums. We enjoy reading the messages even if we don't have time to answer everything.

    On to the How to Design Functions (HtDF)recipe!





    Mon 10 Jun 2013 7:01 AM CEST

    RECORDING of Office Hours are here

    Here's the link for the recording of the office hours. It is broken up into 2 parts.

    PART 1:


    PART 2:
    Fri 7 Jun 2013 5:37 PM CEST

    Announcing our first Systematic Program Design online office hours!

    Our first office hours will be Friday at 9:00 am PDT (UTC -7). (Convert Time.)

    Like many other MOOCs, we will be using Google Hangouts for our office hours. This will allow all of you to watch the office hours live or after the fact. It will also allow a limited number of you to participate live during the office hours.

    Depending on what you want to get out of office hours here's what you need to do:

  • If you want to watch the recorded office hours after they are over, look for an announcement with the url shortly after the office hours end.

  • If you want to watch the office hours live, look for an announcement Friday shortly before the office hours start where we will post the url for the stream. This announcement will not go out by email, because that involves long delays. You will have to go to the Announcements page to see it.

  • If you want to suggest questions for the office hours then go to the Week 1 Office Hours sub forum and vote for an existing question thread and/or post a new one. Be sure to search the existing question threads first to see if your question has already been asked and vote for it if that is the case! We will be using the vote totals to prioritize questions, so if the same question is asked in ten separate threads with 1 vote each we may miss it, whereas if it is asked once and has 10 votes we are more likely to see it.

  • Finally if you want to participate live during the office hours then send an email to sys-program-design@cs.ubc.ca (Note: you must have a google account to join the hangout). Please send the email from that Google account. To help us better plan the office hours please include in your message a description of the question(s) you want to ask.
  • Thu 6 Jun 2013 6:00 PM CEST

    Giving and Getting Help


    Whenever we teach this course there comes a point in about the first week where we talk some about the implications of the fact that the language we are using is BSL and that we have a mix of beginners and non-beginners in the course.

    For us that's now.

    First all of us need to remember that BSL is simpler than a lot of other languages, and so more expert help has to be taken with a grain of salt. We are getting a lot of people with more experience trying to help -- which is fantastic. But what can happen sometimes is that more expert help may accidentally use concepts that are not in BSL, or may use terms differently than we are using them. (Both of these could happen no matter what language we use, so please don't re-start the why BSL discussion here.) As specific examples that I have seen in the last day:

    - people have written about statements; but this language has no statements, it only has definitions and expressions

    - people have written about variables; but we have not used the word variable in the videos, and we won't use it in part 1 of the course (sadly some of the Racket documentation uses it though)

    - people have used parameter, operand and argument differently than we do. In the following BSL code:

    (define (foo x) (* x 2))

    (foo (+ 4 5))

    foo has a parameter x, the call to foo has an operand (+ 4 5), and the call to foo has the argument 9


    So what's the up-shot of all this?

    - First its great for all of you to help each other. Please keep doing so. But please just be careful not to bring concepts from other languages into the conversation unless you clearly say you are doing that. So its fine to say "In Python the if statement looks like ...". But its less fine to say "the BSL if statement...". Remember that beginners need to learn 1 language now, not how this 1 language relates to lots of other languages -- that comes later.

    - If you are reading a post and you are worried about inconsistent terminology or something please ask. The TAs are monitoring all the forums. They will be able to respond. They have all have enough expertise in programming language semantics to help sort these issues out and to be sure to use BSL terms correctly. I'm also reading as many of the forums as I have time for when I'm not editing video!

    Keep having fun everyone. Its really very exciting for us to see so many people working with us on this course.
    Wed 5 Jun 2013 7:19 PM CEST

    Start of Week 1

    Welcome to the official start of Introduction to Systematic Program Design!

    Now it's time to get down to Week 1. The rest of this message has some important points that will help you this week and going forward.

    Of course the website has been open for a few days now, and many of you have already done quite a bit in fact:

    - 20,130 of you accessed the site last week
    - about 4,000 of you have already finished week 1
    - there have been many hundreds of forum posts, about 500 introductions
    - and 161 posts about which programming language we are using

    The first week of the course is focused on learning the Beginning Student Language (BSL). Those of you who have programmed before should find this very straightforward, and those of you who haven't should also find this relatively easy going. BSL is a small and simple language. But please don't skim this material. Do the exercises, type along at DrRacket, stop to understand the error messages when you get one and so on. Ask for help on the forums if you need it. You need to learn this material about BSL before we go forward.


    If you haven't already, please read through the Course Information page (link at left) which contains lots of important information about how the course will operate.

    Then go to the Week 1 page (link at left) and begin working through the Week 1 material. Be sure to read through the page carefully, and then watch the videos, do the practice problems, do the homework problems and take the quiz.


    Also some changes to announce. Sorry if there's any confusion here. We got kind of overwhelmed reading every single forum post and we made some changes we shouldn't have.

    Starting with week 3, homework problem solutions will not be provided. Practice problem solutions will still be posted. We posted homework problem solutions at first to help people get going, but as the material becomes more challenging you need to get the experience of working through these problems from scratch without being able to turn to a solution. Please also be careful not to accidentally spoil the homework for other students by posting part of your solution. If you are having a problem talk it over with your study partner if you have one, or post a message in which you don't post all the details of what your solution is.

    Also starting with week 3 quizzes will revert to 1 try. We switched it to 3 tries for weeks 1 and 2 because there was some concern about the quizzes. We wanted to give everyone a chance to see that the quizzes are meant to be straightforward if you have already done the homework problems. But as was pointed out on the forums, it just doesn't make sense to have 3 tries for these quizzes.

    Please enjoy this week and please do use the forums to ask questions, bring up problems or make suggestions. There are TAs monitoring the forums nearly 24 hours a day, and our goal is to respond to errors you point out within a few hours. For technical questions about the material we encourage you to help each other - that will help you get responses faster, and help both the asker and responder learn the material better. We are looking over your shoulders gently though, and we will either answer or use the "approve message" feature to encourage people who respond well to questions. We will also answer questions that no one else does.

    Thanks, and enjoy the week!




    Mon 3 Jun 2013 8:55 AM CEST

    Important Note For All About the Forums


    First, a word specifically for people who actually are beginners and do not already know how to program: Relax. This course is intended for you. You are the majority of the course and we are confident that you can both do well in and get a lot out of the course. We have experience with thousands of UBC students to confirm this.

    But you may have noticed on the forums that there are a number of people taking the course who already know how to program. You may be seeing those people talking about concepts you don't understand and that you can't even find in the first couple weeks of video. I mean things like side-effects, lambdas, closures, comparison to other languages etc.

    Now for everyone: Its great that there are students in the class who already know how to program. Our experience is that many people with some programming experience also get value out of the course.

    We want the forums to be useful and valuable for everyone. We want people to feel free to post more advanced topics, and we also want to make it as easy as possible for students who are starting at the beginning to know which forum posts they do not need to worry about.

    So if you post a message about something more advanced, please use the tag #gettingahead on your message. The course staff will also add this tag if you forget, but please do try to remember.

    Thanks, I think this will help us all have fun together,

    Gregor

    P.S. A closing point, again for beginners. An additional advantage of using the teaching language is that no one knows it. (Rather only people who have taken this course or one of its cousin's know it.) Also no one knows the design method. So there's a more level playing field there once we get going.
    Thu 30 May 2013 7:27 PM CEST

    Website is Now Active

    Hi everyone and let me extend an advance welcome to Systematic Program Design. We here at UBC working on the course are really excited about it starting next week and we hope you are too.

    There's no need for you to do anything now, but if you want to take a look, the website is now live with the first two weeks worth of material.

    One thing you may want to do ahead of time is to install the programming language we will be using on your machine. Installing it now will mean you are all set to go when the course starts Monday. We will be using DrRacket, which provides the Beginning Student Language we will be starting with. You can get information about how to download the software, as well as lots of other general information about the course from the Course Information page, which has the following sections:


    1. Content Overview

    2. Required Software

    3. Weekly Schedule

    4. Grading

    5. Supplementary Textbook

    6. How to Have Fun and Do Well in this Course

    7. Getting Help

    8. Instructor and Teaching Assistants



    We look forward to hearing from you on the course forums and we'll be back to you Monday to announce the official start of the course,

    Gregor
    Dina
    Ennas
    JJ
    Lynsey
    Michael
    Thea
    Thomas
    Victoria
    Thu 30 May 2013 6:47 AM CEST