Welcome to CSCI 150! This course is all about the fundamentals of computer programming. It's about solving problems, being creative, and building things... digital things. Sometimes our stuff will break. When it does, we'll learn how to fix it. That's computer science. Let's do this!
Lecture Time: 10:00-10:50AM MWF Location: King 306
Lab Time: 2:30-4:20PM W Location: King 201
Office Hours: 11:00AM-12:00PM M & 10:00-11:00AM Th Location: King 229
|1||Oct 4||Hello, Class!||
Pre-Lab - Getting Ready
Lab 1 - Hello, Class!
Week 1 Reflection
|Oct 6||Variables, Expressions, & Assignments||2.4-2.6
|Oct 8||Data Types||2.2-2.3
|2||Oct 11||For Loops||4.4-4.5||
Lab 2 - In the Loop
Week 2 Reflection
|Oct 13(Add/Drop)||Nested For Loops||4.7|
|Oct 15||Boolean Expressions & Conditionals||7.1-7.5|
|3||Oct 18||Modules & Graphics||5.1-5.4||
Lab 3 - Get the Picture
Week 3 Reflection
|Oct 20||Debugging & Exceptions||1.6-1.103.2-3.4|
|Oct 22||While Loops||8.3|
Lab 4 - Image Filters
Week 4 Reflection
|Oct 29||Functions & Strings||9.3-9.14|
|5||Nov 1||Strings & Lists||10.1-10.8||
Lab 5 - Manipulation
Week 5 Reflection
|Nov 3||List Manipulation||10.10-10.1410.16-10.19|
|Nov 5||Lists & Tuples||10.26-10.29|
|6||Nov 8||Dictionaries & Sets||12.1-12.3||
Lab 6 - Concordance
Week 6 Reflection
|Nov 12||Data Structures|
Lab 7 - Fun with Recursion
Week 7 Reflection
|8||Nov 22||No Class (Thanksgiving Break)|
|Nov 24||No Class (Thanksgiving Break)|
|Nov 26||No Class (Thanksgiving Break)|
Lab 8 - Let's Make Music
Week 9 Reflection
Lab 9 - Critters
Week 10 Reflection
Lab 9 - Critters (continued)
Week 11 Reflection
|12||Dec 20||Order Notation||3.2-3.3||Critter Tournament Upload|
|Dec 24||No Class (Winter Break)|
|13||Dec 27||No Class (Winter Break)|
|Dec 29||No Class (Winter Break)|
|Dec 31||No Class (Winter Break)|
|14||Jan 3||Advanced Topics||
Final Project Proposal
Week 14 Reflection
|Jan 5||Advanced Topics|
|Jan 7||CS Research Talk|
|15||Jan 10||CS Research Talk||
Final Project Update
Week 15 Reflection
|Jan 12||CS Research Talk|
|Jan 14||Wrap Up|
Due: Saturday, Jan 22 before 4:00PM
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 the programming language to highlight and demonstrate these fundamentals. No prior programming experience is expected or required.
Information will be primarily communicated through this website, Blackboard, and the lab website. Please check each 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:
We will have assigned readings and interactive activities from this book due before most lectures. Specifically, reading activities must be completed by 10:00AM MWF.
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. 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 from class will be posted to Blackboard for you to view asynchronously.
You are responsible for your own participation and may not respond for another student.
To help you connect with the material that we will learn in class, you will be asked to complete short reflections each week. These reflections are designed to give you the opportunity and space to reflect on (1) what you found challenging during the week, (2) what you would like to know more about, and (3) how you’re doing. These reflections will be short (around three sentences) 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:00pm.
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 including both the scheduled lab period (Wednesday 2:30-4:20PM) 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. Additional lab helper hours are also provided on Monday, Wednesday, and Thursday evenings, as well as Saturday and Sunday afternoons.
There will be no exams in this course.
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. A proposal describing your final project will be due on Wednesday, January 5 at 2:30PM.
The final project will be due Saturday, January 22 before 4:00PM.
Final grades will be determined based on your scores on the labs, final project, reading exercises, weekly reflections, class participation, and questionnaire as follows:
Unless otherwise specified, each lab will be due at 11:59PM on Tuesday night of the week following the start of the lab assignment. Late submissions are strongly discouraged. To account for unforeseen circumstances, you are allotted four late days, total for the semester, to complete a lab assignment (more than one may be used per assignment). These will be automatically deducted by the lab graders until they have been used up.
Otherwise, late submissions will be penalized 25% in the first 24 hours after the deadline, and an additional 25% for each additional day late after that. If for any reason you will need to turn in a significant number of late labs, please meet with me to discuss it.
I am committed to making this class accessible to all students. If you have a disability that may impact your work in this class and require accommodations, please see me. Please also visit Student Accessibility Services at the Center for Student Success so that we may arrange appropriate accommodations.
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 a one-on-one tutor, Oberlin College provides free tutors for this course. If you would like a tutor, please contact Donna Allen from Center for Student Success in Peters 118.
Both Oberlin College and I personally value the diversity of perspectives that each of you bring to this classroom and our joint study of computer science. 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 competence 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.
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 me 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. 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.
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, 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 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:
I have adhered to the Honor Code in this assignment.
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.
The content in this course is gratefully adapted from previous iterations of CSCI 150 at Oberlin, most recently from courses led by Cynthia Taylor and Adam Eck.
Last updated 2021-12-09