CS230 Data Structures in Java
This section is taught by Prof. Metaxas
Click here for CS230 - Prof. Yacoby
Upon completion of this course, students should be able to:
Attention:
Learning begins with focused attention. The brain filters relevant information and ignores distractions, making concentration essential for encoding new knowledge.
Active Engagement:
Active involvement, such as solving problems or testing hypotheses, strengthens neural connections and fosters deeper understanding compared to passive absorption.
Error Feedback:
Mistakes are a natural and vital part of learning. Immediate feedback helps the brain adjust, refine knowledge, and improve future performance.
Consolidation:
Sleep and repetition allow the brain to consolidate memories, stabilizing and integrating learning into long-term storage for future retrieval.
Shut down your phone
when you are in class or lab. 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.
Do not take more than 4 courses this semester and be prepared to spend at least 15 hours every week learning 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.
Class Discussion
This semester we will be using the cs-230-03-sp25@wellesley.edu
group email address for class discussion. If you have registered in the course, you already have access to this resource. When you send a message there, every student in the class receives it. (This means, if you need to talk to the instructors confidentially, email them directly.)
The group email is useful to getting you help from classmates, the tutors, and the instructors. We encourage you to email your questions using an appropriate subject line.
Your instructors will use cs-230-03-sp25@wellesley.edu
for several purposes. We will use it to make class announcements, such as corrections 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 note that this is a tool for you to interact with your peers, so 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.
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 the cs-230-03-sp25@wellesley.edu
group to find people to join a study group. You should plan on checking it on a regular 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 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. 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 clas, 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!
Lectures There are two 75-minute lectures each week that will introduce the main content of the course.
In-person 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.
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 the last lab day; 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. These submissions will be part of the student's participation grade (see "Grading Policy"). Some labs contain a 'pre-lab' as well. The link to these will probably be active no later than Monday morning. Pre-lab has to be completed individually and submitted before each lab. Please not that unsigned submissions receive no credit. You will have a chance to resubmit a version of your lab that is signed until the end of Friday of the same week.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 office (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:
Project: During the last few weeks of the semester, project teams of 3 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.
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.
Exam: There will be a midterm and a final exam (scheduled at a fixed dte during College's exam period). The dates of the exams are fixed and listed on the schedule. Please mark the exam dates in your calendars as they are not flexible.
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:
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
19 - Graphs
Quiz Ch.19
20 - Hashing
Quiz Ch.20
It is strongly recommended that:
If you do not obtain permission, you can still email your assignment to Prof. Metaxas up to one additional day for half credit.
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:
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.
You can use AI to support your learning process, but not to complete assignments or exams. The goal is to help you learn, not replace learning.
For questions related to keeping yourself and the Wellesley community healthy during the pandemic, please check the Keeping Wellesley Healthy page regularly.
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.