CSCI 150 Syllabus

Contact Information

Instructor:            Cynthia Taylor                     ctaylor@oberlin.edu
Lab Instructor:    Steve Checkoway               

Cyntia's Office Hours:        M 10:00 - 11:59 am, F 3:00 - 5:00 pm, King 223A

Meeting Time and Location

Time: 9:00-9:50 MWF
Location: King 106

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;

Clickers, Course Website, and Textbook

We will be using the i<Clicker+ system as part of class participation. Questions will be asked every class period, 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/~ctaylor/classes/150F19/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: OBERLINCSCI150TaylorFall2019
    3. Subscribe to the book
  • Or you can purchase an access code for the book at the bookstore.

If you cannot afford this textbook, the Oberlin's Emergency Book Fund provides loans to Oberlin students to buy textbooks and supplies. Students are expected to pay back these loans only when they are financially able. These funds are administered through the Office of the Dean of Students, Wilder Hall, Room 105. If you cannot afford this textbook and the Emergency Book Fund does not work for you, please talk to me and we will figure something out.

We will have assigned exercises from this book due most classes. Exercises must be completed before 9am the day they are due (in advance of class).

Lab Assignments

Throughout the semester, you will have the opportunity to practice the course material through hands on lab assignments. There will be 11 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) 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.

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 as a final exam. The first midterm will be October 16th and the second will be November 25th. 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: Tuesday, December 17th at 2 pm.

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 %
Reading Exercises 7%
Class Participation 10%
Midterm Exams 20%
Final Exam 16%
Prelabs 7%
Lab Assignments 40%

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. If for some reason you will have to turn in a significant number of late labs, please meet with me to discuss it.

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. Your last hand in for an assignment will be the one graded.

Tutoring

The CS department hosts drop-in peer tutoring hours in both CS labs in the evenings and on weekends. If you would also like an one-on-one tutor, Oberlin College provides free tutors for this course. If you would like a tutor, please contact Donna Allen from Student Academic Services in Peters 118.

Accessibility

I am committed to making this class accessible to all students. If you have accessibility needs, please email me or come discuss them with me. Things you might want to discuss accomodations for include physical and mental disabilities, both permanent and temporary, any situation that is causing you to not be able to attend class or spend as much time on this class as you would like (stress, family situations, work hours, just going through a rough time), not having access to computers, not being able to afford the textbook, anything that is keeping you from doing your best in this course. Let me know, and we'll figure something out.

Code of Conduct

Both Oberlin College and I personally value the diversity of perspective that each of you bring to this classroom and our study of Computer Science together. In this class, we must all commit to fostering a safe, inclusive and welcoming environment which will allow all of us to learn. Please respect the competance and hard work of your colleagues in this classroom. If you are made to feel uncomfortable in class or while working on class material, please notify me so we can take steps to address the situation. Students who are disruptive to class and our learning community will face consequences including potentially being removed from the course.

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.