SYLLABUS

Over the past several decades, advances in computation have fundamentally changed the practice of scientific research. Computational models of complex systems allow experimenters to ask and answer questions that would be difficult or impossible to address using traditional laboratory methods. In addition, advances in laboratory techniques have led to an explosion in the amount of experimental data available to researchers. Making sense of these data increasingly requires sophisticated computational approaches.


Goals

The purpose of this course is to give students an introduction to scientific modeling and data analysis. The course will provide an introduction to computer programming and will cover a selection of topics relevant to scientific research, emphasizing the process of modeling, simulation, visualization, and evaluation of data. It will also introduce fundamental computer science topics, including the limits of computation and algorithm analysis. This course is intended for students with a strong interest or background in science, math, and/or computer science. Prior programming experience is not required. Except in unusual circumstances, students who have already taken COMP 105 or COMP107 should generally not take this course.

Hands-on programming is a central component of the course, embodied in weekly labs and several programming projects.


About COMP 108


Instructor Pamela Cutter
Olds-Upton 203F, (269) 337-7064
Office Hours: TBD
Pam (preferred) | Dr. Cutter | Professor Cutter | She, her, hers
Email Rules Subject COMP108: Your Subject.
Example COMP108: About HW 2
Required Text Hans Petter Langtangen, A Primer on Scientific Programming with Python, 5th Edition, Springer, 2016. This book is available through the Springer online book series that Kalamazoo College subscribes to and may be downloaded from the link: Primer on Scientific Programming.
You can find other references in the supplemental material page. Some additional readings will be assigned and made available via Teams.

Computing Resources and Software

To be able to successfully complete this course, you will be required to have the following tools:

  • Lab: We will meet in OU312 on Tuesdays for the Lab (1:00 PM to 3:00 PM).
  • Language: Python 3
  • Development Environments: In class we will use the Spyder development environment for writing and testing our programs. Spyder is one of the programs that comes packaged with Anaconda. (Anaconda is a distribution of Python containing Python, the conda package and environment manager, and many software packages for data analytics, data science, and scientific computing.) This software runs on both Macs and Windows PCs. If you have your own computer, you may install it on your own machine.  Anaconda (the Python 3.8 version) can be downloaded from https://www.anaconda.com/download/.
  • Other: Miscellaneous resources will be provided to you during class in the form of PDFs or links to electronic tools in the web, which will help you visualize, practice, and/or have fun while learning the concepts.

Topics to be Covered

The following are the topics we will be learning about and discussing during COMP 108 (and a tentative schedule for when each of them will be covered).

Week 1 Role of Computation in Science
Introduction to Python: Input, Processing, Output, Functions, Variables
Week 2 - 3 Program Design
Conditionals, Loops, Lists
Week 4 Computational Modeling
CS History
Exam 1
Week 5 - 7 Scientific Writing, Plotting, NumPy
Strings, Bioinformatics, Regular Expressions, Clustering, Random Numbers
Week 8 - 10 Numerical Analysis, SciPy
Computer Representation of Data, Machine and Assembly Language
Algorithm Analysis, Complexity, and Computability
Exam 2
Exam Week Presentation of Final Projects

Attendance and Participation

Regular attendance and fully engaged participation is expected of all students in this course. Your grade will be partially based on projects, labs, mini-labs, discussions, and occasional quizzes, so your attendance will affect your grade. Active participation in the class means being on time for our class meetings, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Failure to notify an instructor in advance of missing a lab will result in no credit for that lab.


Assignments and Class Evaluation

Assignments, announcements, class notes, and other material will be made available on Teams and the course web site: http://www.cs.kzoo.edu/cs108/. Students are responsible for checking these resources frequently.

Reading assignments and discussion questions or exercises are assigned for each class. You are expected to complete the assignments and be prepared to discuss both the ideas from the reading and your solutions to any exercises. You should also bring questions you have from the reading to class.

Many classes will be structured as "mini-labs". On mini-lab days there will be a short lecture that I will record to complement your reading, followed by an in-class project that may be completed individually or in groups of two. I will attempt to structure the mini-labs so that it will be possible to complete them during the class period. However, if you do not finish a project during class time, it will be your responsibility to complete it before the next class period.

Most laboratory assignments will be completed during the weekly lab time, although some may be due the next day. The programming assignments will be more complex, and may take a week or longer to complete. The time required to write a program and debug it is difficult to predict. We will make programming assignments available online far enough in advance that you will have some flexibility in scheduling your work, but you are responsible for budgeting your time wisely so that you will be able to complete your projects on time. Assignments that are turned in late will receive only partial credit unless you clear it with an instructor in advance.

There will be 2 midterm exams and a final presentation (but not a final exam) The dates for the exams are posted in the class schedule.


Final Grade

Final grade will be based on:

  • Homework Assignments and Quizzes 15%
  • Labs and Mini-Labs 30%
  • Two Programming Projects 20%
  • Exam 1 10%
  • Exam 2 10%
  • Final Presentation 15%

Collaboration and the Honor System

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor system. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Discussion questions: You should feel free to work with others on the discussion questions. As you work with others, keep in mind that the goal is not just getting a solution to the problem, but learning how to solve the problem yourself.

Homework assignments: You may discuss homework problems with your classmates, but the final submission should be in your own words and based on your own understanding of the material.

Laboratory Assignments and Programming projects: For many of the lab assignments and programming projects you will be permitted to work in pairs. I will try to be clear about whether a given lab or project must be done individually or may be done in pairs, but you are responsible for consulting with me if you are in any doubt. When teams are permitted, you should indicate both authors in the program documentation and turn in only one copy of the program for the team (not one for each team member). When you work with a partner, each individual takes full responsibility for the finished product, and each individual must be equally involved in developing the solution.

You may discuss the requirements and strategies of a programming assignment with others in the class, but you should not look at code belonging to anyone outside your team or make your code available to anyone other than your teammate. If you have code-specific questions you should address them to a course TA or computer science faculty member only. You should acknowledge in your program documentation any help you receive.

Exams should be entirely your own work.

Penalties for a first violation of the Honor System in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in the immediate failure of the course.