Spring 2017 CS230

This is a course about data structures and we happen to use java

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.

Meet your instructors & tutors

Click here for CS230 drop-in calendar


CS230 Spring 2017 schedule


Please check this page frequently, as it is subject to change.

Monday

Tuesday

Wednesday

Thursday

Friday

Jan 23

Jan 24

Lecture 1: Intro to CS230
Reading: LDC Ch 1 & 2

(Slides)

Jan 26

Pre-Lab 1

Lab 1: DrJava, Strings, Scanner

Jan 27

Lecture 2: Java constructs, conditionals, iteration
Reading: LDC Ch 3 & 4. (Optional: 3.6 Formatting Output; 3.7 Enumerated Types.)

Jan 30

Jan 31

Lecture 3: User-defined java classes
Reading: LDC Ch 5

Assign 1 Due

Feb 1

Pre-Lab 2

Lab 2: Classes & Objects

Feb 2

Pre-Lab 2

Lab 2: Classes & Objects

Feb 3

Lecture 4: Arrays
Reading: LDC Ch 7

Feb 6

Feb 7

Lecture 5: Arrays of Objects and Inheritance
Reading: LDC Ch 7 & 8

Assign 2 Due

Feb 8

Pre-Lab 3

Lab 3: Inheritance and Arrays of Objects

Feb 9

Pre-Lab 3

Lab 3: Inheritance and Arrays of Objects

Feb 10

Lecture 6: Polymorphism via inheritance
Reading: LDC Ch Ch 9.1 - 9.2

Feb 13

Feb 14

Lecture 7: Interfaces and Exceptions
Reading: LDC Ch 9.3 - 9.4 & Ch 10 (except 10.4)

Assign 3 Due

Feb 15

Pre-Lab 4

Lab 4: Exceptions and I/O

Feb 16

Pre-Lab 4

Lab 4: Exceptions and I/O

Feb 17

Lecture 8: Collections and Stacks
Reading: LDC Ch 14.1 - 14.9

Feb 20

Presidents Day

Feb 21

Monday Schedule

Assign 4 Due

Feb 22

Pre-Lab 5

Lab 5: Stacks

Feb 23

Pre-Lab 5

Lab 5: Stacks

Feb 24

In-class Midterm Exam 1

Feb 27

Feb 28

Lecture 10: Linked Lists
Reading: LDC Ch 14.10 - 14.14

Mar 1

Pre-Lab 6

Lab 6: Linked lists

Mar 2

Pre-Lab 6

Lab 6: Linked lists

Mar 3

Lecture 9: Analysis of Algorithms
Reading: LDC Ch 12

Mar 6

Mar 7

Lecture 11: Queues
Reading: LDC Ch 15.1 - 15.5

Assign 5 Due

Mar 8

Pre-Lab 7

Lab 7: Queues

Mar 9

Pre-Lab 7

Lab 7: Queues

Mar 10

Lecture 12: Searching and Sorting
Reading: LDC Ch 13

Mar 13

Mar 14

Lecture 13: Introduction to Graphs
Reading: LDC Ch 19.1 - 19.4

Mar 15

Pre-Lab 8

Lab 8: Graphs

Mar 16

Pre-Lab 8

Lab 8: Graphs

Mar 17

Lecture 14: Graph traversals: DFS
Reading: LDC Ch 19.5

Mar 20

Mar 21

Lecture 17: Graphical User Interfaces
Reading:

Assign 6 Due

Mar 22

Pre-Lab 10

Lab 10: GUIs

Mar 23

Pre-Lab 10

Lab 10: GUIs

Mar 24

Lecture 15: Graph traversals: BFS, Graph Toplogical sort
Reading: LDC Ch 19.5

Mar 27

Spring Break

Mar 28

Spring Break

Mar 29

Spring Break

Mar 30

Spring Break

Mar 31

Spring Break

Apr 3

Apr 4

Lecture 16: Hash tables
Reading: LDC Ch 20

Assign 7 due

Apr 5

Pre-lab 9

Lab 9: Hash Tables

Apr 6

Pre-lab 9

Lab 9: Hash Tables

Apr 7

Lecture 18: Trees
Reading: LDC Ch 6.3, 6.7

Exam 2: Take-Home Due

Apr 10

Apr 11

Lecture 19: Tree implementation
Reading: LDC Ch 16

Apr 12

Pre-Lab 11

Lab 11: Trees

Apr 13

Pre-Lab 11

Lab 11: Trees

Apr 14

Lecture 21: Binary Search Trees
Reading: LDC Ch 17.3

Project Description email (Phase 0)

Apr 17

Patriots Day

Apr 18

Lecture 22: Priority Queues and Heaps
Reading: LDC Ch 18

Assign 8 due

Project Specification (Phase 1)

Apr 19

Pre-Lab 12

Lab 12: Priority Queues

Apr 20

(Monday Schedule)

Apr 21

Lecture 23: Advanced Algorithms
Reading: LDC Ch 18

Apr 24

Apr 25

Lecture 24: NP-complete

Apr 26

Ruhlman Conference

Apr 27

Pre-Lab 12

Lab 12: Priority Queues

Apr 28

Lecture 25: Advanced Data Structures

