CSCI 151 Syllabus
Contact Information
Section 01 Instructor: Roberto Hoyle
Email: rhoyle [AT] oberlin [DOT] edu
Student Hours: Tuesday 9:00-11:00 AM (Rice 108), Wednesday 9:00-10:00 AM (Rice 108), or by appointment
Section 02 Instructor: Adam Eck
Email: aeck [AT] oberlin [DOT] edu
Student Hours: Monday 4:30-5:30 PM (King 125B), Friday 1:30-3:30 PM (King 125B), or by appointment
CSCI Department Teaching Assistant: Lucas Draper
Email: tdraper [AT] oberlin [DOT] edu
Student Hours: Tuesday 10:00 AM - Noon (King 137), Thursday 10:00 AM - Noon (King 137)
Meeting Time and Location
Section 01 Lecture: MWF 11:00-11:50 AM in King 239
Section 01 Lab: T 1:00-2:50 PM in King 135/137
Section 02 Lecture: MWF 9:00-9:50 AM in King 101
Section 02 Lab: M 2:30-4:20 PM in King 201
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
- Understand the advantages and disadvantages of different organizational structures for storing data
- Implement a variety of data structures to better understand their behavior
- Explore real-world applications benefiting from different data structures
- Gain practice with a typed, object-oriented programming language
- Understand time-complexity and be able to compare algorithms with respect to efficiency
- Improve documentation skills and understand the need for good documentation
- Experience the fun of computer science!
Course Website and Textbook
Information will be primarily communicated through the course website https://cs.oberlin.edu/~aeck/Fall2024/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:
Section 01 zyBook
- Sign in or create an account at https://learn.zybooks.com
- Enter zyBook code: OBERLINCSCI151HoyleFall2024
- Subscribe to the book
Section 02 zyBook
- Sign in or create an account at https://learn.zybooks.com
- Enter zyBook code: OBERLINCSCI151EckFall2024
- 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 for Section 01, 9 AM for Section 02) on the day they are due for full credit (partial credit up to 50% is available for late completions).
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 your instructor 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.
Discussions and answers to common questions will be conducted on Piazza. The enrollment link is available on Blackboard. Students are encouraged to ask questions (about course content, lab instructions, etc.) on Piazza so the answers can be available for all students -- if you wonder about something, odds are several other students do, too!
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 your instructor 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 and your own time. These lab assignments (and a problem set) 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. A full schedule of lab helping availability is posted on the lab website.
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:
Section 01 Final Exam Time: Tuesday Dec 17 from 2:00-4:00 PM
Section 02 Final Exam Time: Monday Dec 16 from 2:00-4: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 and Problem Sets | 48% |
Late Homework Policy
Unless otherwise specified, each lab and problem set 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 or problem set, 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 your instructor to discuss so we can work together to create a plan to best support your learning.
Per College policy, no late work can be accepted after the end of Reading Period without an approved incomplete.
Accessibility
We are committed to making this class accessible to all students. If you have accessibility needs, please email your instructor or come discuss them with them. 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 us know, and together we will figure something out.
Please also let your instructor 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.
OWLS and 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.
CSCI 151 is also supported by OWLs from CLEAR this semester. OWLS provide fun, collaborative sessions based on the Supplemental Instruction model, integrating course content with learning strategies. Led by students who have taken the course, OWLS help everyone, from those seeking additional support to those excelling and wanting to reinforce their knowledge. Your OWLs, Reed and Arev, will play a crucial role in enhancing your learning experience. They bring valuable knowledge and experience, having previously completed this course successfully. We strongly encourage you to attend their sessions regularly, as these sessions are designed to reinforce your understanding of the course material, develop effective study strategies, and create opportunities for collaborative learning. Engaging with Reed and Arev through these sessions will provide you with additional insights and support, contributing positively to your academic success in this course.
Code of Conduct
Both Oberlin College and your instructor 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 your instructor 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 your instructor 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, including the first, 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. Your instructor is 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 Adam Eck, Roberto Hoyle, Howard Levinson, and Cynthia Taylor. We will do our best to acknowledge any other material adapted from other sources where we use it, as appropriate.