Semester:  Spring 2019 
Room:  King 237 
Class Time:  Mon/Wed/Fri 10:00pm10:50am Mon/Wed/Fri 11:00pm11:50am 
Office Hours:  RH: T: 15:0017:00pm, W: 14:3016:30 CT: M: 15:3017:00, F: 13:0014:00 or by appointment 
Professor:  Roberto Hoyle and Cynthia Taylor 
email: 
roberto.hoyle AT oberlin edu cynthia.taylor AT oberlin edu Please include "cs151" in the subject. 
Office:  King 223c 
Phone:  x58424 
WEEK  DAY  ANNOUNCEMENTS  READING  HW 

1  Feb 04  Consider bookmarking Java for Python Programmers as a handy reference (PDF version) (Aug 28)  Course Overview  Lab 0  Intro to lab/Eclipse 
Feb 06  Introduction to Java Converting a Simple Program Conditional Execution and User Input for Loops (Optional) HFJ Ch. 1 

Feb 08  Variables and Functions Variable Scope Functions / Static Methods 

2  Feb 11  Introduction to Object Oriented Programming Primitives, Objects, and References Working with Strings 
Prelab 1 Lab 1  Playing with Java 

Feb 13  Last Day to Add/Drop  Inheritance Adding Methods to an Object Inheritance 

Feb 15  Generics Introduction to Generics 1 Introduction to Generics 2: Declaration and Instantiation 

3  Feb 18  Prelab 2 Lab 2  More Java 

Feb 20  Java Collections (Read Zyante 1.4, 1.5) 

Feb 22  Data Structure: Array Lists, Iterators (Read Zyante 2.1,2.2) 

4  Feb 25  Data Structure: Stacks Data Structure: Queues (Read Zyante 2.3, 2.4) 
Prelab 3 Lab 3  MyArrayList 

Feb 27  Debugging  
Mar 01  RJH Travelling Guest lecturer TBA 
No Class Today  
5  Mar 04  Algorithm Analysis
(Read Zyante 3.13.3) 
Prelab 4 Lab 4  Maze Solver 

Mar 06  Algorithm Analysis
(Read Zyante 3.43.6) 

Mar 08  Data Structure: Linked Lists (Read Zyante 4.14.12) 

6  Mar 11  Recursion

Prelab 5 Lab 5  LinkedLists and Runtime 

Mar 13  Recursion


Mar 15  Data Structure: Trees


7  Mar 18  Data Structure: Trees

No lab this week, but Prelab 6 is due on Monday, March 18th  
Mar 20  Review for exam  
Mar 22  Midterm Exam [topics]  
Mar 25  Spring Break (Mar 2331)  
Mar 27  
Mar 29  
8  Apr 01  Data Structure: Balanced Trees

Prelab 6 Lab 6  Binary Tree Methods 

Apr 03  Data Structure: Balanced Trees


Apr 05  Data Structure: Maps and Sets (Read Zyante 8.18.3) 

9  Apr 08  Last Day for P/NP, CR/NE, or Withdraw 
Data Structure: Maps and Sets Data Structure: Priority Queues
(Read Zyante 9.19.2) 
Prelab 7 Lab 7  Web Page Index (Search Engine Part 1) 
Apr 10  Data Structure: Maps and Sets Data Structure: Priority Queues
(Read Zyante 9.39.4) 

Apr 12  Data Structure: Hashtables (Read Zyante 10.110.3) 

10  Apr 15  Data Structure: Hashtables (Read Zyante 10.410.6) 
Prelab 8 Lab 8  Process Queries(Search Engine Part 2) 

Apr 17  Data Structure: Hashtables (Read Zyante 10.710.8) 

Apr 19  Data Structure: Tries  
11  Apr 22  Data Structure: Graphs
(Read Zyante 11.111.2) 
Prelab 9 Lab 9  Million Monkeys 

Apr 24  Data Structure: Graphs
(Read Zyante 11.311.4 ) 

Apr 26  Data Structure: Graphs
(Read Zyante 11.511.6) 

12  Apr 29  Data Structure: Graphs
(Read Zyante 11.711.9) 
Prelab 10 Lab 10  Boggle 

May 01  Data Structure: Graphs
(Read Zyante 11.1011.13) 

May 03  Algorithm: Insertion and Selection Sort Algorithm: Linear & Binary Search (Read Zyante 12.112.3, 13.1  13.2) 

13  May 06  RJH Travelling Guest lecturer TBA 
Algorithm: Merge sort Algorithm: Lower bound of search (Read Zyante 14.1) 
Prelab 11 Lab 11  Kevin Bacon Game 
May 08  More Sorting Algorithms
Quickselect (Read Zyante 14.214.4) 

May 10  Review and class wrapup 
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 objectoriented 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:
We are using an interactive zybook this semester. You can buy the book online, or buy a code for it at the book store. To get the book:
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 4). 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 Success Programs. 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 walkin 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 uptodate list can be found here.