Spring 2020 CS230

This is a course about data structures and we happen to use java,
an "Object-Oriented" programming language.

About CS230

big ideas in this course


  • Data Abstraction - Separate a program's behavior from its implementation
  • Modularity - Reusable components with standard interfaces
  • Performance Analysis - How efficient is your code with respect to space and time?
  • Standard Abstract Data Types - Classical data structures including lists, stacks, queues, trees, tables and graphs.

learning goals for this course


Upon completion of this course, students should be able to:

  • Identify abstract data types and fundamental algorithms and summarize their typical uses, strengths, and weaknesses.
  • Use, implement, and modify various data structures including lists, stacks, queues, trees, tables and graphs.
  • Understand tradeoffs between different implementations of an abstract data type.
  • Analyze runtime efficiency of searching and sorting algorithms and abstract data type operations.
  • Solve substantial computational problems by using the Java programming language, object-oriented design, data structures, and algorithms.  
  • Work with a team to design, implement and test computer programs. 

Meet your instructors & tutors

Click here for CS230 drop-in calendar


CS230 Spring 2020 schedule


Please check this page frequently, as it is subject to change.

Monday

Tuesday

Wednesday

Thursday

Friday

Jan27

Lecture: Intro to CS230
Reading: LDC Ch 1 & 2

Entry questionnaire

(slides / code)

Jan29

Jan30

Lecture: Java constructs, conditionals, iteration
Reading: LDC Ch 3 & 4. (Optional: 3.6 Formatting Output; 3.7 Enumerated Types.)

(slides / code)

Ch 1, Ch 2 Quiz due

Jan31

Feb03

Lecture: User-defined java classes
Reading: LDC Ch 5

(slides / code)

Ch 3 Quiz due

Feb05

Feb06

Lecture: Arrays
Reading: LDC Ch 7

(slides / code)

Assign1 due at 11:59 PM

Ch 4 Quiz due

Feb07

Feb10

Lecture: Arrays of Objects and 2D arrays!
Reading: LDC Ch 7 & 8

(slides / slides / code)

Ch 5 Quiz due

Feb12

Feb13

Lecture: Inheritance

Assign2 due at 11:59 PM

Ch 7 Quiz due

Feb14

Feb17

Presidents' Day - No Classes

Feb18

MONDAY Schedule,no lab

Lecture: Polymorphism via inheritance
Reading: LDC Ch Ch 9.1 - 9.2
(slides / code)

In-class review

Feb19

Feb20

Lecture: Interfaces
Reading: LDC Ch 9.3 - 9.4
(slides / code)

 

Assign3 due at 11:50PM

Ch 8 Quiz due

Feb21

Deadline to DROP a spring course at 11 PM

Take-Home Exam 1 OUT

Feb24

Lecture: Exceptions, IO
Reading: LDC Ch 10 (except 10.4)
(slides / code)

Feb26

Feb27

Lecture: Collections and Stacks
Reading: LDC Ch 14.1 - 14.9
(slides / code)

Ch 9 Quiz due

Feb28

Take-Home Exam 1 DUE at 5pm

Mar02

Lecture: Linked Lists
Reading: LDC Ch 14.10 - 14.14
(slides)

Ch 10 Quiz due

Mar04

Mar05

Lecture: Queues
Reading: LDC Ch 15.1 - 15.5

(slides / code)

Assign4 due at 11:59 PM

Mar06

Mar09

Lecture: Queues (continued)
Reading: LDC Ch 15.1 - 15.5

(slides / code)

Assign4 due at 11:59 PM

Mar11

Mar12

Lecture: Analysis of Algorithms
Reading: LDC Ch 12

(slides)

Assign5 due at 11:59 PM

Ch 14 Quiz due

Mar13

Mar16

Lecture: Searching and Sorting
Reading: LDC Ch 13
(slides / code)

Mar17

Mar18

Mar19

Lecture: Sets, Maps, and Hash Tables
Reading: LDC Ch 20
(slides / code)

Mar20

Mar23

Spring Break

Mar24

Spring Break

Mar25

Spring Break

