Semester: | Fall 2016 |
Room: | King 323 |
Class Time: | Mon/Wed/Fri 9:00pm-9:50am |
Office Hours: | Wednesday, 15:00-16:30pm Thursday, 2:30-4:00pm or by appointment |
Professor: | Roberto Hoyle |
email: |
roberto.hoyle AT oberlin edu Please include "cs151" in the subject. |
Office: | King 229 |
Phone: | x58424 |
WEEK | DAY | ANNOUNCEMENTS | READING | HW |
---|---|---|---|---|
1 | Aug 29 | Consider bookmarking Java for Python Programmers as a handy reference (PDF version) | Course Overview | Lab 0 - Intro to lab/Eclipse |
Aug 31 | Introduction to Java (Read: Ch 1) | |||
Sep 02 | Objects and reference variables (Read: Ch 2) | |||
2 | Sep 05 | Labor Day [No Class] | ||
Sep 07 | Last Day to Add/Drop (Sep 08) | Introduction to Object Oriented Programming (Read: Ch 3) | Prelab 1 Lab 1 - Playing with Java |
|
Sep 09 | Inheritance and Generics (Read: Ch 4) |
|||
3 | Sep 12 | |||
Sep 14 | Java Collections (Read: Ch 6) Data Structure: Array Lists, Iterators (Read Ch 15) |
|||
Sep 16 | ||||
4 | Sep 19 | Data Structure: Stacks Data Structure: Queues (Read Ch 16) |
Prelab 2 Lab 2 - MyArrayList |
|
Sep 21 | Algorithm Analysis
(Read Ch 5) |
|||
Sep 23 | ||||
5 | Sep 26 | Data Structure: Linked Lists (Read Ch 17) |
Prelab 3 Lab 3 - Maze Solver |
|
Sep 28 | Recursion
|
|||
Sep 30 | ||||
6 | Oct 03 | Data Structure: Trees
|
Prelab 4 Lab 4 - LinkedLists and Runtime |
|
Oct 05 | ||||
Oct 07 | Data Structure: Balanced Trees
|
|||
7 | Oct 10 | Review for exam | No lab this week, but pre-lab is due MondayLab 5 Prelab 5 |
|
Oct 12 | Yom Kippur [No Class] | |||
Oct 14 | Midterm Exam [topics] | |||
Oct 17 | Fall Break (Oct 15-23) | |||
Oct 19 | ||||
Oct 21 | ||||
8 | Oct 24 | Data Structure: Balanced Trees
|
Prelab 5 Lab 5 - Binary Tree Methods |
|
Oct 26 | Data Structure: Maps and Sets Data Structure: Priority Queues
(Read Ch 21) |
|||
Oct 28 | ||||
9 | Oct 31 | Last Day for P/NP, CR/NE, or Withdraw (Nov 01) |
Prelab 6 Lab 6 - WebPageIndex (Search Engine Part 1) |
|
Nov 02 | Data Structure: Hashtables (Read Ch 20) |
|||
Nov 04 | ||||
10 | Nov 07 | Prelab 7 Lab 7 - ProcessQueries (Search Engine Part 2) |
||
Nov 09 | Data Structure: Tries | |||
Nov 11 | Data Structure: Graphs
(Read Ch 14.1,14.2) |
|||
11 | Nov 14 | Prelab 8 Lab 8 - Million Monkeys |
||
Nov 16 | Data Structure: Graphs
(Read Ch 14.3) |
|||
Nov 18 | Data Structure: Graphs
(Read Ch 14.3-14.5) |
|||
12 | Nov 21 | Prelab 9 Lab 9 - Boggle |
||
Nov 23 | Algorithm: Insertion and Selection Sort Algorithm: Linear & Binary Search (Read Ch 8.1-8.3, 5.5-5.6) |
|||
Nov 25 | Thanksgiving Break (Nov 24-27) | |||
13 | Nov 28 | Algorithm: Insertion and Selection Sort Algorithm: Linear & Binary Search (Read Ch 8.1-8.3, 5.5-5.6) (continued) |
||
Nov 30 | Algorithm: Merge sort Algorithm: Lower bound of search (Read Ch 8.5, 8.8) |
Prelab 10 Lab 10 - Kevin Bacon Game |
||
Dec 02 | More Sorting Algorithms
Quickselect (Read Ch 8.4,8.6-8.8) |
|||
14 | Dec 05 | |||
Dec 07 | Review and class wrapup | |||
Dec 09 | ||||
Dec 14 | Final Exam (2-4pm) [topics] |
From the Oberlin catalog course description:
This course builds upon the principles introduced in CSCI 150 and provides a general background for further study in Computer Science. The course will cover object-oriented programming concepts; the design and implementation of data structures (linked lists, stacks, queues, trees, heaps, hash tables, and graphs) and related algorithmic techniques (searching, sorting, recursion); and algorithm analysis. Students will be expected to complete a number of programming projects illustrating the concepts presented.
My goals and objectives for students taking this course are as follows:
The text for the course is Data Structures and Problem Solving Using Java, Fourth Edition by Mark Weiss. All of the code from the text is available on the author's website: http://users.cis.fiu.edu/~weiss/dsj4/code/code.html
You can use the 3rd edition if you want, but you might want to cross-check the readings.
A copy should be on reserve in the library.
Course grades will be calculated based on the following distribution:
The distribution might be adjusted based on the progression of the course.
Programming projects will generally consist of two major components:
If a portion of your program is not working correctly, please clearly indicate it in the comments at the beginning of the file and in the methods that are not working. Problems that I discover are graded more severely than those you discover.
Programming assignments will be graded on both correctness as well as programming style. Good programming style includes the following:
/** * A demonstration header used for the class syllabus. Additional lines * give additional information in JavaDoc. * * @author Roberto Hoyle * Spring 2012 */
Regular class and lab attendance and participation is expected. Please talk to me if regular class attendance is going to be a problem.
There will be a number of assignments made in this class. I expect every student to attempt each assignment and turn in the results. You are encouraged to complete every assignment as this is one of the most effective ways to learn the material.
If you know that for some reason you will not be able to submit the assignment before the deadline, you should contact me in advance of the deadline. Extensions are only granted in exceptional circumstances, but need to be done in advance.
Late submissions of lab assignments will be penalized up to 50% per day after the deadline. No late prelabs will be accepted. You will be allowed 1 late day in each half of the semester and 1 late day that can be used whenever (total of 3). You must include the fact that you are using one of your late days in the README document for an assignment.
If you have a disability that might impact your performance in this course, or requires special accommodation, please contact me as soon as possible so that appropriate arrangements can be made. Support is available through Student Academic Services, specifically Jane Boomer. You will need to contact them to get your disability documented before accommodations can be made.
I have very low tolerance for academic dishonesty, and will vigorously pursue available remedies for any incidents. All work in this class is to be performed according to the Oberlin Honor Code. Specifically I expect that:
Illustrative examples:
/* based on insertion sort from Weiss 3rd Ed, p. 306 */
All assignments must include the following signed statement:
"I have adhered to the Honor Code in this assignment."
Electronic submissions should include the honor statement in either the README file or header comments and must include your name.
Contact me if you are interested in a Student Academic Services approved tutor.
The CSMC might hold walk-in tutoring sessions as well.
The CS department will be hiring a couple of students to work as lab helpers. They will be in the upstairs lab during the hours posted below.
The most up-to-date list can be found here.