On this page:
Computing Environment
Homeworks
Pair Programming
Labs
Khoury Account
Exams
Grades
DrRacket

General Information

time to wake up

This course has the following lecture sections:

Instructor

   

Time

   

Days

   

Location

Olin Shivers

   

9:15-10:20 AM

   

MWR

   

Behrakis 310

Olin Shivers

   

10:30-11:35 AM

   

MWR

   

Richards 300

Ferdinand Vesely

   

10:30-11:35 AM

   

MWR

   

Hurtig 129

Although all sections will cover the same material, each lecturer will present it in a different style. You MUST attend the lecture for which you are registered.

Computing Environment

We will use DrRacket, a programming environment for a family of programming languages. We will use the HtDP teaching languages plus a small number of teachpacks.

We strongly recommend you install DrRacket on your own computer so that you can work on CS 2500 wherever, whenever you like. It is freely available on the web.

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.

Homeworks

The purpose of the homeworks is to give you hands-on experience with the course material you learned in lecture and lab, as well as to prepare you for the exams. There will be one homework per week, due Fridays at 9pm.

Make it a high priority to not fall behind on homework: the course is fast-paced and presents new material every lecture day, making catching up harder and harder.

However, we know that your time is not always easily scheduled, and sometimes “stuff happens.” We will therefore allow you to turn in your work up to 9 hours after the deadline, at a 5% per hour penalty. The submission server automatically blocks any submission even 9-hours-and-one-second after the deadline (since the penalty would be 100% at that time). Submitting 1sec after the due time counts as 1h late. The server uses its own clock to determine what time it is, so it is a bad idea to try to sneak in a submission in those last few seconds.

Pair Programming

Starting a few weeks into the semester, you will work on your graded homeworks in assigned pairs (note: pair, not 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 once (see syllabus).

Pair programming means that you and your partner work on the homeworks jointly. You read them together, and you work on the solutions together. One of the labs’ purposes is to teach you how to work in pairs effectively, which will prepare you to be an effective part of a software-development team in your co-op or job. The rough idea is this: One of you plays pilot, the other co-pilot. The pilot guides the discussion, talking through the problem and asking questions about anything that is unclear. The co-pilot works on the keyboard and explains aloud what is going on. After a problem is solved to the satisfaction of both, you switch roles.

Working in pairs is most fun when both partners sit together and talk face-to-face (or stare at the same screen). Working in pairs remotely is, however, definitely doable, and you can learn it easily.

Labs

The labs start the first full week of class, on Friday, January 13.

The lead instructor of the course, Olin Shivers, is listed as the instructor for every lab section. However, the lab sections are run by the TAs. Please find below a table of the head TA for each lab section. The head TA is the person you should contact if:
  • You cannot attend lab due to unforseen circumstances (e.g. illness).

  • You are having trouble with your homework partner.

Lab

   

Head TA

   

Time

   

Days

   

Location

1

   

Aidan Bele

   

TBD

   

TBD

   

TBD

1

   

Harris Bubalo

   

TBD

   

TBD

   

TBD

1

   

Anja Castro-Diephouse

   

TBD

   

TBD

   

TBD

1

   

Justin Chen

   

TBD

   

TBD

   

TBD

1

   

Thalia Christoforatos

   

TBD

   

TBD

   

TBD

1

   

Marguerite Collette

   

TBD

   

TBD

   

TBD

1

   

Sasha DiVall

   

TBD

   

TBD

   

TBD

1

   

Andra Giurgiu

   

TBD

   

TBD

   

TBD

1

   

Caroline Han

   

TBD

   

TBD

   

TBD

1

   

Tulasi Holdridge

   

TBD

   

TBD

   

TBD

1

   

Serin Jeon

   

TBD

   

TBD

   

TBD

1

   

Arnav Joshi

   

TBD

   

TBD

   

TBD

1

   

Elizabeth Kerber

   

TBD

   

TBD

   

TBD

1

   

Jason King

   

TBD

   

TBD

   

TBD

1

   

André Kirby

   

TBD

   

TBD

   

TBD

1

   

Tanya Kler

   

TBD

   

TBD

   

TBD

1

   

Eunice Koo

   

TBD

   

TBD

   

TBD

1

   

Junwoo Lee

   

TBD

   

TBD

   

TBD

1

   

Somya Prabhakar

   

TBD

   

TBD

   

TBD

1

   

Vidyut Ramanan

   

TBD

   

TBD

   

TBD

1

   

Amanda Rodriques

   

TBD

   

TBD

   

TBD

1

   

Victoria Schaller

   

TBD

   

TBD

   

TBD

1

   

Olivia Sedarski

   

TBD

   

TBD

   

TBD

1

   

Paula Sefia

   

TBD

   

TBD

   

TBD

1

   

Neha Senthil

   

TBD

   

TBD

   

TBD

1

   

Emaan Shah

   

TBD

   

TBD

   

TBD

1

   

Tanmay Shah

   

TBD

   

TBD

   

TBD

1

   

Wanru Shao

   

TBD

   

TBD

   

TBD

1

   

David Stephenson

   

TBD

   

TBD

   

TBD

1

   

Abigail Swanson

   

TBD

   

TBD

   

TBD

1

   

Rebecca Swernofsky

   

TBD

   

TBD

   

TBD

1

   

Deanna Turner

   

TBD

   

TBD

   

TBD

1

   

Logen Witz

   

TBD

   

TBD

   

TBD

1

   

Jyaleen Wu

   

TBD

   

TBD

   

TBD

1

   

Melody Yu

   

TBD

   

TBD

   

TBD

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

The purpose of labs is to give you hands-on experience with the actual tools, and to explain some of the principles from lecture with hands-on examples.

Khoury Account

In order to submit homeworks and lab quizzes in this class, you will need to have a Khoury account. You are eligible for such an account if you are a Khoury major, or if you are in a Khoury class (such as this one). You can apply for a Khoury account at this link, and you should do so during the first week of class, so that you have the account activated by the day of the first lab.

Exams

We will have two exams to assess your progress:

    The exams will test material similar to that assigned in the weekly problem sets. If you can solve every homework problem on your own, you are ready for the exams. If not, you need to work harder to get there.

    We strongly recommend you prepare one piece of paper for each exam that summarizes important facts and concepts and can serve as a quick reminder during the exam. Writing this one sheet of paper is an excellent way to study. Moreover, we have found that, in the past, the more papers 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.

    Lengths of the exams: The material in Midterm 1 is designed for a length of 1h; for Midterm 2, for a length about about 1.5h. In other words, a student who has worked through the readings and homework problems can solve the exam problems in 1h/1.5h, resp. To make sure that nobody feels rushed, however, we allocate twice that time, in case anyone feels they need time during the exam to double- and triple-check their work. (Students with special accommodations will still receive additional time to complete the exams.)

    Grades

    Your homeworks and exams will be graded. The weights for these and other course components, as they contribute to your course grade, are as follows:

    homeworks

       

    30%

       

    Midterm 1

       

    25%

       

    Midterm 2

       

    35%

       

    lab quizzes

       

    5%

       

    instructor’s discretion

       

    5%

       

    The "instructor’s discretion" grade component is used, among other things, to reward students for active participation in the course (not just attending every class), and—in exceptional situations—those who made a noteworthy commitment to the course work or the improvement of the course over the semester.