Mar26

Spring Break

Mar27

Spring Break

Mar30

Lecture: Analysis of Algorithms
Reading: LDC Ch 12

(slides)

Ch 14 Quiz due

Apr01

Apr02

Lecture: Searching and Sorting
Reading: LDC Ch 13
(slides / code)

Apr06

Lecture: Sets, Maps, and Hash Tables
Reading: LDC Ch 20
(slides / code)

Preparation for Project

Apr08

Apr09

Lecture: Introduction to Graphs and Graph Representations
Reading: LDC Ch 19.1 - 19.5
(slides)

Apr10

Exercise on Searching/Sorting Due

Take-home Exam 2 out

Apr13

Lecture: Depth-First Search

Apr15

Apr16

Lecture: Breadth-First Search, Topological sort
Reading: LDC Ch 19.5
(slides)

Lecture: Applications of Trees (incl. Decision Trees)
Reading: LDC Ch 16.5
(slides)

Apr17

Take-home Exam 2 due at 5:00PM

Apr27

Tentative: Lecture: Tree Representations and Implementations
Reading: LDC Ch 16.4
(slides)

Apr29

Apr30

Tentative: Lecture 22: Binary Search Trees
Reading: LDC Ch 17.1, 17.2, 17.3
(slides )

May04

TBD

May06

Reading period

May07

Reading period

May11

Exam period

May12

Exam period

May13

Exam period

May14

Exam period

Administrative details of CS230



Course Overview

Prerequisites The prerequisite for CS230 is CS111, Computer Programming and Problem Solving.

Computers All programming in CS230 will be done using the BlueJ Java Development Environment. If you want, you can use your own computer but you will have to maintain the software, 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.

Course Directory The CS230 course directory is located at /home/cs230 on the cs server. 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 Please add yourself to the CS230 google group. 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.

Textbook 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 required that you read the relevant sections prior to class and complete the reading quizzes (linked on the schedule) by the time listed on the schedule.

Java Documentation Being able to understand and use the official Java Documentation is a characteristic of every successful programmer. Become familiar with it!

SI Materials Your SI has shared this Google Drive folder of materials with you, so here's a helpful link to make it easier for you to in find it. This folder will include all the handouts they have shared with you in SI.

How to succeed in CS230

Your instructors want you to succeed, and we will do all we can to help you learn the material and become a strong programmer. From your side, here are a few things you can do to succeed in this course.
  • Plan on spending about 12 hours per week (outside of lecture and lab). If you consistently spend more than that time, please see your professor.
  • Early in the semester drop by your instructors' office hours and introduce yourself. If you can't make it to regular office hours email your instructors to make an appointment.
  • When working on course materials, turn off your social media.
  • Attend all lectures, quit all social media while in class.
  • Attend all labs, quit all social media while in class.
  • Read the book and slides BEFORE attempting to do the homework and submit your quizzes on time.
  • Read homework description immediately, start thinking about it ASAP, not 1-2 days before it is due!
  • Start homework early, be prepared to make mistakes.
  • Do not expect to finish your homework in one day. Plan ahead so that you can divide the work across different days.
  • Programming is a skill: The best programmer has made every mistake in the books!
  • Programming is hard: Do not blame yourself for your mistakes; just give yourself more time!
  • Remember: "Help will always be given at Hogwarts to those who ask for it.” ― J.K. Rowling, Harry Potter and the Deathly Hallows. Your instructors, SI, and TAs are here to help.

Course Requirements

Lectures and Labs There are two 75-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.

Lectures are held on Mondays and Thursdays at 11:20-12:35 AM (section 01 in SCI L180 with Prof. Metaxas), at 2:20-3:35PM (section 02 in SCI L180 with Prof. Lerner).

In labs you will be working either with a partner, or individually. In general, be aware that labs contain more tasks than can reasonably be done in the available class time. Solutions to lab exercises will be provided at the end of the day; you are encouraged to study these solutions. At the end of the day of your lab, each student is required to submit whatever lab work they have worked on until then. These submissions will be part of the student's participation grade (see "Grading Policy").

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

