CSCI 150 Syllabus

Contact Information

Instructor: Adam Eck
Email: aeck [AT] oberlin [DOT] edu
Office Hours: 10:00-11:30 AM M (King 223D), 3:00-4:00 PM F (King 223D)

Meeting Time and Location

Lecture Time (both Sections): 9:00-9:50 AM MWF
Location: King 106

Lab Time (Section 01): 2:40-4:30 PM W
Lab Time (Section 02): 1:00-2:50 PM R
Location: StudiOC Room 209

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!

Course Website and Textbook

Information will be primarily communicated through the course website https://cs.oberlin.edu/~aeck/Spring2022/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 "Sign Up"
  3. Fill in the required information and enter "cs150s22" (without quotes) as the course name

We will have assigned readings and interactive activities from this book due most classes. Specifically, activites must be completed before the lecture section at 9am the day they are due.

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 iClickers, and you 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.

If you become ill and need to miss class, alternative arrangements can be made for your participation. Please reach out to me by email if you need to miss class. Slides will be posted to Box (linked on our Blackboard page) for you to view asynchronously.

You are responsible for your own participation and may not respond for other students.

Weekly Reflections

To help you connect with the material we will learn in class, you will be asked to complete short weekly reflections. These reflections are designed to give you the opportunity and space to reflect on (1) what you found most challenging during the week, (2) what you would like to know more about, and (3) how you are doing. These reflections will be short (around three sentenes) and should take about 5 minutes per week.

There will also be a short questionnaire during 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 me get to know each one of you better. 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 worry about correctness.

Weekly reflections are due every Friday at 5:00 PM.

Lab Assignments

Throughout the semester, you will have the opportunity to practice the course material through hands-on lab assignments. There will be around 10 lab assignments in total. Each lab assignment consists of (1) a pair-programming warmup, to be completed in the weekly lab session, and (2) an individual programming component, to be completed by yourself outside of class. Please expect to spend around 7-9 hours per week on the assignments, including both the scheduled lab period (Wednesday from 2:40-4:30 PM, Thursday 1:00-2:50 PM) and your own time. These lab assignments are the homework assignments for the course.

Both a student lab helper and I will be available in each lab period to support you and provide assistance while you work on the warmup. Please attend lab each week during the period you signed up for to help you complete your lab assignments. Additional lab helper hours are also provided on Monday, Wednesday, and Thursday evenings, as well as Saturday and Sunday afternoons.

Exams

There will be no exams in this course.

Final Project

In place of a final exam, we will instead have a final project. This project will be a custom Python program that you will design and implement yourself. Your program can perform any task you choose, but it must utilize several key concepts from the course. Details about the program requirements will be announced in class and will be posted on the lab website.

The final project will be due when the final exam would have been, at the time assigned by the Registrar's office: Wednesday June 1 before 11:00 AM.

Grading

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

Component %
Initial Questionnaire 2%
Weekly Reflections 5%
Reading Exercises 10%
Class Participation 10%
Final Project 15%
Lab Assignments 58%

Late Homework Policy

Unless otherwise specified, each lab will be due at 11:59 PM on Tuesday night of the week following the start of the lab assignment. Late submissions are strongly discouraged. At your discretion, you can use up to four free "bonus days", total for the semester, to complete a lab assignment (more than one may be used per assignment). These will be automatically deducted until they have been used up.

Otherwise, late submissions will be penalized up to 25% per day that they are late. Submissions are considered late if they are turned in one minute or more after the assignment deadline. 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.

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 (these are called "lab helper hours" for 150). 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 fill out this Google Form.

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 that 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

In this class, 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 on 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. You are supported on all sides by me and your classmates. But no student is exempt from the process and the hard work that it entails.

Academic Dishonesty

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

On lab assignments, you may work with a partner for the warmup section only. All other sections of the lab assignment must be completed on your own. In general, 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 0 and 4"), but you should never share code, nor describe the exact code needed to solve the assignment. If you do discuss a lab with another student, please indicate those students in the README file within your submission.

You are always allowed to use the textbook, and any resources provided by me. You are not allowed to use any other sources except when specified in the assignment. Plagiarism and cheating, like 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 submissions.

Typically, honor code violations occur due to some combination of stress, confusion, or anxiety. In these circumstances, you are strongly encouraged to reach out to me; there are always better solutions that we can work out together. Furthermore, if you have any questions about what is permitted and what is not, please feel free to ask.

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

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.

Advice for Success

College is challenging for everyone in different ways. Oberlin has numerous resources to help you navigate this experience! If you need help, please reach out to me. I am happy to help connect you to the many different resources available (e.g. SHARE, PALS, Dean’s Office). Finally, a reminder that faculty at Oberlin are mandatory reporters for issues which fall under Title IX provisions.

Acknowledgments

The content in this course is gratefully adapted from previous iterations of CSCI 150 at Oberlin, most recently from courses led by Cynthia Taylor, Sam Taggart, Molly Feldman, and Blair Rossetti. I will do my best to acknowledge any other material adapted from other sources where I use it, as appropriate.