Fall 2016 CS230
This is a course about data structures and we happen to use java
Lecture 1: Intro to CS230
Labor Day: no classes
Lecture 2: Java constructs, conditionals, iteration
Lecture 3: User-defined java classes
Lecture 4: Arrays
Lecture 5: Arrays of Objects
Lecture 6: Polymorphism via inheritance
Lecture 7: Interfaces
Lecture 8: Collections and Stacks
Pres. Johnson's inauguration
Lecture 9: Analysis of Algorithms
Lab 5: In-class Midterm Exam 1
Lecture 10: Linked Lists
Lecture 11: Queues
Lecture 12: Searching and Sorting
Lecture 13: Introduction to Graphs
Lecture 14: Graph traversals: DFS
Lecture 15: Graph traversals: BFS, Graph Toplogical sort
Lecture 16: Hash tables
Lecture 17: Graphical User Interfaces
Lecture 18: GUI Layout Managers
Lecture 19: Trees
Exam 2: Take home due
Lecture 20: Tree implementation
Lecture 21: Binary Search Trees
Lecture 22: Priority Queues and Heaps
Lecture 23: Advanced Algorithms
Lecture 24: NP-complete
Exam 3: Take home due
Last day of classes
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.
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 257), at 11:10AM-12:20PM (section 02 in SCI 257), and at 1:30PM-2:40PM (section 03 in SCI E111). Labs are held on Wednesdays at 8:30am and 10:30am in both SCI 257 and SCI E101, and at 2:15pm in SCI 257 only. In labs you will be working either with a partner, or individually. 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 provided 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" further down.)
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.
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 (which is good practice and not difficult) 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-fall2016 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. 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.
Final Project: During the last few weeks of the semester, project teams of 2-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 Your final grade for the course will be computed as a weighted average of several components. One of them is class participation that includes coming to lectures, coming to labs and doing the work, and actively participating in discussions. The relative weight of each component is shown below: