CS230 Spring 2022

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 - We'll cover the 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 2022 Tentative schedule


It is STRONGLY recommended that you do the reading before the class. Quizzes are due at 8pm the day before class.
Please check this page frequently, as it is subject to change.

Monday

Tuesday

Wednesday

Thursday

Friday

Jan24

Classes start

L1: Intro to CS230, Java data types
Reading: LDC Ch 1 & 2
(slides)

Quiz 1

Jan27

L2: Using Java classes (Math, Random, String), operators, conditionals and loops
Reading: LDC Ch 3 & 4. (Optional: 3.6-3.7)
(slides)

Quiz 2

Jan28

Jan31

L3: User-defined Java classes.
Reading: LDC Ch 5
(slides / code)

Quiz 3

Feb3

L3: User-defined java classes **(cont)** Control flow. static vs instance methods, Drivers.
Reading: LDC Ch 5
(slides )

Feb7

L4: Arrays and parameter passing
Reading: LDC Ch 7
(slides)

Feb10

L5: Arrays of Objects, 2D arrays
CD class, CD[] Collection.
Reading: LDC Ch 7
(slides)

Quiz 4

Feb14

L6: Inheritance
Reading: LDC Ch 8
(slides)


Feb17

L7: Polymorphism, Interfaces
Reading: LDC Ch Ch 9.1 - 9.4
(slides / slides)

Quiz 5

Feb18

Deadline to drop a course

Assign3
due at 11:59 PM

Feb21

Presidents Day: no classes

Feb22

**Monday Schedule**

L8:Exceptions and IO
Reading: LDC Ch 10 (except 10.4)
(slides)

----------------


Feb23

Lab 5: IO and Exceptions
(Shapes from/to files)

Feb24

L9: Collections and Stacks
Reading: LDC Ch 14.1 - 14.9
(slides)

Review

Quiz 6

Take-home Exam 1 out

Feb25

Feb28

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

Exam 1 Due 11:59PM

 

Mar 1

Pre-lab 6

Lab 6: Linked Lists Student Orgs

Mar 2

Pre-lab 6

Lab 6: Linked Lists Student Orgs

Mar3

L9: Stack implementation
Reading: LDC Ch 14.1 - 14.9
(slides)

Quiz 7

Mar7

L11: Analysis of Algorithms
Reading: LDC Ch 12
(slides)

Mar10

L12: Queues
Reading: LDC Ch 15.1 - 15.5
(slides)

Quiz 8

Mar14

L13: Searching and Sorting
Reading: LDC Ch 13
(slides)

----------------

Mar17

Spring Break

Mar18

Spring Break

Mar21

Spring Break

Mar22

Spring Break

Mar23

Spring Break

Mar24

Spring Break

Mar25

Spring Break

Mar28

L14: Introduction to Graphs
Reading: LDC Ch 19.1 - 19.5
(slides)

Quiz 9

Mar31

L15: Depth-First Search
Reading: LDC Ch 19.1-19.5
(slides)

Quiz 10

Apr4

L16: Breadth-First Search
Reading: LDC Ch 19.5
(slides)

Apr7

L17: Trees
Reading: LDC Ch 16.1-3
(slides)

Take-home Exam 2 out

Apr8

Apr11

L18: Link-based Tree implementation
Reading: LDC Ch 16.4
(slides)

 

Apr12

Lab 10: Decision Trees

Exam 2 due at 11:59PM

Apr14

Coded Bias

Quiz 11

Apr15

Apr18

Patriots Day: no classes

Apr21

L20: Hash tables
Reading: LDC Ch 20
(slides)

Project Description

Apr25

L22: Priority Queues and Heaps
Reading: LDC Ch 18
(slides)

Apr26

Apr27

***Tuesday Schedule: NO LAB TODAY ***

Apr28

L23: Priority Queues and Heaps
Reading: LDC Ch 18
(slides)

Apr29

May2

L23: Binary Search Trees
Reading: LDC Ch 17.1, 17.2, 17.3

Review for the final exam
(slides )

Quiz 12

May3

(Last) Lab 12: Work on your project. Come with your questions!

May4

(Last) Lab 12: Work on your project. Come with your questions!

May5

Jeopardy!

May6

Last day of classes

May9

Reading Period

May10

Final Examinations Begin

May11

Final Exams

May12

Final Exams

May13

Final Exams

May16

Last day of Final Exams

Project Due

Administrative details of CS230



Course Overview

