Home Page Image
 

What is CS230 about?

Data Abstraction: In order to cope with the complexity of writing large programs, it is desirable to express them as combinations of components whose behavior can be understood independently from their implementation. In CS111, you learned how methods provide an abstraction barrier between the caller and implementer of a method. We will review this notion and introduce abstract data types as a way to represent computational values and the operators that manipulate them.

Modularity: The ability to create large and complex computer programs is enhanced if they can be composed out of reusable components with standard interfaces that can be combined in mix-and-match ways. We will study how to compose programs out of such components.

Performance Analysis: Programs are often judged by how effectively they make use of resources such as space and time. We will explore ways to describe the efficiency of algorithms and use these tools to evaluate various approaches to implementing data structures and algorithms.

Standard Abstract Data Types: We will learn about the implementation and use of classical data structures such as lists, stacks, queues, trees, tables and graphs, which should be in every programmer's bag of tools.

 


Welcome to CS230 - Fall 2014

Be informed of course announcements by following the CS230-fall2014 group!

Instructors

Instructors:
Orit Shaer Office: SCI E108
Office Hours: Tuesdays 3-5, Wednesdays 2:30-5, Thursdays 4:15-5
or by appointment.

Benjamin Wood Office: SCI E128
Office Hours: TBD.

Lab Instructors:
Stella Kakavouli Office: SCI E131
Office Hours: Wednesday 1:30-3pm, Thursday 9:30pm-11:30pm, and by appointment.

Supplemental Instruction Leader:
Erin Altenhof-Long
Supplemental instruction sessions: TBD
Location: TBD

Teaching Assistants:
TBD Drop-in Hours:
Location: SCI257

Course Overview

Prerequisites

The prerequisite for CS230 is CS111, Computer Programming and Problem Solving. Students with significant programming experience (including knowledge of Java), or those who have received less than a C+ in CS111 need the permission of the instructor.

Lectures and Labs

There are two 70-minute lectures each week that will introduce the main content of the course. Every student is also required to attend one 110-minute lab each week. Lab work will include exercises to review and reinforce the lecture material and to develop general programming, testing and debugging skills. The labs will also provide further opportunity to ask questions about course material and discuss homework assignments.

Lectures are held on Mondays and Thursdays
at 9:50-11:00 AM (section 01 in SCI-E111) and
at 11:10AM-12:20PM (section 02 in SCI-E111).

Labs are held on Thursday at 1:30-3:20PM, and Friday 8:30-10:20AM, 10:30-12:20 AM and 1:30-3:20 PM, in SCI 257.

Lab exercises will be distributed in the labs. Some of the lab work will be completed during the scheduled lab time. For the rest, work on your own and consult the posted solutions.

Supplemental Instruction (SI)

Supplemental Instruction (SI) is an academic support program offered for selected Wellesley courses. Our academic SI leader, Erin, is trained and highly experienced in tutoring CS230. Erin will offer two study sessions each week throughout the semester. During SI sessions Erin will cover problem set solutions and review important concepts. SI sessions are open to all students enrolled in the course. We highly recomend attending one of the SI sessions every week.

Textbooks/Notes

Text: Regular readings will be assigned from the required text, Java Foundations, by Lewis, DePasquale and Chase, 2nd edition. We will be using the 2nd edition (not the newer, 3rd edition). It is on reserve in the Science Library. It is recommended that you read the relevant sections twice a week.

The first 5 chapters of this text provide a review of Java 1.5, which we will move through quickly during the first two weeks of the semester. The new material for CS230 is covered in Chapters 6-21, which will be the focus of the rest of the course. This material will be supplemented with lecture handouts.

Notes: In the syllabus, each lecture is linked to printable class notes (pdf). If you would like to use them to keep notes feel free to print them before class or just download them on your device.

Assignments

