Syllabus
Lecture Sections:
A: Tuesday / Thursday 08:15 - 09:30 75 SHS 102 (Andrews)
B: Tuesday / Thursday 08:15 - 09:30 75 SHS 102 (Biester)
C: Tuesday / Thursday 11:15 - 12:30 75 SHS 102 (Andrews)
Lab Sections:
W: Friday 11:15 - 12:05 75 SHS 102 (Biester)
X: Friday 08:40 - 09:30 75 SHS 203 (Andrews)
Y: Friday 09:45 - 10:35 75 SHS 203 (Andrews)
Z: Friday 11:15 - 12:05 75 SHS 203 (Andrews)
Professor Christopher Andrews | |
Office | 215 75 Shannon Street |
candrews@middlebury.edu | |
Office hours | Monday 3:00 - 4:00, Tuesday / Wednesday 3:30 - 5:00 |
|
|
Professor Laura Biester | |
Office | 214 75 Shannon Street |
lbiester@middlebury.edu | |
Office hours | Tuesday / Thursday 2:00 - 3:00 PM, Wednesday 10:00 - 11:00 AM |
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 our 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:
- Describe Computer Science as a discipline and list examples of how programs, algorithms and or data structures are used in different application areas
- Solve computational problems with procedural statements (assignment, operators, conditionals, loops), functions, basic data structures (list, map), objects and I/O
- Design, implement, document and debug medium-sized programs in Python
- Describe the basic types of information that can be stored and manipulated by a computer (ints, floats, bools, text) and recall details of how some of them are stored (e.g., binary, ASCII).
- Analyze and apply both iterative and recursive solutions to computational problems
- Informally explain and use asymptotic complexity of algorithms
Assessment
In this class, we will be using an alternative grading model that gets away from a system based on points and averages that you may be used to. We have two goals with this system: (1) to tie assessment more closely to the learning objectives of the class, and (2) to provide more opportunities to improve through feedback and revision. This system does have some complexity, so please read through the policies carefully.
Deliverables
There will be four types of deliverable in the class: lab assignments, homework questions, challenges, and exams.
Labs
Labs meet every week on Fridays. Most weeks you will have an exercise to work through in class. These will be marked satisfactory or incomplete. There will be an opportunity to revise labs that are incomplete.
Homework
Every week, we will release an assignment with approximately four questions. Questions will be assessed on a four point scale.
- excellent - this answer could be used as an example
- satisfactory - this answer meets most requirements, but needs a little revision to make it excellent
- incomplete - this answer would need major revision to meet requirements
- unassessable - the answer is missing or doesn’t run
After feedback is released, you will have one week to submit a revision (for work marked satisfactory) or a second attempt at a new problem which will be released with the feedback.
Challenges
There will be approximately four challenge problems assigned over the semester. These are harder problems that will ask you to make something a little more complex that pulls together multiple concepts. Challenges will be marked satisfactory or incomplete. There will be an opportunity to revise challenges that are incomplete.
Exams
There will be two exams - a midterm after spring break and a final at the end of the semester. These will be in-person, handwritten exams. All questions will be assessed as satisfactory or no points. There is no partial credit.
Grading
Instead of using weighted averages, our system defines the amount of work in each category of deliverable that needs to be completed to qualify for each grading tier. For details, please consult the grading overview.
Course Policies
Extensions
You are given five late days for labs and homeworks during the semester. You may only use one late day per assignment. You will have a full late day deducted if you submit work past the deadline (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!
Homework assignments that are more than one day late will not be accepted.
Lab assignments that are more than one day late can be submitted during the revision period but will require you to complete an extra homework problem (see the grading overview for more information on extra assignment questions).
Attendance
Attendance is expected for both the lectures and the labs. We will not take attendance unless it become necessary, but we view attendance and participation in the lectures and the labs a core part of the class.
Getting help
We will introduce you to many new things in this class, and everything build on the material that came before. You are encouraged to reach out and ask for help rather than trying to tough it out on your own if you start to struggle. There are four main resources for you in this class.
- Office hours All sections are covering the same material. You can drop in and chat with either professor, no matter which section you are in.
- Lab Instructor and ASI hours Noah and Smith are both available to answer questions about material in the course. You will find their office hours at go/cshelp
- CS drop-in help We have peer help session in the evening. Available times and locations can also be found at go/cshelp
- Campuswire Outside of the hours for the above, you are encouraged to post questions on our Campuswire forum. (You are also encouraged to answer questions there as well!)
Honor code and collaboration
Short version Help each other, but do not share solutions unless explicitly permitted.
Long version In computer science, we build on the work of developers before us. Most of us learned to code by copying code and finding ways to tweak it to do what we want. Almost no computer programs are built without building on the work of others, either in the form of algorithms, libraries, or even just short snippets of code. In the computer science department, we recognize the value of forming study groups, helping each other debug code, and working together.
On the other hand, there are questions of intellectual property and academic integrity. These are considerably murkier waters than you may face, for example, writing a history paper, or doing a problem set in math. With code, you can “accomplish” spectacular things by copying the right chunks of code without ever knowing how it works.
For the most part, navigating these waters is on your head. We encourage you to help classmates to debug misbehaving code. We encourage you to post questions (and answers!) on our forum. But you need to do so in a way that respects other people’s work and in a way that contributes to your intellectual development rather than hindering it (or trying to mask your lack of it).
If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later.
When in doubt, ask.
Policies:
- Labs will be done in pairs.
- All other work should be done individually unless explicitly stated in the assignment.
- Attribute any ideas, etc, that you pick up (this goes for classmates, books, online resources, etc). Be explicit. Tell us where you got the idea, approach, technique, etc. Explain what your contribution was. Make sure that your contribution demonstrates that you understand what was not your work alone.
Generative AI
Using AI tools (e.g., ChatGPT, Gemini, Copilot) is forbidden in this class. You may not use them to assist in any part of your homework or other assignments. Any use of generative AI tools will be treated as a violation of Middlebury’s Honor Code.
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.
Fostering an inclusive environment
As part of the Middlebury community, we support an inclusive learning environment where diversity and individual differences are understood, respected, appreciated, and recognized as a source of strength.
We expect that students in my class will respect differences and demonstrate diligence in understanding how other people’s perspectives, behaviors, and world views may be different from their own. Should you experience or witness any behavior that opposes this idea, we hope you will let us know so that it can be addressed.
If you are comfortable reporting such incidents, you can use our anonymous CS departmental climate feedback form (which goes to the CS department) or fill out a Bias Incident Report (which goes to the Middlebury Community Bias Response Team).
You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.
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.