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.

Lecture/Recitation

The majority of the material, and everything pertaining to C and C++, will be taught in recitation. The lecture for this course is shared by all CIS mini-courses (19X), and is held Tuesday nights in Towne 100 from 6 ~ 7:30 PM by Dr. Sheth. The lectures will cover general topics that we hope will be useful for all of the project-based mini-courses. The lecture will only meet for the first 3 weeks of the semester.

Grades

Grades are determined by homework (70%) and the final project (30%). There are no exams, and grades will be curved at the end of the semester. Grades are made available on Canvas as soon as grading is completed, about one to two weeks after the assignment's due date.

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.

Final Project

In addition to the homeworks, you will also work with your peers in pairs (groups of 2) 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, deliver an alpha version, fully implement the project, and present their project to the class on the last lecture day. More information about the parameters of the project will be available in early March.

Policies

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.

Coding Style. Part of being a good programmer in the computer industry is adhering to coding standards, whether it be for a single project, company-wide, or a specific language. Following a coding style will make your code more consistent, more coherent, and more useful to both yourself and other users. A large part of the coding style for this class is good commenting. In the real world, you won't be the only one looking at your code (or you'll be looking at it months or years later), so coding style and useful comments are very important. Adherence to the coding style is typically around 10% of a homework's total points.

Attendance. Although attendance is not part of your grade, there are definite advantages to attending class. In addition to being able to ask questions in real time, hints and tips may be provided for the homeworks, and you will have more input on the topics covered, especially as we near the end of the semester.

Contact. It is expected that you will use the Piazza page for any questions about course materials and assignments. An email sent to a specific instructor or TA will likely be returned with a request to post the question on Piazza. If you need to post code details or something similarly sensitive, post it as a private question. If you have a personal question (extensions, accommodations, etc.), please contact the instructor directly via delozier at seas dot upenn dot edu.

Resources

Office hours will be held weekly by both the instructor and the TAs. Hours will be announced during the second week of classes, and on this website.

Tutoring is available free of charge through the University of Pennsylvania Tutoring Center. Tutoring is intended to help you understand concepts; however, tutors are not TAs, and are not allowed to help you debug your assignments.

Computer labs are provided by the University of Pennsylvania, and are free for use by students, 24 hours a day.

Academic accommodations and auxiliary services are available for students with a documented disability. Please contact Student Disability Services to discuss your needs.