Basic Information:
John Clements, course instructor
- Office: 14-208
- Telephone (805)756-6528
- e-mail: aoeucalpoly@brinckerhoff.org
Lecture Section (11)
- Location: 10-222
- Time: Tuesday and Thursday, 0810–0930
Lab Section (12)
- Location: 14-301
- Time: Tuesday and Thursday, 0940–1100
Lecture Section (13)
- Location: 192-242
- Time: Tuesday and Thursday, 1340–1500
Lab Section (14)
- Location: 14-302
- Time: Tuesday and Thursday, 1510–1630
Office Hours:
Goals:
The goal of this course is to produce students that can take simple problem descriptions and write programs that solve these problems.
This is immensely difficult, because at this point in history we don't have any kind of common framework for categorizing and classifying the kinds of problems that we know how to solve.
This class will take the "data-first" approach, where we start from the problem description, decide what kind of data to use to represent it, and then use patterns that follow from these choices. This should help to ameliorate the basic dilemma of "how do I start writing the program?".
Class:
The course has a lecture and a lab. You must attend every lecture and every lab, as the presentation of the material in lecture will differ in some ways from the presentation in the textbooks.
Web Page:
This is a part of the course web page, available at http://www.csc.calpoly.edu/~clements/csc102-wi08/.
Computing Environment:
The programming assignments in this class will be in Java. There are many Java development environments available with differing degrees of utility, complexity, and cost. For the first few weeks of the course (about six), we will be working with ProfessorJ, a Java development environment designed for teaching, and embedded within DrScheme. ProfessorJ has a number of features that facilitate teaching and learning including some non-standard Java extensions, which means that for this part of the course, you'll have a hard time if you don't use ProfessorJ. For the remainder of the course, we will probably use Eclipse, but you'll be able to use any Java development environment you like, as long as your source files compile and run correctly after you submit them.
DrScheme (which distribution includes ProfessorJ) is open-source and freely available for download for a wide variety of computing environments (Mac OS X, Windows, Linux, Solaris, etc.) at http://www.drscheme.org. Let me know if you have any difficulty in downloading or installing DrScheme on any machine you are working on. For this course, you must install version 372 of DrScheme.
Communication:
This course has a google group, cpe102-wi08. Each of you will receive an invitation to join this group. This group will be used for course announcements and for you to ask questions on the assignments and on the course material. I strongly encourage you to post your questions to the group, rather than sending e-mail to me.
As you will discover, you can instruct google to send group postings to your e-mail address. This eliminates the irritating necessity of checking the group explicitly, and should make others more responsive to your questions, as well. You have the option of receiving group messages in digest form; I urge you not to do this, as it will prevent the group from being useful as a tool for interactive help.
Assignments:
There will be eight projects over the quarter that, together, account for 45% of your course grade.
Late assignments will not be accepted for any reason other than server failure.
Program submissions that cause errors on compilation or evaluation (with no input) will generally result in a grade of zero.
Pair Programming:
Many of the assignments in this course will be Pair assignments. For a Pair assignment, you may choose a partner to work with. Your partner must also choose you. Each member of the pair must send me e-mail separately, naming the partner they wish to work with.
Work on a Pair assignment must be done together; both partners in the same room, working on the project simultaneously.
Unless I announce otherwise, you may not work with the same partner twice in a row.
You also have the option of working alone on Pair assignments, if you wish. However, I strongly encourage you to work in pairs. Even if you feel that you know the material well and do not need help, partering with another student will provide that student with help.
Labs:
In the Lab, you will be working on smaller, weekly projects. You need not submit these, and they will not be graded. During lab, you are free to work with any and all of the other students in the lab. You are required to attend lab unless otherwise instructed. If you finish the lab project before the lab section is over, you may demonstrate your code to the instructor, and leave. Please do not work on assignments during the Lab.
Some labs will end with a short daily survey, at http://www.ccs.neu.edu/home/clements/class-survey.html.
Cheating:
You may not share assignment code with non-partner students in the class. That is, you may not allow another non-partner student to see the code you write for an assignment, deliberately or through obvious negligence. You may not look at another non-partner student's assignment code, whether or not it is offered.
To expand on this: You are required to complete your assignments individually. You may discuss general concepts with others inside and outside of class, including tutors, but you must do the specific work on the assignments on your own. Do not even look at another student's assignment code or allow another student to see yours.
I will use an automated tool to compare student submissions and identify cheating.
Students believed to be cheating—that is, both parties involved in the transfer of code—may receive a failing grade in the class.
You will be expected to comply with the Cal Poly Code of Student Conduct.
Testing:
There will be one evening lecture midterm, two lab quizzes, and one common lecture final. The midterm and final exams will be cumulative and comprehensive and will cover material covered in lecture, your text, as well as programming skills of analysis, design, and implementation used in your labs and projects. Lab quizzes will focus on programming skills and knowledge acquired primarily, though not exclusively, from labs and projects.
IMPORTANT: No makeup quizzes or exams will be given. The lecture final is a common final, and will be held at a time and location to be announced later.
NOTE (Unless otherwise specified): The lab quizzes are open-note, and open-book. The midterm and final are closed-note and closed-book. No electronic devices, including cell phones and mp3 players, will be permitted during lab quizzes, midterm, or final.
TEST SCHEDULE:
| What | When | Where |
| Lab Quiz 1 | Week 4, Tuesday | Lab |
| Midterm | Week 6, Tuesday | Lecture |
| Lab Quiz 2 | Week 9, Tuesday | Lab |
| Final Exam | Exam Week | TBA |
Grades:
Grades will be determined by performance on programming projects, weekly labs, lab quizzes, lecture quizzes, exams, and the instructor's whim.
The grading breakdown is as follows:
| Graded Item | Each | Total | Length (Each) |
| Instructor's whim | N/A | 5% | N/A |
| Eight projects | 3-6% | 45% | N/A |
| Two lab quizzes | 5% | 10% | ~50 minutes |
| One lecture midterm | 15% | 15% | ~50 minutes |
| One lecture final | 25% | 25% | 170 minutes |
Required Texts:
How To Design Classes (Dec. 21 draft) by Felleisen et. al. (available at the bookstore)
This is the only required text for this course.
Policies and Advisories:
- The College of Engineering requires proof of unusual circumstances to withdraw from a course after the eighth day of the quarter.
- Projects must be submitted on or before the date and time specified in the assignment to receive credit. Late projects will not be accepted.
- There are no makeup exams or quizzes except in documented and extreme emergencies.
- A course grade of incomplete is given only for reasons acceptable to the university.
- Plagiarism on projects will result in all involved students (student(s) who copied and student(s) who were copied from) being failed from the course. In addition, a report of the incident will be reported to the university's Judicial Affairs department which may result in being dismissed from the university. Please note that all programs will be checked automatically for plagiarism.