CSCI 145: Introduction to Computing
Lecture Sections:
A: Tuesday/Thursday, 8:15AM-9:30AM
B: Tuesday/Thursday, 9:45AM-11:00AM
All lectures take place in 75 Shannon Street room 224
Lab Sections:
X: Friday, 8:40AM-9:30AM
Y: Friday, 9:45AM-10:35AM
Z: Friday, 11:15AM-12:05PM
All labs take place in 75 Shannon Street room 203
Instructor: Professor Laura Biester
You can call me Laura or Professor Biester, whichever you are more comfortable with
Email: lbiester@middlebury.edu
Office: 75 Shannon Street Room 214
Drop-In Hours (special hours for exam week):
Tuesday 2-3
Wednesday 10-121
Thursday 12-1:45
And by appointment
Anonymous course feedback form
Course Description
From the course catalog: In this course we will provide a broad introductory overview of the discipline of computer science, with no prerequisites or assumed prior knowledge of computers or programming. A significant component of the course is an introduction to algorithmic concepts and to programming using Python; programming assignments will explore algorithmic strategies such as selection, iteration, divide-and-conquer, and recursion, as well as introducing the Python programming language. Additional topics will include: the structure and organization of computers, the Internet and World Wide Web, abstraction as a means of managing complexity, social and ethical computing issues, and the question “What is computation?”
Learning Objectives
CSCI 145 is an introductory computing course; it is both an entrypoint to the major and an opportunity for non-majors to learn about computing and its many applications. This course expects no prior programming experience, and it is my goal for all students to succeed in the course regardless of their prior experience with computing.
This course will focus on the following learning objectives; by the end of the semester, you will:
- Develop your ability to take an idea and come up with an algorithm that breaks it into sub-problems (Computational Thinking)
- Be able to effectively program in the python language, using functions, conditionals, loops, lists, dictionaries, and classes (Programming)
- Understand basic data structures as well as representation of basic data types (Data Representation)
- Critique and communicate ways in which algorithms impact society and reflect human attitudes, biases, and values (Socially Responsible Computing)
- Be able to answer the question “what is the difference between computer science and programming?” by learning about topics such as artificial intelligence and complexity (Scope of Computing)
Course Work and Grading
Component | Percentage | Drop |
---|---|---|
Homework | 30% | One |
Labs | 20% | One |
Quizzes | 10% | One |
Exams | 35% | None |
Participation | 5% | See Policy |
Homework
There will be a homework assignment most weeks, which are key to developing your programming and computational thinking skills. Homework is graded for correctness and quality. Your score for correctness is typically based on automated tests, which you will have access to as your complete the homework. See this page for the rubric for quality grading, which is done manually.
Homework will typically be assigned each week on Tuesday and due 10 days later on Friday at 11:59PM.2 This means that you will sometimes have two homeworks assigned at the same time; if you have finished the first homework or have a busy week coming up, I hope this gives you an opportunity to get started on the next homework assignment early.
Your lowest homework score will be dropped.
Labs
We will begin each lab assignment on Friday during the lab period. It is expected that you will need more time to complete the lab assignment, and it is your responsibility to do so after the lab period. The lab assignments are due on the Tuesday that follows the lab period at 11:59PM.2
Labs are graded for correctness using a combination of automated and manual testing. You will not have access to the tests as your complete your lab assignments. This policy is meant to encourage you to learn how to test your own code; testing is an important skill for our programming objective.
Your lowest lab score will be dropped. If you need to miss a lab, please contact me ahead of time, and we can make alternate arrangements. This is critical for labs because they will be completed with a partner.
Quizzes
There will be quizzes at the start of class on most Tuesdays. The purpose of these quizzes is to provide a low-stakes environment where you can test your understanding of the material; quiz questions will be created based on the most recent lectures, labs, and homework assignments. Quizzes will also help you prepare for other assessments such as exams.
Your lowest quiz score will be dropped. If you need to miss a quiz, please contact me ahead of time and we can make alternate arrangements.
Written Exams
We will have a midterm exam (15%) on October 19th at 7:30PM and a final exam (20%) as scheduled by the registrar.
Final Exam Schedule
Section A: Date: December 14th
Time: 2:00PM-5:00PM
Location: 75 Shannon Room 224 (our classroom) Section B: Date: December 16th
Time: 9:00AM-12:00PM
Location: 75 Shannon Room 224 (our classroom)
The concepts that you will learn in this course naturally build on one-another; therefore, the final exam will be cumulative, but will focus on material from the second half of the course.
If you have a conflict with the midterm time, please let me know as soon as possible, at least two weeks before the midterm.
Participation
Your participation grade is based on the completion of activities such as the pre-course survey, introducing yourself to your classmates on Ed, and completion of in-class activities and worksheets. If you miss one of these activities, you may make up for it by attending professor drop-in hours.
The purpose of these activities is to ensure that you get off to the right start in the course, actively participate, and meet me and your classmates. While attendance will not formally be taken during class sessions, your presence is expected.
Course Work Expectations
You should expect to spend up to 10 hours per week on work outside of class to be successful in this course. If you find that you are regularly spending more time than 10 hours per week on the class, send me an email or stop by drop-in hours to chat.
Course Materials
Books
There is no required textbook for this course. Required readings are drawn from free online resources.
The Python for Everybody interactive textbook is a good resource for additional reading and extra practice questions. However, please note that the textbook may cover the material in a different order than we do in class and/or over a different subset of the material.
Python
We will use the python programming language in this class, and you will use the Thonny IDE to write programs. Thonny is freely available for mac, windows, and linux.
Course Policies
Resources Available to You
Computer science can be tough, especially when you are just starting out! We have many resources that can make the learning process easier throughout the course:
- Professor Drop-In Hours: My drop-in hours are a great place to ask questions! You can ask questions about your homework, the lecture, the CS major, CS research, working in tech… even your general experience at Midd!
- ASI Drop-In Hours: Our Assistant in Instruction (ASI) is Smith Gakuya, a recent CS graduate. Smith has regularly scheduled drop-in hours and is available to answer your questions about CSCI 145 (and beyond)!
- Course Assistant Drop-In Sessions: Come to drop-in sessions to get help from our course assistants (current CS students)! Almost any question that you would ask in my drop-in hours is fair game for peer drop-in hours.
- Ed Message Board: Ask questions about course content and assignments on the Ed message board. Asking questions here allows your classmates to see answers to frequently asked questions. Do not share code for any assignments publicly on the message board. If you need to share code, I recommend that you come to drop-in hours.
- Email: If you have a question that cannot be asked on a public message board, please send an email to lbiester@middlebury.edu. During the week, I will always respond to email within 24 hours, but I may not respond to emails on the weekend.
Extension Policy
You are given four late days for labs and homeworks during the semester. This means that you can submit one homework up to 4 days late or four labs up to 1 day late, or any other combination. You will have a full late day deducted if you submit work past midnight (even if it is just 10 minutes) and if you are working with a partner, you will both use late days if work is submitted late, so plan accordingly!
If you want to use a late day, fill out this form before the due date for the assignment.
If you need an extension beyond what is permitted by this policy, please email me as soon as possible.
Laptops
You are expected to bring a charged laptop to all class sessions (lecture and lab). If you don’t have access to a laptop that can run Thonny (even if for just a single class period), please contact me to ask about the availability of the department’s loaner laptops. The CS Department maintains a set of loaner laptops, preinstalled with relevant course tools, for both short-term and longer-term use. Given the small number of machines available (approximately 10), if you anticipate needing a laptop for a longer period (e.g., the entire semester or more), I encourage you to also inquire with the library about loaner equipment and/or Elaine Orozco Hammond about an Opportunity Grant, which can help you to purchase a laptop. Our department commits to meeting the needs of every student, so please don’t hesitate to contact Smith (our ASI) if you need a computer (in any way) for this course.
Collaboration and Outside Resources
On homework assignments, you may discuss your general approach with your classmates, but the code that you write is expected to be your own. It may not be copied from your classmates, from websites such as stackoverflow, or large language models such as ChatGPT. One of the main learning goals of this course is for you to learn basic python programming, and completing these assignments is crucial to developing that ability.
Lab assignments will be completed with one of your classmates. Only one group member must turn in the code, but you still may not use online resources.
Disability Access and Accommodation
Every class is made up of learners with different access needs. My goal is for each student in our class to succeed, and to create an accessible learning environment for everyone. Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion.
For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (formerly called Student Accessibility Services). All discussions will remain confidential.
Please contact one of the ADA Coordinators at ada@middlebury.edu for more information.
Academic Integrity
As an academic community devoted to the life of the mind, Middlebury requires that every student complete intellectual honesty in the preparation and submission of all academic work. Details of our Academic Honesty, Honor Code, and Related Disciplinary Policies are available in Middlebury’s handbook.
Honor Code Pledge
The Honor Code pledge reads as follows: “I have neither given nor received unauthorized aid on this assignment.” It is the responsibility of the student to write out in full, adhere to, and sign the Honor Code pledge on all examinations, research papers, and laboratory reports. Faculty members reserve the right to require the signed Honor Code pledge on other kinds of academic work.
Tentative Schedule and Topics
Week 1: Computational Thinking, Expressions, Variables
Week 2: Functions, Conditionals
Week 3: Loops, Lists
Week 4: Recursion
Week 5: Data Structures
Week 6: Review/Catch-Up, Midterm
Week 7: Image Representation, Integer and Float Representation
Week 8: Files and Text Representation
Week 9: Object-Oriented Programming
Week 10: Modules and Libraries, Testing
Week 11: Thanksgiving
Week 12: Complexity, Sorting
Week 13: Review/Catch-Up
See the detailed schedule for more!
On Wednesdays, I typically will bring my dog to drop-in hours. If you are allergic to or afraid of dogs and want to come to Wednesday drop-in hours, please email me ahead of time and I can arrange things so that we meet without her! ↩
See the detailed schedule for adjustments to this general policy due to holidays. ↩ ↩2