CAS CS 112 B1 - Spring 2012 - Introduction to Computer Science II


Course Overview

Official Description: Covers advanced programming techniques and data structures. Topics include recursion, algorithm analysis, linked lists, stacks, queues, trees, graphs, tables, searching, and sorting.

Detailed Overview This course starts by quickly revisiting, and then building upon, advanced programming concepts in Java taught at the end of CS 111, such as recursion. Then, the main focus of the course is on the design, analysis and implementation of fundamental data structures used throughout computer science. These include linked lists, stacks, queues, trees, hash tables, graphs, as well as specialized methods for searching and sorting. All of our implementations will be in Java. The emphasis in teaching this course centers around the following:

Class meeting time:   Tues/Thurs 12:30-2:00,   CAS 324.

Lab meeting times:    Mon 1-2, Mon 2-3, and Mon 5-6 in the Undergraduate Teaching Laboratory, EMA 304.

Class syllabus.

Instructor:  Prof. John W. Byers
Email: byers @ cs . bu . edu [preferred]
Phone: 617-353-8925 [do not leave voice-mail; use e-mail instead]

Office Hours:    Mon 9:30 - 11 and Thurs 11-12:30, held in MCS 270

Teaching Fellow:  Chong Wang

Email: wangch @ cs . bu . edu

Office Hours:    Mon 4-5 and Wed 3-5 in EMA 302 (CS Undergrad lab).

Labs:    Here is the lab homepage.

Prerequisites:     This course is designed for students who already program with a CS 111 level of proficiency in Java and a Java IDE (Integrated Development Environment), such as Dr. Java or Eclipse. If you do not have significant previous exposure to programming, then you are requested to transfer to CS 111. Please speak to us right away if you are not sure if your programming background is adequate.

Textbooks:     The required textbook is:

Topics:     We will no doubt drift from any formalized plan, but a rough schedule of where we are headed is provided in the roadmap below. A more detailed and continually updated schedule will be maintained on the main course homepage.

Workload:     Be forewarned -- the workload in this course will be heavy. To master the conceptual material covered in lecture and to become expert at implementing applications built upon basic data structures, there will be assignments due approximately every week. We will alternate between assignments covering written and short programming exercises, and longer programming assignments.

Grading:     The course grade will break down as follows:

Exams:     There will be one eighty minute in-class midterm held during the middle of the semester in early March, probably Thursday, March 8. The cumulative final will be held during the normal two-hour final exam slot, Thurs, May 10 from 9-11AM. Please make your spring break and end-of-semester travel plans accordingly. In the event of serious illness documented by a doctor's note, makeup examinations will be given orally.

Homework Assignments and Submission:     Assignments will be due every Thursday. We will alternate between larger programming assignments and shorter problem sets of written exercises, with the assignments worth a total of 50% of the grade. We will post general guidelines that we will use to grade your assignments. Other specific guidelines will be provided on a per-assignment basis. To submit your assignments you must use the WebSubmit program, as in CS 111, usage of which will be covered in lab. All assignments will be tested for originality by an automated software tool.

Attendance:     It is expected that you will attend lecture and the laboratory section for this course and I will sometimes take attendance at the beginning of lecture. Some material covered in lecture and lab will not be covered by our textbooks. I also ask that you arrive in class on time, since it is highly disruptive to have students flowing in throughout the class period. Moreover, when students are at a borderline between grades, I will factor in attendance before making a final determination.

Late Policy:     Programming assignments will typically be due Thursdays at 10PM. Written exercises will typically be due Thursdays at the beginning of class (12:30). During the course, you will have three opportunities to turn in an assignment up to 24 hours late with no penalty. At most TWO of these may be used for programming assignments. No additional time will be granted, nor will additional late submissions be granted. As you likely already know, programming a fully functional solution to an assignment (even after you have mastered the key concepts) can take more time than you expect, so plan to finish a day or two early.

CAS Academic Conduct Code:     Academic standards and the code of academic conduct are taken very seriously by our university, the College of Arts and Sciences, and the Department of Computer Science. Course participants must adhere to the CAS Academic Conduct Code -- please take the time to review this document if you are unfamiliar with its contents.

Collaboration Policy: The collaboration policy for this class is as follows.

The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam scores (accounting for half of your grade) will reflect it.