CSCI 151 Syllabus

Contact Information

Instructor: Adam Eck
Email: aeck [AT] oberlin [DOT] edu
Student Hours: Monday 3:30-5:00 PM (King 125B), Tuesday 3:00-4:00 PM (King 125B), Wednesday 2:00-3:30 PM (King 125B)

Meeting Time and Location

Lecture: MWF 11:00-11:50 AM in King 101
Lab: T 1:00-2:50 PM in King 135/137

Course Overview

CSCI 151 builds upon the principles introduced in CSCI 150 and provides a general background for further study in Computer Science. The course will cover object-oriented programming concepts; the design and implementation of data structures (linked lists, stacks, queues, trees, heaps, hash tables and graphs) and related algorithmic techniques (searching, sorting, recursion); and algorithm analysis. Students will be expected to complete a number of programming projects illustrating the concepts presented.

Prerequisites: CSCI 150 or consent of the instructor. Students considering a computer science major are strongly encouraged to take either CSCI 150 and/or CSCI151 in their first year.

Course Objectives

  1. Understand the advantages and disadvantages of different organizational structures for storing data
  2. Implement a variety of data structures to better understand their behavior
  3. Explore real-world applications benefiting from different data structures
  4. Gain practice with a typed, object-oriented programming language
  5. Understand time-complexity and be able to compare algorithms with respect to efficiency
  6. Improve documentation skills and understand the need for good documentation
  7. Experience the fun of computer science!

Course Website and Textbook

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

For this class, we will be using an interactive textbook from zyBooks. You can buy the book online or buy a code for it at the bookstore. To register for this book, do the following:

  1. Sign in or create an account at https://learn.zybooks.com
  2. Enter zyBook code: OBERLINCSCI151EckSpring2024
  3. Subscribe to the book

We will have assigned readings and interactive activities from this book due most classes. Activites must be completed before lecture (11 AM) on 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 your 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. New or used iClickers can be purchased from the bookstore, from online vendors, or possibly from other students. If you know someone with an iClicker who has used it in the past and/or for a course at a different time, it is also possible to share with them so long as you don't both need the iClicker at the same time.

Second, we will also 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. Doing so is an Honor Code violation.

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 learned during the week, (2) what you found most challenging, (3) what you would like to know more about, (4) how you can connect what we learned with your daily life, and (5) how you are doing. These reflections will be short (around three sentences per question) and should take about 10 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 Monday at 11:59 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 (Tuesday 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 faculty instructor 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 a midterm exam around the middle of the semester, as well as a final exam during the College's scheduled final exam time for our lecture section:

Final Exam Time: Thursday May 16 from 7:00-9:00 PM

Grading

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

Component %
Initial Questionnaire 2%
Weekly Reflections 5%
Reading Exercises 10%
Class Participation 10%
Midterm Exam 10%
Final Exam 15%
Lab Assignments 48%

Late Homework Policy

Unless otherwise specified, each lab will be due at 11:59 PM on Sunday night of the week following the start of the lab assignment. Late submissions are strongly discouraged. However, life happens, and if you need extra time to complete a lab assignment, you can request a grace period and move the deadline by up to four days. Grace periods must be requested before the original deadline using the Google Form linked on our course Blackboard page. Completing the assignment during your grace period will incur no late penalty. Otherwise, late submissions will be penalized up to 25% per day (after any requested grace period) that they are late. Submissions are considered late if they are turned in one minute or more after the deadline.

Please keep in mind that we will have lab assignments almost every week, so falling behind on one lab shortens the amount of time available to complete the next lab. 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 so we can work together to create a plan to best support your learning.

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.

Please also let me know if purchasing the textbook and/or iClicker is a barrier for you in this course, and we will work together to find a solution. Financial Aid provides the most comprehensive funding for all costs that students pay, including books and course supplies. Michele Kosbuth can respond to students' questions.

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 CSCI 151). 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 also allowed to use online resources such as StackOverflow, provided that (1) any code taken from other sources is not more than 2-3 lines at a time, (2) the code used does not make up a substantial portion of any part of a lab assignment or single function, and (3) you cite your source with a comment listing the URL from where you found the code. 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, using code generated by ChatGPT or other AI systems, etc., is prohibited. We will be running MOSS, an automated plagiarism detection tool, on submissions.

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.

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 programming assignment will result in a 0 on the assignment. A second time on a programming assignment, or the first time on an exam can result in failing the class. All honor code violations will be reported to the college honor code committee.

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, 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 151 at Oberlin, most recently from courses led by Roberto Hoyle, Marina Barsky, Cynthia Taylor, and Bob Geitz. I will do my best to acknowledge any other material adapted from other sources where I use it, as appropriate.