CSCI 150 Syllabus

Contact Information

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

Cyntia's Office Hours:        M 11:00 AM - 1:00 PM, F 2:00 - 4:00 pm, King 223A

Meeting Time and Location

Time: 10:00-10:50 MWF
Location:King 106 Zoom

Revised Syllabus Post Spring Break

Labs

Labs will be completed using Google Colab and submitted via blackboard.

Final Project

The final project will be writing a program of your choosing. It must include functions, if/else/elif statements, and loops. This will be due by 7pm on Wednesday May 13th.

Class Participation

You can now receive class participation for each lecture in one of three ways:
  1. Attend the zoom livestream of the lecture, and participate in polling and small group discussion.
  2. Watch the lecture video with at least one other person in the class, and discuss it. Fill out this google form describing your discussion.
  3. Participate in discussion of the lecture on piazza.

Grading Breakdown

Final grades will be determined based on your scores as follows:

Component %
Reading Exercises 10%
Class Participation 15%
Prelabs 10%
Lab Assignments 50%
Final Project 15%
Note we no longer have exams, and we will be adding a final project.

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. Students are required to have either a physical iclicker+, or subscribe to the iClicker Reef polling system. Students who plan to take multiple semesters of Computer Science are strongly encouraged to purchase a physical iClicker. 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 responding for other students is an honor code violation. Clickers should be registered through Blackboard.

If you cannot afford an iclicker, 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 an iclicker and the Emergency Book Fund does not work for you, please talk to me and we will figure something out.

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

For this class we will be using a free Runestone interactive textbook. To register for this book, do the following:

  1. Go to runestone.academy
  2. Select "Enroll in a course"
  3. Fill in the required information, and enter "cs150s20" as the course name

We will have assigned exercises from this book due most classes. Exercises must be completed before 10am 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 March 18th and the second will be April 29th. 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: Wednesday May 13th at 7pm.

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 an iclicker, 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.

Fair Warning

This is not a lecture-oriented class or one in which mimicking prefabricated examples will lead you to success. You will be expected to work actively to construct your own understanding of the topics at hand, with the readily available help of the professor and your classmates. Many of the concepts you learn and problems you work will be new to you and ask you to stretch your thinking. You will experience frustration and failure before you experience understanding. This is part of the normal learning process. Your viability as a professional in the modern workforce depends on your ability to embrace this learning process and make it work for you. You are supported on all sides by the professor and your classmates. But no student is exempt from the process and the hard work it entails.

Academic Dishonesty

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

Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, given the question "how did you do X?", a great response would be "I used function Y, with W as the second argument. I tried Z first, but it doesn't work". An inappropriate response would be "here is my code, look for yourself". You should never look at someone else's code, or show someone else your code.

You are always allowed to use the textbook, and any resources provided by the professor. You are not allowed to use any other sources except when specified in the assignment. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, and will be reported. We will be running MOSS, an automated plagiarism detection tool, on all handins.

There are consequences to cheating on two levels - the consequences for your grade, and the consequences at the college level. Within class, the first time cheating on a lab or prelab will result in a 0 on the assignment. A second time on a programming assignment, or first time on an exam or final project will result in failing the class. All honor code violations will be reported to the college honor code committee

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.