CS150 is an introduction to the field of Computer Science geared towards students interested in the sciences. No previous programming experience is assumed. At the completion of the course, you will:
If you are not sure if this is the right course for you, please come see me!
Think Python: How to Think Like a Computer Scientist (free!)
CS for All (free!)
Practical Programming (2nd edition): An Introduction to Computer Science Using Python 3 (optional, paper copy available
here)
Readings refer to the above texts Think Python (TP), CS for All (CS4A), and Practical Programming (PP)
Date | Topics | Reading (before class) | Assignments |
---|---|---|---|
M 2/10 | Introduction, expressions, variables (Socrative) | PP: 1, 2 OR TP: 1, 2, 5.1 |
Practice problems 1 (solutions) |
W 2/12 | Functions (Socrative) | PP: 3.1-3.4,3.6-3.10,4.4 OR TP: 3 except 3.2 |
Prelab 1 (notes) |
F 2/14 | Quiz 1 (covering Python syntax, variables and functions) | Quiz 1 practice, cheatsheet | Lab 1: Functions (notes) |
M 2/17 | Modules, for-loops (Socrative) | PP: 3.6, 6.1, 9.3 OR TP: 2.7, 3.2, 4.2 |
Practice problems 2 (solutions) |
W 2/19 | Strings and loops (Socrative) | PP: 9.1-9.5 OR TP: 4.2, 8.3, 10.3 |
Prelab 2 (notes) |
F 2/21 | Quiz 2 (covering modules and basic for-loops) | Quiz 2 practice, cheatsheet | Lab 2: Turtle Graphics (notes) |
M 2/24 | Strings and objects (Socrative) | PP: 4.1-4.3, 7.3, 9.2 OR TP: 2.6, 8 |
Practice problems 3
(solutions)
Prelab 3 |
W 2/26 | Quiz 3 (covering strings) | Quiz 3 practice, cheatsheet | Lab 3: Cryptography |
F 2/28 | Winter Carnival - no class | ||
M 3/2 | Conditionals (Socrative 1, Socrative 2, Socrative 3) | PP: 5 OR TP: 5.2-5.7 |
Practice problems 4 (solutions) |
W 3/4 | While-loops (Socrative) | PP: 5, 9.6-9.8 OR TP: 7.3-7.4 |
Prelab 4 |
F 3/6 | Quiz 4 (covering conditionals, while-loops) | Quiz 4 practice, cheatsheet | Lab 4: Math whiz |
M 3/9 | Lists (Socrative) | PP: 8.1-8.5, 8.7, 9.1 OR TP: 10 |
Practice problems 5 (solutions) |
W 3/11 | Lists, files | PP: 8.1-8.5, 8.7-8.8, 10.1-10.3 OR TP: 10, 14.2 |
Prelab 5 (notes) |
F 3/13 | Optional class for Midterm Q & A |
Midterm review Sample Exam 1 (solutions) Sample Exam 2 (solutions) |
Lab 5: Data for everyone |
M 3/16 | Spring break - no class | ||
W 3/18 | Spring break - no class | ||
F 3/20 | Spring break - no class | ||
M 3/23 | Spring break - no class | ||
W 3/25 | Spring break - no class | ||
F 3/27 | Spring break - no class | ||
--- | Midterm -- self scheduled, March 30 - April 3 Prepare your own two-sided sheet of notes to use during the exam. |
Midterm cheat-sheet | |
--- | All course materials post-Spring break are now on Canvas | ||
M 3/30 | Dictionaries, Tuples | PP: 11.1-11.3, 11.5 OR TP: 11, 12 |
Practice problems 6 |
W 4/1 | Sets, Objects | PP: 11.1, 11.5, 14.1-14.3 OR TP: 19.5, 15.1-15.2, 17.1-17.2 |
Prelab 6 |
TBD | Quiz (covering dictionaries, tuples, sets) | Lab 6: Hangman | |
M 4/6 | References, Modules | PP: 8.5, 6.1-6.2 OR TP: 10.10-10.12, 14.9 |
Practice problems 7 |
W 4/8 | Command line, debugging, URLs | PP: 10.1-10.5, 15 OR TP: 14.1-14.4, Appendix A |
Prelab 7 |
TBD | Quiz (covering references, modules, optional parameters) | Lab 7: Weather Report | |
M 4/13 | Data analysis w/ NumPy, pandas | NumPy "quickstart", 10 minutes to pandas | Practice problems 8 |
W 4/15 | Plotting w/ matplotLib | Matplotlib tutorial | Prelab 8 |
TBD | Quiz (covering NumPy) | Lab 8: Zipf's law | |
M 4/20 | Recursion | TP: 5.8, 6.5-6.7 | Practice problems 9 |
W 4/22 | More recursion | Prelab 9 | |
TBD | Quiz (TBD) | Lab 9: Recursion | |
--- | Intro to R | Introduction to R, Python-to-R cheatsheet | Practice problems 9 |
--- | Analysis and plotting in R | Data visualization in R, R manuals | Prelab 9 |
--- | Quiz (covering vector execution, R) | Lab 9: Zipf's law in R | |
M 4/27 | More recursion | Practice problems 10 | |
W 4/29 | Complexity Analysis | CS4A: 7.1-7.2.2 | |
TBD | Quiz (covering recursion) | ||
M 5/4 | Searching and sorting | PP: 12, 13 OR CS4A: 5.5.1-5.5.4 |
Test Project Practice problems 11 |
W 5/6 | Numeric representation | CS4A: 4.2 | |
TBD | Quiz (covering Complexity) | ||
M 5/11 | Final review | Sample Final
Test Project Due |
|
--- | Final Exam Self-Scheduled -- May 13-18 |
Thonny IDE (free)
Your semester grade will be calculated from the following components:
35% | Assignments/Labs |
10% | Test Project |
20% | Midterm |
25% | Final |
10% | Weekly Quizzes |
Labs: Almost every week we will have a lab assignment (and session). Lab sessions will typically occur on Friday. Before lab, you will be required to do some preliminary preparation (the “prelab”), which will be due at the beginning of the lab period. You will have time to work on the lab assignment during the Friday class, but completing the assignment will often require significant additional time. The lab assignments will typically be due on the next Tuesday night.
About 5-10% of the points for each lab assignment are designated “creativity” points, providing flexible challenges or opportunities for you to exercise your creativity. Note that these points are not extra credit; that is, in order to get a 100% score, you’ll have to earn these creativity points as well. Since the creativity points only count for about 7% of the total points it is still possible to earn an ‘A’ grade (93%) for your lab assignments without any creativity points.
Lab assignments are graded on correctness/completeness and design/style. The latter reflects that the code we write must be readable by humans as well as computers. Design/style is evaluated based on the following questions:
Test Project: There will be one test project towards the end of the semester. This is like an open-book take-home test, but for programming, and must be done independently.
Exams: There will be one midterm and one final. The midterm will be on the Thursday night before Spring break. The final exam will be self-scheduled during exam week.
Quizzes: Most Friday class sessions will start with a short quiz on the week’s material. This quiz is a low-stakes opportunity to check whether you have understood the week’s material. Following the quiz we will use the remaining time to work on the lab assignment for that week. The lowest quiz score for the semester will be automatically dropped.
If extenuating circumstances will cause you to miss an element of the course, e.g. a weekly quiz, let me know as soon as possible beforehand. When I know beforehand, we can make alternate arrangements.
Late assignments will not be accepted except under extenuating circumstances that have been communicated to me in advance. All submissions will be eligible for partial credit, so please make sure to turn in whatever you have completed before the deadline.
You are encouraged to discuss material from the lectures and textbooks with your classmates. However, the work that you turn in must be completed independently, unless an assignment is explicitly designated as one in which collaboration is permitted.
In particular, your work must not be based on information obtained from sources other than those approved for the course (i.e., the textbooks, web pages linked from the course web pages, and materials provided in lecture). An example of an impermissible “other source” is searching online for relevant code.
You should never copy another student’s code or solutions, exchange computer files, or share your code or solutions with anyone else. You may use any code that I provide to you or that comes from the textbooks, as long as you acknowledge the source. You are allowed to obtain help with your code from the department ASIs and the course tutors. Alongside manual inspection, I may use automated tools for detecting software similarity.
The test project should be considered as a take-home open-book exam. As such, you may read your textbook, class notes, and any other source approved by the instructor, but you may not consult other sources (e.g., looking for code online). You may not consult anyone other than the instructor. I encourage you to ask questions, but reserve the right not to answer, just as you would expect during an exam.
If you are ever unsure about what constitutes acceptable collaboration, permitted resources, etc., please ask!
We encourage an open exchange of ideas and questions in the classroom. This course assumes no prior background in computer science – all students are welcome and all are expected to be beginners in this field. Our goal is to help each of you develop your own understanding of the material, and we recognize that each of you has your own journey. So we encourage you to ask lots of questions (and there is no such thing as a dumb question about the material in this course!) and be supportive of your classmates on their journey as well.
CS 150 this semester is connected to the Engaged Listening Project. Creating an inclusive classroom and positive learning environment where all have a sense of belonging will be important goals. You should expect that I will try out new exercises or approaches to help students engage with the material and each other.
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. Please contact ADA Coordinator Jodi Litchfield for more information: litchfie@middlebury.edu or 802-443-5936. All discussions will remain confidential.
Thanks to Professor Michael Linderman for sharing course materials and infrastructure, and to Professors Pete Johnson, Daniel Scharstein, and Dave Kauchak for their prior contributions to developing the course.