CS 111
Foundations of Computing for Scientific Discovery
Spring, 2011

Professor: Jessen Havill
Office: Olin 208
E-mail: havill@denison.edu
Phone: 587-6582
Mailbox: Olin 201
Office hours: MWF 2:30 or other times by appt.


It has often been said that a person does not really understand something until after teaching it to someone else. Actually a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm.

   - Donald E. Knuth, in American Scientist:61(6), 1973

This course is an introduction to computational problem solving and programming. In it, you will develop your ability to abstract (or model) otherwise complex problems and generate elegant and efficient algorithmic solutions. You will practice these skills by developing computer programs (in a programming language called Python) that solve problems motivated by research in the sciences.

Computer science is no more about computers than astronomy is about telescopes.

   - Edsger W. Dijkstra

Over the course of the semester, we will tackle a variety of interesting problems, primarily using basic modeling and simulation techniques. These techniques include difference equations, monte carlo simulations, cellular automata, networks, and agent-based simulations. We will also look at problems in computational biology.

Absolutely no prior experience is necessary.

Required Texts

Python Programming in Context
by Bradley N. Miller and David L. Ranum, Jones and Bartlett, 2009.

The Pattern on the Stone
by W. Daniel Hillis, Basic Books, 1998.

Emergence: The Connected Lives of Ants, Brains, Cities, and Software
by Steven Johnson, Scribner, 2001.

Six Degrees: The Science of a Connected Age
by Duncan J. Watts, Norton, 2003.

Attendance and Other Responsibilities

I hear and I forget. I see and I remember. I do and I understand.

   - Confucius

Your active participation is absolutely essential to your success in this class. I cannot emphasize this enough. Simply attending class and doing a minimal amount of work will not get you very far.

It is very important that you keep up with coursework on a daily basis; consistency is the key. Read your book(s) on a daily basis and do the examples and exercises in front of a computer. We will use the reading as a starting point for each class discussion rather than rehash everything from the night before.

Your attendance is expected at each class meeting. Your grade will almost certainly suffer indirectly if you choose not to attend. In addition, I may consider attendance when assigning grades, especially in borderline situations. Of course, excused absences (sickness, family emergencies, varsity athletic participation) will not be held against you. Such absences should be communicated to me in advance. You are responsible for the content of reading assignments, lectures and handouts, as well as announcements and schedule changes made in class whether or not you are present. If you must miss a class, be sure to check with me or another student to get what you missed. Exams will be given in class on the day scheduled and may not be made up.

Online Resources

I will maintain a class web page containing reading assignments, homework assignments, sample programs, and other useful resources. Refer to this page often (at least daily) for updated information. The class home page can be found at: http://www.denison.edu/~havill/111/.

Big Idea Thursdays (BIT)

In an introductory programming-oriented class such as this, it is easy to get caught up in the daily routine and lose sight of the "big picture". To put our work in context and get us thinking about some fascinating new directions in computer science and scientific computing, we will step back every other week for a Big Idea Thursday. During this class period, we will have a discussion (or another activity) surrounding a different "big idea". In most cases, the next project will also be related to this topic.

Before each of these discussions, we will read an article or a book on which to base the discussion. On the previous Monday, you will submit a short 1-2 page response paper and two well-constructed discussion questions for the following Thursday. A half dozen or so of the class' questions, together with some of my own, will form the basis for our discussion. General questions relating to our BIT discussions may also appear on exams.

The planned topics are laid out on the class schedule page. The reading for a particular week may range from a single article to an entire book. Plan your time well in advance so that this reading is evenly spaced throughout the semester. You may be able to start an article a few days in advance, but that won't work for a book!

Programming Projects

The bulk of the work in this class revolves around 10-12 programming projects. Each project will be due in class on the date specified. No late homework assignments will be accepted, unless arrangements have been made with me well in advance. Since it will most likely not be obvious how long an assignment might take, you are well advised to start early. Like other classes at Denison, it is expected that you devote at least 3 hours to these assignments for each hour of class time. You will be working in pairs on all but the first few programming projects. Pairs will be rotated every 3-4 weeks. More on this later.

Homework Exercises

With each reading assignment in the text book, there are several embedded exercises. As I mentioned above, you should do these as you read. I will choose a few of these exercises, or others that I design, for you to hand in (via email) before the next class period. These exercises are meant to give you hands-on practice with the topics in your daily reading, and to help identify areas of misunderstanding. As these will usually be due before we have discussed the topic in class, I will not be grading them on correctness. Rather, I will only check that you have made a serious effort toward a solution. I will post solutions to these exercises later in the day on my web site and/or we may discuss them in class.

Academic Integrity

Proposed and developed by Denison students, passed unanimously by DCGA and Denison's faculty, the Code of Academic Integrity requires that instructors notify the Associate Provost of cases of academic dishonesty, and it requires that cases be heard by the Academic Integrity Board. Further, the code makes students responsible for promoting a culture of integrity on campus and acting in instances in which integrity is violated.

Academic honesty, the cornerstone of teaching and learning, lays the foundation for lifelong integrity. Academic dishonesty is intellectual theft. It includes, but is not limited to, providing or receiving assistance in a manner not authorized by the instructor in the creation of work to be submitted for evaluation. This standard applies to all work ranging from daily homework assignments to major exams. Students must clearly cite any sources consulted -- not only for quoted phrases but also for ideas and information that are not common knowledge. Neither ignorance nor carelessness is an acceptable defense in cases of plagiarism. It is the student's responsibility to follow the appropriate format for citations. Students should ask their instructors for assistance in determining what sorts of materials and assistance are appropriate for assignments and for guidance in citing such materials clearly.

For further information about the Code of Academic Integrity see http://www.denison.edu/about/integrity.html

In this class, you may discuss problems with other students in the class, but written (and typed) work must be your own (or you and your partner's in the case of projects). In other words, you may talk about problems with your peers, but when it comes time to write your solutions, you (and your partner) are on your own. You may have general conversations about problem strategies, but you must leave these conversations without having written anything down. Keep in mind that it is quite easy for me to tell when students have been working too closely. You may not get help from students outside the class, except for departmental tutors. If you have questions, come see me and I will be happy to help. You are also quite welcome to send me email or call if you would like to discuss an assignment.

Grade Determination

The following relative weights will be used to determine your final grade:

Projects 40%
Homework exercises 5%
BIT papers and discussion questions  10%
Semester exams (4) 30%
Final exam 15%

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately as soon as possible to discuss his or her specific needs. I rely on the Office of Academic Support in 104 Doane to verify the need for reasonable accommodations based on documentation on file in their office.

Have a great semester! If you need anything, please let me know.