CS150 Computing for the Sciences - Spring 2020

Course Page and Syllabus


When and Where
150A: MWF 9:05 AM - 9:55 AM
150B: MWF 10:10 AM - 11:00 AM
All classes in 75 Shannon 202
Faculty
Professor Amy Briggs
75 Shannon 213
802-443-2255
briggs@middlebury.edu
Office Hours (via Zoom)
Mon, Wed, Fri 11:05-11:55 am and 12:10 - 1:00 pm
and by appointment
Students
Class photos
Tutoring
Catherine Miller
Robert Lichenstein
Evening Tutoring (Sun-Thurs)
Frequent Links
Piazza
Gradescope
Socrative: Section A, Section B
Python documentation
Announcements
  • All course materials post-Spring break are now on Canvas
  • Class meeting times on MWF 11:05-11:55 am and 12:10-1 pm will be used for office hours via Zoom (see email and Canvas for Zoom link)
  • ASI office hours are listed on the webpages for Catherine Miller and Robert Lichenstein

Description

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:

  1. Be able to solve computational problems with procedural statements (assignment, operators, conditionals, loops), functions and objects
  2. Be able to design, implement and debug medium-sized programs in Python
  3. Have a working understanding of other tools used in scientific computing, e.g., R
  4. Be able to analyze and apply basic algorithmic techniques, such as recursion

If you are not sure if this is the right course for you, please come see me!

Textbooks

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)

Schedule

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

Resources

Software

Thonny IDE (free)

Coursework

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:

  1. Is the code written clearly, efficiently, elegantly and/or logically?
  2. Is the code readable, e.g. good use of whitespace, effectively commented, meaningful variable names, using language style conventions?

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 Policy

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.

Honor Code

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!

Classroom Community

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.

ADA

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.


Acknowledgements

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.