Lectures: MWF, 11:00AM – 11:50AM, Somewhere in Oberlin College…
Instructor: Roberto Hoyle (roberto.hoyle@oberlin.edu)
Office: King 223C
Office Hours: Wednesday/Thursday 2-4pm
Phone: x58424

Discussions

Discussions will be held using Piazza. The enrollment link is on Blackboard.

Textbooks

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:

  1. Sign in or create an account at learn.zybooks.com
  2. Enter zyBook code: OBERLINCSCI151HoyleSpring2023
  3. Subscribe

Mask Policy

The Oberlin Computer Science Department is dedicated to making Computer Science accessible to all students. Because of this, we will be requiring that all students wear masks in our classrooms and lab spaces this semester. By masking, you are not only demonstrating respect and kindness for your classmates, but also making sure that medically at-risk students have a learning experience where they can feel comfortable and safe. Masking will be required for classes, lab periods, drop-in lab helping, and anytime you are using the CS labs or offices. If you have forgotten to bring a mask with you, an instructor can provide you with one.

Course Description

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.”

Goals and course objectives My goals and objectives for students taking this course are as follows:

  1. Understand Big-O measurements and why it is of great importance to data structures and algorithms
  2. Study common algorithms used in computer * Sorting: Bubble, insertion, shell, merge, quick, heap, radix
    • Searching/Selection: Linear, binary, quick
  3. Become skilled in common data structures (lists, stacks, queues, trees, heaps, hashtables) * Be able to create any of these from scratch – structure and operations
    • Know the running times for the most common operations
    • Be able to reason about which structure is most appropriate for a given task
  4. Become fluent in Java programming including * Design and creation of interworking classes
    • Proper use of visibility modifiers
    • Creation and handling of exceptions
    • Regular use of Javadoc
  5. Gain experience using various tools in the Java/Linux environment
  6. Develop the habits of proper coding and thorough testing