There will be weekly assignments in which you will write Java programs that emphasize concepts discussed in class. Many of the assignments will be challenging, you are required to work with a partner on each of the assignments. Keep in mind that programming often consumes more time than you expect. Start your assignments early! This will give you time to think about the problems and ask questions if you hit an impasse.

All assignments are due at the beginning of class on the advertised due date. You should turn in both a "hard" (paper) copy of your assignment and a "soft" (electronic) copy of any programs from the assignment. The link above provides instructions on how to drop off your copies.

A program submitted that runs correctly on a particular input earns only 60% of the total grade. Careful testing that covers both the basic functionality and border cases will earn another 20% of the grade, if the testing is demonstrated. The remaining 20% of the grade is earned for good design that implements OOP, documentation that includes top-of-the-file description, method explanation and in-line explanation as needed. Good programming style is also expected.

Late Assignment Policy

Turning in assignments on time makes it easier to keep on track with the course and to turn in the next assignment on time. We will use the following policy:

No late work will be accepted unless there are extenuating circumstances (e.g., sickness, personal crisis, family problems). In this case you may request an extension before the due date.
The softcopy submission will be a dated file. If the formal solutions are distributed before you turn in a late assignment, you are bound by the Honor Code not to examine these solutions.

Collaboration Policy

The following grid gives an overview on our collaboration policy, and is explained in the following sections:

  Assignments Project Exams

Required

Rotating pairs of students Teams of 2-3 students No collaboration

Assignments

We believe that collaboration fosters a healthy and enjoyable educational environment. For this reason, we encourage you to talk with other students about the course material and to form study groups.

Because the programming assignments in this course can be challenging and teamwork is the norm in the CS industry, you are required on any assignment to form a two-person team with a partner. The two team members must work closely together on the assignment and turn in a single hard- and soft-copy of the assignment for the team. The grade received on such a submission will be given to both team members.

Team efforts on assignments are subject to the following ground rules:

  • The work must be a true collaboration in which each member of the team will carry her own weight. It is not acceptable for two team members to split the problems of the assignment between them and work on them independently. Instead, the two team members must actively work together on all parts of the assignment. In particular, almost all programming on the assignment should be done with both team members working at the same computer. It is strongly recommended that both team members share the responsibilities of "driving" (i.e., typing at the keyboard) and "directing" (i.e., looking at the code and offering suggestions), swapping roles every so oftern.

    The fact that team members have to program together means that you need to carefully consider a potential partner's schedule before forming a team. You cannot be an effective team if you cannot find large chunks of time to spend at a computer together!

  • You must work with at least three different partners throughout the semester. Rotating through partners is a good way to build community in the class and is helpful for avoiding situations where one individual feels pressured to continue working with another.

  • Based on past experience, working with a partner can enhance learning while significantly decreasing the amount of time you spend on an assignment, because you are more likely to spot trivial errors and avoid blind alleys. On the other hand, it may be difficult for teammates to find time to work together, and certain individuals make take more time on an assignment than they would alone. In this case, there are still benefits to working with a partner.

Unless otherwise instructed, teams are allowed to discuss assignments with other teams and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, we require that each (one-person or two-person) team must compose its own solutions to each assignment. In particular,

You must compose your own solution to each assignment and lab problem. You may discuss strategies for approaching the programming problems with your classmates and may receive general debugging advice from them, but you are required to write and debug all of your code. Furthermore, you should never look at another student's code.
For example, it is OK to borrow code from the textbook, from materials discussed in class, and from other sources as long as you give proper credit. However it is unacceptable and constitutes a violation of the Honor Code (1) to write a program together (with someone not part of your team) and turn in two copies of the same program, (2) to copy code written by your classmates, (3) to read another student's or team's code or (4) to view assignments, exams and solutions from previous terms of CS230.

In keeping with the standards of the scientific community, you must give credit where credit is due. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work. It is unacceptable for students to work together but not to acknowledge each other in their write-ups.

Final Project