Final Project: During the last few weeks of the semester, project teams work on an extended programming project. More details will be released as the semester progresses.

Exams: There will be two in-term, non-collaborative, take-home, self-scheduled exams. There will be a self-scheduled final exam during exam period. On mid-term exams you can use the course handouts and your personal notes only. You are not allowed to collaborate with anyone else on any of the exams, including the take-home exams. The dates of the exams are listed on the schedule. Please mark the exam dates in your calendars.


Grading Policy

Assignments For assignments, a subset of assigned problems will be graded. The full credit of the assignment will be based on the graded subset. After assignments are submitted, sample solutions will be provided for all assigned problems.

Participation Lecture and lab participation has a weight of 10% of the total course grade. Participation includes attendance, submitting reading quizzes, active articipation in class discussions, and completing lab tasks and questionnaires.

Final Grades Your final grade for the course will be computed as a weighted average of several components. The relative weight of each component is shown below:

  • Assignments: 25%
  • Final Project: 10%
  • Exam 1 (take-home): 15%
  • Exam 2 (take-home): 20%
  • Final Exam (self-scheduled in finals period): 20%
  • Class Participation and Quizzes: 10%
  • Total: 100%
Note that each assignment corresponds to about 3% of your final grade, and each lab to about 1% of your final grade.

Assignments in CS230


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 the marked task(s) 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. Assignments are due as indicated on the class schedule. You should also submit a hard copy at the beginning of your next class.

A running program is just the beginning. 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, including following the course style guide.

Late Assignment Policy for any and all assignments, you could use a 48 hour extension, no questions asked. To do so, please invite your lecturer and lab instructor to a calendar event which takes place at the new due date, including your name and the assignment you're taking the extension on in the title of the event. However, if those two extra days are not sufficient for you to complete the assignment, you are required to contact the instructor and discuss a plan for completing the assignment. We will work together to make sure that plan is a reasonable and effective so that it supports both your learning and your health.

If solutions to an assignment are distributed before you have turned in, you are bound by the Honor Code not to examine them.


Collaboration Policy

Here is overview on our collaboration policy, and it is followed by a more detailed explanation below:
  • Assignments: Pairs of students or individuals, as per the assignment description.
  • Project: Teams of students
  • Exams: Absolutely no collaboration

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.

Programming assignments in this course can be challenging. Also teamwork is the norm in the CS industry. Given the above, some of the assignment work is required to be done with a partner, while some is required to be done individually. In each assignment tasks will be clearly marked as either "individual" or "pair-programming". The two team members must work closely together on the pair-programming tasks.

Pair-programming tasks are subject to the following ground rules:

  • Each team member has to read the assignment problems, think of how to go on solving it, and sketch some solutions, before meeting with their partner.
  • While working together, 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 work between them and work independently.
  • 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!
  • Except for the first assignment, when submitting an assignment, you have to decide on your partner for the next assignment.
  • Working with different partners is a good way to build community in the class. We strongly recommend that you pair up with several other students during the semester.

In general, teams are allowed to discuss assignment tasks with other teams and exchange ideas about how to solve them. However, the work you turn in should be that of your partnership only. Do not copy or plagiarize the work of others.

Each team or individual student must compose their own solution to each task. Discussing strategies and approaches with classmates and receiving general debugging advice from them is acceptable and encouraged. However you (and your partner) 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 (4) to view assignments, exams and solutions from previous terms of CS230 or (5) to make any of the assignments, exams and solutions available to others online or off-line. 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.

Special Accommodations


If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, please contact Disability Services to get a letter outlining your accommodation needs, and submit that letter to me. You should request accommodations as early as possible in the semester, or before the semester begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange to meet with me as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can provide assistance including screening and referral for assessments. Disability Services can be reached at disabilityservices@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website www.Wellesley.edu/disability , or by visiting their offices on the 3rd floor of Clapp Library, rooms 316 and 315.

Anonymous Feedback Form

Tell us what's on your mind

To give anonymous feedback to the CS230 instructors about the course,
please use the Anonymous Feedback Form