On this page:
Computing Environment
Problem Sets
General Policies
Pair Programming

General Information

time to wake up

A lot of you have one burning question on your mind as you start your college career:

How am I going to get an A in this course?

We have some news for you

As of today, you are learning for life, not for exams.

Yes, you are in college now, and college really is about learning something and not getting a grade. As a matter of fact, if you are taking a course and the A comes easy, you are either cheating yourself or you are allowing the instructor to cheat you. Buyer beware.

College is your last chance to learn how to learn by yourself, without pressure from parents, teachers, or peers. You want to learn that, because the quality of your life depends on it. Your life. Nothing more, nothing less.

Naturally, we understand that you want some feedback, both in terms of specific corrections and in terms of a grade. You want feedback so that you can improve your learning process. And we will give you that feedback. It is our end of the bargain. Your end is to demonstrate that you actually study the methods we teach so that they become second nature. After all, you don’t want to waste your time, and we don’t want to waste ours either.

So, if you wish to earn a grade in this course, you must complete the Course Contract, in the Handin Server in your first lab session (2501); you should not leave the lab without having signed a contract. Your signature acknowledges that you have read these notes and understood the contract between you and the course staff. Promise As long as you will live up to its spirit, we will stand by you during this semester.


The course has one lecture section:








Leena Razzaq






RI 458

Professor Razzaq’s office hours will be held in Meserve 329 on Wednesdays 1:30-3:30pm and by appointment.


Labs start the first week of class. All labs meet twice a week on Tuesdays and Thursdays.

You signed up for a lab section during registration. You must attend the lab section you signed up for.

The purpose of labs is to give you some hands-on experience with the actual tools, and to explain some of the principles from lecture with hands-on examples. Most labs will have some work to be submitted and graded. You will need to be in lab to do the lab work. These cannot be made up if you miss a lab, but not to worry. The two lowest lab grades will be dropped.

Computing Environment

We will use DrRacket (v8.12), a programming environment for a family of programming languages. For Fundamentals I, we will stick to the HtDP teaching languages plus a small number of teachpacks. DrRacket is freely available on the web to download and install to your own computer so that you can work on CS 2500 wherever, whenever you like.

DrRacket runs on most popular platforms (Windows, Mac OS X, Linux, and other *nixes). Programs written in the teaching languages have mostly the same behavior on all platforms. You therefore do not need to worry what kind of machine you use when you run your programs.

Problem Sets

The purpose of the problem sets is to prepare you for the exam. There will be 1-2 assignments per week.

General Policies

Late policy: Falling behind on homework is never a good idea: the course presents new material every day, making catching up harder and harder. An assignment that is one fraction of a second late is automatically counted as late by the handin server. Additionally, the server may be a bit slower at times when many people are submitting at the same time, so plan accordingly and don’t wait till the last minute.

However, we know that your time is not always easily scheduled, and some weeks, “stuff happens.” Thus, each student gets two (2) free, no-questions-asked individual late days for the term. Once partners are assigned, each team will get two (2) free team late days. Individual and team late days do not overlap, meaning they each can only be used on individual and partner assignments respectively. The purpose of the late days is to make the extension process fair and transparent by getting the instructor out of the extension-granting business entirely. Instead, when you need an extension because of illness or travel or for whatever reason, you can take one—provided you have a late day remaining.

To use a late day, just submit the homework as normal. The server will keep track of the number of used late days, and will prevent you from submitting more if you’ve used all your late days.

These policies apply to everyone equally and no other extensions will be granted. Conserve your late days carefully!

No other extensions will be granted. These policies apply to everyone equally. Conserve your late day carefully!}

Grade clarification policy: Sometimes mistakes can happen so if you are confused or concerned about your feedback on homework or exams, don’t be afraid to reach out to a grader for further explanation. You must submit any requests for a grade to be re-evaluated at most 3 days after the homework or exam feedback was released to your grader. Be warned, however, that this means your work will truly be regraded and could result in a lower grade if we find that points were not deducted where they should have been.

Academic honesty: We will strictly enforce Northeastern’s academic integrity policy. You may discuss problems with other students in a general way, but you may not share or show code to anyone other than your assigned partner (when you have one) or the course staff. Violations of academic integrity will be reported to OSCCR and will have a negative impact on your grade (at minimum, a zero on the assignment/exam).

Pair Programming

You must work on some graded problem sets in assigned pairs in the second half of the term. Your partner will in the same lab as you; your lab TA will assign partners.

Pair programming means that you and your partner work on the problem sets jointly. You read them together and you work on the solutions together. One of the lab’s purposes is to teach you how to work in pairs effectively; indeed, pairs are provably more effective than individuals in programming. The rough idea is this: One of you plays pilot, the other co-pilot. The pilot works on the keyboard and explains aloud what is going on; it is the co-pilot’s responsibility to question things that do not make sense. After a problem is solved to the satisfaction of both, you must switch roles.

Every partner must be able to solve every homework problem in the end. It is an academic integrity violation to submit work under your name that you have not worked on. Doing so may result in earning a 0 on the work and a report to OSCCR. You may also lose the privelege of working with a partner. Therefore both partners must make the effort to meet regularly and work together on every part of the assignments/labs.

If you are having difficulties working with your partner, please inform your lab TA or your instructor quickly: we cannot help if we don’t know there’s a problem. We will check in periodically to assess how the partnerships are going.


We will have two exams to assess your progress.

The exams will test material similar to that assigned in weekly problem sets. If you cannot solve every homework problem on your own, you will have a difficult time on the exams.

You may bring one piece of paper to the exam, double sided, with anything written, typed or drawn on it that you want. We are limiting you in this way because (a) writing this one sheet of paper is an excellent way to study and (b) we have found that in the past, the more papers that students bring to the exam, the worse they do. We want you to focus on the exam, not on shuffling through everything you’ve ever written.


You will get grades for your homework and exams.

exam 1




exam 2




lab work/class work




problem sets




You can use the handin server to see the current weights of each assignment, and your approximate grade in the course so far. The exact weights of assignments, quizzes and exams may change during the semester, depending on exactly how many of each we have. We will let you know when we update these weights, and will try to keep it as infrequent as possible. (Note that your grade for CS2500 will be the same as your grade for CS2501)