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:
- 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.
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:
- Programming is hard: Try not to blame yourself for your mistakes; give yourself more time, and ask for help when needed.
- Programming is a skill: The best programmer has made every mistake in the books!
- Set aside time in your calendar to work on the material throughout the week. Some weeks you might have to spend well over 12h.
- Attend all lectures, quit all social media while in class.
- Attend all labs, quit all social media while in class.
- Treat labs as an opportunity to engage your curiosity, delve deeply into topics introduced in class, practice asking and answering questions.
- Read the book twice a week.
- Review the relevant book chapters, slides, and lab exercises BEFORE attempting to do the homework.
- Read homework description immediately (Friday or Saturday at the latest).
- Start working on the problem set as early as possible, and work on it a little bit every day, rather than trying to finish 1-2 days before it’s due.
- Start homework early, be prepared to make mistakes. That’s how you learn a skill!
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:
- They only work for two hours. Please don’t approach them outside their working hours or ask them to stay after their café hours have ended.
- Even if the tutor is a friend of yours, they have to respect the honor code with respect to CS 230, so don’t ask them for help that you wouldn’t ask of an instructor.
- One-on-one tutoring is also available for CS230. If you’d like to get some one-on-one tutoring, you can schedule it yourself, on the PLTC website. We will probably check in with you, to schedule a conversation about how you’ve been utilizing the existing resources, and come up with a plan for the future (which can include explicit goals we want the one-on-one sessions to achieve). Scheduled one-on-one sessions that you can no longer attend have to be canceled at least 24h in advance.
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:
- You start reading the assignment as soon as it becomes available.
- You should not start working on it, however, until you have reviewed the class slides, your notes, the lab exercises, and have resolved your questions by referring to the relevant chapters in the textbook.
- You re-read carefully the assignment and, using paper, pencil and eraser, you sketch the solution.
- Only after you have a reasonable understanding of the assignment and sketched the solution, you start coding on the computer.
- Avoid using online technical sites (such as stack overflow, etc) when you try to code. While they may be rarely useful, they are not geared towards novice programmers and it is more likely that they will confuse you. All of the answers that you need to work on your assignment are in the handouts, the book and the labs.
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.