CSCI 150 Syllabus

Contact Information

Instructor:            Adam Eck                     aeck       [AT] oberlin [DOT] edu
Lab Instructor:    Dylan McKay                dmckay [AT] oberlin [DOT] edu

Adam's Office Hours:        M 1:30-3:00 PM (Zoom), F 4:30-5:30 PM (Zoom)

Meeting Time and Location

Lecture Time (both Sections): 9:00-9:50 MWF
Location: Zoom (link on Blackboard)

Lab Time (Section 01): 2:30-4:20 PM W
Lab Time (Section 02): 1:00-2:50 PM R
Location: Same Zoom Room as Lecture (link on Blackboard)

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

Course Website and Textbook

Information will be primarily communicated through the course website https://cs.oberlin.edu/~aeck/Fall2020/CSCI150/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 "cs150f20" (without quotes) as the course name

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

Class Participation

Active participation in this class will be an important process in your learning. Participation will take on several forms. First, questions will be asked during class periods using the Zoom polling feature, 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. Second, we will have many small group discussions in class, where we work together to develop solutions to problems (in the forms of algorithms and code), as well as discuss important topics related to computer science and technology. Finally, we will be using Piazza for asynchronous discussions where students anytime can post questions, receive and provide answers to questions, and continue discussions from class.

Full credit for class participation can be earned in two ways: (1) based on the number of class periods in which you provide an answer to Zoom polling questions, and (2) based on the number of discussions you participate in on Piazza. Both ways of earning credit are equivalent so that this class will be fully accessible for students who need to participate asynchronously due to time zone differences, illness, or hardship.

Students are responsible for their own participation and may not respond for other students.

Weekly Reflections

To help students connect with the material we will learn in class, you will be asked to complete short weekly reflections each week. These reflections are designed to give you the opportunity and space to reflect on (1) what you have learned during this week, (2) what you would like to know more about, and (3) how you might connect something from computer science with something you thought about during the week (e.g., wishing you had a tool to help in another class, how you used a problem solving technique in your daily life, etc.). These reflections will be short (around three paragraphs) and should take about 30 minutes per week.

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!

Lab Assignments

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

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

There will be no exams in this course.

Final Project

In place of a final exam, we will instead have a final project. During the final project, students will work in groups to explore their shared interests in Computer Science. Final projects can take on several forms, including but not necessarily limited to (1) developing a software program (e.g., a tool the group finds useful, a game, etc.), (2) studying existing solutions to problems of interest (e.g., exploring data science algorithms from established APIs), and (3) researching important topics in computer science (e.g., ethical implications of using algorithms for social decision making). Each final project will include a brief writeup of the experience, as well as a short presentation.

The project will require equal participation by all members of the group.

The final project will be due when the final exam would have been, at the time assigned by the Registrar's office: Saturday Dec 12 before 4:00 PM.

Grading

Final grades will be determined based on your scores on the labs, weekly reflections, final project, and class participation as follows:

Component %
Initial Questionnaire 2%
Prelab Assignments 5%
Reading Exercises 8%
Class Participation 10%
Weekly Reflections 10%
Final Project 10%
Lab Assignments 55%

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, due to hardship or any reason you will need to turn in a significant number of late labs, please meet with me to discuss it.

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 (illness, stress, family situations, work hours, just going through a rough time), not having access to computers, anything that is keeping you from doing your best in this course. Let me know, and together we will figure something out.

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.

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. It is completely natural and common to 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 that 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 strongly 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 the final project can 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.