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: 11:00-11:50am MWF Location: King 227
Lab Time: 1:00-2:50pm Th Location: King 201
Office Hours: 1:00-2:00pm M & 10:00-11:00am T Location: King 229
Date | Topic | Reading | Assignment | |
---|---|---|---|---|
0 | Feb 18 | Hello, Class! | Pre-Lab - Getting Ready | |
1 | Feb 21 | Variables, Expressions, & Assignments | 2.4-2.6 2.9-2.11 |
Lab 1 - Hello, Class! Questionnaire Week 1 Reflection |
Feb 23 | Data Types | 2.2-2.3 2.7-2.8 |
||
Feb 25 | For Loops | 4.4-4.5 4.7 |
||
2 | Feb 28 | For Loops |
Lab 2 - In the Loop Week 2 Reflection |
|
Mar 2 | Nested For Loops | |||
Mar 4 | Boolean Expressions & Conditionals | 7.1-7.5 | ||
3 | Mar 7 | Modules & Graphics | 5.1-5.4 |
Lab 3 - Get the Picture Week 3 Reflection |
Mar 9 | Debugging & Exceptions | 1.6-1.103.2-3.4 | ||
Mar 11 | While Loops | 8.3 | ||
4 | Mar 14 | Functions | 6.1-6.26.4 |
Lab 4 - Image Filters Week 4 Reflection |
Mar 16 | Functions | 6.6-6.10 | ||
Mar 18 | Functions | |||
5 | Mar 21 | Strings | 9.3-9.8(9.9-9.14) |
Lab 5 - Pirates, Proteins, & Penguins Week 5 Reflection |
Mar 23 | Lists | 10.1-10.810.26 | ||
Mar 25 | Lists | 10.10-10.1410.16-10.19 | ||
6 | Mar 28 | Dictionaries | 12.1-12.3 |
Lab 6 - Concordance Week 6 Reflection |
Mar 30 | Dictionaries & Files | 11.1-11.6 | ||
Apr 1 | Tuples & Sets | 10.27-10.29 | ||
7 | Apr 4 | No Class (Spring Break) | ||
Apr 6 | No Class (Spring Break) | |||
Apr 8 | No Class (Spring Break) | |||
8 | Apr 11 | Recursion | 16.1-16.3 |
Lab 7 - Fun with Recursion Week 8 Reflection |
Apr 13 | Recursion | 16.5-16.6 | ||
Apr 15 | Recursion | |||
9 | Apr 18 | Sorting | 6.6-6.8 |
Lab 7 (continued) Week 9 Reflection |
Apr 20 | Sorting | 6.9-6.10 | ||
Apr 22 | Sorting | 6.11-6.12 | ||
10 | Apr 25(P/NP) | Classes | 17.1-17.417.6 |
Lab 8 - Let's Make Music Week 10 Reflection |
Apr 27 | Classes | 17.517.7-17.9 | ||
Apr 29 | Classes | 18.1-18.4 | ||
11 | May 2 | Classes |
Lab 9 - Critters Week 11 Reflection |
|
May 4 | Inheritance | 19.1-19.4 | ||
May 6 | Inheritance | 19.7 | ||
12 | May 9 | Inheritance |
Lab 9 (continued) Final Project Proposal Week 12 Reflection |
|
May 11 | Advanced Topics | |||
May 13 | Advanced Topics | |||
13 | May 16 | CS Research Talk (Virtual) |
Critter Submission |
|
May 18 | CS Research Talk | |||
May 20 | CS Research Talk | |||
14 | May 23 | Critter Tournament | Final Project Update | |
May 25 | Wrap Up | |||
Final Project Due: Wednesday, June 1 before 9: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 11: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 9 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 (Thursday 1:00-2:50pm) 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.
The final project will be due Wednesday, June 1 before 9: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:
Component | Percentage |
---|---|
Questionnaire | 2% |
Weekly Reflections | 5% |
Reading Exercises | 10% |
Class Participation | 10% |
Final Project | 15% |
Lab Assignments | 58% |
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 bonus 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. Late work beyond this point will not be accepted unless prior arrangements are made with the instructor.
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 Center for Student Success.
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 2022-02-19