During the last few weeks of the semester, you will form project teams of 2-3 students and work on an extended programming project that you will design and build from scratch. After choosing an interesting application or problem, you will first build a skeleton of the object classes, methods, abstract data types and user interface needed for your application, and then fill in the details to create a fully working implementation.

Each team will give a short presentation of their final project during the last two meetings of the semester, and will prepare a document with specifications, user's manual, code and documentation on their final project. Guidelines will be posted mid-semester. See our CS230 project gallery for information on student projects from recent semesters.

Exams

There will be three in-term, non-collaborative exams that are open book and open notes. The first is in-class and the other two are take-home. There will be no final exam. The take-home exams will require the use of a computer. You are not allowed to collaborate with anyone else on the take-home exams. The dates of the exams are listed on the syllabus. Please mark the exam dates in your calendars as they are not flexible.

 

Grading Policy

Your final grade for the course will be computed as a weighted average of several components. One of them is class participation that includes coming to lectures and labs, actively involved in the discussions and completing all the assessment questionnaires that will be assigned.

The relative weight of each component is shown below:

Assignments

30%

Final Project

10%

Exam 1 (in-class)

15%

Exam 2 (take-home)

20%

Exam 3 (take-home)

20%

Class Participation

5%

Total

100%

This course complies with the Wellesley College grading policy. While that policy asks faculty to hold each 100- and 200-level course with 10 or more students to an average of no higher than 3.33, it does not require faculty to grade on a "curve." There is no arbitrary limit on the number of A's, B's, C's etc., and every student will be assigned the grade she earns and deserves according to the grading standards of the college.

Computers

All programming in CS230 will be done using DrJava. If you want, you can use your own computer but you will have to maintain the software (which is good practice and not difficult) and be prepared to use the department's machines if yours has problems. Sorry, we will not be able to help you trouble-shoot your own computer. The Documentation page has pointers to documentation for all the software packages used in CS230.

Course Directory

The CS230 course directory is located at /home/cs230 on tempest. This directory contains material relevant to the class, including course software, and online versions of assignments and programs. Any required material of the course Java software will be placed in the download folder inside the /home/cs230 directory and you can access it using an ftp program (like Fetch on a Mac).

Course Group

There is a CS230 group named CS230-fall2014. This group has several purposes. We will use it to make class announcements, such as corrections to assignments and clarifications of material discussed in class. We encourage you to post questions or comments that are of interest to students in the course. Please do not post significant amounts of Java code (i.e. more than one or two lines of code) in your messages on the group! The instructors and TAs will read messages posted in the group on a regular basis and post answers to questions found there. If you know the answer to a classmate's question, feel free to post a reply yourself. The course group is also a good place to find people to join a study group. You should plan on reading group messages on a regular basis.

Finding Help

If you have any questions at all about the class (whether big or small, whether on assignments, lectures, reading, or whatever) please contact one of the instructors. Simple questions can often be answered via the class group or e-mail. Questions of general interest (e.g. clarifying ambiguities in an assignment, wondering why posted programs do not work as expected) should be posted to the CS230 group. Other questions can be emailed to your instructors.

If you have a complex question or need help in understanding the material, you are encouraged to see one of the instructors or the CS230 tutor. The best time to see an instructor is during our office hours. If these times are not convenient, we can schedule an appointment for another time. You can schedule an appointment in person or by e-mail.

Your TAs will hold regular drop-in hours to help with your questions. The schedule of their drop-in hours will be made available early in the term. If you are having trouble with the course, you can request a one-on-one tutor from the Pforzheimer Learning and Teaching Center (PLTC). This service is confidential and free of charge; please take advantage of it if you need some extra help! Contact an instructor or PLTC for more information about this service.

Finally, when looking for help, do not overlook other students. Get to know your classmates early in the term so that you can help each other out!

Students with Special Needs

If you have any disabilities, including learning disabilities, you are encouraged to meet with an instructor to discuss accommodations that may be helpful to you.

CS230 counts for one Mathematical Modeling (MM) Distribution credit