Recently I noticed some discussions in NEU CS Facebook group about people’s comments on the PDP course. As always, there are people on both the positive and negative side. I’d like to join the discussion but I think writing in my blog would be better so people can read about it without joining the group.
I took PDP in Fall 2010, Prof. Mitchell Wand and Prof. Riccardo Pucella taught the lecture, but I believe the grades came from Prof. Wand based on the codewalk scores. Personally, I thought I and my partners did pretty good on most codewalks and I got A as final grade.
In this post I will tell you more about the setup of the course when I took it, why I think it’s one of the best course in MSCS program, and everything that I believe matters to get high scores.
What is PDP?
PDP is the first core course every new NEU MSCS student should take on their first semester. The course is actually composed of two section, the lecture (CS 5010) and the recitation (CS 5011).
In the lecture, as with every type of lecture, the Professors will explain the lessons, answer questions, and discuss concepts that students would need to do the assignments.
The recitation time is where the students will present the assignments in front of the TAs (PhD students) and graders. The students will not only be graded on whether the code run and complete, but also on how they explain the code. This session is called codewalk.
When I took the course, all assignments need to be completed in a week (or less) and everyone will get a partner to do the assignments (pair programming). They encourage everyone to do the assignment ONLY when the partner is present, which should catch errors quickly and made both of them know the codes well.
No students are allowed to copy or discuss details of the assignment to other students if they’re not partners, the penalty for this is a zero score on the assignment.
How to get an A
1. Follow the Design Recipes
This is mandatory, disregard this at your own peril. Although it has a funny name, it is no laughing matter. In fact, more points are usually lost from not following the design recipes than from other reasons.
Follow the design recipes exactly starting from the very first assignment in your code, and you will save the later agony.
2. Google and StackOverflow are useless
Since Racket is not commonly used in the industry, you won’t get StackOverflow answers to your questions, so forget on the idea of finding the code snippets for your assignment answers online. Spend time on reading the textbook, discussing with your partner, ask the TAs, and code until it works.
3. Don’t underestimate the first assignment
One of the most common mistake that I notice from my batch is they messed up on the first assignment. Don’t do what they did. In fact, you should spend a lot of time for the first assignment because, high chances is, you never use Racket language before. So give yourself enough time to learn the DrRacket editor and syntax.
4. Don’t underestimate the first FEW assignments
Again, the basics extend into the first few assignments as they will introduce you with more data structures (and their recipes). Getting high scores on first few assignments will give you confidence and peace of mind for the rest of the semester.
5. Take a light course along with PDP
You will spend a lot of time doing the assignments, and you will also need to adjust your life on the first semester at the MS program (and maybe in Boston). With so many dynamics, taking a light course as the second course is what you want to do. Light courses are courses that are non-CORE, has no prerequisites, and usually has a “database” or “fundamental” word in it.
Why I like PDP?
You might have heard about how hard the course is, yes it’s not easy and there are many times when I’m still awake and code until 3AM in the morning, but it’s manageable and it gives most rewarding experiences.
The course is hard because of several reasons:
- Hardly anyone ever use the programming language (Racket).
- It requires very strict software development practices.
- The codewalk grading can be subjective.
Compared to most other courses, PDP emphasize principles rather than techniques.
What’s the difference? Principles are always true for all programming language, while techniques are specific.
Principle is how we should write clear comments and multiple test cases for every function.
It is how we should keep every function simple and do one thing.
It is how the input data structure affects the function design.
It is how to write a readable codes and good software.
I can surely say that it is easily one of the best course (if not the best) I ever take from the MSCS program at Northeastern.
I know some people will argue this and I’m may be biased because of the final grade I received. But it is the course that changed the way I do programming for the rest of my programming career.
If you have comments or some more tips to pass the PDP, feel free to drop comments below! 😀