On this page:
Class
Labs
Computing Environment
CCIS Account
Problem Sets
Late Policy
Pair Programming
Exams
Grades
DrRacket

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?

The focus on this question is understandable; you have been taught to believe and conditioned to behave as though a high grade is the be-all and end-all. As your educators, it is now our job to tell you:

Not only is this not true, a fixation on high grades is one of the worst ways to go about achieving them.

How could this be, and what, then, is the alternative?

To achieve not only a high grade in this course, but to place yourself on a stepping stone to achieve more in life, both in terms of your career and personal fulfillment, you should focus on understanding.

Throughout most of high school education and especially on standardized testing, many ’educators’ focus on providing students with tools to solve specific, identifiable problems. There are a variety of reasons for this, including political and financial pressures placed on academic institutions, but one of the most important is that it is easy. It is easy to ask students to solve the same type of problem one hundred times over, so there is a massive chance of them getting it right on a test.

What is not easy, and what this course is designed to do, is to teach students not only the tools of programming and program design, but when and why to use those tools.

It also not easy to learn these concepts, but if you are also willing to work hard, then you will learn them. It is the desicion making—the when and why—of designing programs that demands understanding, and it is why success in this course can only come with understanding of the material. This will also be true of other courses you take in college; if you can get a high grade without understanding the concepts in question, you are either cheating yourself or you are allowing the instructor to cheat you. Buyer beware.

In college, if you do not already know how, you must learn how to learn. The quality of your life depends on it. Your life. Nothing more, nothing less.

Why do we have grades in this class, then? Well, for two reasons: one being we are a part of a university and must administer them. The second one being that grades are a form of feedback, and detailed feedback is how we can help you improve. It is our end of the bargain. Your end is to demonstrate that you put in the effort to understand the methods we teach such that you have internalized them. 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 submit the Course Contractduring the first lab session (2501). We will show you how to submit it in lab, so you must attend. Your submission acknowledges that you have read these notes and understood the contract between you and the course staff. We promise: As long as you will live up to its spirit, we will stand by you during this semester.

Class

The course has these lecture sections:

Instructor

   

Time

   

Days

   

Location

Nada Naji

   

9:15-10:20/10:30-11:35

   

MWR

   

EV 024/WVG 104

Olin Shivers

   

1:35-2:40/4:35-5:40

   

MWR

   

BK 310/HT 129

All lectures section will cover the same material, but each lecturer will present it with a different style. You MUST attend the lecture that you are registered for.

Labs

The course comes with several lab sections. The labs start the first full week of class, on September 10.

Lab coordinator: Rebecca MacKenzie (r.mackenzie at northeastern.edu)

Lab

   

Instructor

   

Time

   

Days

   

Location

1

   

Kyle Crampton

   

8-9:40am

   

F

   

WVH 212

1

   

Melina Young

   

8-9:40am

   

F

   

WVH 212

2

   

Ameen Radwan

   

8-9:40am

   

F

   

WVH 210

2

   

Marie Yatsyk

   

8-9:40am

   

F

   

WVH 210

3

   

Elin Carstensdottir

   

9:50-11:30am

   

F

   

WVH 210

3

   

Julian Zucker

   

9:50-11:30am

   

F

   

WVH 210

4

   

Amogh Dayal

   

11:45am-1:25pm

   

F

   

WVH 210

4

   

Catherine McLean

   

11:45am-1:25pm

   

F

   

WVH 210

5

   

Carter Codell

   

1:35-3:15pm

   

F

   

WVH 210

5

   

Adrian Kant

   

1:35-3:15pm

   

F

   

WVH 210

6

   

Vyshnavi Chunduru

   

3:25-5:05pm

   

F

   

WVH 210

6

   

Alex Grundwerg

   

3:25-5:05pm

   

F

   

WVH 210

You signed up for a lab section during registration. You must attend the lab section you are registered 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.

Computing Environment

We will use DrRacket (v7.0), 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 installed on the CCS computers.We urge you to download DrRacket to your own computer so that you can work on CS 2500 wherever, whenever you like. It is also freely available on the web in case you wish install it on your own computer.

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.

All that being said, should you have issues installing DrRacket on your machine, you may use the college’s virtual desktop infrastructure. We do, however, strongly recommend installing and using DrRacket on your own computer.

CCIS Account

In order to submit homeworks and lab quizzes in this class, you will need to have a CCIS account. You are eligible for such an account if you are a CCIS major, or if you are in a CCIS class (such as this one). You can apply for a CCIS account at https://my.ccs.neu.edu/, and you should during the first week of class, so that you have the account activated by the first lab.

Problem Sets

The purpose of the problem sets is to prepare you for the exam. Usually there will be two assignments due per week: one on Mondays and one on Thursdays at 9:00pm.

This is the basic schedule but may vary from week to week, especially in the beginning of the semester.

Late Policy

Falling behind on homework is never a good idea: the course presents new material every day, making catching up harder and harder. Additionally, in weeks that you are completing code reviews, your homework must be submitted on time in order for someone else to review it on time.

However, we know that your time is not always easily scheduled, and some weeks, “stuff happens.” We will therefore allow you to turn in your work up to 20 hours after the deadline at a 5% per hour penalty. The handin server will prevent any further submission even 20-hours-and-one-second late, so it’s not worth trying to sneak in a submission in those last few seconds.

Pair Programming

You must work on your graded problem sets in assigned pairs (Note: pair, not triple or with my friends). Your partner will be a classmate in the same lab as you; your lab TA will assign you the first partner. We will switch partners twice (see syllabus).

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.

Exams

We will have two one-hour exams to assess your progress:
  • 02/20 @ 6:00-9:00pm :
    • TBD: TBD

  • 04/03 @ 6:00pm-9:00pm :
    • TBD: TBD

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

You may bring one piece of paper to the exam, double sided, with anything written (or typed) 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 may also bring any (or all) of the informational cards we will be handing out throughout the semester. This is in addition to your one sheet of paper.

If you have lost or damaged the cards we handed out in class you may use this sheet as one side of your cheat sheet for the exam. You may NOT bring this sheet in addition to your one piece of paper. It must be used as one side of your one piece of paper. We will NOT be handing out cards at the exam.

You may have noticed the discrepancy between "one-hour" and the actual times. The exam is a one-hour exam. A student who has worked through the readings and graded problems can solve the problems on the exam in less than an hour. To make sure that nobody feels rushed, however, we allocate three hours immediately for students with special needs as well as students who feel they need time on the exam to double and triple check their work.

Grades

You will get grades for your homework and exams.

exam 1

   

25%

   

exam 2

   

35%

   

lab quizzes

   

5%

   

problem sets

   

35%