Prerequisites The prerequisite for CS230 is CS111, Computer Programming and Problem Solving. If you have not completed successfully CS111, you must obtain permission by the instructor in order to enroll to this course. Students with significant programming experience (including knowledge of Java), also need the permission of the instructor to enroll in CS230.

Computers All programming in CS230 will be done using BlueJ. 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, the course instructors 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, 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 sftp program (like Fetch or Cyberduck on a Mac).

Course Group A "Google group" has been created that comprises all sections: cs230-sp22@wellesley.edu. If you have registered in the course, you have been automatically added to a group and you should have already received an email. 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, please do 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 (though if you have access to a newer edition is fine). We recommend you buy your own paper copy because it can be useful for your future reference as well. It is strongly recommended that you read the relevant sections twice a week.

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

SI Materials The SIs have 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.

Class 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.

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.


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 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. See the course catalog about the lecture and lab times of the course. 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").

Tutors: CS 230 is fortunate enough to have a number of excellent peer tutors: students who have taken CS 230 in the past and want to help others to succeed. They each hold café (drop-in) hours for two hours each week, and they are also available for one-on-one tutoring. Here are some norms you should remember:

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

Quizzes: There will be a quiz before each class based on the reading material. Quizzes are due the day before class at 8pm. Once you submit a quiz, you will have access to the correct answers. At that point you may decide to resubmit your quiz. At the end, if you get a grade above 75%, you get credit for that quiz. Otherwise, you do not. At the end of the semester you need to have credit for at least 75% of the quizzes.

Project: During the last few weeks of the semester, project teams of 2 students work on an extended programming project from scratch. Your instructors will provide the general description of the project and you will have to write the specifications and implement it based on the specifications.

Exams: There will be two non-collaborative take-home exams. They will require the use of a computer. You are not allowed to collaborate with anyone else on any of the exams. The dates of the exams are listed on the schedule. Please mark the exam dates in your calendars as they are not flexible.


Grading Policy

Assignments For assignments, normally 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.

Labs Lab and class participation account for 10% of the total course grade. Participation includes (but is not limited to) attendance, active articipation in class discussions, and completing lab tasks.

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:

There is no arbitrary limit on the number of A's, B's, C's etc., and every student will be assigned the grade they earn and deserve according to the grading standards of the college.

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.

It is strongly recommended that:

In other words, we strongly discourage from writing code as soon as you read the assignment, before you read the relevant material and using pen and pencil to sketch a solution. We also strongly discourage from searching the web for solution related to your assignments: using such code would be a violation of the honor code and is likely to lead you to confusion.

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 CS230 style guide.

Late Assignment Policy. For any and all assignments, you could use a 48 hour extension, no questions asked. 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 before the assignment is due. 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 the formal solutions to an assignment are distributed before you turn in a late assignment, you are bound by the Honor Code not to examine these solutions.


Collaboration Policy

Here is overview on our collaboration policy, and it is followed by a more detailed explanation below:

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, and turn in a single copy of work they did together.

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

In general, teams are allowed to discuss assignment tasks 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.

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.

finding partners

Finding a Partner: A student in Spring 2022 created the this spreadsheet, which might help in finding a partner: finding a partner.

Keeping Wellesley Healthy

For questions related to keeping yourself and the Wellesley community healthy during the pandemic, please check the Keeping Wellesley Healthy page regularly.

 

Covid-related Policy

As we begin another semester during the pandemic, we are all grappling with the consequences of living through an extended period filled with sadness, fear, anxiety, grief, and so many more. As in past semesters, please extend empathy and patience to each other and to yourselves.

First of all, if you are ever feeling ill, or if you believe that your being in class might pose a risk to others, please do not come to class (lab or lecture). Please be in touch with us at your convenience (email us at cs230-instructors@wellesley.edu) to let us know what is happening. We will then work with you to help you get back on track *after* you feel better. We also understand that illness may require you to seek an extension (past the automatic 48h-extension) – we can work with each of you individually; please communicate with us early about your need for one.

Slides from lectures will always be available online, as will the activities we cover in labs and the lab solutions. Should you have to miss a class, your first resort should be to get the notes from other members. After reviewing these notes and the materials on the course website, feel free to be in touch with us for additional help.

We will not record in person lectures. Partly, this is a matter of resource availability for hosting hybrid classes, but also attention and ability to fully engage. However, if needed we will provide links to pre-recorded lectures by CS230 staf

 

Disability 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 your instructor. 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 your instructor 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 , 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