The Big Ideas in CS230

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

After completing the course, you should be able to:


How to Succeed in CS230

What you can do. We 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:

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:

Office Hours. Attending office hours is an expected and normal part of the learning experience. Moreover, office hours are an opportunity for you to take ownership of your own learning experience—to ask questions that will help you better understand the material, connect it to topics you personally care about, etc. We expect to see you at office hours regularly, asking questions, engaging with the materials, and supporting your peers.


Equipment and Materials

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. Unfortunately, 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. The system is catered for you to get help from your peers. That is, the course staff will not be monitoring it for questions—they will be available to help you in person, at office hours. 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! 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. You are also encouraged to use Courselore to find people to join a study group. Please plan to check Courselore on a daily basis.

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. A digital copy of the textbook is linked from the course schedule. You’re expected to read the relevant chapters from the textbook before coming to class, and before starting the assignments.

Slides. In the syllabus, each lecture is linked to class slides. 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). Moreover, please expect that the slides may be tweaked by the instructors before class.

Java Documentation. Learning to get comfortable with reading and writing documentation is an important skill we will practice in the course.


Course Requirements

Course Etiquette. CS 230 is following the CS department guidelines, which are designed to create a positive and productive learning environment. These guidelines emphasize respect, integrity, inclusivity, and transparency, ensuring that our department prepares students to lead in a world shaped by computation and data. For a detailed description of these principles and guidelines on attendance, timeliness, respect for others, exam policies, and how to share your thoughts with us, please refer to the Computer Science Department Guidelines.

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. In labs you will be working with a partner. Labs are not a race to the finish, but are your opportunity to practice and explore the material together with your partner. A successful lab is one where both partners are on the same page about their solution for the tasks, they are communicating honestly and continuously, and are willing to ask for and offer help to one another. Our labs this semester will be organized on Google classroom. You should have received an invitation for it. That is where you will find instructions for each lab, how to prepare, what to submit, as well as solutions for some of the tasks. These solutions will be provided by midday on Wednesday. In order to prepare for lab, you will also have to submit some exercises (labeled “Prelab” in Google classroom). These are due Mondays at 7pm. In order to get credit for lab, you have to submit the material described in the instructions, as well as a self-assessment, that asks you to engage with the material, the code you wrote, and your learning. These are due Friday at 5pm. You are expected to check the calendar regularly to make sure you submit what is necessary on time.

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

Quizzes: Every chapter we cover from the textbook have a quiz associated with it. Each quiz is due before class the day of the readings are assigned, and is linked from the course schedule. Upon submission, you will see which questions you got wrong; you can submit the quiz as many times as you want and only the final submission will be graded. Please use this as an opportunity to check your understanding.

Exams: There will be two midterms and one final, scheduled exam during exam period. The midterms will be done on paper during a regular class period, and will not require the use of a compiler. The dates of the exams are listed on the schedule. Please mark the exam dates in your calendars, as they are not flexible. Moreover, all exams are in-person—we do not allow remote exams. Lastly, the final exam will be at a fixed date and time during the College’s exam period, scheduled by the registrar.


Anonymous Feedback Form

We value your feedback! If you’d like to provide us with feedback anonymously, please fill out this form.