Textbooks

There are no required textbooks for this class, but here are some recommendations if you'd like to pick up a book (or two).

If you have a favorite publisher, e.g., O'Reilly, their books are (probably) just as good, as well.

Grades

Grades are determined by homework (70%) and the project (30%). Grades will be curved at the end of the semester.

Homework

Learning a programming language is not a spectator sport. Like any skill, practice makes perfect, and our practice for this course is the homework. Since we will be covering topics at a fairly rapid pace, homeworks are assigned (roughly) weekly so that you have an opportunity to get each of the concepts we discuss in class under your fingertips. Homework will be coding assignments.

Development environment. You are more than welcome to code your homeworks/project on machines other than eniac. However, you must make sure that your code compiles and runs correctly on the eniac.seas.upenn.edu machines -- this is what we will be using to grade all of your homeworks.

Late days. You have 3 late days for use on the homework this semester. Each late day used allows you to turn in the assignment 24 hours past the due date up to a maximum of 2 late days or 48 hours per assignment. Beyond these late days, homework will not be accepted past the due date unless extenuating circumstances are involved. Please talk to the instructor ASAP if this will be the case.

Challenge problems. Most assignments will feature an optional challenge problem designed to go into more depth on a particular concept or area. Challenge problems are worth a very small amount of points, but are fairly involved (far more than the amount suggests). They aren't a great way to boost your grade, but they are a great way to dive deeper in the material if you're interested. Note that you may not receive credit for a challenge problem if the rest of your homework is not (nearly) perfect.

The Project

In addition to the homeworks, you will also work with your peers in groups of 2-4 to design and implement your own project in C++. Examples from past years include games, IM clients, and other applications. Groups will write a small proposal of their project, draft a specification, implement the project, and present their projects to the class on the last lecture day. More information about the parameters of the project will be available in early November..

Academic Honesty

It is expected that all the work you turn in is your own. This means that homework assignments must be done independently. While it is OK to ask your peers conceptual questions, the general rule is that if you're talking in C/C++, you've gone too far. One exception to this policy is on the final project, where it is expected that you work fully with your group; the submitted product is everyone's responsibility.

We take violations of these policies very seriously. A student found to be cheating is liable to be referred to the Office of Student Conduct.