CSCI 150 Syllabus

Contact Information

Instructors:            Adam Eck                     aeck       [AT] oberlin [DOT] edu
                                 Cynthia Taylor             ctaylor   [AT] oberlin [DOT] edu
Lab Instructor:      Sam Taggart                staggart [AT] oberlin [DOT] edu

Adam's Office Hours:        M 1:30-3:00 PM (King 223D), R 10:30-11:30 AM (King 135), F 3:30-4:30 (The Local Coffee & Tea)
Cynthia's Office Hours:     M 3:30-4:30 PM (King 229), F 11:00-12:00 PM (King 229)

Meeting Time and Location

Sections 1-3 with Adam: 9:00-9:50 MWF (Science Center N292)

Sections 4-6 with Cynthia: 10:00-10:50 MWF (Science Center A162)

Course Overview

CSCI 150 provides an introduction to problem solving and algorithmic thinking through computer science, with programming used as a method for implementing solutions to problems. The course covers fundamentals of computer programming including data types, variables, expressions, statements, control structures, arrays, and recursion. It also introduces object-oriented concepts including classes, methods, inheritance, and polymorphism. Python is used as a programming language to highlight and demonstrate these fundamentals. No prior programming experience is expected or needed.

Course Objectives

  1. Gain familiarity with the fundamentals of computer science as a problem-solving discipline
  2. Learn to think about solutions from an algorithmic perspective
  3. Practice specifying problems and designing algorithms to solve problems
  4. Acquire experience implementing solutions to problems using the Python programming language through lab assignments
  5. Understand how computer science relates to and can interact with other disciplines
  6. Experience the fun of computer science!

Topics

Expressions, Types, and Variables; Loops; Image Manipulation; Functions; Conditionals; Strings; Arrays; Boolean Logic; Recursion; File I/O; Classes and Inheritance; Searching, Sorting, Asymptotic Running Time; Data Structures; Multiprocessing

Clickers, Course Website, and Textbook

We will be using the i<Clicker+ system as part of class participation. Questions will be asked most class periods, and students are expected to participate by responding with their best guesses as to the correct answers. You will not be graded based on the correctness of your responses, so please just provide your best guess as to the correct answer. Students are responsible for their own participation and may not respond for other students. Clickers should be registered through Blackboard.

Information will be primarily communicated through the course website http://cs.oberlin.edu/~aeck/Fall2018/CSCI150/index.html and Blackboard. Please check both regularly for announcements, class schedule, lab assignments, etc.

For this class we will be using a Zyante interactive textbook. You can purchase this book in one of two ways:

  • From Zyante:
    1. Sign in or create an account at https://learn.zybooks.com
    2. Enter zyBook code: OBERLINCSCI150Fall2018
    3. Subscribe to the book
  • Or you can purchase an access code for the book at the bookstore.

We will have assigned exercises from this book due most classes. Exercises must be completed before 9am the day they are due.

Lab Assignments

Throughout the semester, you will have the opportunity to practice the course material through hands on lab assignments. There will be 11-12 lab assignments in total. Please expect to spend around 8-10 hours per week between the scheduled lab period (Wednesday from 2:30-4:20 PM, Thursday 1:00-2:50 PM, Thursday 3:00-4:50 PM) and your own time.

Both a lab instructor and student lab helper will be available in each lab period to support you and provide assistance while you begin each lab assignment. Please attend lab each week during the period you signed up for to help you complete your lab assignments.

Several of the labs will also include prelab assignments, where you will start to think about how to solve the labs before they begin. Please expect to spend around an hour on each prelab.

Exams

Throughout the semester, there will be two midterm exams, as well a a final exam. The first midterm will be in mid-October and the second in late November. Both will test you over the material covered thus far during the semester, with an emphasis on the more recent material covered. Questions will include both general problem solving questions, as well as questions about program code (asking you to analyze existing code, find and fix bugs from given code, or write your own code to solve a problem).

The final exam will cumulative and will be held at the time assigned by the Registrar's office:

  • Monday December 17 from 2:00-4:00 PM for students in the 9AM class sections (Sections 1-3) with Adam
  • Wednesday December 19 from 2:00-4:00 PM for students in the 10 AM class sections (Sections 4-6) with Cynthia

There will also be a short questionnaire the first week of the course that gives you an opportunity to reflect on your initial thoughts about computer science and this course, as well as to help us get to know each one of you. The questionnaire will be graded based on participation -- if you turn it in on time with every question answered, you will automatically receive full credit. There are no right or wrong answers to many of these questions, so please do not stress out while answering!

Grading

Final grades will be determined based on your scores on the labs, exams, and class participation as follows:

Component %
Initial Questionnaire 2%
Reading Exercises 5%
Attendance and Participation 10%
Midterm Exams 20%
Final Exam 20%
Lab Assignments 43%

Late Homework Policy

Unless otherwise specified, each lab will be due at 10 PM on Tuesday night of the week following the start of the lab assignment. Late handins are strongly discouraged. At your discretion, you can use up to four free "late passes", which each grant you an additional day to complete a lab assignment (more than one can be used per assignment). Please make sure you let the lab instructor know in advance (i.e., before the lab deadline) when you plan on using your late passes by filling out the late day form on Blackboard.

Otherwise, late handins will be penalized 50% if handed in up to 24 hours late. Handins are considered late if they are turned in one minute or more after the assignment deadline. After 24 hours, late handins will not be graded.

As you will learn in the first lab, you can turn in your assignment multiple times, even if you only have part of the assignment finished. Please make it a habit to turn in your assignment after each part is completed so that you are insured to receive partial credit, just in case you run into any problems turning the entire assignment in on time.

Tutoring

Oberlin College provides tutors for several classes, traditionally including this course. If you would like a tutor, please contact Donna Young from Student Academic Services in Peters 118.

Disabilities

The College makes reasonable accommodations for persons with disabilities. Students should notify the Office of Disability Services located in Peters G-27/G-28 and their instructor of any disability related needs. For more information, see http://new.oberlin.edu/office/disability-services/index.dot. Any student eligible for and needing academic adjustments or accommodations because of a disability (including non-visible disabilities such as chronic diseases, learning disabilities, head injury, attention deficit/hyperactive disorder, or psychiatric disabilities) is requested to speak with the professor.

Academic Dishonesty

Students are expected to adhere to the Oberlin College Honor Code. Any violations will be reported to the Honor Code Committee.

On lab assignments, some parts will ask you to complete the part by yourself, while others will allow you to collaborate with a partner. Only those parts marked as a "partner" part of the assignment can you work on the same code with someone else. Otherwise, feel free to discuss the assignments with your peers, including general approaches to solving the problem (e.g., "think about using a loop to iterate over every element of a list", "a modulus operation lets you keep counting between 1 and 4"), but you should never share code (unless explicitly permitted as a "partner" part, and then only with a single partner), nor describe the exact code needed to solve the assignment. Furthermore, you can never edit non-partner's code. If you do discuss with another student, please make note of with whom you discussed in your submission (i.e., in the README file). For "partner" parts of the lab, also make sure to note who you worked with in your README file.

If you have any questions about what is permitted and what is not, please feel free to ask your lab instructor or your professor.

For every assignment, students must indicate whether they followed the Honor Code in completing the assignment. If so, students should end each assignment by writing:

I have adhered to the Honor Code in this assignment.