Our course syllabus is subject to update throughout the semester.
| Course Wiki: | http://www.cs.vassar.edu/courses/cs102-200903/top | |
|---|---|---|
| Section: | 01 | |
| Professor: | Jenny Walter | |
| Office: | OLB 124 | |
| Office Hours: | Tue & Thu 10am to noon, Mon 4 to 5 pm (and by appointment) | |
| Phone: | 437 7449 | |
| Email: | walter@cs.vassar.edu | |
| Lectures: | Mon/Wed 1:30 to 2:45 pm, OLB 105 and Tue/Thu noon to 1:15pm, Intro lab | |
| Labs: | Thurs, 3:10 to 4:25 pm and Fri 11 to 12:15 pm, Asprey Lab |
Text:
M. Felleisen, M. Flatt, R. Findler, K. Gray, S. Krishnamurthi, and V. Proulx, How to Design Classes, Copies to be provided chapter-by-chapter in class (students are required to provide their own binders)
Overview:
This course begins where Computer Science I leaves off. We will study class-based program design and abstractions that support the creation of reusable software and libraries. The principles of object oriented program design, the basic rules of program evaluation, the relationship between algorithms and data structures, and the basic techniques for analyzing algorithm complexity will be discussed.
Course Prerequisites:
The course is suitable for both CS majors and non-majors. It assumes that student has been introduced to the basic principles of program design and computation in CMPU 101. The course also assumes a basic familiarity with the systematic design of programs, and a moderate degree of computational and mathematical maturity.
Attendance:
Please notify me before any classes or labs you know you will miss. Part of your grade (5%) is based on participation, and you must be present to participate. Excessive absences tend to hurt one’s overall performance in this class.
Advice:
Keep up with the reading and assignments. Topics tend to build on one another. Missing one lecture or lab may preclude fully understanding the next, so do your best to attend every class meeting. Make arrangements with a classmate to copy material you miss when you can’t attend. Please contact or visit your professor if you have any questions, or if there is anything you would like to discuss. If you can’t make it to office hours, let me know and I can arrange another time. Email is generally the best way to reach me. I will answer emails quickly (except that anything you send me after 9 pm at night will definitely not be answered until the following morning.) My e-mail address is given at the top of this page.
Programming Style:
Writing a program to solve a problem is in many ways analogous to writing an essay. In fact, both acts share the notion of composition and involve a problem-solving process. Therefore, just as you would in other classes, in this class you should strive to write elegant code. One reason for this goal is because, over time, we need to read more code than we write, and so we write code with this realization in mind.
Coursework and Grades:
The goal is to help you understand the principles of class based program design using an object-oriented programming language. Java-like syntax is used at the beginning of the semester so we can transition to standard Java later in the course and use our design skills to write applications. In lectures, labs, and programming assignments, we will use the Java programming language and pseudocode to describe the data structures and algorithms we study.
The course web page will be updated regularly throughout the semester with assignments, deadlines, and other important information. Please check it frequently. You will also need to check your email regularly for important class announcements.
To reinforce the concepts we will be studying, you will construct programs of increasing complexity and sophistication throughout the course. In a weekly 75 to 90 minute lab session we will cover practical issues, such as how to use the computing environment and development tools, and we will work on practical programming exercises designed to reinforce concepts presented in lecture. To assess your understanding of the topics presented in this course, there will be frequent written or programming assignments, weekly labs (no lab the week of Sept 28th, or during Oct break), two midterms (dates already tentatively set–see below and schedule), and a final exam (during the final exam period). If you are unable to attend class on the day of an exam, it is your responsibility to notify the instructor in advance to make other arrangements. Late assignments will be penalized. Your final grade for the course will be calculated according to the following distribution of coursework:
| 25% | Weekly Assignments | |||
| 10% | Weekly Labs | |||
| 5% | Class Participation | |||
| 20% | Midterm 1 (Thu, Oct 8) | |||
| 20% | Midterm 2 (Thu, Nov 5) | |||
| 20% | Final Exam scheduled by registrar | |||
Based on the weighted average of your graded coursework, your letter grade will be determined according to the standard 90, 80, 70, 60 cutoffs. For example, 90% or above is an A; 80% or above, but below 90%, is a B; etc. Pluses or minuses may be added at the instructor’s discretion.
Academic Integrity:
Don’t cheat. Read Originality and Attribution: A guide for student writers at Vassar College. Copying someone else’s code without attribution amounts to plagiarism. Likewise, give proper attribution for the help you receive. School policy dictates instructors must report all suspected incidents of cheating to their department chair. Did you read the previous sentence? Please don’t put yourself or your professor in that position. When in doubt, ask your professor before seeking any help from another source.
Students with disabilities:
Academic accommodations are available for students with disabilities who are registered with the Office of Disability and Support Services. Students in need of disability accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by Office of Disability and Support Services, as indicated in your DSS accommodation letter.