May 1

May 2

TBD

Exam 3: Take-Home Due

May 3

In-class presentations

May 4

In-class presentations

May 5

Reading Period

May 8

Reading Period

May 9

Final Exams

May 10

Final Exams

May 11

Final Exams

May 12

Final Exams

May 15

Last day of Final Exams

May 16

Summer Break

May 17

Summer Break

May 18

Summer Break

May 19

Summer Break

Administrative details of CS230



Course Overview

Prerequisites The prerequisite for CS230 is CS111, Computer Programming and Problem Solving. Students with significant programming experience (including knowledge of Java), or those who have received less than a B- in CS111 need the permission of the instructor.

ComputersAll programming in CS230 will be done using DrJava. 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, we will not be able to help you trouble-shoot your own computer. The Documentation page has pointers to documentation for all the software packages used in CS230.

Course Directory The CS230 course directory is located at /home/cs230 on 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 ftp program (like Fetch on a Mac).

Course Group Please add yourself to the cs230-spring2017 google group. 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, feel free to 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 (not the newer, 3rd edition). It is on reserve in the Science Library. It is recommended that you read the relevant sections twice a week.

How to succeed in CS230

  • Prepare to spend at least 15 hours every week.
  • Attend all lectures, quit all social media while in class.
  • Attend all labs, quit all social media while in class.
  • Read the book and slides BEFORE attempting to do the homework.
  • Read homework description immediately, start thinking about it ASAP, not 1-2 days before it is due!
  • Start homework early, be prepared to make mistakes
  • Programming is a skill: The best programmer has made every mistake in the books!
  • Programming is hard: Do not blame yourself for your mistakes; just give yourself more time!


Course Requirements

Lectures and Labs There are two 70-minute lectures each week that will introduce the main content of the course. Every student is also 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. Lectures are held on Tuesdays and Fridays at 9:50-11:00 AM (section 01 in SCI E211), at 1:30PM-2:40PM (section 02 in SCI E111). Labs are held on Wednesdays at 8:30am and 10:30am and Thursdays at 10:30am and 1:30pm in SCI E101. In labs you will be working with a partner. 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 linked from the lab's web page, 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").

Supplemental Instruction (SI) Supplemental Instruction (SI) is an academic support program offered for selected Wellesley courses. Our academic SI leaders, Sam and Eliana, are trained and highly experienced in tutoring CS230. They will offer two study sessions 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 one of the SI sessions every week, as well as reviewing the handouts used in SI sessions.

Final Project: During the last few weeks of the semester, project teams of 3 students work on an extended programming project from scratch. After choosing an interesting application or problem, you will first build a skeleton of the object classes, methods, abstract data types and user interface needed for your application, and then fill in the details to create a fully working implementation. Each team will give a short presentation of their final project during the last two meetings of the semester, and will prepare a document with specifications, user's manual, code and documentation on their final project. Guidelines will be posted mid-semester. See our CS230 project gallery for information on student projects from recent semesters.

Exams: There will be three in-term, non-collaborative exams that are open book and open notes. The first is in-class and the other two are take-home. There will be no final exam. The take-home exams will require the use of a computer. You are not allowed to collaborate with anyone else on the take-home 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.

Participation Lecture and lab participation has a weight of 10% of the total course grade. Participation includes attendance, active participation in class discussions, and uploading 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:

  • Assignments: 25%
  • Final Project: 10%
  • Exam 1 (in-class): 15%
  • Exam 2 (take-home): 20%
  • Exam 3 (take-home): 20%
  • Class Participation: 10%
  • Total: 100%
Note that each assignment corresponds to about 3% of your final grade, and each lab to about 1% of your final grade. This course complies with the Wellesley College grading policy. While that policy asks faculty to hold each 100- and 200-level course with 10 or more students to an average of no higher than 3.33, it does not require faculty to grade on a "curve." 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 important that you submit your assignments according to these instructions.

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.
Late Assignment Policy. No late work will be accepted unless there are extenuating circumstances (e.g., sickness, personal crisis, family problems). In this case you may request an extension before the due date. The softcopy submission will be a dated file. If the formal solutions 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:
  • Assignments: Pairs of students.
  • Project: Teams of 3 students
  • Exams: Absolutely no collaboration

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 hard copy of work they did together.

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

  • Each team member has to read the assignment problems, think of how to go on solving it, and sketch some solutions, before meeting with their partner.
  • While working together, the work must be a true collaboration in which each member of the team will carry her own weight. It is not acceptable for two team members to split the work between them and work independently.
  • The fact that team members have to program together means that you need to carefully consider a potential partner's schedule before forming a team. You cannot be an effective team if you cannot find large chunks of time to spend at a computer together!
  • Except for the first assignment, when submitting an assignment, you have to decide on your partner for the next assignment.
  • Working with different partners is a good way to build community in the class. We strongly recommend that you pair up with several other students during the semester.

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 or (4) to view assignments, exams and solutions from previous terms of CS230. 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.

Anonymous Feedback Form

Tell us what's on your mind

To give anonymous feedback to the CS230 instructors about the course, please type it in the area below, type in the magic word that you were given in class, and press the Submit button.


Please type in the magic word: