CS230 Data Structures in Java

Spring 2024

about us
DrJava

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


Click here for Schedule


Administrative details



Course Overview

NO PHONE USE in class: And if you use a computer or a tablet for notes, make sure you have shut down any email or social media communication during class.

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.

The Prerequisite for CS230 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 Discussion This semester we will be using Courselore for CS230 for class discussion. If you have registered in the course, you will receive an email about joining after the first day of classes. Please do that.
The system is highly catered to getting you help from classmates, the TAs, and the instructors. Rather than emailing questions to the teaching staff, we encourage you to post your questions on Courselore at the appropriate tag.
We will use Courselore for 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 daily basis and post answers to questions found there.
Please note that Courselore is mainly a tool for you to interact with your peers. Answering questions is one of the best ways to learn something, so try to answer each other's questions. Also, as a reminder, there are no such things as stupid questions, and the act of formulating your question carefully is also an important part of the learning process. Writing is thinking. So please don't be shy to ask any question that might pop up. To encourage this, please make sure that your questions are public to your peers as well as your instructors.
You are also encouraged to use Courselore to find people to join a study group. You should plan on checking Courselore on a daily basis.

Reading It is expected that you read the relevant sections of the textbook and the class notes twice a week. It is a must that you do that before you start your assignments because they will seem much easier to complete then!
Textbook Regular readings will be assigned from the required text, Java Foundations, by Lewis, DePasquale and Chase. We will be using the 2nd edition though if you have access to a newer edition is fine. We recommend you buy your own copy because it can be useful for your future reference as well.
Class Notes In the syllabus, each lecture is linked to printable class slides (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. Please note that the slides linked on the syllabus are not intended to be fully-fledged notes for each class. They are starting slides that you can expand on during class, when you take your own notes (as such, some of the slides might contain blanks).

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


Course Requirements

Lectures There are two 75-minute lectures each week that will introduce the main content of the course.

Labs Every student is required to complete and submit the weekly lab practice. 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.

Attending one 110-minute lab each week is a requirement for all students. In labs you will be working either with a partner, or individually. In general, note that some labs might contain more tasks than can reasonably be done in the available class time. This is on purpose! Labs are not a race to the finish, but are your opportunity to practice and explore the material together with your partner. Solutions to lab exercises will be provided at the end of Thursday; you are encouraged to study these solutions. At the end of the day of your lab, each student is required to submit on Gradescope whatever lab work they have worked on until then. For some labs you might have to submit other components, either before lab begins or after lab ends. These will be labeled on the calendar, no later than the Monday prior to the respective lab. You are expected to check the calendar regularly to make sure you submit what is necessary on time.

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.
Supplemental Instruction (SI) Materials The SIs have shared this Google Drive folder of materials with you, so here's a helpful link to the SI documents to make it easier for you to in find it. This folder will include all the handouts they have shared with you in SI.

Quizzes are additional learning materials to help you self-check your understanding of each topic. Once you submit a quiz, you will have access to the correct answers and you can re-submit each quiz any number of times.


1 - Introduction Quiz Ch.1
2 - Data and Expressions Quiz Ch.2
3 - Using Classes and Objects Quiz Ch.3
4 - Conditionals and Loops Quiz Ch.4
5 - Writing Classes Quiz Ch.5
7 - Arrays Quiz Ch.7
8 - Inheritance Quiz Ch.8
9 - Polymorphism Quiz Ch.9
10 - Exceptions Quiz Ch.10
11 - Recursion
12 - Analysis of Algorithms Quiz Ch.12
13 - Searching and Sorting Quiz Ch.13
14 - Stacks Quiz Ch.14
15 - Queues Quiz Ch.15
16 - Trees Quiz Ch.16
17 - Binary Search Trees and Heaps Quiz Ch.17
18 - Binary Search Trees and Heaps Quiz Ch.18
19 - Graphs Quiz Ch.19
20 - Hashing Quiz Ch.20

Project: Throughout the semester, project teams of 3-4 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 midterms and one final non-collaborative, scheduled exam during exam period. The first midterm exam will be done on paper during a regular class period, and will not require the use of a compiler. The second midterm exam will be take-home and will require the use of a compiler to write and execute your code. The dates of the exams are listed on the schedule. Please mark the exam dates in your calendars as they are not flexible. The final exam will be at a fixed date and time during the College's exam period: Tuesday, May 7th, from 6pm to 8:30pm:


Grading Policy

Active class participation is expected of every student who wants to succeed in the course, and includes (but is not limited to) attendance, participation in class discussions, and completing lab tasks and quizzes. Please note that if you miss class for any reason, it's your responsibility to obtain the class notes and topics from fellow peers (Courselore can be a resource here!).

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


There will be weekly assignments in which you will write Java programs that emphasize concepts discussed in class. Assignments are an opportunity to delve deeply into topics seen in class, and to answer challenging and complex questions. You may be required to work with a partner on marked task(s) on some 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.

strong>Late Assignment Policy. Learning programming and data structures is really a sequential process because every new topic builds on the previous. We strongly encourage you to complete your assignment on time, but we know that sometimes this may not be possible.

For any and all assignments, you could use an automatic 24 hour extension, no need to ask for permission. However, if that extra day is 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 you do not obtain permission, you can still email your assignment to Prof. Anderson up to one week late for half credit.


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 and large-scale collaboration is the norm in the CS industry. Given the above, some of the assignment work is required to be done paired with a partner from the class, 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:

This semester, Prof. Anderson will assign partners for each pair-programming assignment. It is your responsibility to reach out to your partner and arrange times to meet and work on the assignment, keeping in mind the rules above. Sometimes it's hard or impossible to find times to meet, but we expect a good-faith effort.

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. Please do not cross this line.

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, (5) to make any of the assignments, exams and solutions available to others online or off-line, or (6) to use generative AI tools such as ChatGPT or Github Co-pilot or any other language generation model. In keeping with the standards of the scientific community, you must give credit where credit is due (i.e. write their names at the top of the file). 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.


On using Generative AI tools in CS230

Our policy in CS230 regarding the use of generative AI tools (ChatGPT, Copilot, Bard, or any other) is that it is an honor code violation to use generative AI tools for any purpose related to CS230 material while you complete an assignment or exam for CS230. It is also an honor code violation to copy any code from a generative AI tool and submit it as your work for an assignment or your project. If you use generative AI as part of your learning CS230, you need to be mindful about the following aspects of these tools:

Our Policy: Use generative AI tools to help your learning, not to avoid learning (cheat).


Our CS230 policy is that you cannot use any code from generative AI for class submissions nor use it in any capacity during exams, however we recognize the that these tools can be helpful to assist your learning in other ways and here are our recommendations for using them:

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.

 

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

---